diff --git a/src/ec/compal/ene932/acpi/battery.asl b/src/ec/compal/ene932/acpi/battery.asl
index 898fe02..c2adf61 100644
--- a/src/ec/compal/ene932/acpi/battery.asl
+++ b/src/ec/compal/ene932/acpi/battery.asl
@@ -30,7 +30,7 @@
 		0xFFFFFFFF,  // Battery Remaining Capacity
 		0xFFFFFFFF,  // Battery Present Voltage
 	})
-	Name (BTNM, Zero)  // Battery number
+	Name (BTNM, 0)  // Battery number
 
 	// Workaround for full battery status, enabled by default
 	Name (BFWK, 1)
diff --git a/src/ec/google/chromeec/acpi/battery.asl b/src/ec/google/chromeec/acpi/battery.asl
index a0b05f3..5344111 100644
--- a/src/ec/google/chromeec/acpi/battery.asl
+++ b/src/ec/google/chromeec/acpi/battery.asl
@@ -7,12 +7,12 @@
 
 // Wait for desired battery index to be presented in shared memory
 //   Arg0 = battery index
-//   Returns Zero on success, 1 on error.
+//   Returns 0 on success, 1 on error.
 Method (BTSW, 1)
 {
 #ifdef EC_ENABLE_SECOND_BATTERY_DEVICE
 	If (BTIX == Arg0) {
-		Return (Zero)
+		Return (0)
 	}
 	If (Arg0 >= BTCN) {
 		Return (1)
@@ -33,7 +33,7 @@
 		Return (1)
 	}
 #endif
-	Return (Zero)
+	Return (0)
 }
 
 // _STA implementation.
@@ -41,7 +41,7 @@
 Method (BSTA, 1, Serialized)
 {
 	If (Acquire (^BATM, 1000)) {
-		Return (Zero)
+		Return (0)
 	}
 
 	If (~BTSW (Arg0) & BTEX) {
@@ -159,7 +159,7 @@
 	// bit 1 = charging
 	// bit 2 = critical level
 	//
-	Local1 = Zero
+	Local1 = 0
 
 	// Check if AC is present
 	If (ACEX) {
@@ -277,10 +277,10 @@
 		0xFFFFFFFF,  // 0x02: Battery Remaining Capacity
 		0xFFFFFFFF,  // 0x03: Battery Present Voltage
 	})
-	Name (BSTP, Zero)
+	Name (BSTP, 0)
 
 	// Workaround for full battery status, disabled by default
-	Name (BFWK, Zero)
+	Name (BFWK, 0)
 
 	// Method to enable full battery workaround
 	Method (BFWE)
@@ -291,7 +291,7 @@
 	// Method to disable full battery workaround
 	Method (BFWD)
 	{
-		BFWK = Zero
+		BFWK = 0
 	}
 
 	Method (_STA, 0, Serialized)
@@ -367,10 +367,10 @@
 		0xFFFFFFFF,  // 0x02: Battery Remaining Capacity
 		0xFFFFFFFF,  // 0x03: Battery Present Voltage
 	})
-	Name (BSTP, Zero)
+	Name (BSTP, 0)
 
 	// Workaround for full battery status, disabled by default
-	Name (BFWK, Zero)
+	Name (BFWK, 0)
 
 	// Method to enable full battery workaround
 	Method (BFWE)
@@ -381,7 +381,7 @@
 	// Method to disable full battery workaround
 	Method (BFWD)
 	{
-		BFWK = Zero
+		BFWK = 0
 	}
 
 	Method (_STA, 0, Serialized)
diff --git a/src/ec/google/chromeec/acpi/ec.asl b/src/ec/google/chromeec/acpi/ec.asl
index af59468..2d44ae3 100644
--- a/src/ec/google/chromeec/acpi/ec.asl
+++ b/src/ec/google/chromeec/acpi/ec.asl
@@ -198,22 +198,22 @@
 
 		/* Check for sensor not calibrated */
 		If (Local0 == \_SB.PCI0.LPCB.EC0.TNCA) {
-			Return (Zero)
+			Return (0)
 		}
 
 		/* Check for sensor not present */
 		If (Local0 == \_SB.PCI0.LPCB.EC0.TNPR) {
-			Return (Zero)
+			Return (0)
 		}
 
 		/* Check for sensor not powered */
 		If (Local0 == \_SB.PCI0.LPCB.EC0.TNOP) {
-			Return (Zero)
+			Return (0)
 		}
 
 		/* Check for sensor bad reading */
 		If (Local0 == \_SB.PCI0.LPCB.EC0.TBAD) {
-			Return (Zero)
+			Return (0)
 		}
 
 		/* Adjust by offset to get Kelvin */
diff --git a/src/ec/google/wilco/acpi/battery.asl b/src/ec/google/wilco/acpi/battery.asl
index d6b7655..2ead4c8 100644
--- a/src/ec/google/wilco/acpi/battery.asl
+++ b/src/ec/google/wilco/acpi/battery.asl
@@ -10,7 +10,7 @@
 	} ElseIf (Arg0 == 2) {
 		Local0 = R (P3B2)
 	} Else {
-		Local0 = Zero
+		Local0 = 0
 	}
 
 	/* Indicate battery is present */
@@ -42,7 +42,7 @@
 
 	/* Fill buffer until NUL or max string length is read */
 	Name (IBUF, Buffer (Local0 + 1) {})
-	For (Local1 = Zero, Local1 < Local0, Local1++) {
+	For (Local1 = 0, Local1 < Local0, Local1++) {
 		Local2 = R (BSBS)
 		If (!Local2) {
 			Break
@@ -53,7 +53,7 @@
 	/* Truncate and NUL terminate */
 	Local1++
 	Name (OBUF, Buffer (Local1) {})
-	OBUF = Concatenate (IBUF, Zero)
+	OBUF = Concatenate (IBUF, 0)
 
 	Return (OBUF)
 }
diff --git a/src/ec/google/wilco/acpi/ec.asl b/src/ec/google/wilco/acpi/ec.asl
index b858b0c..3a9256e 100644
--- a/src/ec/google/wilco/acpi/ec.asl
+++ b/src/ec/google/wilco/acpi/ec.asl
@@ -6,9 +6,9 @@
 	Name (_UID, 1)
 	Name (_GPE, EC_SCI_GPI)
 	Name (_STA, 0xf)
-	Name (DBUG, Zero)
-	Name (ISSX, Zero) /* Is the EC in S0ix mode? */
-	Name (UCEP, Zero) /* Is there a pending UCSI event? */
+	Name (DBUG, 0)
+	Name (ISSX, 0) /* Is the EC in S0ix mode? */
+	Name (UCEP, 0) /* Is there a pending UCSI event? */
 
 	Name (_CRS, ResourceTemplate() {
 		IO (Decode16,
@@ -22,7 +22,7 @@
 	})
 
 	/* Handle registration of EmbeddedControl region */
-	Name (EREG, Zero)
+	Name (EREG, 0)
 	OperationRegion (ERAM, EmbeddedControl, 0, 0xff)
 	Method (_REG, 2)
 	{
@@ -39,7 +39,7 @@
 		W (CSOS, 1)
 
 		/* Tell EC to stop emulating PS/2 mouse */
-		W (PS2M, Zero)
+		W (PS2M, 0)
 
 		/* Enable DPTF support if enabled in devicetree */
 		If (\DPTE == 1) {
@@ -77,7 +77,7 @@
 	Method (ECRW, 2, Serialized, 2)
 	{
 		If (!EREG) {
-			Return (Zero)
+			Return (0)
 		}
 
 		Local0 = DeRefOf (Arg0[0])	/* Byte offset */
@@ -115,7 +115,7 @@
 			}
 			BYT1 = Arg1
 		}
-		Return (Zero)
+		Return (0)
 	}
 
 	/*
@@ -124,7 +124,7 @@
 	 */
 	Method (R, 1, Serialized, 2)
 	{
-		Return (ECRW (Arg0, Zero))
+		Return (ECRW (Arg0, 0))
 	}
 
 	/*
@@ -155,7 +155,7 @@
 			R (EVT1)
 		} Else {
 			Printf ("EC Exit S0ix")
-			W (CSEX, Zero)
+			W (CSEX, 0)
 
 			/* If UCSI event happened during S0ix send it now. */
 			If (^UCEP == 1) {
diff --git a/src/ec/google/wilco/acpi/event.asl b/src/ec/google/wilco/acpi/event.asl
index 47c2ecd..3f59946 100644
--- a/src/ec/google/wilco/acpi/event.asl
+++ b/src/ec/google/wilco/acpi/event.asl
@@ -139,10 +139,10 @@
 /* UCSI SCI uses a unique event code */
 Method (_Q79, 0, Serialized)
 {
-	If (ISSX == Zero) {
+	If (ISSX == 0) {
 		Printf ("EC _Q79 UCSI Event")
 		Notify (^UCSI, 0x80)
-		^UCEP = Zero
+		^UCEP = 0
 	} Else {
 		Printf ("EC _Q79 UCSI Event Masked in S0ix")
 		^UCEP = 1
diff --git a/src/ec/google/wilco/acpi/privacy.asl b/src/ec/google/wilco/acpi/privacy.asl
index 74e6559..1922e97 100644
--- a/src/ec/google/wilco/acpi/privacy.asl
+++ b/src/ec/google/wilco/acpi/privacy.asl
@@ -9,8 +9,8 @@
 /* Read Privacy Screen Status */
 Method (GPVX, 0, Serialized)
 {
-	If (R (EPST) == Zero) {
-		Return (Zero)
+	If (R (EPST) == 0) {
+		Return (0)
 	}
 
 	Return (1)
@@ -25,5 +25,5 @@
 /* Disable Privacy Screen */
 Method (DPVX, 0, Serialized)
 {
-	W (EPCT, Zero)
+	W (EPCT, 0)
 }
diff --git a/src/ec/google/wilco/acpi/superio.asl b/src/ec/google/wilco/acpi/superio.asl
index 3cec006..852965c 100644
--- a/src/ec/google/wilco/acpi/superio.asl
+++ b/src/ec/google/wilco/acpi/superio.asl
@@ -17,7 +17,7 @@
 #if CONFIG(DRIVERS_UART_8250IO)
 			Return (0x0f)
 #else
-			Return (Zero)
+			Return (0)
 #endif
 		}
 
@@ -42,7 +42,7 @@
 #ifdef SIO_EC_ENABLE_PS2K
 			Return (0x0f)
 #else
-			Return (Zero)
+			Return (0)
 #endif
 		}
 
@@ -64,7 +64,7 @@
 #ifdef SIO_EC_ENABLE_PS2M
 			Return (0x0f)
 #else
-			Return (Zero)
+			Return (0)
 #endif
 		}
 
diff --git a/src/ec/google/wilco/acpi/ucsi.asl b/src/ec/google/wilco/acpi/ucsi.asl
index 6c33e18..97e153b 100644
--- a/src/ec/google/wilco/acpi/ucsi.asl
+++ b/src/ec/google/wilco/acpi/ucsi.asl
@@ -69,12 +69,12 @@
 	Method (_DSM, 4, Serialized)
 	{
 		If (Arg0 != ToUUID ("6f8398c2-7ca4-11e4-ad36-631042b5008f")) {
-			Return (Buffer (1) { Zero })
+			Return (Buffer (1) { 0 })
 		}
 
 		Switch (ToInteger (Arg2))
 		{
-			Case (Zero)
+			Case (0)
 			{
 				Return (Buffer (1) { 0x07 })
 			}
@@ -138,6 +138,6 @@
 				^CCI3 = R (^^UCI3)
 			}
 		}
-		Return (Buffer (1) { Zero })
+		Return (Buffer (1) { 0 })
 	}
 }
diff --git a/src/ec/google/wilco/acpi/vbtn.asl b/src/ec/google/wilco/acpi/vbtn.asl
index 622d591..dbedbd1 100644
--- a/src/ec/google/wilco/acpi/vbtn.asl
+++ b/src/ec/google/wilco/acpi/vbtn.asl
@@ -48,7 +48,7 @@
 	 */
 	Method (VGBS)
 	{
-		Local0 = Zero
+		Local0 = 0
 
 		/* Check EC orientation for tablet mode flag */
 		If (R (OTBL)) {
diff --git a/src/ec/lenovo/h8/acpi/ec.asl b/src/ec/lenovo/h8/acpi/ec.asl
index a1bf8bc..bc54d3b 100644
--- a/src/ec/lenovo/h8/acpi/ec.asl
+++ b/src/ec/lenovo/h8/acpi/ec.asl
@@ -319,9 +319,9 @@
 	{
 		If (Arg0) {
 			FAND = 1
-			FANA = Zero
+			FANA = 0
 		} Else {
-			FAND = Zero
+			FAND = 0
 			FANA = 1
 		}
 	}
diff --git a/src/ec/lenovo/h8/acpi/thermal.asl b/src/ec/lenovo/h8/acpi/thermal.asl
index 6115eb6..4f3b76e 100644
--- a/src/ec/lenovo/h8/acpi/thermal.asl
+++ b/src/ec/lenovo/h8/acpi/thermal.asl
@@ -118,8 +118,8 @@
 			}
 
 			Method (_OFF) {
-				\_SB.PCI0.LPCB.EC.FANE(Zero)
-				\FLVL = Zero
+				\_SB.PCI0.LPCB.EC.FANE(0)
+				\FLVL = 0
 				Notify (\_TZ.THM0, NOTIFY_TZ_TRIPPTCHG)
 			}
 		}
diff --git a/src/ec/lenovo/h8/acpi/thinkpad.asl b/src/ec/lenovo/h8/acpi/thinkpad.asl
index 73eee52..1268e22 100644
--- a/src/ec/lenovo/h8/acpi/thinkpad.asl
+++ b/src/ec/lenovo/h8/acpi/thinkpad.asl
@@ -36,17 +36,17 @@
 	{
 		Local0 = BTN
 		If (Local0 != 0) {
-			BTN = Zero
+			BTN = 0
 			Local0 += 0x1000
 			Return (Local0)
 		}
 		Local0 = BTAB
 		If (Local0 != 0) {
-			BTAB = Zero
+			BTAB = 0
 			Local0 += 0x5000
 			Return (Local0)
 		}
-		Return (Zero)
+		Return (0)
 	}
 
 	/* Report event  */
@@ -75,8 +75,8 @@
 		}
 		Else
 		{
-			EMSK = Zero
-			ETAB = Zero
+			EMSK = 0
+			ETAB = 0
 		}
 		EN = Arg0
 	}
diff --git a/src/ec/lenovo/h8/acpi/thinkpad_bat_thresholds.asl b/src/ec/lenovo/h8/acpi/thinkpad_bat_thresholds.asl
index db0333d..b1ff65f 100644
--- a/src/ec/lenovo/h8/acpi/thinkpad_bat_thresholds.asl
+++ b/src/ec/lenovo/h8/acpi/thinkpad_bat_thresholds.asl
@@ -17,7 +17,7 @@
  *    = 2: Secondary battery
  *    = Others: Reserved (0)
  * Bit 31-10: Reserved (0)
- *     Must be Zero
+ *     Must be 0
  *
  * Out Parameter:
  * DWORD
@@ -110,7 +110,7 @@
  * DWORD
  * Bit 7-0:BatteryID
  * Bit 31-8: Reserved (0)
- *     Must be Zero
+ *     Must be 0
  *
  * Out Parameter:
  * DWORD
diff --git a/src/ec/purism/librem-ec/acpi/battery.asl b/src/ec/purism/librem-ec/acpi/battery.asl
index 0266c2a..6b1572b 100644
--- a/src/ec/purism/librem-ec/acpi/battery.asl
+++ b/src/ec/purism/librem-ec/acpi/battery.asl
@@ -5,12 +5,12 @@
 Device (BAT0)
 {
 	Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */)  // _HID: Hardware ID
-	Name (_UID, Zero)  // _UID: Unique ID
+	Name (_UID, 0)  // _UID: Unique ID
 	Name (_PCL, Package (0x01)  // _PCL: Power Consumer List
 	{
 		_SB
 	})
-	Name (BFCC, Zero)
+	Name (BFCC, 0)
 	Method (_STA, 0, NotSerialized)  // _STA: Status
 	{
 		If (^^PCI0.LPCB.EC0.ECOK)
@@ -37,8 +37,8 @@
 		0xFFFFFFFF, // 2 - Last Full Charge Capacity
 		1, // 3 - Battery Technology
 		BATTERY_DESIGN_VOLTAGE_MV, // 4 - Design Voltage
-		Zero, // 5 - Design Capacity of Warning
-		Zero, // 6 - Design Capacity of Low
+		0, // 5 - Design Capacity of Warning
+		0, // 6 - Design Capacity of Low
 		0x40, // 7 - Battery Capacity Granularity 1
 		0x40, // 8 - Battery Capacity Granularity 2
 		"BAT", // 9 - Model Number
@@ -55,7 +55,7 @@
 		PBIF [10] = " "
 		PBIF [11] = " "
 		PBIF [12] = " "
-		BFCC = Zero
+		BFCC = 0
 	}
 
 	Method (UPBI, 0, NotSerialized)
@@ -100,14 +100,14 @@
 
 	Name (PBST, Package (0x04)
 	{
-		Zero, // 0 - Battery state
+		0, // 0 - Battery state
 		0xFFFFFFFF, // 1 - Battery present rate
 		0xFFFFFFFF, // 2 - Battery remaining capacity
 		BATTERY_DESIGN_VOLTAGE_MV // 3 - Battery present voltage
 	})
 	Method (IVBS, 0, NotSerialized)
 	{
-		PBST [0] = Zero
+		PBST [0] = 0
 		PBST [1] = 0xFFFFFFFF
 		PBST [2] = 0xFFFFFFFF
 		PBST [3] = 0x2710
@@ -117,8 +117,8 @@
 	{
 		If (^^PCI0.LPCB.EC0.BAT0)
 		{
-			Local0 = Zero
-			Local1 = Zero
+			Local0 = 0
+			Local1 = 0
 			If (^^AC.ACFG)
 			{
 				If (((^^PCI0.LPCB.EC0.BST0 & 0x02) == 0x02))
diff --git a/src/ec/purism/librem-ec/acpi/ec.asl b/src/ec/purism/librem-ec/acpi/ec.asl
index bceb23c..083d2c0 100644
--- a/src/ec/purism/librem-ec/acpi/ec.asl
+++ b/src/ec/purism/librem-ec/acpi/ec.asl
@@ -31,7 +31,7 @@
 
 	#include "ec_ram.asl"
 
-	Name (ECOK, Zero)
+	Name (ECOK, 0)
 	Method (_REG, 2, Serialized)  // _REG: Region Availability
 	{
 		Printf ("EC: _REG %o %o", ToHexString(Arg0), ToHexString(Arg1))
@@ -49,8 +49,8 @@
 			^^^^BAT0.UPBS()
 
 			// Notify of changes
-			Notify(^^^^AC, Zero)
-			Notify(^^^^BAT0, Zero)
+			Notify(^^^^AC, 0)
+			Notify(^^^^BAT0, 0)
 
 			PNOT ()
 
@@ -66,7 +66,7 @@
 		Printf ("EC: PTS: %o", ToHexString(Arg0))
 		If (ECOK) {
 			// Clear wake cause
-			WFNO = Zero
+			WFNO = 0
 		}
 	}
 
@@ -81,8 +81,8 @@
 			^^^^BAT0.UPBS()
 
 			// Notify of changes
-			Notify(^^^^AC, Zero)
-			Notify(^^^^BAT0, Zero)
+			Notify(^^^^AC, 0)
+			Notify(^^^^BAT0, 0)
 
 			// Reset Librem EC Device
 			^^^^LIEC.RSET()
diff --git a/src/ec/purism/librem-ec/acpi/ec_ram.asl b/src/ec/purism/librem-ec/acpi/ec_ram.asl
index ce5133f..704efef 100644
--- a/src/ec/purism/librem-ec/acpi/ec_ram.asl
+++ b/src/ec/purism/librem-ec/acpi/ec_ram.asl
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF)
+OperationRegion (ERAM, EmbeddedControl, 0, 0xFF)
 Field (ERAM, ByteAcc, Lock, Preserve)
 {
 	Offset (0x03),
diff --git a/src/ec/purism/librem-ec/acpi/hid.asl b/src/ec/purism/librem-ec/acpi/hid.asl
index 8bbb65b..eb5f420 100644
--- a/src/ec/purism/librem-ec/acpi/hid.asl
+++ b/src/ec/purism/librem-ec/acpi/hid.asl
@@ -3,19 +3,19 @@
 Device (HIDD)
 {
 	Name (_HID, "INT33D5")
-	Name (HBSY, Zero)
-	Name (HIDX, Zero)
-	Name (HRDY, Zero)
+	Name (HBSY, 0)
+	Name (HIDX, 0)
+	Name (HRDY, 0)
 
 	Method (HDEM, 0, Serialized)
 	{
-		HBSY = Zero
+		HBSY = 0
 		Return (HIDX)
 	}
 
 	Method (HDMM, 0, Serialized)
 	{
-		Return (Zero)
+		Return (0)
 	}
 
 	Method (HDSM, 1, Serialized)
@@ -29,7 +29,7 @@
 		HIDX = Arg0
 
 		Notify (HIDD, 0xC0)
-		Local0 = Zero
+		Local0 = 0
 		While ((Local0 < 0xFA) && HBSY)
 		{
 			Sleep (0x04)
@@ -38,13 +38,13 @@
 
 		If (HBSY == 1)
 		{
-			HBSY = Zero
-			HIDX = Zero
+			HBSY = 0
+			HIDX = 0
 			Return (1)
 		}
 		Else
 		{
-			Return (Zero)
+			Return (0)
 		}
 	}
 }
diff --git a/src/ec/purism/librem-ec/acpi/librem-ec.asl b/src/ec/purism/librem-ec/acpi/librem-ec.asl
index 5f1e53d..dceef09 100644
--- a/src/ec/purism/librem-ec/acpi/librem-ec.asl
+++ b/src/ec/purism/librem-ec/acpi/librem-ec.asl
@@ -113,7 +113,7 @@
 			^^PCI0.LPCB.EC0.FDAT = 1
 			^^PCI0.LPCB.EC0.FCMD = 0xCA
 			Local0 = ^^PCI0.LPCB.EC0.FBUF
-			^^PCI0.LPCB.EC0.FCMD = Zero
+			^^PCI0.LPCB.EC0.FCMD = 0
 		}
 		Return (Local0)
 	}
@@ -121,7 +121,7 @@
 	// Set KB Led
 	Method (SKBL, 1, Serialized) {
 		If (^^PCI0.LPCB.EC0.ECOK) {
-			^^PCI0.LPCB.EC0.FDAT = Zero
+			^^PCI0.LPCB.EC0.FDAT = 0
 			^^PCI0.LPCB.EC0.FBUF = Arg0
 			^^PCI0.LPCB.EC0.FCMD = 0xCA
 		}
diff --git a/src/ec/purism/librem/acpi/battery.asl b/src/ec/purism/librem/acpi/battery.asl
index 94c6462..59eb0e9 100644
--- a/src/ec/purism/librem/acpi/battery.asl
+++ b/src/ec/purism/librem/acpi/battery.asl
@@ -51,7 +51,7 @@
 		0xFFFFFFFF,  /* 0x02: Battery Remaining Capacity */
 		0xFFFFFFFF,  /* 0x03: Battery Present Voltage */
 	})
-	Name (BSTP, Zero)
+	Name (BSTP, 0)
 
 	/* Battery Capacity warning at 15% */
 	Name (DWRN, 15)
diff --git a/src/ec/purism/librem/acpi/ec.asl b/src/ec/purism/librem/acpi/ec.asl
index 828b44d..622af70 100644
--- a/src/ec/purism/librem/acpi/ec.asl
+++ b/src/ec/purism/librem/acpi/ec.asl
@@ -36,7 +36,7 @@
 		IO (Decode16, 0x66, 0x66, 0, 1)
 	})
 
-	OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF)
+	OperationRegion (ERAM, EmbeddedControl, 0, 0xFF)
 	Field (ERAM, ByteAcc, Lock, Preserve)
 	{
 		Offset (0x13),
diff --git a/src/ec/quanta/ene_kb3940q/acpi/ec.asl b/src/ec/quanta/ene_kb3940q/acpi/ec.asl
index cc12a2a..0a827b2 100644
--- a/src/ec/quanta/ene_kb3940q/acpi/ec.asl
+++ b/src/ec/quanta/ene_kb3940q/acpi/ec.asl
@@ -215,7 +215,7 @@
 	Method (_Q11, 0, NotSerialized)
 	{
 		Printf ("AC Detach Event 0x11")
-		\PWRS = Zero
+		\PWRS = 0
 		Notify (AC, 0x80)
 		Notify (BATX, 0x80)
 		\PNOT ()
diff --git a/src/ec/quanta/it8518/acpi/battery.asl b/src/ec/quanta/it8518/acpi/battery.asl
index 4f3834a..cfc88ed 100644
--- a/src/ec/quanta/it8518/acpi/battery.asl
+++ b/src/ec/quanta/it8518/acpi/battery.asl
@@ -13,7 +13,7 @@
 	// Battery X Information
 	// Battery X Status
 	//
-	Name (BXST, Zero)
+	Name (BXST, 0)
 
 	//
 	// Default Static Battery Information
@@ -55,7 +55,7 @@
 	// Method to disable full battery workaround
 	Method (BFWD)
 	{
-		BFWK = Zero
+		BFWK = 0
 	}
 
 	// Method to wait for EC to be ready after changing the Battery Info ID
@@ -111,7 +111,7 @@
 		//
 		// Information ID 0 -
 		//
-		HIID = Zero
+		HIID = 0
 		WAEC ()
 
 		//
@@ -228,7 +228,7 @@
 			}
 			Else
 			{
-				Local0 = Zero
+				Local0 = 0
 			}
 		}
 
@@ -238,7 +238,7 @@
 			Local0 |= 4
 		}
 
-		Local1 = Zero
+		Local1 = 0
 
 		// Check if AC is present
 		If (ACPW)
@@ -270,7 +270,7 @@
 			Else
 			{
 				// Error
-				Local1 = Zero
+				Local1 = 0
 			}
 		}
 		Else
@@ -278,7 +278,7 @@
 			If (!(Local0 & 2))
 			{
 				// Battery is not charging
-				Local1 = Zero
+				Local1 = 0
 			}
 		}
 
diff --git a/src/ec/quanta/it8518/acpi/ec.asl b/src/ec/quanta/it8518/acpi/ec.asl
index b510b8a..6433523 100644
--- a/src/ec/quanta/it8518/acpi/ec.asl
+++ b/src/ec/quanta/it8518/acpi/ec.asl
@@ -602,7 +602,7 @@
 	// AC Power Removed
 	Method (_Q27, 0, NotSerialized)
 	{
-		\PWRS = Zero
+		\PWRS = 0
 		Notify (AC, 0x80)
 		\PNOT ()
 	}
@@ -617,7 +617,7 @@
 	// LID Close (Suspend Trigger)
 	Method (_Q2B)
 	{
-		\LIDS = Zero
+		\LIDS = 0
 		Notify (\_SB.LID0, 0x80)
 	}
 
diff --git a/src/ec/smsc/mec1308/acpi/battery.asl b/src/ec/smsc/mec1308/acpi/battery.asl
index 5571160..3419c4e 100644
--- a/src/ec/smsc/mec1308/acpi/battery.asl
+++ b/src/ec/smsc/mec1308/acpi/battery.asl
@@ -39,7 +39,7 @@
 		0xFFFFFFFF,  // Battery Remaining Capacity
 		0xFFFFFFFF,  // Battery Present Voltage
 	})
-	Name (BSTP, Zero)
+	Name (BSTP, 0)
 
 	// Workaround for full battery status, enabled by default
 	Name (BFWK, 1)
@@ -53,7 +53,7 @@
 	// Method to disable full battery workaround
 	Method (BFWD)
 	{
-		BFWK = Zero
+		BFWK = 0
 	}
 
 	// Swap bytes in a word
@@ -106,7 +106,7 @@
 
 		// Get battery state from EC
 		Local0 = BTST
-		Local1 = Zero
+		Local1 = 0
 
 		// Check if AC is present
 		If (ACEX) {
diff --git a/src/ec/smsc/mec1308/acpi/ec.asl b/src/ec/smsc/mec1308/acpi/ec.asl
index 4e8e1cd..a4f9813 100644
--- a/src/ec/smsc/mec1308/acpi/ec.asl
+++ b/src/ec/smsc/mec1308/acpi/ec.asl
@@ -78,7 +78,7 @@
 			If (\FLVL <= 0) {
 				Return (1)
 			} Else {
-				Return (Zero)
+				Return (0)
 			}
 		}
 		Method (_ON)  {
@@ -90,7 +90,7 @@
 		}
 		Method (_OFF) {
 			If (FCOS) {
-				FSL0 = Zero
+				FSL0 = 0
 				\FLVL = 1
 				Notify (\_TZ.THRM, 0x81)
 			}
@@ -103,7 +103,7 @@
 			If (\FLVL <= 1) {
 				Return (1)
 			} Else {
-				Return (Zero)
+				Return (0)
 			}
 		}
 		Method (_ON)  {
@@ -115,7 +115,7 @@
 		}
 		Method (_OFF) {
 			If (FCOS) {
-				FSL1 = Zero
+				FSL1 = 0
 				\FLVL = 2
 				Notify (\_TZ.THRM, 0x81)
 			}
@@ -128,7 +128,7 @@
 			If (\FLVL <= 2) {
 				Return (1)
 			} Else {
-				Return (Zero)
+				Return (0)
 			}
 		}
 		Method (_ON)  {
@@ -140,7 +140,7 @@
 		}
 		Method (_OFF) {
 			If (FCOS) {
-				FSL2 = Zero
+				FSL2 = 0
 				\FLVL = 3
 				Notify (\_TZ.THRM, 0x81)
 			}
@@ -153,7 +153,7 @@
 			If (\FLVL <= 3) {
 				Return (1)
 			} Else {
-				Return (Zero)
+				Return (0)
 			}
 		}
 		Method (_ON)  {
@@ -165,7 +165,7 @@
 		}
 		Method (_OFF) {
 			If (FCOS) {
-				FSL3 = Zero
+				FSL3 = 0
 				\FLVL = 4
 				Notify (\_TZ.THRM, 0x81)
 			}
@@ -178,7 +178,7 @@
 			If (\FLVL <= 4) {
 				Return (1)
 			} Else {
-				Return (Zero)
+				Return (0)
 			}
 		}
 		Method (_ON)  {
@@ -190,7 +190,7 @@
 		}
 		Method (_OFF) {
 			If (FCOS) {
-				FSL4 = Zero
+				FSL4 = 0
 				\FLVL = 5
 				Notify (\_TZ.THRM, 0x81)
 			}
@@ -243,7 +243,7 @@
 	// AC Power Removed
 	Method (_Q52, 0, NotSerialized)
 	{
-		\PWRS = Zero
+		\PWRS = 0
 		Notify (AC, 0x80)
 		\PNOT ()
 	}
diff --git a/src/ec/system76/ec/acpi/battery.asl b/src/ec/system76/ec/acpi/battery.asl
index d2857a5..2784804 100644
--- a/src/ec/system76/ec/acpi/battery.asl
+++ b/src/ec/system76/ec/acpi/battery.asl
@@ -3,12 +3,12 @@
 Device (BAT0)
 {
 	Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */)  // _HID: Hardware ID
-	Name (_UID, Zero)  // _UID: Unique ID
+	Name (_UID, 0)  // _UID: Unique ID
 	Name (_PCL, Package (0x01)  // _PCL: Power Consumer List
 	{
 		_SB
 	})
-	Name (BFCC, Zero)
+	Name (BFCC, 0)
 	Method (_STA, 0, NotSerialized)  // _STA: Status
 	{
 		If (^^PCI0.LPCB.EC0.ECOK)
@@ -35,8 +35,8 @@
 		0xFFFFFFFF, // 2 - Last Full Charge Capacity
 		1, // 3 - Battery Technology
 		0xFFFFFFFF, // 4 - Design Voltage
-		Zero, // 5 - Design Capacity of Warning
-		Zero, // 6 - Design Capacity of Low
+		0, // 5 - Design Capacity of Warning
+		0, // 6 - Design Capacity of Low
 		0x40, // 7 - Battery Capacity Granularity 1
 		0x40, // 8 - Battery Capacity Granularity 2
 		" ", // 9 - Model Number
@@ -53,7 +53,7 @@
 		PBIF [10] = " "
 		PBIF [11] = " "
 		PBIF [12] = " "
-		BFCC = Zero
+		BFCC = 0
 	}
 
 	Method (UPBI, 0, NotSerialized)
@@ -176,14 +176,14 @@
 
 	Name (PBST, Package (0x04)
 	{
-		Zero, // 0 - Battery state
+		0, // 0 - Battery state
 		0xFFFFFFFF, // 1 - Battery present rate
 		0xFFFFFFFF, // 2 - Battery remaining capacity
 		0xFFFFFFFF // 3 - Battery present voltage
 	})
 	Method (IVBS, 0, NotSerialized)
 	{
-		PBST [0] = Zero
+		PBST [0] = 0
 		PBST [1] = 0xFFFFFFFF
 		PBST [2] = 0xFFFFFFFF
 		PBST [3] = 0xFFFFFFFF
@@ -193,8 +193,8 @@
 	{
 		If (^^PCI0.LPCB.EC0.BAT0)
 		{
-			Local0 = Zero
-			Local1 = Zero
+			Local0 = 0
+			Local1 = 0
 			If (^^AC.ACFG)
 			{
 				If (((^^PCI0.LPCB.EC0.BST0 & 0x02) == 0x02))
diff --git a/src/ec/system76/ec/acpi/ec.asl b/src/ec/system76/ec/acpi/ec.asl
index ff24558..bc17106 100644
--- a/src/ec/system76/ec/acpi/ec.asl
+++ b/src/ec/system76/ec/acpi/ec.asl
@@ -31,7 +31,7 @@
 
 	#include "ec_ram.asl"
 
-	Name (ECOK, Zero)
+	Name (ECOK, 0)
 	Method (_REG, 2, Serialized)  // _REG: Region Availability
 	{
 		Debug = Concatenate("EC: _REG", Concatenate(ToHexString(Arg0), Concatenate(" ", ToHexString(Arg1))))
@@ -49,8 +49,8 @@
 			^^^^BAT0.UPBS()
 
 			// Notify of changes
-			Notify(^^^^AC, Zero)
-			Notify(^^^^BAT0, Zero)
+			Notify(^^^^AC, 0)
+			Notify(^^^^BAT0, 0)
 
 			PNOT ()
 
@@ -62,7 +62,7 @@
 		}
 	}
 
-	Name (S3OS, Zero)
+	Name (S3OS, 0)
 	Method (PTS, 1, Serialized) {
 		Debug = Concatenate("EC: PTS: ", ToHexString(Arg0))
 		If (ECOK) {
@@ -70,7 +70,7 @@
 			S3OS = ECOS
 
 			// Clear wake cause
-			WFNO = Zero
+			WFNO = 0
 		}
 	}
 
@@ -88,8 +88,8 @@
 			^^^^BAT0.UPBS()
 
 			// Notify of changes
-			Notify(^^^^AC, Zero)
-			Notify(^^^^BAT0, Zero)
+			Notify(^^^^AC, 0)
+			Notify(^^^^BAT0, 0)
 
 			// Reset System76 Device
 			^^^^S76D.RSET()
diff --git a/src/ec/system76/ec/acpi/ec_ram.asl b/src/ec/system76/ec/acpi/ec_ram.asl
index 2faaedd..cb5bcf1 100644
--- a/src/ec/system76/ec/acpi/ec_ram.asl
+++ b/src/ec/system76/ec/acpi/ec_ram.asl
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF)
+OperationRegion (ERAM, EmbeddedControl, 0, 0xFF)
 Field (ERAM, ByteAcc, Lock, Preserve)
 {
 	Offset (0x03),
diff --git a/src/ec/system76/ec/acpi/hid.asl b/src/ec/system76/ec/acpi/hid.asl
index 8bbb65b..eb5f420 100644
--- a/src/ec/system76/ec/acpi/hid.asl
+++ b/src/ec/system76/ec/acpi/hid.asl
@@ -3,19 +3,19 @@
 Device (HIDD)
 {
 	Name (_HID, "INT33D5")
-	Name (HBSY, Zero)
-	Name (HIDX, Zero)
-	Name (HRDY, Zero)
+	Name (HBSY, 0)
+	Name (HIDX, 0)
+	Name (HRDY, 0)
 
 	Method (HDEM, 0, Serialized)
 	{
-		HBSY = Zero
+		HBSY = 0
 		Return (HIDX)
 	}
 
 	Method (HDMM, 0, Serialized)
 	{
-		Return (Zero)
+		Return (0)
 	}
 
 	Method (HDSM, 1, Serialized)
@@ -29,7 +29,7 @@
 		HIDX = Arg0
 
 		Notify (HIDD, 0xC0)
-		Local0 = Zero
+		Local0 = 0
 		While ((Local0 < 0xFA) && HBSY)
 		{
 			Sleep (0x04)
@@ -38,13 +38,13 @@
 
 		If (HBSY == 1)
 		{
-			HBSY = Zero
-			HIDX = Zero
+			HBSY = 0
+			HIDX = 0
 			Return (1)
 		}
 		Else
 		{
-			Return (Zero)
+			Return (0)
 		}
 	}
 }
diff --git a/src/ec/system76/ec/acpi/s76.asl b/src/ec/system76/ec/acpi/s76.asl
index 78614ee..6828be8 100644
--- a/src/ec/system76/ec/acpi/s76.asl
+++ b/src/ec/system76/ec/acpi/s76.asl
@@ -100,7 +100,7 @@
 			^^PCI0.LPCB.EC0.FDAT = 1
 			^^PCI0.LPCB.EC0.FCMD = 0xCA
 			Local0 = ^^PCI0.LPCB.EC0.FBUF
-			^^PCI0.LPCB.EC0.FCMD = Zero
+			^^PCI0.LPCB.EC0.FCMD = 0
 		}
 		Return (Local0)
 	}
@@ -108,7 +108,7 @@
 	// Set KB Led
 	Method (SKBL, 1, Serialized) {
 		If (^^PCI0.LPCB.EC0.ECOK) {
-			^^PCI0.LPCB.EC0.FDAT = Zero
+			^^PCI0.LPCB.EC0.FDAT = 0
 			^^PCI0.LPCB.EC0.FBUF = Arg0
 			^^PCI0.LPCB.EC0.FCMD = 0xCA
 		}
diff --git a/src/superio/acpi/pnp.asl b/src/superio/acpi/pnp.asl
index dbdba5c..488a0db 100644
--- a/src/superio/acpi/pnp.asl
+++ b/src/superio/acpi/pnp.asl
@@ -55,7 +55,7 @@
 
 #define PNP_GENERIC_DIS(LDN) \
 	ENTER_CONFIG_MODE (LDN)\
-	  PNP_DEVICE_ACTIVE = Zero \
+	  PNP_DEVICE_ACTIVE = 0 \
 	EXIT_CONFIG_MODE ()\
 
 
diff --git a/src/superio/acpi/pnp_kbc.asl b/src/superio/acpi/pnp_kbc.asl
index 4fd5ab0..b0055be 100644
--- a/src/superio/acpi/pnp_kbc.asl
+++ b/src/superio/acpi/pnp_kbc.asl
@@ -46,7 +46,7 @@
 	Method (_DIS)
 	{
 		ENTER_CONFIG_MODE (SUPERIO_KBC_LDN)
-		  PNP_DEVICE_ACTIVE = Zero
+		  PNP_DEVICE_ACTIVE = 0
 		EXIT_CONFIG_MODE ()
 		#if defined(SUPERIO_KBC_PS2LDN)
 		Notify (SUPERIO_ID(PS2, SUPERIO_KBC_PS2LDN), 1)
@@ -166,7 +166,7 @@
 	Method (_DIS)
 	{
 		ENTER_CONFIG_MODE (SUPERIO_KBC_PS2LDN)
-		  PNP_DEVICE_ACTIVE = Zero
+		  PNP_DEVICE_ACTIVE = 0
 		EXIT_CONFIG_MODE ()
 	}
 
diff --git a/src/superio/smsc/sch5545/acpi/resource_helpers.asl b/src/superio/smsc/sch5545/acpi/resource_helpers.asl
index c3557f8..528bdb6 100644
--- a/src/superio/smsc/sch5545/acpi/resource_helpers.asl
+++ b/src/superio/smsc/sch5545/acpi/resource_helpers.asl
@@ -41,7 +41,7 @@
 	Local0 = PNP_DEVICE_ACTIVE
 	If (Local0 == 0xFF)
 	{
-		Return (Zero)
+		Return (0)
 	}
 
 	Local0 &= 1
@@ -60,7 +60,7 @@
 	}
 	Else
 	{
-		Return (Zero)
+		Return (0)
 	}
 
 	EXIT_CONFIG_MODE ()
@@ -154,7 +154,7 @@
 		Return (Local0)
 	}
 
-	Return (Zero)
+	Return (0)
 }
 
 /* Read IRQ resource */
@@ -239,7 +239,7 @@
 			}
 			Else
 			{
-				Return (Zero)
+				Return (0)
 			}
 		}
 
@@ -270,12 +270,12 @@
 			If (Local0 != Local1)
 			{
 				PNP_ADDR_REG = Local3
-				PNP_DATA_REG = Zero
+				PNP_DATA_REG = 0
 				Break
 			}
 			Else
 			{
-				Return (Zero)
+				Return (0)
 			}
 		}
 
@@ -286,7 +286,7 @@
 	Local0 += 0x51
 	PNP_ADDR_REG = Local0
 	PNP_DATA_REG = (0x80 | CGLD (Arg0))
-	Return (Zero)
+	Return (0)
 }
 
 /* Device Current Resource Settings */
@@ -299,9 +299,9 @@
 		IO12 = IO11
 		LEN1 = 0x08
 		IRQM = GIRQ (Arg0)
-		If ((GDMA (Arg0) > 0x03) || (Arg1 == Zero))
+		If ((GDMA (Arg0) > 0x03) || (Arg1 == 0))
 		{
-			DMAM = Zero
+			DMAM = 0
 		}
 		Else
 		{
@@ -319,9 +319,9 @@
 		IO12 = IO11
 		LEN1 = 0x08
 		IRQM = GIRQ (Arg0)
-		If ((GDMA (Arg0) > 0x03) || (Arg1 == Zero))
+		If ((GDMA (Arg0) > 0x03) || (Arg1 == 0))
 		{
-			DMAM = Zero
+			DMAM = 0
 		}
 		Else
 		{
@@ -353,9 +353,9 @@
 			}
 
 			IRQE = GIRQ (Arg0)
-			If ((GDMA (Arg0) > 0x03) || (Arg1 == Zero))
+			If ((GDMA (Arg0) > 0x03) || (Arg1 == 0))
 			{
-				DMAM = Zero
+				DMAM = 0
 			}
 			Else
 			{
@@ -395,9 +395,9 @@
 		IO32 = IO31 /* \_SB_.PCI0.LPCB.SIO1.IO31 */
 		LEN3 = 1
 		IRQE = GIRQ (Arg0)
-		If ((GDMA (Arg0) > 0x03) || (Arg1 == Zero))
+		If ((GDMA (Arg0) > 0x03) || (Arg1 == 0))
 		{
-			DMAM = Zero
+			DMAM = 0
 		}
 		Else
 		{
diff --git a/src/superio/smsc/sch5545/acpi/superio.asl b/src/superio/smsc/sch5545/acpi/superio.asl
index 8fb9da2..c9a5f5a 100644
--- a/src/superio/smsc/sch5545/acpi/superio.asl
+++ b/src/superio/smsc/sch5545/acpi/superio.asl
@@ -56,7 +56,7 @@
 	Name (IOST, 0x0001) /* IO decoding status */
 	Name (MSFG, 1) /* Mouse wake config */
 	Name (KBFG, 1) /* Keyboard wake config */
-	Name (PMFG, Zero) /* Wake config */
+	Name (PMFG, 0) /* Wake config */
 
 	/* SuperIO configuration ports */
 	OperationRegion (CREG, SystemIO, SUPERIO_PNP_BASE, 0x02)
@@ -316,7 +316,7 @@
 			While (KRDY) {}
 			KP60 = 0xED
 			While (KRDY) {}
-			KP60 = Zero
+			KP60 = 0
 			While (KRDY) {}
 			KP60 = 0xF4
 			Sleep (1)
@@ -383,17 +383,17 @@
 		Name (_UID, SUPERIO_UID(SER, SUPERIO_UARTA_LDN))
 		Method (_STA, 0, NotSerialized)
 		{
-			Return (DSTA (Zero))
+			Return (DSTA (0))
 		}
 
 		Method (_DIS, 0, NotSerialized)
 		{
-			DCNT (Zero, Zero)
+			DCNT (0, 0)
 		}
 
 		Method (_CRS, 0, NotSerialized)
 		{
-			Return (DCRS (Zero, Zero))
+			Return (DCRS (0, 0))
 		}
 
 		Method (_SRS, 1, NotSerialized)
@@ -402,9 +402,9 @@
 			CreateWordField (Arg0, 0x09, IRQM)
 			ENTER_CONFIG_MODE (SUPERIO_LPC_LDN)
 			STIO (0x6A, IO11)
-			SIRQ (Zero, IRQM)
+			SIRQ (0, IRQM)
 			EXIT_CONFIG_MODE ()
-			DCNT (Zero, 1)
+			DCNT (0, 1)
 		}
 
 		Name (_PRS, ResourceTemplate ()
@@ -481,12 +481,12 @@
 
 		Method (_DIS, 0, NotSerialized)
 		{
-			DCNT (1, Zero)
+			DCNT (1, 0)
 		}
 
 		Method (_CRS, 0, NotSerialized)
 		{
-			Return (DCRS (1, Zero))
+			Return (DCRS (1, 0))
 		}
 
 		Method (_SRS, 1, NotSerialized)
diff --git a/src/superio/winbond/w83627hf/acpi/superio.asl b/src/superio/winbond/w83627hf/acpi/superio.asl
index 3d85af6..0795d54 100644
--- a/src/superio/winbond/w83627hf/acpi/superio.asl
+++ b/src/superio/winbond/w83627hf/acpi/superio.asl
@@ -179,7 +179,7 @@
 	/* PM: Switch to D0 by setting IPD low */
 	Method (_PS0) {
 		ENTER_CONFIG_MODE (PNP_NO_LDN_CHANGE)
-		IPD = Zero
+		IPD = 0
 		EXIT_CONFIG_MODE ()
 	}
 
@@ -233,14 +233,14 @@
 		/* Enable power saving mode */
 		Method (_PS3) {
 			ENTER_CONFIG_MODE (PNP_NO_LDN_CHANGE)
-			FDPW = Zero
+			FDPW = 0
 			EXIT_CONFIG_MODE ()
 		}
 
 		Method (_DIS)
 		{
 			ENTER_CONFIG_MODE (0)
-			ACTR = Zero
+			ACTR = 0
 			EXIT_CONFIG_MODE ()
 		}
 
@@ -343,25 +343,25 @@
 			Sleep(0x64)
 			If (SIFR) { FD1 = 1 }
 
-			ACT1 = Zero
+			ACT1 = 0
 			ACT2 = 1
 			SELE = 1
 			Sleep(0x64)
 			If (SIFR) { FD2 = 1 }
 
-			ACT2 = Zero
+			ACT2 = 0
 			ACT3 = 1
 			SELE = 2
 			Sleep(0x64)
 			If (SIFR) { FD3 = 1 }
 
-			ACT3 = Zero
+			ACT3 = 0
 			ACT4 = 1
 			SELE = 3
 			Sleep(0x64)
 			If (SIFR) { FD4 = 1 }
-			ACT4 = Zero
-			SELE = Zero
+			ACT4 = 0
+			SELE = 0
 
 			Return (FDE)
 		}
@@ -453,13 +453,13 @@
 		}
 		Method (_PS3) {
 			ENTER_CONFIG_MODE (PNP_NO_LDN_CHANGE)
-			PRPW = Zero
+			PRPW = 0
 			EXIT_CONFIG_MODE ()
 		}
 
 		Method (_DIS) {
 			ENTER_CONFIG_MODE (1)
-			ACTR = Zero
+			ACTR = 0
 			EXIT_CONFIG_MODE ()
 		}
 
@@ -631,14 +631,14 @@
 		}
 		Method (_PS3) {
 			ENTER_CONFIG_MODE (PNP_NO_LDN_CHANGE)
-			UAPW = Zero
+			UAPW = 0
 			EXIT_CONFIG_MODE ()
 		}
 
 		Method (_DIS)
 		{
 			ENTER_CONFIG_MODE (2)
-			ACTR = Zero
+			ACTR = 0
 			EXIT_CONFIG_MODE ()
 		}
 
@@ -757,14 +757,14 @@
 		}
 		Method (_PS3) {
 			ENTER_CONFIG_MODE (PNP_NO_LDN_CHANGE)
-			UBPW = Zero
+			UBPW = 0
 			EXIT_CONFIG_MODE ()
 		}
 
 		Method (_DIS)
 		{
 			ENTER_CONFIG_MODE (3)
-			ACTR = Zero
+			ACTR = 0
 			EXIT_CONFIG_MODE ()
 		}
 
@@ -883,14 +883,14 @@
 		}
 		Method (_PS3) {
 			ENTER_CONFIG_MODE (PNP_NO_LDN_CHANGE)
-			UBPW = Zero
+			UBPW = 0
 			EXIT_CONFIG_MODE ()
 		}
 
 		Method (_DIS)
 		{
 			ENTER_CONFIG_MODE (3)
-			ACTR = Zero
+			ACTR = 0
 			EXIT_CONFIG_MODE ()
 		}
 
@@ -994,7 +994,7 @@
 		Method (_DIS)
 		{
 			ENTER_CONFIG_MODE (6)
-			ACTR = Zero
+			ACTR = 0
 			EXIT_CONFIG_MODE ()
 		}
 
@@ -1085,7 +1085,7 @@
 		Method (_DIS)
 		{
 			ENTER_CONFIG_MODE (5)
-			ACTR = Zero
+			ACTR = 0
 			EXIT_CONFIG_MODE ()
 			Notify(PS2M, 1)
 		}
@@ -1192,7 +1192,7 @@
 		Method (_DIS)
 		{
 			ENTER_CONFIG_MODE (5)
-			IRQ1 = Zero
+			IRQ1 = 0
 			EXIT_CONFIG_MODE ()
 		}
 
@@ -1414,7 +1414,7 @@
 		Method (_PS3)
 		{
 			ENTER_CONFIG_MODE (PNP_NO_LDN_CHANGE)
-			HWPW = Zero
+			HWPW = 0
 			EXIT_CONFIG_MODE ()
 		}
 
