<p>Anonymous Coward #1001830 has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/23056">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mainboard/google/poppy/variants/nautilus - MIPI camera asl files for Nautilus<br><br>* added IMX258 sensor entity<br>* enabled CIO2 and IMGu in devicetree.cb<br><br>* On Pre-EVT/EVT the USB and MIPI share the same power source.<br>* before HW fix, temporarily disabled turn off 3V3_VDD<br><br>BUG=b:70644925<br>BRANCH=Master<br>TEST=test on Nautilus boards to enable camera pin control by PMIC<br><br>Change-Id: Iebd41ac3631829bbb0b008761eb67c3db3e94638<br>Signed-off-by: andy yeh <andy.yeh@intel.corp-partner.google.com><br>---<br>M src/mainboard/google/poppy/Kconfig<br>M src/mainboard/google/poppy/variants/nautilus/devicetree.cb<br>A src/mainboard/google/poppy/variants/nautilus/include/variant/acpi/camera.asl<br>A src/mainboard/google/poppy/variants/nautilus/include/variant/acpi/ipu_mainboard.asl<br>A src/mainboard/google/poppy/variants/nautilus/include/variant/acpi/mipi_camera.asl<br>5 files changed, 656 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/56/23056/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/mainboard/google/poppy/Kconfig b/src/mainboard/google/poppy/Kconfig</span><br><span>index 9315d96..1734ac0 100644</span><br><span>--- a/src/mainboard/google/poppy/Kconfig</span><br><span>+++ b/src/mainboard/google/poppy/Kconfig</span><br><span>@@ -136,6 +136,7 @@</span><br><span>  select DRIVERS_GENERIC_MAX98357A</span><br><span>     select DRIVERS_I2C_DA7219</span><br><span>    select DRIVERS_PS2_KEYBOARD</span><br><span style="color: hsl(120, 100%, 40%);">+   select VARIANT_HAS_CAMERA_ACPI</span><br><span>       select VARIANT_HAS_I2C_TPM if !VBOOT_MOCK_SECDATA</span><br><span> </span><br><span> config VARIANT_SPECIFIC_OPTIONS_SORAKA</span><br><span>diff --git a/src/mainboard/google/poppy/variants/nautilus/devicetree.cb b/src/mainboard/google/poppy/variants/nautilus/devicetree.cb</span><br><span>index a548ac9..2dfe858 100644</span><br><span>--- a/src/mainboard/google/poppy/variants/nautilus/devicetree.cb</span><br><span>+++ b/src/mainboard/google/poppy/variants/nautilus/devicetree.cb</span><br><span>@@ -38,8 +38,8 @@</span><br><span>     register "XdciEnable" = "0"</span><br><span>      register "SsicPortEnable" = "0"</span><br><span>  register "SmbusEnable" = "1"</span><br><span style="color: hsl(0, 100%, 40%);">-        register "Cio2Enable" = "0"</span><br><span style="color: hsl(0, 100%, 40%);">- register "SaImguEnable" = "0"</span><br><span style="color: hsl(120, 100%, 40%);">+     register "Cio2Enable" = "1"</span><br><span style="color: hsl(120, 100%, 40%);">+       register "SaImguEnable" = "1"</span><br><span>    register "ScsEmmcEnabled" = "1"</span><br><span>  register "ScsEmmcHs400Enabled" = "1"</span><br><span>     register "ScsSdCardEnabled" = "2"</span><br><span>diff --git a/src/mainboard/google/poppy/variants/nautilus/include/variant/acpi/camera.asl b/src/mainboard/google/poppy/variants/nautilus/include/variant/acpi/camera.asl</span><br><span>new file mode 100644</span><br><span>index 0000000..55bd625</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/poppy/variants/nautilus/include/variant/acpi/camera.asl</span><br><span>@@ -0,0 +1,17 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2017 Google Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include "ipu_mainboard.asl"</span><br><span style="color: hsl(120, 100%, 40%);">+#include "mipi_camera.asl"</span><br><span>diff --git a/src/mainboard/google/poppy/variants/nautilus/include/variant/acpi/ipu_mainboard.asl b/src/mainboard/google/poppy/variants/nautilus/include/variant/acpi/ipu_mainboard.asl</span><br><span>new file mode 100644</span><br><span>index 0000000..2e2b129</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/poppy/variants/nautilus/include/variant/acpi/ipu_mainboard.asl</span><br><span>@@ -0,0 +1,62 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright (C) 2017 Intel Corporation.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Scope (\_SB.PCI0.CIO2)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Define two ports for CIO2 device where endpoint of port0</span><br><span style="color: hsl(120, 100%, 40%);">+    is connected to CAM0 and endpoint of port1 is connected to CAM1 */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  Name (_DSD, Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+              ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),</span><br><span style="color: hsl(120, 100%, 40%);">+            Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+                  Package () { "port0", "PRT0" },</span><br><span style="color: hsl(120, 100%, 40%);">+                   Package () { "port1", "PRT1" },</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+     })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  Name (PRT0, Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+              ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),</span><br><span style="color: hsl(120, 100%, 40%);">+            Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+                  Package () { "port", 0 }, /* csi 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+               },</span><br><span style="color: hsl(120, 100%, 40%);">+            ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),</span><br><span style="color: hsl(120, 100%, 40%);">+            Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+                  Package () { "endpoint0", "EP00" },</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+     })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  Name (EP00, Package() {</span><br><span style="color: hsl(120, 100%, 40%);">+               ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),</span><br><span style="color: hsl(120, 100%, 40%);">+            Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+                  Package () { "endpoint", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+                       Package () { "clock-lanes", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+                    Package () { "data-lanes", Package () { 1, 2, 3, 4 } },</span><br><span style="color: hsl(120, 100%, 40%);">+                     Package () { "remote-endpoint",</span><br><span style="color: hsl(120, 100%, 40%);">+                             Package() { \_SB.PCI0.I2C2.CAM0, 0, 0 }</span><br><span style="color: hsl(120, 100%, 40%);">+                       },</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span style="color: hsl(120, 100%, 40%);">+     })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  Name (PRT1, Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+              ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),</span><br><span style="color: hsl(120, 100%, 40%);">+            Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+                  Package () { "port", 1 }, /* csi 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+               },</span><br><span style="color: hsl(120, 100%, 40%);">+            ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),</span><br><span style="color: hsl(120, 100%, 40%);">+            Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+                  Package () { "endpoint0", "EP10" },</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+     })</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/mainboard/google/poppy/variants/nautilus/include/variant/acpi/mipi_camera.asl b/src/mainboard/google/poppy/variants/nautilus/include/variant/acpi/mipi_camera.asl</span><br><span>new file mode 100644</span><br><span>index 0000000..61fd86c</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/poppy/variants/nautilus/include/variant/acpi/mipi_camera.asl</span><br><span>@@ -0,0 +1,574 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright (C) 2017 Intel Corporation.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Scope (\_SB.PCI0.I2C2)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   Device (PMIC)</span><br><span style="color: hsl(120, 100%, 40%);">+ {</span><br><span style="color: hsl(120, 100%, 40%);">+             Name (_HID, "INT3472") /* _HID: Hardware ID */</span><br><span style="color: hsl(120, 100%, 40%);">+              Name (_UID, Zero)  /* _UID: Unique ID */</span><br><span style="color: hsl(120, 100%, 40%);">+              Name (_DDN, "TPS68470 PMIC")  /* _DDN: DOS Device Name */</span><br><span style="color: hsl(120, 100%, 40%);">+           Name (CAMD, 0x64)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           Method (_STA, 0, NotSerialized)  /* _STA: Status */</span><br><span style="color: hsl(120, 100%, 40%);">+           {</span><br><span style="color: hsl(120, 100%, 40%);">+                     Return (0x0F)</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           Method (PMON, 0, Serialized) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        /*</span><br><span style="color: hsl(120, 100%, 40%);">+                     * Turn on 3V3_VDD. It takes around 1 ms for voltage to</span><br><span style="color: hsl(120, 100%, 40%);">+                        * settle to 3.3 Volt. Provide additional 2 ms delay.</span><br><span style="color: hsl(120, 100%, 40%);">+                  */</span><br><span style="color: hsl(120, 100%, 40%);">+                   STXS(EN_PP3300_DX_CAM)</span><br><span style="color: hsl(120, 100%, 40%);">+                        Sleep (3)</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           Method (PMOF, 0, Serialized) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        /* Make Sure all PMIC outputs are off. */</span><br><span style="color: hsl(120, 100%, 40%);">+                     If (LEqual (VSIC, Zero)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    /*</span><br><span style="color: hsl(120, 100%, 40%);">+                     * On Pre-EVT/EVT the USB and MIPI share the same power source,</span><br><span style="color: hsl(120, 100%, 40%);">+                        * before HW fix, temporarily disabled turn off 3V3_VDD</span><br><span style="color: hsl(120, 100%, 40%);">+                        */</span><br><span style="color: hsl(120, 100%, 40%);">+                   /*      CTXS(EN_PP3300_DX_CAM) */</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           Name (_PR0, Package (0x01) { CPMC })</span><br><span style="color: hsl(120, 100%, 40%);">+          Name (_PR3, Package (0x01) { CPMC })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Power resource methods for PMIC */</span><br><span style="color: hsl(120, 100%, 40%);">+         PowerResource (CPMC, 0, 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                  Name (RSTO, 1)</span><br><span style="color: hsl(120, 100%, 40%);">+                        Method (_ON, 0, Serialized) {</span><br><span style="color: hsl(120, 100%, 40%);">+                         PMON()</span><br><span style="color: hsl(120, 100%, 40%);">+                                /* Do not reset PMIC across S3 and S0ix cycle */</span><br><span style="color: hsl(120, 100%, 40%);">+                              if (Lequal (RSTO, 1)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                       CTXS(EN_CAM_PMIC_RST_L)</span><br><span style="color: hsl(120, 100%, 40%);">+                                       Sleep(1)</span><br><span style="color: hsl(120, 100%, 40%);">+                                      STXS(EN_CAM_PMIC_RST_L)</span><br><span style="color: hsl(120, 100%, 40%);">+                                       Sleep (3)</span><br><span style="color: hsl(120, 100%, 40%);">+                                     RSTO = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                              }</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                     Method (_OFF, 0, Serialized) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                PMOF()</span><br><span style="color: hsl(120, 100%, 40%);">+                        }</span><br><span style="color: hsl(120, 100%, 40%);">+                     Method (_STA, 0, Serialized) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                Return (GTXS(EN_PP3300_DX_CAM))</span><br><span style="color: hsl(120, 100%, 40%);">+                       }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* Marks the availability of all the operation regions */</span><br><span style="color: hsl(120, 100%, 40%);">+             Name (AVBL, Zero)</span><br><span style="color: hsl(120, 100%, 40%);">+             Name (AVGP, Zero)</span><br><span style="color: hsl(120, 100%, 40%);">+             Name (AVB0, Zero)</span><br><span style="color: hsl(120, 100%, 40%);">+             Name (AVB1, Zero)</span><br><span style="color: hsl(120, 100%, 40%);">+             Name (AVB2, Zero)</span><br><span style="color: hsl(120, 100%, 40%);">+             Name (AVB3, Zero)</span><br><span style="color: hsl(120, 100%, 40%);">+             Method (_REG, 2, NotSerialized)</span><br><span style="color: hsl(120, 100%, 40%);">+               {</span><br><span style="color: hsl(120, 100%, 40%);">+                     If (LEqual (Arg0, 0x08))</span><br><span style="color: hsl(120, 100%, 40%);">+                      {</span><br><span style="color: hsl(120, 100%, 40%);">+                             /* Marks the availability of GeneralPurposeIO</span><br><span style="color: hsl(120, 100%, 40%);">+                          * 0x08: opregion space for GeneralPurposeIO</span><br><span style="color: hsl(120, 100%, 40%);">+                           */</span><br><span style="color: hsl(120, 100%, 40%);">+                           Store (Arg1, AVGP)</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span style="color: hsl(120, 100%, 40%);">+                     If (LEqual (Arg0, 0xB0))</span><br><span style="color: hsl(120, 100%, 40%);">+                      {</span><br><span style="color: hsl(120, 100%, 40%);">+                             /* Marks the availability of</span><br><span style="color: hsl(120, 100%, 40%);">+                           * TI_PMIC_POWER_OPREGION_ID */</span><br><span style="color: hsl(120, 100%, 40%);">+                               Store (Arg1, AVB0)</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span style="color: hsl(120, 100%, 40%);">+                     If (LEqual (Arg0, 0xB1))</span><br><span style="color: hsl(120, 100%, 40%);">+                      {</span><br><span style="color: hsl(120, 100%, 40%);">+                             /* Marks the availability of</span><br><span style="color: hsl(120, 100%, 40%);">+                           * TI_PMIC_VR_VAL_OPREGION_ID */</span><br><span style="color: hsl(120, 100%, 40%);">+                              Store (Arg1, AVB1)</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span style="color: hsl(120, 100%, 40%);">+                     If (LEqual (Arg0, 0xB2))</span><br><span style="color: hsl(120, 100%, 40%);">+                      {</span><br><span style="color: hsl(120, 100%, 40%);">+                             /* Marks the availability of</span><br><span style="color: hsl(120, 100%, 40%);">+                           * TI_PMIC_CLK_OPREGION_ID */</span><br><span style="color: hsl(120, 100%, 40%);">+                         Store (Arg1, AVB2)</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span style="color: hsl(120, 100%, 40%);">+                     If (LEqual (Arg0, 0xB3))</span><br><span style="color: hsl(120, 100%, 40%);">+                      {</span><br><span style="color: hsl(120, 100%, 40%);">+                             /* Marks the availability of</span><br><span style="color: hsl(120, 100%, 40%);">+                           * TI_PMIC_CLK_FREQ_OPREGION_ID */</span><br><span style="color: hsl(120, 100%, 40%);">+                            Store (Arg1, AVB3)</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span style="color: hsl(120, 100%, 40%);">+                     If (LAnd (AVGP, LAnd (LAnd (AVB0, AVB1),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       LAnd(AVB2, AVB3))))</span><br><span style="color: hsl(120, 100%, 40%);">+                  {</span><br><span style="color: hsl(120, 100%, 40%);">+                             /* Marks the availability of all opregions */</span><br><span style="color: hsl(120, 100%, 40%);">+                         Store (1, AVBL)</span><br><span style="color: hsl(120, 100%, 40%);">+                       }</span><br><span style="color: hsl(120, 100%, 40%);">+                     Else</span><br><span style="color: hsl(120, 100%, 40%);">+                  {</span><br><span style="color: hsl(120, 100%, 40%);">+                             Store (0, AVBL)</span><br><span style="color: hsl(120, 100%, 40%);">+                       }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           OperationRegion (GPOP, GeneralPurposeIo, 0, 0x2)</span><br><span style="color: hsl(120, 100%, 40%);">+              Name (_CRS, ResourceTemplate ()</span><br><span style="color: hsl(120, 100%, 40%);">+               {</span><br><span style="color: hsl(120, 100%, 40%);">+                     I2cSerialBus (0x004D, ControllerInitiated, 0x00061A80,</span><br><span style="color: hsl(120, 100%, 40%);">+                                AddressingMode7Bit, "\\_SB.PCI0.I2C2",</span><br><span style="color: hsl(120, 100%, 40%);">+                              0x00, ResourceConsumer, ,</span><br><span style="color: hsl(120, 100%, 40%);">+                     )</span><br><span style="color: hsl(120, 100%, 40%);">+                     /* GPIO.1 is sensor SDA in daisy chain mode */</span><br><span style="color: hsl(120, 100%, 40%);">+                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000,</span><br><span style="color: hsl(120, 100%, 40%);">+                               IoRestrictionInputOnly, "\\_SB.PCI0.I2C2.PMIC",</span><br><span style="color: hsl(120, 100%, 40%);">+                             0x00, ResourceConsumer,,)</span><br><span style="color: hsl(120, 100%, 40%);">+                     {</span><br><span style="color: hsl(120, 100%, 40%);">+                             1</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                     /* GPIO.2 is sensor SCL in daisy chain mode */</span><br><span style="color: hsl(120, 100%, 40%);">+                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000,</span><br><span style="color: hsl(120, 100%, 40%);">+                               IoRestrictionInputOnly, "\\_SB.PCI0.I2C2.PMIC",</span><br><span style="color: hsl(120, 100%, 40%);">+                             0x00, ResourceConsumer,,)</span><br><span style="color: hsl(120, 100%, 40%);">+                     {</span><br><span style="color: hsl(120, 100%, 40%);">+                             2</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                     /* GPIO.4 is AVDD pin for user facing camera */</span><br><span style="color: hsl(120, 100%, 40%);">+                       GpioIo (Exclusive, PullDefault, 0x0000, 0x0000,</span><br><span style="color: hsl(120, 100%, 40%);">+                               IoRestrictionOutputOnly, "\\_SB.PCI0.I2C2.PMIC",</span><br><span style="color: hsl(120, 100%, 40%);">+                            0x00, ResourceConsumer,,)</span><br><span style="color: hsl(120, 100%, 40%);">+                     {</span><br><span style="color: hsl(120, 100%, 40%);">+                             4</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                     /* GPIO.5 is XSHUTDOWN pin for user facing camera */</span><br><span style="color: hsl(120, 100%, 40%);">+                  GpioIo (Exclusive, PullDefault, 0x0000, 0x0000,</span><br><span style="color: hsl(120, 100%, 40%);">+                               IoRestrictionOutputOnly, "\\_SB.PCI0.I2C2.PMIC",</span><br><span style="color: hsl(120, 100%, 40%);">+                            0x00, ResourceConsumer,,)</span><br><span style="color: hsl(120, 100%, 40%);">+                     {</span><br><span style="color: hsl(120, 100%, 40%);">+                             5</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                     /* GPIO.9 is XSHUTDOWN pin for world facing camera */</span><br><span style="color: hsl(120, 100%, 40%);">+                 GpioIo (Exclusive, PullDefault, 0x0000, 0x0000,</span><br><span style="color: hsl(120, 100%, 40%);">+                               IoRestrictionOutputOnly, "\\_SB.PCI0.I2C2.PMIC",</span><br><span style="color: hsl(120, 100%, 40%);">+                            0x00, ResourceConsumer,,)</span><br><span style="color: hsl(120, 100%, 40%);">+                     {</span><br><span style="color: hsl(120, 100%, 40%);">+                             9</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+             })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+          /* PMIC operation regions */</span><br><span style="color: hsl(120, 100%, 40%);">+          /* 0xB0: TI_PMIC_POWER_OPREGION_ID</span><br><span style="color: hsl(120, 100%, 40%);">+             * VSIO: Sensor IO LDO output</span><br><span style="color: hsl(120, 100%, 40%);">+          * VCMC: VCM LDO output</span><br><span style="color: hsl(120, 100%, 40%);">+                * VAX1: Auxiliary LDO1 output</span><br><span style="color: hsl(120, 100%, 40%);">+                 * VAX2: Auxiliary LDO2 output</span><br><span style="color: hsl(120, 100%, 40%);">+                 * VACT: Analog LDO output</span><br><span style="color: hsl(120, 100%, 40%);">+             * VDCT: Core buck output</span><br><span style="color: hsl(120, 100%, 40%);">+              */</span><br><span style="color: hsl(120, 100%, 40%);">+           OperationRegion (PWR1, 0xB0, Zero, 0x0100)</span><br><span style="color: hsl(120, 100%, 40%);">+            Field (PWR1, DWordAcc, NoLock, Preserve)</span><br><span style="color: hsl(120, 100%, 40%);">+              {</span><br><span style="color: hsl(120, 100%, 40%);">+                     VSIO, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     VCMC, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     VAX1, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     VAX2, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     VACT, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     VDCT, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* 0xB1: TI_PMIC_VR_VAL_OPREGION_ID</span><br><span style="color: hsl(120, 100%, 40%);">+            * SIOV: VSIO VR voltage value</span><br><span style="color: hsl(120, 100%, 40%);">+                 * IOVA: VIO VR voltage value</span><br><span style="color: hsl(120, 100%, 40%);">+          * VCMV: VCM VR voltage value</span><br><span style="color: hsl(120, 100%, 40%);">+          * AX1V: Auxiliary LDO1 VR voltage value</span><br><span style="color: hsl(120, 100%, 40%);">+               * AX2V: Auxiliary LDO2 VR voltage value</span><br><span style="color: hsl(120, 100%, 40%);">+               * ACVA: Analog LDO VR voltage</span><br><span style="color: hsl(120, 100%, 40%);">+                 * DCVA: Core buck VR volatage</span><br><span style="color: hsl(120, 100%, 40%);">+                 */</span><br><span style="color: hsl(120, 100%, 40%);">+           OperationRegion (PWR2, 0xB1, Zero, 0x0100)</span><br><span style="color: hsl(120, 100%, 40%);">+            Field (PWR2, DWordAcc, NoLock, Preserve)</span><br><span style="color: hsl(120, 100%, 40%);">+              {</span><br><span style="color: hsl(120, 100%, 40%);">+                     SIOV, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     IOVA, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     VCMV, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     AX1V, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     AX2V, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     ACVA, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     DCVA, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* 0xB2: TI_PMIC_CLK_OPREGION_ID</span><br><span style="color: hsl(120, 100%, 40%);">+               * PCTL: PLL control register</span><br><span style="color: hsl(120, 100%, 40%);">+          * PCT2: PLL control 2 register</span><br><span style="color: hsl(120, 100%, 40%);">+                * CFG1: Clock configuration 1 register</span><br><span style="color: hsl(120, 100%, 40%);">+                * CFG2: Clock configuration 2 register</span><br><span style="color: hsl(120, 100%, 40%);">+                */</span><br><span style="color: hsl(120, 100%, 40%);">+           OperationRegion (CLKC, 0xB2, Zero, 0x0100)</span><br><span style="color: hsl(120, 100%, 40%);">+            Field (CLKC, DWordAcc, NoLock, Preserve)</span><br><span style="color: hsl(120, 100%, 40%);">+              {</span><br><span style="color: hsl(120, 100%, 40%);">+                     PCTL, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     PCT2, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     CFG1, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     CFG2, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* 0xB3: TI_PMIC_CLK_FREQ_OPREGION_ID</span><br><span style="color: hsl(120, 100%, 40%);">+          * PDV2: PLL output divider for HCLK_B</span><br><span style="color: hsl(120, 100%, 40%);">+                 * BODI: PLL output divider for boost clock</span><br><span style="color: hsl(120, 100%, 40%);">+            * BUDI: PLL output divider for buck clock</span><br><span style="color: hsl(120, 100%, 40%);">+             * PSWR: PLL reference clock setting</span><br><span style="color: hsl(120, 100%, 40%);">+           * XTDV: Reference crystal divider</span><br><span style="color: hsl(120, 100%, 40%);">+             * PLDV: PLL feedback divider</span><br><span style="color: hsl(120, 100%, 40%);">+          * PODV: PLL output divider for HCLK_A</span><br><span style="color: hsl(120, 100%, 40%);">+                 */</span><br><span style="color: hsl(120, 100%, 40%);">+           OperationRegion (CLKF, 0xB3, Zero, 0x0100)</span><br><span style="color: hsl(120, 100%, 40%);">+            Field (CLKF, DWordAcc, NoLock, Preserve)</span><br><span style="color: hsl(120, 100%, 40%);">+              {</span><br><span style="color: hsl(120, 100%, 40%);">+                     PDV2, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     BODI, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     BUDI, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     PSWR, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     XTDV, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     PLDV, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+                     PODV, 32,</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* CLE0 and CLE1 are used to determine if both the clocks</span><br><span style="color: hsl(120, 100%, 40%);">+             are enabled or disabled. */</span><br><span style="color: hsl(120, 100%, 40%);">+           Mutex (MUTC, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+               Name (CLE0, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                Name (CLE1, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                Method (CLKE, 0, Serialized) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        /* save Acquire result so we can check for</span><br><span style="color: hsl(120, 100%, 40%);">+                    Mutex acquired */</span><br><span style="color: hsl(120, 100%, 40%);">+                     Store (Acquire (MUTC, 1000), Local0)</span><br><span style="color: hsl(120, 100%, 40%);">+                  /* check for Mutex acquired */</span><br><span style="color: hsl(120, 100%, 40%);">+                        If (LEqual (Local0, Zero)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                  /* Enable clocks only when a sensor is turned on and</span><br><span style="color: hsl(120, 100%, 40%);">+                  both the clocks are disabled */</span><br><span style="color: hsl(120, 100%, 40%);">+                               If (LNot (LOr (CLE0, CLE1))) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                        /* Set boost clock divider */</span><br><span style="color: hsl(120, 100%, 40%);">+                                 BODI = 3</span><br><span style="color: hsl(120, 100%, 40%);">+                                      /* Set buck clock divider */</span><br><span style="color: hsl(120, 100%, 40%);">+                                  BUDI = 2</span><br><span style="color: hsl(120, 100%, 40%);">+                                      /* Set the PLL_REF_CLK cyles */</span><br><span style="color: hsl(120, 100%, 40%);">+                                       PSWR = 19</span><br><span style="color: hsl(120, 100%, 40%);">+                                     /* Set the reference crystal divider */</span><br><span style="color: hsl(120, 100%, 40%);">+                                       XTDV = 170</span><br><span style="color: hsl(120, 100%, 40%);">+                                    /* Set PLL feedback divider */</span><br><span style="color: hsl(120, 100%, 40%);">+                                        PLDV = 32</span><br><span style="color: hsl(120, 100%, 40%);">+                                     /* Set PLL output divider for HCLK_A */</span><br><span style="color: hsl(120, 100%, 40%);">+                                       PODV = 1</span><br><span style="color: hsl(120, 100%, 40%);">+                                      /* Set PLL output divider for HCLK_B */</span><br><span style="color: hsl(120, 100%, 40%);">+                                       PDV2 = 1</span><br><span style="color: hsl(120, 100%, 40%);">+                                      /* Enable clocks for both the sensors</span><br><span style="color: hsl(120, 100%, 40%);">+                                  * CFG1: output selection for HCLK_A and</span><br><span style="color: hsl(120, 100%, 40%);">+                                       * HCLK_B.</span><br><span style="color: hsl(120, 100%, 40%);">+                                     * CFG2: set drive strength for HCLK_A</span><br><span style="color: hsl(120, 100%, 40%);">+                                         * and HCLK_B.</span><br><span style="color: hsl(120, 100%, 40%);">+                                         */</span><br><span style="color: hsl(120, 100%, 40%);">+                                   CFG2 = 5</span><br><span style="color: hsl(120, 100%, 40%);">+                                      CFG1 = 10</span><br><span style="color: hsl(120, 100%, 40%);">+                                     /* Enable PLL output, crystal oscillator</span><br><span style="color: hsl(120, 100%, 40%);">+                                       * input capacitance control and set</span><br><span style="color: hsl(120, 100%, 40%);">+                                   * Xtal oscillator as clock source.</span><br><span style="color: hsl(120, 100%, 40%);">+                                    */</span><br><span style="color: hsl(120, 100%, 40%);">+                                   PCTL = 209</span><br><span style="color: hsl(120, 100%, 40%);">+                                    Sleep(1)</span><br><span style="color: hsl(120, 100%, 40%);">+                              }</span><br><span style="color: hsl(120, 100%, 40%);">+                             Release (MUTC)</span><br><span style="color: hsl(120, 100%, 40%);">+                        }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* Clocks need to be disabled only if both the sensors are</span><br><span style="color: hsl(120, 100%, 40%);">+            turned off */</span><br><span style="color: hsl(120, 100%, 40%);">+         Method (CLKD, 0, Serialized) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        /* save Acquire result so we can check for</span><br><span style="color: hsl(120, 100%, 40%);">+                    Mutex acquired */</span><br><span style="color: hsl(120, 100%, 40%);">+                     Store (Acquire (MUTC, 1000), Local0)</span><br><span style="color: hsl(120, 100%, 40%);">+                  /* check for Mutex acquired */</span><br><span style="color: hsl(120, 100%, 40%);">+                        If (LEqual (Local0, Zero)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                          If (LNot (LOr (CLE0, CLE1))) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                        BODI = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                                      BUDI = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                                      PSWR = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                                      XTDV = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                                      PLDV = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                                      PODV = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                                      PDV2 = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                                      /* Disable clocks for both the</span><br><span style="color: hsl(120, 100%, 40%);">+                                        sensors */</span><br><span style="color: hsl(120, 100%, 40%);">+                                    CFG2 = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                                      CFG1 = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                                      PCTL = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                              }</span><br><span style="color: hsl(120, 100%, 40%);">+                             Release (MUTC)</span><br><span style="color: hsl(120, 100%, 40%);">+                        }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* Reference count for VSIO */</span><br><span style="color: hsl(120, 100%, 40%);">+                Mutex (MUTV, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+               Name (VSIC, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                Method (DOVD, 1, Serialized) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        /* Save Acquire result so we can check for</span><br><span style="color: hsl(120, 100%, 40%);">+                    Mutex acquired */</span><br><span style="color: hsl(120, 100%, 40%);">+                     Store (Acquire (MUTV, 1000), Local0)</span><br><span style="color: hsl(120, 100%, 40%);">+                  /* Check for Mutex acquired */</span><br><span style="color: hsl(120, 100%, 40%);">+                        If (LEqual (Local0, Zero)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                          /* Turn off VSIO */</span><br><span style="color: hsl(120, 100%, 40%);">+                           If (LEqual (Arg0, Zero)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                    /* Decrement only if VSIC > 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+                                   if (LGreater (VSIC, 0)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                             Decrement (VSIC)</span><br><span style="color: hsl(120, 100%, 40%);">+                                              If (LEqual (VSIC, Zero)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    VSIO = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      Sleep(1)</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      PMOF()</span><br><span style="color: hsl(120, 100%, 40%);">+                                                }</span><br><span style="color: hsl(120, 100%, 40%);">+                                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                             } ElseIf (LEqual (Arg0, 1)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                 /* Increment only if VSIC < 4 */</span><br><span style="color: hsl(120, 100%, 40%);">+                                   If (LLess (VSIC, 4)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                /* Turn on VSIO */</span><br><span style="color: hsl(120, 100%, 40%);">+                                            If (LEqual (VSIC, Zero)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    PMON()</span><br><span style="color: hsl(120, 100%, 40%);">+                                                        VSIO = 3</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    if (LNotEqual (IOVA, 52)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                           /* Set VSIO value as</span><br><span style="color: hsl(120, 100%, 40%);">+                                                          1.8006 V */</span><br><span style="color: hsl(120, 100%, 40%);">+                                                           IOVA = 52</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     if (LNotEqual (SIOV, 52)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                           /* Set VSIO value as</span><br><span style="color: hsl(120, 100%, 40%);">+                                                          1.8006 V */</span><br><span style="color: hsl(120, 100%, 40%);">+                                                           SIOV = 52</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     }</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     Sleep(3)</span><br><span style="color: hsl(120, 100%, 40%);">+                                              }</span><br><span style="color: hsl(120, 100%, 40%);">+                                             Increment (VSIC)</span><br><span style="color: hsl(120, 100%, 40%);">+                                      }</span><br><span style="color: hsl(120, 100%, 40%);">+                             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                           Release (MUTV)</span><br><span style="color: hsl(120, 100%, 40%);">+                        }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* C0GP is used to indicate if CAM0</span><br><span style="color: hsl(120, 100%, 40%);">+            * GPIOs are configured as input.</span><br><span style="color: hsl(120, 100%, 40%);">+              */</span><br><span style="color: hsl(120, 100%, 40%);">+           Name (C0GP, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Power resource methods for CAM0 */</span><br><span style="color: hsl(120, 100%, 40%);">+         PowerResource (OVTH, 0, 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                  Name (STA, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                 Method (_ON, 0, Serialized) {</span><br><span style="color: hsl(120, 100%, 40%);">+                         If (LEqual (AVBL, 1)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                       If (LEqual (STA, 0)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                If (LEqual (C0GP, 0)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       \_SB.PCI0.I2C2.CAM0.CGP1()</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    \_SB.PCI0.I2C2.CAM0.CGP2()</span><br><span style="color: hsl(120, 100%, 40%);">+                                                    C0GP = 1</span><br><span style="color: hsl(120, 100%, 40%);">+                                              }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                                           /* Enable VSIO regulator +</span><br><span style="color: hsl(120, 100%, 40%);">+                                            daisy chain */</span><br><span style="color: hsl(120, 100%, 40%);">+                                                DOVD(1)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                                             VACT = 1</span><br><span style="color: hsl(120, 100%, 40%);">+                                              if (LNotEqual (ACVA, 109)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                  /* Set ANA at 2.8152V */</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      ACVA = 109</span><br><span style="color: hsl(120, 100%, 40%);">+                                            }</span><br><span style="color: hsl(120, 100%, 40%);">+                                             Sleep(3)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                                            \_SB.PCI0.I2C2.PMIC.CLKE()</span><br><span style="color: hsl(120, 100%, 40%);">+                                            CLE0 = 1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                                            VDCT = 1</span><br><span style="color: hsl(120, 100%, 40%);">+                                              if (LNotEqual (DCVA, 12)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                   /* Set CORE at 1.2V */</span><br><span style="color: hsl(120, 100%, 40%);">+                                                        DCVA = 12</span><br><span style="color: hsl(120, 100%, 40%);">+                                             }</span><br><span style="color: hsl(120, 100%, 40%);">+                                             Sleep(3)</span><br><span style="color: hsl(120, 100%, 40%);">+                                              \_SB.PCI0.I2C2.CAM0.CRST(1)</span><br><span style="color: hsl(120, 100%, 40%);">+                                           Sleep(5)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                                            STA = 1</span><br><span style="color: hsl(120, 100%, 40%);">+                                       }</span><br><span style="color: hsl(120, 100%, 40%);">+                             }</span><br><span style="color: hsl(120, 100%, 40%);">+                     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                   Method (_OFF, 0, Serialized) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                If (LEqual (AVBL, 1)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                       If (LEqual (STA, 1)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                                Sleep(2)</span><br><span style="color: hsl(120, 100%, 40%);">+                                              CLE0 = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                                              \_SB.PCI0.I2C2.PMIC.CLKD()</span><br><span style="color: hsl(120, 100%, 40%);">+                                            Sleep(2)</span><br><span style="color: hsl(120, 100%, 40%);">+                                              \_SB.PCI0.I2C2.CAM0.CRST(0)</span><br><span style="color: hsl(120, 100%, 40%);">+                                           Sleep(3)</span><br><span style="color: hsl(120, 100%, 40%);">+                                              VDCT = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                                              Sleep(3)</span><br><span style="color: hsl(120, 100%, 40%);">+                                              VACT = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                                              Sleep(1)</span><br><span style="color: hsl(120, 100%, 40%);">+                                              DOVD(0)</span><br><span style="color: hsl(120, 100%, 40%);">+                                       }</span><br><span style="color: hsl(120, 100%, 40%);">+                             }</span><br><span style="color: hsl(120, 100%, 40%);">+                             STA = 0</span><br><span style="color: hsl(120, 100%, 40%);">+                       }</span><br><span style="color: hsl(120, 100%, 40%);">+                     Method (_STA, 0, NotSerialized) {</span><br><span style="color: hsl(120, 100%, 40%);">+                             Return (STA)</span><br><span style="color: hsl(120, 100%, 40%);">+                  }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   Device (CAM0)</span><br><span style="color: hsl(120, 100%, 40%);">+ {</span><br><span style="color: hsl(120, 100%, 40%);">+             Name (_HID, "SONY258A")  /* _HID: Hardware ID */</span><br><span style="color: hsl(120, 100%, 40%);">+            Name (_UID, Zero)  /* _UID: Unique ID */</span><br><span style="color: hsl(120, 100%, 40%);">+              Name (_DDN, "SONY IMX258 Camera") /* _DDN: DOS Device Name */</span><br><span style="color: hsl(120, 100%, 40%);">+               Name (CAMD, 0x02)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           Method (_STA, 0, NotSerialized)  /* _STA: Status */</span><br><span style="color: hsl(120, 100%, 40%);">+           {</span><br><span style="color: hsl(120, 100%, 40%);">+                     Return (0x0F)</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           Name (_DEP, Package() { \_SB.PCI0.I2C2.PMIC })</span><br><span style="color: hsl(120, 100%, 40%);">+                Name (_CRS, ResourceTemplate ()</span><br><span style="color: hsl(120, 100%, 40%);">+               {</span><br><span style="color: hsl(120, 100%, 40%);">+                     I2cSerialBus (0x001A, ControllerInitiated, 0x00061A80,</span><br><span style="color: hsl(120, 100%, 40%);">+                                AddressingMode7Bit, "\\_SB.PCI0.I2C2",</span><br><span style="color: hsl(120, 100%, 40%);">+                              0x00, ResourceConsumer, ,</span><br><span style="color: hsl(120, 100%, 40%);">+                             )</span><br><span style="color: hsl(120, 100%, 40%);">+             })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+          Field (\_SB.PCI0.I2C2.PMIC.GPOP, ByteAcc, NoLock, Preserve)</span><br><span style="color: hsl(120, 100%, 40%);">+           {</span><br><span style="color: hsl(120, 100%, 40%);">+                     Connection</span><br><span style="color: hsl(120, 100%, 40%);">+                    (</span><br><span style="color: hsl(120, 100%, 40%);">+                             GpioIo (Exclusive, PullDefault, 0x0000, 0x0000,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       IoRestrictionInputOnly, "\\_SB.PCI0.I2C2.PMIC",</span><br><span style="color: hsl(120, 100%, 40%);">+                                     0x00, ResourceConsumer,,)</span><br><span style="color: hsl(120, 100%, 40%);">+                             {</span><br><span style="color: hsl(120, 100%, 40%);">+                                     1</span><br><span style="color: hsl(120, 100%, 40%);">+                             }</span><br><span style="color: hsl(120, 100%, 40%);">+                     ),</span><br><span style="color: hsl(120, 100%, 40%);">+                    GPO1, 1,</span><br><span style="color: hsl(120, 100%, 40%);">+                      Connection</span><br><span style="color: hsl(120, 100%, 40%);">+                    (</span><br><span style="color: hsl(120, 100%, 40%);">+                             GpioIo (Exclusive, PullDefault, 0x0000, 0x0000,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       IoRestrictionInputOnly, "\\_SB.PCI0.I2C2.PMIC",</span><br><span style="color: hsl(120, 100%, 40%);">+                                     0x00, ResourceConsumer,,)</span><br><span style="color: hsl(120, 100%, 40%);">+                             {</span><br><span style="color: hsl(120, 100%, 40%);">+                                     2</span><br><span style="color: hsl(120, 100%, 40%);">+                             }</span><br><span style="color: hsl(120, 100%, 40%);">+                     ),</span><br><span style="color: hsl(120, 100%, 40%);">+                    GPO2, 1,</span><br><span style="color: hsl(120, 100%, 40%);">+                      Connection</span><br><span style="color: hsl(120, 100%, 40%);">+                    (</span><br><span style="color: hsl(120, 100%, 40%);">+                             GpioIo (Exclusive, PullDefault, 0x0000, 0x0000,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       IoRestrictionOutputOnly,</span><br><span style="color: hsl(120, 100%, 40%);">+                                      "\\_SB.PCI0.I2C2.PMIC", 0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       ResourceConsumer,,)</span><br><span style="color: hsl(120, 100%, 40%);">+                           {</span><br><span style="color: hsl(120, 100%, 40%);">+                                     9</span><br><span style="color: hsl(120, 100%, 40%);">+                             }</span><br><span style="color: hsl(120, 100%, 40%);">+                     ),</span><br><span style="color: hsl(120, 100%, 40%);">+                    GRST, 1,</span><br><span style="color: hsl(120, 100%, 40%);">+              }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* Set or clear GRST GPIO */</span><br><span style="color: hsl(120, 100%, 40%);">+          Method (CRST, 1, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+          {</span><br><span style="color: hsl(120, 100%, 40%);">+                     GRST = Arg0</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* Read GPO1 GPIO, to configure as input */</span><br><span style="color: hsl(120, 100%, 40%);">+           Method (CGP1, 0, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+          {</span><br><span style="color: hsl(120, 100%, 40%);">+                     Return (GPO1)</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* Read GPO2 GPIO, to configure as input */</span><br><span style="color: hsl(120, 100%, 40%);">+           Method (CGP2, 0, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+          {</span><br><span style="color: hsl(120, 100%, 40%);">+                     Return (GPO2)</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           Name (_PR0, Package () { ^^I2C2.PMIC.OVTH })</span><br><span style="color: hsl(120, 100%, 40%);">+          Name (_PR3, Package () { ^^I2C2.PMIC.OVTH })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Port0 of CAM0 is connected to port0 of CIO2 device */</span><br><span style="color: hsl(120, 100%, 40%);">+              Name (_DSD, Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+                      ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),</span><br><span style="color: hsl(120, 100%, 40%);">+                    Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+                          Package () { "port0", "PRT0" },</span><br><span style="color: hsl(120, 100%, 40%);">+                   },</span><br><span style="color: hsl(120, 100%, 40%);">+                    ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),</span><br><span style="color: hsl(120, 100%, 40%);">+                    Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+                          Package () { "clock-frequency", 19200000 },</span><br><span style="color: hsl(120, 100%, 40%);">+                 }</span><br><span style="color: hsl(120, 100%, 40%);">+             })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+          Name (PRT0, Package() {</span><br><span style="color: hsl(120, 100%, 40%);">+                       ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),</span><br><span style="color: hsl(120, 100%, 40%);">+                    Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+                          Package () { "port", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+                   },</span><br><span style="color: hsl(120, 100%, 40%);">+                    ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),</span><br><span style="color: hsl(120, 100%, 40%);">+                    Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+                          Package () { "endpoint0", "EP00" },</span><br><span style="color: hsl(120, 100%, 40%);">+                       }</span><br><span style="color: hsl(120, 100%, 40%);">+             })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+          Name (EP00, Package() {</span><br><span style="color: hsl(120, 100%, 40%);">+                       ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),</span><br><span style="color: hsl(120, 100%, 40%);">+                    Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+                          Package () { "endpoint", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+                               Package () { "clock-lanes", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+                            Package () { "data-lanes",</span><br><span style="color: hsl(120, 100%, 40%);">+                                  Package () { 1, 2, 3, 4 }</span><br><span style="color: hsl(120, 100%, 40%);">+                             },</span><br><span style="color: hsl(120, 100%, 40%);">+                            Package () { "link-frequencies",</span><br><span style="color: hsl(120, 100%, 40%);">+                                    Package() { 540000000, 270000000 }</span><br><span style="color: hsl(120, 100%, 40%);">+                            },</span><br><span style="color: hsl(120, 100%, 40%);">+                            Package () { "remote-endpoint",</span><br><span style="color: hsl(120, 100%, 40%);">+                                     Package() { \_SB.PCI0.CIO2, 0, 0 }</span><br><span style="color: hsl(120, 100%, 40%);">+                            },</span><br><span style="color: hsl(120, 100%, 40%);">+                    }</span><br><span style="color: hsl(120, 100%, 40%);">+             })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+          Method (SSDB, 0, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+          {</span><br><span style="color: hsl(120, 100%, 40%);">+                     Return (Buffer (0x5E)</span><br><span style="color: hsl(120, 100%, 40%);">+                 {</span><br><span style="color: hsl(120, 100%, 40%);">+                             /* 0000 */   0x00, 0x50, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+                           /* 0008 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+                          /* 0010 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+                          /* 0018 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+                          /* 0020 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+                          /* 0028 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+                          /* 0030 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+                          /* 0038 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+                          /* 0040 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+                          /* 0048 */   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x03,</span><br><span style="color: hsl(120, 100%, 40%);">+                          /* 0050 */   0x09, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x36,</span><br><span style="color: hsl(120, 100%, 40%);">+                          /* 0058 */   0x6E, 0x01, 0x00, 0x00, 0x00, 0x00</span><br><span style="color: hsl(120, 100%, 40%);">+                       })</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/23056">change 23056</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/23056"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Iebd41ac3631829bbb0b008761eb67c3db3e94638 </div>
<div style="display:none"> Gerrit-Change-Number: 23056 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Anonymous Coward #1001830 </div>