diff --git a/src/acpi/dsdt_top.asl b/src/acpi/dsdt_top.asl
index 4fbbec5..1ae933e 100644
--- a/src/acpi/dsdt_top.asl
+++ b/src/acpi/dsdt_top.asl
@@ -10,11 +10,11 @@
 /* Operating system enumeration. */
 Name (OSYS, 0)
 
-/* Zero => PIC mode, One => APIC Mode */
+/* Zero => PIC mode, 1 => APIC Mode */
 Name (PICM, Zero)
 
 /* Power state (AC = 1) */
-Name (PWRS, One)
+Name (PWRS, 1)
 
 /*
  * The _PIC method is called by the OS to choose between interrupt
diff --git a/src/arch/x86/acpi/debug.asl b/src/arch/x86/acpi/debug.asl
index ad450a8..589b874 100644
--- a/src/arch/x86/acpi/debug.asl
+++ b/src/arch/x86/acpi/debug.asl
@@ -138,7 +138,7 @@
 		Name(BDBG, Buffer(80) {})
 		BDBG = Arg0
 		Local1 = 0
-		while (One) {
+		while (1) {
 			Local0 = GETC(BDBG, Local1)
 			if (Local0 == 0) {
 				return (0)
diff --git a/src/arch/x86/acpi/globutil.asl b/src/arch/x86/acpi/globutil.asl
index 8192cf3..8f530f4 100644
--- a/src/arch/x86/acpi/globutil.asl
+++ b/src/arch/x86/acpi/globutil.asl
@@ -44,7 +44,7 @@
 		Local2 = Derefof(Local0[Local4])
 		Local3 = Derefof(Local1[Local4])
 		if (Local2 > Local3) {
-			Return(One)
+			Return(1)
 		} else {
 			if (Local2 < Local3) {
 				Return(Ones)
@@ -53,7 +53,7 @@
 		Local4++
 	}
 	if (Local4 < Local5) {
-		Return(One)
+		Return(1)
 	} else {
 		if (Local4 < Local6) {
 			Return(Ones)
@@ -83,7 +83,7 @@
 		}
 		Local2++
 	}
-	Return(One)
+	Return(1)
 }
 
 /* ARG0 = IRQ Number(0-15)
diff --git a/src/soc/amd/common/acpi/dptc.asl b/src/soc/amd/common/acpi/dptc.asl
index d4e5c2e..aa70050 100644
--- a/src/soc/amd/common/acpi/dptc.asl
+++ b/src/soc/amd/common/acpi/dptc.asl
@@ -25,7 +25,7 @@
         }
 
         /* If _SB.DTAB is not present, then DPTC Tablet Mode is not enabled. */
-        If (CondRefOf (\_SB.DTAB) && (\_SB.PCI0.LPCB.EC0.TBMD == One))
+        If (CondRefOf (\_SB.DTAB) && (\_SB.PCI0.LPCB.EC0.TBMD == 1))
         {
             \_SB.DTAB()
             Return (Zero)
diff --git a/src/soc/amd/common/acpi/upep.asl b/src/soc/amd/common/acpi/upep.asl
index d8ea30f..b761b79 100644
--- a/src/soc/amd/common/acpi/upep.asl
+++ b/src/soc/amd/common/acpi/upep.asl
@@ -26,7 +26,7 @@
 	Device (PEP) {
 		Name (_HID, "AMDI0005")
 		Name (_CID, EisaId ("PNP0D80"))
-		Name (_UID, One)
+		Name (_UID, 1)
 
 		Method (_STA, 0, NotSerialized) {
 			Return (0x0F)
diff --git a/src/soc/amd/stoneyridge/acpi/sb_pci0_fch.asl b/src/soc/amd/stoneyridge/acpi/sb_pci0_fch.asl
index f7ea782..d955600 100644
--- a/src/soc/amd/stoneyridge/acpi/sb_pci0_fch.asl
+++ b/src/soc/amd/stoneyridge/acpi/sb_pci0_fch.asl
@@ -336,10 +336,10 @@
 	if (Arg1 == 0) {
 		Switch(ToInteger(Arg0)) {
 			Case(Package() {5, 15, 24}) {
-				PG1A = One
+				PG1A = 1
 			}
 			Case(Package() {6, 7, 8, 11, 12, 18}) {
-				PG2_ = One
+				PG2_ = 1
 			}
 		}
 		/* put device into D0 */
@@ -347,7 +347,7 @@
 		{
 			Case(5) {
 				I0TD = 0x00
-				I0PD = One
+				I0PD = 1
 				Local0 = I0DS
 				while(Local0 != 0x7) {
 					Local0 = I0DS
@@ -355,7 +355,7 @@
 			}
 			Case(6) {
 				I1TD = 0x00
-				I1PD = One
+				I1PD = 1
 				Local0 = I1DS
 				while(Local0 != 0x7) {
 					Local0 = I1DS
@@ -363,7 +363,7 @@
 			}
 			Case(7) {
 				I2TD = 0x00
-				I2PD = One
+				I2PD = 1
 				Local0 = I2DS
 				while(Local0 != 0x7) {
 					Local0 = I2DS
@@ -371,7 +371,7 @@
 			}
 			Case(8) {
 				I3TD = 0x00
-				I3PD = One
+				I3PD = 1
 				Local0 = I3DS
 				while(Local0 != 0x7) {
 					Local0 = I3DS
@@ -379,7 +379,7 @@
 			}
 			Case(11) {
 				U0TD = 0x00
-				U0PD = One
+				U0PD = 1
 				Local0 = U0DS
 				while(Local0 != 0x7) {
 					Local0 = U0DS
@@ -387,7 +387,7 @@
 			}
 			Case(12) {
 				U1TD = 0x00
-				U1PD = One
+				U1PD = 1
 				Local0 = U1DS
 				while(Local0 != 0x7) {
 					Local0 = U1DS
@@ -398,7 +398,7 @@
 			Case(23) { U3D0()} /* XHCI */
 			Case(24) { /* SD */
 				SDTD = 0x00
-				SDPD = One
+				SDPD = 1
 				Local0 = SDDS
 				while(Local0 != 0x7) {
 					Local0 = SDDS
diff --git a/src/soc/amd/stoneyridge/acpi/usb.asl b/src/soc/amd/stoneyridge/acpi/usb.asl
index bf39c94..4d1aa7f 100644
--- a/src/soc/amd/stoneyridge/acpi/usb.asl
+++ b/src/soc/amd/stoneyridge/acpi/usb.asl
@@ -123,13 +123,13 @@
 {
 	if (EH10 != Zero) {
 		EHBA = EH10
-		EHME = One
+		EHME = 1
 		SSIM = ESIM
 	}
 
 	if (E_PS == 3) {
 		RQTY = Zero
-		RQ18 = One
+		RQ18 = 1
 
 		Local0 = U2SR
 		while (Local0) {
@@ -147,7 +147,7 @@
 
 		if (U3TD == 0x03) { /* Shutdown USB2 PLL */
 		    PWGC (0x40, 0)
-		    U2RP = One
+		    U2RP = 1
 		}
 	}
 }
@@ -159,15 +159,15 @@
 	U2TD =  0x00
 
 	U2TD = Zero
-	U2PD = One
+	U2PD = 1
 
 	Local0 = U2DS
 	while (Local0 != 0x7) {
 		Local0 = U2DS
 	}
 
-	RQTY = One
-	RQ18 = One
+	RQTY = 1
+	RQ18 = 1
 	Local0 = U2SR
 	while (!Local0) {
 		Local0 = U2SR
@@ -177,7 +177,7 @@
 
 	if (EH10 != Zero) {
 		EHBA = EH10
-		EHME = One
+		EHME = 1
 		ESIM = SSIM
 	}
 
@@ -187,11 +187,11 @@
 
 Method(LXFW,3, Serialized)  //Load Xhci FirmWare
 {
-	FWLM = One  /* Firmware Load Mode */
+	FWLM = 1  /* Firmware Load Mode */
 	ROAM = Arg0 /* ROM/RAM */
 	UA04 = Arg1
 	UA08 = Arg2
-	FPLS = One    /* Firmware Preload Start */
+	FPLS = 1    /* Firmware Preload Start */
 	Local0 = FPLC /* Firmware Preload Complete */
 	while (!Local0) {
 		Local0 = FPLC
@@ -209,7 +209,7 @@
 		while (!Local0) { /* wait for it to complete */
 			Local0 = PGA3 & 0x20
 		}
-		UD3P = One /* U3P_D3Cold_PWRDN */
+		UD3P = 1 /* U3P_D3Cold_PWRDN */
 
 		U3PD = Zero /* PwrOnDev */
 		Local0 = U3DS
@@ -219,21 +219,21 @@
 
 		U3TD = 0x3 /* TargetedDeviceState */
 
-		U3RP = One /* USB3_RefClk_Pwdn */
+		U3RP = 1 /* USB3_RefClk_Pwdn */
 
 		if (U2TD == 0x3) { /* If EHCI targeted in D3cold */
 			PGA3 &= 0x9f /* SwUsb2S5RstB */
-			U2RP = One   /* USB2_RefClk_Pwdn */
+			U2RP = 1   /* USB2_RefClk_Pwdn */
 		}
 		U3PG = Zero /* XhcPwrGood  */
-		U3PS = One  /* Usb3PowerSel */
+		U3PS = 1  /* Usb3PowerSel */
 	}
 }
 
 Method(U3D0,0, Serialized)
 {
 	U3PS = Zero /* Usb3PowerSel */
-	U3PG = One  /* XhcPwrGood  */
+	U3PG = 1  /* XhcPwrGood  */
 
 	U2RP = Zero
 	U3RP = Zero
@@ -243,7 +243,7 @@
 	PGA3 = Local0 /* SwUsb2S5RstB */
 
 	U3TD = Zero /* TargetedDeviceState */
-	U3PD = One  /* PwrOnDev */
+	U3PD = 1  /* PwrOnDev */
 
 	Local0 = U3DS /* wait for RstBState, RefClkOkState, PwrRstBState */
 	while (Local0 != 0x7) {
@@ -259,7 +259,7 @@
 
 	Local0 = AUSS /* AutoSizeStart */
 	if (Local0 != 1) {
-		AUSS = One
+		AUSS = 1
 	}
 	Local0 = AUSS
 	while (Local0 != 1) {
@@ -271,9 +271,9 @@
 
 	X0_R ()
 
-	U3PR = One  /* U3P_RESTORE_RESET */
+	U3PR = 1  /* U3P_RESTORE_RESET */
 	UD3P = Zero /* U3P_D3Cold_PWRDN */
-	U3TD = One  /* TargetedDeviceState */
+	U3TD = 1  /* TargetedDeviceState */
 }
 
 Name (SVBF, Buffer (0x1000) {0})    /* length from FchCarrizo.asl, new fields */
diff --git a/src/soc/intel/alderlake/acpi/pch_hda.asl b/src/soc/intel/alderlake/acpi/pch_hda.asl
index 13b4d3d..a7c3b24 100644
--- a/src/soc/intel/alderlake/acpi/pch_hda.asl
+++ b/src/soc/intel/alderlake/acpi/pch_hda.asl
@@ -37,9 +37,9 @@
 				 * if NHLT address and length are set in NVS.
 				 */
 				If ((Arg1 == 1) && (NHLA != 0) && (NHLL != 0)) {
-					Return (Buffer (One) { 0x03 })
+					Return (Buffer (1) { 0x03 })
 				} Else {
-					Return (Buffer (One) { 0x01 })
+					Return (Buffer (1) { 0x01 })
 				}
 			}
 
@@ -63,6 +63,6 @@
 			}
 		}
 
-		Return (Buffer (One) { 0x00 })
+		Return (Buffer (1) { 0x00 })
 	}
 }
diff --git a/src/soc/intel/apollolake/acpi/pch_hda.asl b/src/soc/intel/apollolake/acpi/pch_hda.asl
index 1b595e9..f579030 100644
--- a/src/soc/intel/apollolake/acpi/pch_hda.asl
+++ b/src/soc/intel/apollolake/acpi/pch_hda.asl
@@ -40,10 +40,10 @@
 				 * if NHLT address and length are set in NVS.
 				 */
 				If (Arg1 == 1 && NHLA != 0 && NHLL != 0) {
-					Return (Buffer (One) { 0x03 })
+					Return (Buffer (1) { 0x03 })
 				}
 				Else {
-					Return (Buffer (One) { 0x01 })
+					Return (Buffer (1) { 0x01 })
 				}
 			}
 
@@ -65,6 +65,6 @@
 			}
 		}
 
-		Return (Buffer (One) { 0x00 })
+		Return (Buffer (1) { 0x00 })
 	}
 }
diff --git a/src/soc/intel/baytrail/acpi/dptf/charger.asl b/src/soc/intel/baytrail/acpi/dptf/charger.asl
index 1b0bd78..d4a92f1 100644
--- a/src/soc/intel/baytrail/acpi/dptf/charger.asl
+++ b/src/soc/intel/baytrail/acpi/dptf/charger.asl
@@ -9,7 +9,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
diff --git a/src/soc/intel/baytrail/acpi/dptf/cpu.asl b/src/soc/intel/baytrail/acpi/dptf/cpu.asl
index 9affbea..61eb452 100644
--- a/src/soc/intel/baytrail/acpi/dptf/cpu.asl
+++ b/src/soc/intel/baytrail/acpi/dptf/cpu.asl
@@ -13,7 +13,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
diff --git a/src/soc/intel/baytrail/acpi/dptf/dptf.asl b/src/soc/intel/baytrail/acpi/dptf/dptf.asl
index 7213abb..adabaaa 100644
--- a/src/soc/intel/baytrail/acpi/dptf/dptf.asl
+++ b/src/soc/intel/baytrail/acpi/dptf/dptf.asl
@@ -19,7 +19,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
diff --git a/src/soc/intel/baytrail/acpi/dptf/thermal.asl b/src/soc/intel/baytrail/acpi/dptf/thermal.asl
index 74287d9..1f99301 100644
--- a/src/soc/intel/baytrail/acpi/dptf/thermal.asl
+++ b/src/soc/intel/baytrail/acpi/dptf/thermal.asl
@@ -52,7 +52,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
@@ -108,7 +108,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
@@ -164,7 +164,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
diff --git a/src/soc/intel/baytrail/acpi/southcluster.asl b/src/soc/intel/baytrail/acpi/southcluster.asl
index 03f884a..53f181e 100644
--- a/src/soc/intel/baytrail/acpi/southcluster.asl
+++ b/src/soc/intel/baytrail/acpi/southcluster.asl
@@ -155,11 +155,11 @@
 	CreateDWordField (MCRS, ^LMEM._MIN, LMIN)
 	CreateDWordField (MCRS, ^LMEM._MAX, LMAX)
 	CreateDWordField (MCRS, ^LMEM._LEN, LLEN)
-	If (LPFW != Zero && LPEN == One)
+	If (LPFW != Zero && LPEN == 1)
 	{
 		LMIN = LPFW
 		LLEN = 0x00100000
-		LMAX = LMIN + LLEN - One
+		LMAX = LMIN + LLEN - 1
 	}
 	Else
 	{
diff --git a/src/soc/intel/baytrail/acpi/xhci.asl b/src/soc/intel/baytrail/acpi/xhci.asl
index 51f46bb..86b6ae9 100644
--- a/src/soc/intel/baytrail/acpi/xhci.asl
+++ b/src/soc/intel/baytrail/acpi/xhci.asl
@@ -21,7 +21,7 @@
 			REV = 0x02
 
 			// VISI: Port visibility to user per port
-			CreateField (DerefOf (PCKG[0]), 0x40, One, VISI)
+			CreateField (DerefOf (PCKG[0]), 0x40, 1, VISI)
 			VISI = Arg0
 			Return (PCKG)
 		}
diff --git a/src/soc/intel/braswell/acpi/dptf/charger.asl b/src/soc/intel/braswell/acpi/dptf/charger.asl
index 68245c9..76209c9 100644
--- a/src/soc/intel/braswell/acpi/dptf/charger.asl
+++ b/src/soc/intel/braswell/acpi/dptf/charger.asl
@@ -9,7 +9,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
diff --git a/src/soc/intel/braswell/acpi/dptf/cpu.asl b/src/soc/intel/braswell/acpi/dptf/cpu.asl
index 7a8511f..728d094 100644
--- a/src/soc/intel/braswell/acpi/dptf/cpu.asl
+++ b/src/soc/intel/braswell/acpi/dptf/cpu.asl
@@ -40,7 +40,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
diff --git a/src/soc/intel/braswell/acpi/dptf/dptf.asl b/src/soc/intel/braswell/acpi/dptf/dptf.asl
index c4d9c61..eddabd1 100644
--- a/src/soc/intel/braswell/acpi/dptf/dptf.asl
+++ b/src/soc/intel/braswell/acpi/dptf/dptf.asl
@@ -19,7 +19,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
diff --git a/src/soc/intel/braswell/acpi/dptf/thermal.asl b/src/soc/intel/braswell/acpi/dptf/thermal.asl
index 0f5d90f..2f49ffe 100644
--- a/src/soc/intel/braswell/acpi/dptf/thermal.asl
+++ b/src/soc/intel/braswell/acpi/dptf/thermal.asl
@@ -52,7 +52,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
@@ -108,7 +108,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
@@ -164,7 +164,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
diff --git a/src/soc/intel/braswell/acpi/dptf/wifi.asl b/src/soc/intel/braswell/acpi/dptf/wifi.asl
index 8c0105f..9ea9ef6 100644
--- a/src/soc/intel/braswell/acpi/dptf/wifi.asl
+++ b/src/soc/intel/braswell/acpi/dptf/wifi.asl
@@ -9,7 +9,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
diff --git a/src/soc/intel/braswell/acpi/dptf/wwan.asl b/src/soc/intel/braswell/acpi/dptf/wwan.asl
index bef112f..91dbf93 100644
--- a/src/soc/intel/braswell/acpi/dptf/wwan.asl
+++ b/src/soc/intel/braswell/acpi/dptf/wwan.asl
@@ -9,7 +9,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
diff --git a/src/soc/intel/braswell/acpi/southcluster.asl b/src/soc/intel/braswell/acpi/southcluster.asl
index 2a374f0..39aa076 100644
--- a/src/soc/intel/braswell/acpi/southcluster.asl
+++ b/src/soc/intel/braswell/acpi/southcluster.asl
@@ -154,7 +154,7 @@
 	CreateDWordField (MCRS, LMEM._MIN, LMIN)
 	CreateDWordField (MCRS, LMEM._MAX, LMAX)
 	CreateDWordField (MCRS, LMEM._LEN, LLEN)
-	If (LPFW != Zero && LPEN == One)
+	If (LPFW != Zero && LPEN == 1)
 	{
 		LMIN = LPFW
 		LMAX = LMIN + 0x001FFFFF
diff --git a/src/soc/intel/cannonlake/acpi/pch_hda.asl b/src/soc/intel/cannonlake/acpi/pch_hda.asl
index e527c00..4941f6a 100644
--- a/src/soc/intel/cannonlake/acpi/pch_hda.asl
+++ b/src/soc/intel/cannonlake/acpi/pch_hda.asl
@@ -37,9 +37,9 @@
 				 * if NHLT address and length are set in NVS.
 				 */
 				If (Arg1 == 1 && NHLA != 0 && NHLL != 0) {
-					Return (Buffer (One) { 0x03 })
+					Return (Buffer (1) { 0x03 })
 				} Else {
-					Return (Buffer (One) { 0x01 })
+					Return (Buffer (1) { 0x01 })
 				}
 			}
 
@@ -63,6 +63,6 @@
 			}
 		}
 
-		Return (Buffer (One) { 0x00 })
+		Return (Buffer (1) { 0x00 })
 	}
 }
diff --git a/src/soc/intel/cannonlake/acpi/xhci.asl b/src/soc/intel/cannonlake/acpi/xhci.asl
index 52fdcbe..20a56de 100644
--- a/src/soc/intel/cannonlake/acpi/xhci.asl
+++ b/src/soc/intel/cannonlake/acpi/xhci.asl
@@ -46,7 +46,7 @@
 {
 	Local0 = Arg0
 
-	While (One) {
+	While (1) {
 		FindSetRightBit (Local0, Local1)
 		If (Local1 == Zero) {
 			Break
diff --git a/src/soc/intel/common/acpi/dptf/charger.asl b/src/soc/intel/common/acpi/dptf/charger.asl
index 3abb082..1753383 100644
--- a/src/soc/intel/common/acpi/dptf/charger.asl
+++ b/src/soc/intel/common/acpi/dptf/charger.asl
@@ -10,7 +10,7 @@
 
 	Method (_STA)
 	{
-		If (\DPTE == One) {
+		If (\DPTE == 1) {
 			Return (0xF)
 		} Else {
 			Return (0x0)
diff --git a/src/soc/intel/elkhartlake/acpi/pch_hda.asl b/src/soc/intel/elkhartlake/acpi/pch_hda.asl
index 340c765..dd031bf 100644
--- a/src/soc/intel/elkhartlake/acpi/pch_hda.asl
+++ b/src/soc/intel/elkhartlake/acpi/pch_hda.asl
@@ -36,10 +36,10 @@
 				 * NHLT Query only supported for revision 1 and
 				 * if NHLT address and length are set in NVS.
 				 */
-				If ((Arg1 == One) && ((NHLA != Zero) && (NHLL != Zero))) {
-					Return (Buffer (One) { 0x03 })
+				If ((Arg1 == 1) && ((NHLA != Zero) && (NHLL != Zero))) {
+					Return (Buffer (1) { 0x03 })
 				} Else {
-					Return (Buffer (One) { 0x01 })
+					Return (Buffer (1) { 0x01 })
 				}
 			}
 
@@ -50,7 +50,7 @@
 			 *
 			 * Returns a pointer to NHLT table in memory.
 			 */
-			If (Arg2 == One) {
+			If (Arg2 == 1) {
 				CreateQWordField (NBUF, ^NHLT._MIN, NBAS)
 				CreateQWordField (NBUF, ^NHLT._MAX, NMAS)
 				CreateQWordField (NBUF, ^NHLT._LEN, NLEN)
@@ -63,6 +63,6 @@
 			}
 		}
 
-		Return (Buffer (One) { 0x00 })
+		Return (Buffer (1) { 0x00 })
 	}
 }
diff --git a/src/soc/intel/icelake/acpi/pch_hda.asl b/src/soc/intel/icelake/acpi/pch_hda.asl
index b3b5270..01f957c 100644
--- a/src/soc/intel/icelake/acpi/pch_hda.asl
+++ b/src/soc/intel/icelake/acpi/pch_hda.asl
@@ -36,10 +36,10 @@
 				 * NHLT Query only supported for revision 1 and
 				 * if NHLT address and length are set in NVS.
 				 */
-				If (Arg1 == One && NHLA != Zero && NHLL != Zero) {
-					Return (Buffer (One) { 0x03 })
+				If (Arg1 == 1 && NHLA != Zero && NHLL != Zero) {
+					Return (Buffer (1) { 0x03 })
 				} Else {
-					Return (Buffer (One) { 0x01 })
+					Return (Buffer (1) { 0x01 })
 				}
 			}
 
@@ -50,7 +50,7 @@
 			 *
 			 * Returns a pointer to NHLT table in memory.
 			 */
-			If (Arg2 == One) {
+			If (Arg2 == 1) {
 				CreateQWordField (NBUF, ^NHLT._MIN, NBAS)
 				CreateQWordField (NBUF, ^NHLT._MAX, NMAS)
 				CreateQWordField (NBUF, ^NHLT._LEN, NLEN)
@@ -63,6 +63,6 @@
 			}
 		}
 
-		Return (Buffer (One) { 0x00 })
+		Return (Buffer (1) { 0x00 })
 	}
 }
diff --git a/src/soc/intel/jasperlake/acpi/pch_hda.asl b/src/soc/intel/jasperlake/acpi/pch_hda.asl
index 340c765..dd031bf 100644
--- a/src/soc/intel/jasperlake/acpi/pch_hda.asl
+++ b/src/soc/intel/jasperlake/acpi/pch_hda.asl
@@ -36,10 +36,10 @@
 				 * NHLT Query only supported for revision 1 and
 				 * if NHLT address and length are set in NVS.
 				 */
-				If ((Arg1 == One) && ((NHLA != Zero) && (NHLL != Zero))) {
-					Return (Buffer (One) { 0x03 })
+				If ((Arg1 == 1) && ((NHLA != Zero) && (NHLL != Zero))) {
+					Return (Buffer (1) { 0x03 })
 				} Else {
-					Return (Buffer (One) { 0x01 })
+					Return (Buffer (1) { 0x01 })
 				}
 			}
 
@@ -50,7 +50,7 @@
 			 *
 			 * Returns a pointer to NHLT table in memory.
 			 */
-			If (Arg2 == One) {
+			If (Arg2 == 1) {
 				CreateQWordField (NBUF, ^NHLT._MIN, NBAS)
 				CreateQWordField (NBUF, ^NHLT._MAX, NMAS)
 				CreateQWordField (NBUF, ^NHLT._LEN, NLEN)
@@ -63,6 +63,6 @@
 			}
 		}
 
-		Return (Buffer (One) { 0x00 })
+		Return (Buffer (1) { 0x00 })
 	}
 }
diff --git a/src/soc/intel/skylake/acpi/pch_hda.asl b/src/soc/intel/skylake/acpi/pch_hda.asl
index 3de64b7..d9a5f5d 100644
--- a/src/soc/intel/skylake/acpi/pch_hda.asl
+++ b/src/soc/intel/skylake/acpi/pch_hda.asl
@@ -37,9 +37,9 @@
 				 * if NHLT address and length are set in NVS.
 				 */
 				If ((Arg1 == 1) && (NHLA != 0) && (NHLL != 0)) {
-					Return (Buffer (One) { 0x03 })
+					Return (Buffer (1) { 0x03 })
 				} Else {
-					Return (Buffer (One) { 0x01 })
+					Return (Buffer (1) { 0x01 })
 				}
 			}
 
@@ -63,6 +63,6 @@
 			}
 		}
 
-		Return (Buffer (One) { 0x00 })
+		Return (Buffer (1) { 0x00 })
 	}
 }
diff --git a/src/soc/intel/skylake/acpi/xhci.asl b/src/soc/intel/skylake/acpi/xhci.asl
index 31d2152..812bbed 100644
--- a/src/soc/intel/skylake/acpi/xhci.asl
+++ b/src/soc/intel/skylake/acpi/xhci.asl
@@ -44,7 +44,7 @@
 {
 	Local0 = Arg0
 
-	While (One) {
+	While (1) {
 		FindSetRightBit (Local0, Local1)
 		If (Local1 == Zero) {
 			Break
@@ -225,7 +225,7 @@
 			REV = 0x02
 
 			// VISI: Port visibility to user per port
-			CreateField (DerefOf (PCKG[0]), 0x40, One, VISI)
+			CreateField (DerefOf (PCKG[0]), 0x40, 1, VISI)
 			VISI = Arg0
 
 			Return (PCKG)
diff --git a/src/soc/intel/tigerlake/acpi/pch_hda.asl b/src/soc/intel/tigerlake/acpi/pch_hda.asl
index 13b4d3d..a7c3b24 100644
--- a/src/soc/intel/tigerlake/acpi/pch_hda.asl
+++ b/src/soc/intel/tigerlake/acpi/pch_hda.asl
@@ -37,9 +37,9 @@
 				 * if NHLT address and length are set in NVS.
 				 */
 				If ((Arg1 == 1) && (NHLA != 0) && (NHLL != 0)) {
-					Return (Buffer (One) { 0x03 })
+					Return (Buffer (1) { 0x03 })
 				} Else {
-					Return (Buffer (One) { 0x01 })
+					Return (Buffer (1) { 0x01 })
 				}
 			}
 
@@ -63,6 +63,6 @@
 			}
 		}
 
-		Return (Buffer (One) { 0x00 })
+		Return (Buffer (1) { 0x00 })
 	}
 }
diff --git a/src/soc/intel/xeon_sp/acpi/iiostack.asl b/src/soc/intel/xeon_sp/acpi/iiostack.asl
index 73f9937..91a5c6c 100644
--- a/src/soc/intel/xeon_sp/acpi/iiostack.asl
+++ b/src/soc/intel/xeon_sp/acpi/iiostack.asl
@@ -43,7 +43,7 @@
 				CTRL &= 0x1D					\
 				/* Disable Native PCIe AER handling from OS */	\
 				CTRL &= 0x17					\
-				If ((Arg1 != One)) /* unknown revision */	\
+				If ((Arg1 != 1)) /* unknown revision */	\
 				{						\
 					CDW1 |= 0x08				\
 				}						\
