diff --git a/src/mainboard/google/poppy/variants/atlas/include/variant/acpi/cam0.asl b/src/mainboard/google/poppy/variants/atlas/include/variant/acpi/cam0.asl
index 7c85650..0a703d4 100644
--- a/src/mainboard/google/poppy/variants/atlas/include/variant/acpi/cam0.asl
+++ b/src/mainboard/google/poppy/variants/atlas/include/variant/acpi/cam0.asl
@@ -15,25 +15,23 @@
 
 Scope (\_SB.PCI0.I2C3)
 {
-	Device (CAM0)
-	{
-		Name (_HID, "INT3478") /* _HID: Hardware ID */
-		Name (_UID, Zero)  /* _UID: Unique ID */
-		Name (_DDN, "SONY IMX208 Camera")  /* _DDN: DOS Device Name */
-
-		Method (_STA, 0, NotSerialized)  /* _STA: Status */
-		{
-			Return (0x0F)
-		}
-
-		Name (_CRS, ResourceTemplate ()
-		{
-			I2cSerialBus (0x0010, ControllerInitiated, 0x00061A80,
-				AddressingMode7Bit, "\\_SB.PCI0.I2C3",
-				0x00, ResourceConsumer, ,)
-		})
-
+	/* Power resource methods for Front Camera */
+	PowerResource (FCPR, 0, 0) {
 		Name (STA, 0)
+		Method (_ON, 0, Serialized) {
+			PMON ()
+		}
+		Method (_OFF, 0, Serialized) {
+			PMOF ()
+		}
+		Method (_STA, 0, Serialized) {
+			If (LGreater(STA,0)) {
+				Return (0x1)
+			}
+			Else {
+				Return (0x0)
+			}
+		}
 		Method (PMON, 0, Serialized) {
 			If (STA == 0) {
 				CTXS (EN_CAM_PMIC_RST_L)
@@ -57,27 +55,29 @@
 				CTXS (EN_PP3300_DX_CAM)
 			}
 		}
+	}
+
+	Device (CAM0)
+	{
+		Name (_HID, "INT3478") /* _HID: Hardware ID */
+		Name (_UID, Zero)  /* _UID: Unique ID */
+		Name (_DDN, "SONY IMX208 Camera")  /* _DDN: DOS Device Name */
+
+		Method (_STA, 0, NotSerialized)  /* _STA: Status */
+		{
+			Return (0x0F)
+		}
+
+		Name (_CRS, ResourceTemplate ()
+		{
+			I2cSerialBus (0x0010, ControllerInitiated, 0x00061A80,
+				AddressingMode7Bit, "\\_SB.PCI0.I2C3",
+				0x00, ResourceConsumer, ,)
+		})
 
 		Name (_PR0, Package (0x01) { FCPR })
 		Name (_PR3, Package (0x01) { FCPR })
 
-		/* Power resource methods for Front Camera */
-		PowerResource (FCPR, 0, 0) {
-			Method (_ON, 0, Serialized) {
-				PMON ()
-			}
-			Method (_OFF, 0, Serialized) {
-				PMOF ()
-			}
-			Method (_STA, 0, Serialized) {
-				If (LGreater(STA,0)) {
-					Return (0x1)
-				}
-				Else {
-					Return (0x0)
-				}
-			}
-		}
 
 		/* Port0 of CAM0 is connected to port0 of CIO2 device */
 		Name (_DSD, Package () {
@@ -119,4 +119,38 @@
 			}
 		})
 	}
+
+	Device (NVM0)
+	{
+		Name (_HID, "INT3499") /* _HID: Hardware ID */
+		Name (_UID, Zero)  /* _UID: Unique ID */
+		Name (_DDN, "GT24C16S")  /* _DDN: DOS Device Name */
+
+		Method (_STA, 0, NotSerialized)  /* _STA: Status */
+		{
+			Return (0x0F)
+		}
+
+		Name (_CRS, ResourceTemplate ()
+		{
+			I2cSerialBus (0x0050, ControllerInitiated, 0x00061A80,
+				AddressingMode7Bit, "\\_SB.PCI0.I2C3",
+				0x00, ResourceConsumer, ,)
+		})
+
+		Name (_DEP, Package () { CAM0 })
+		Name (_PR0, Package (0x01) { FCPR })
+		Name (_PR3, Package (0x01) { FCPR })
+
+		Name (_DSD, Package ()
+		{
+			ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+			Package () {
+				Package () { "size", 2048 },
+				Package () { "pagesize", 1 },
+				Package () { "read-only", 1 },
+				Package () { "address-width", 8 },
+			}
+		})
+	}
 }
