<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>