summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kang <daniel.h.kang@intel.com>2020-03-19 16:46:38 -0700
committerPatrick Georgi <pgeorgi@google.com>2020-03-23 09:41:48 +0000
commit140a4ae7bf2960ac7d095ba94847093f4755bf04 (patch)
tree94cfb17878978cb0386e9ea877f671569e66e7e2
parent205a5620af30ba3ba31feb2bc91062c0eb13e5c6 (diff)
src/mb/google/volteer: Add camera ACPI configuration
Add camera ACPI configuration for Ripto/Volteer BUG=None BRANCH=None TEST=Build and boot Ripto or Volteer. Start camera app and able to capture images. Signed-off-by: Daniel Kang <daniel.h.kang@intel.com> Change-Id: I2b47ccd989192273a29f09bf097e12e357929334 Reviewed-on: https://review.coreboot.org/c/coreboot/+/39684 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Wonkyu Kim <wonkyu.kim@intel.com>
-rw-r--r--src/mainboard/google/volteer/acpi/mipi_camera.asl613
-rw-r--r--src/mainboard/google/volteer/dsdt.asl3
2 files changed, 616 insertions, 0 deletions
diff --git a/src/mainboard/google/volteer/acpi/mipi_camera.asl b/src/mainboard/google/volteer/acpi/mipi_camera.asl
new file mode 100644
index 0000000000..7c2ca61198
--- /dev/null
+++ b/src/mainboard/google/volteer/acpi/mipi_camera.asl
@@ -0,0 +1,613 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+Scope (\_SB.PCI0.IPU0)
+{
+ Name (_DSD, Package (0x02) /* _DSD: Device-Specific Data */
+ {
+ ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
+ Package (0x02)
+ {
+ Package (0x02)
+ {
+ "port0",
+ "PRT0"
+ },
+ Package (0x02)
+ {
+ "port1",
+ "PRT1"
+ }
+ }
+ })
+
+ Name (PRT0, Package (0x04)
+ {
+ ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package (0x01)
+ {
+ Package (0x02)
+ {
+ "port",
+ 5
+ }
+ },
+ ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
+ Package (0x01)
+ {
+ Package (0x02)
+ {
+ "endpoint0",
+ "EP00"
+ }
+ }
+ })
+
+ Name (PRT1, Package (0x04)
+ {
+ ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package (0x01)
+ {
+ Package (0x02)
+ {
+ "port",
+ 1
+ }
+ },
+
+ ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
+ Package (0x01)
+ {
+ Package (0x02)
+ {
+ "endpoint0",
+ "EP10"
+ }
+ }
+ })
+}
+
+Scope (\_SB.PCI0.IPU0)
+{
+ Name (EP00, Package (0x02)
+ {
+ ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package (0x04)
+ {
+ Package (0x02)
+ {
+ "endpoint",
+ Zero
+ },
+ Package (0x02)
+ {
+ "clock-lanes",
+ Zero
+ },
+ Package (0x02)
+ {
+ "data-lanes",
+ Package (0x04)
+ {
+ One,
+ 0x02,
+ 0x03,
+ 0x04
+ }
+ },
+ Package (0x02)
+ {
+ "remote-endpoint",
+ Package (0x03)
+ {
+ ^I2C3.CAM0,
+ Zero,
+ Zero
+ }
+ }
+ }
+ })
+ Name (EP10, Package (0x02)
+ {
+ ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package (0x04)
+ {
+ Package (0x02)
+ {
+ "endpoint",
+ Zero
+ },
+ Package (0x02)
+ {
+ "clock-lanes",
+ Zero
+ },
+ Package (0x02)
+ {
+ "data-lanes",
+ Package (0x04)
+ {
+ One,
+ 0x02
+ }
+ },
+ Package (0x02)
+ {
+ "remote-endpoint",
+ Package (0x03)
+ {
+ ^I2C2.CAM1,
+ Zero,
+ Zero
+ }
+ }
+ }
+ })
+}
+
+Scope (\_SB.PCI0.I2C3)
+{
+ PowerResource (RCPR, 0x00, 0x0000)
+ {
+ Name (STA, Zero)
+ Method (_ON, 0, Serialized) /* Rear camera_ON_: Power On */
+ {
+ If ((STA == Zero))
+ {
+ /* Enable IMG_CLK */
+ MCON(3,1) /* Clock 3, 19.2MHz */
+
+ /* Pull RST low */
+#if CONFIG(BOARD_GOOGLE_VOLTEER)
+ CTXS(GPP_F15)
+#else
+ CTXS(GPP_D4)
+#endif
+
+ /* Pull PWREN high */
+ STXS(GPP_H20)
+ Sleep(2) /* reset pulse width */
+
+ /* Pull RST high */
+#if CONFIG(BOARD_GOOGLE_VOLTEER)
+ STXS(GPP_F15)
+#else
+ STXS(GPP_D4)
+#endif
+ Sleep(1) /* t2 */
+
+ Store(1,STA)
+ }
+ }
+ Method (_OFF, 0, Serialized) /* Rear camera _OFF: Power Off */
+ {
+ If ((STA == One))
+ {
+ /* Disable IMG_CLK */
+ Sleep(1) /* t0+t1 */
+ MCOF(3) /* Clock 3 */
+
+ /* Pull RST low */
+#if CONFIG(BOARD_GOOGLE_VOLTEER)
+ CTXS(GPP_F15)
+#else
+ CTXS(GPP_D4)
+#endif
+
+ /* Pull PWREN low */
+ CTXS(GPP_H20)
+
+ Store(0,STA)
+ }
+ }
+ Method (_STA, 0, NotSerialized) /* _STA: Status */
+ {
+ Return (STA)
+ }
+ }
+
+ Device (CAM0)
+ {
+ Name (_HID, "OVTI8856") /* _HID: Hardware ID */
+ Name (_UID, Zero) /* _UID: Unique ID */
+ Name (_DDN, "Ov 8856 Camera") /* _DDN: DOS Device Name */
+ Method (_STA, 0, NotSerialized) /* _STA: Status */
+ {
+ Return (0x0F)
+ }
+ Name (_CRS, ResourceTemplate () /* _CRS: Current Resource Settings */
+ {
+ I2cSerialBus (0x0010, ControllerInitiated, 0x00061A80,
+ AddressingMode7Bit, "\\_SB.PCI0.I2C3",
+ 0x00, ResourceConsumer, ,
+ )
+ })
+ Name (_PR0, Package (0x01) /* _PR0: Power Resources for D0 */
+ {
+ RCPR
+ })
+ Name (_PR3, Package (0x01) /* _PR3: Power Resources for D3hot */
+ {
+ RCPR
+ })
+ Name (_DSD, Package (0x04) /* _DSD: Device-Specific Data */
+ {
+ ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
+ Package (0x01)
+ {
+ Package (0x02)
+ {
+ "port0",
+ "PRT0"
+ }
+ },
+ ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package (0x02)
+ {
+ Package (0x02)
+ {
+ "clock-frequency",
+ 0x0124F800
+ },
+ Package (0x02)
+ {
+ "lens-focus",
+ Package (0x01)
+ {
+ VCM0
+ }
+ }
+ }
+ })
+ Name (PRT0, Package (0x04)
+ {
+ ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package (0x01)
+ {
+ Package (0x02)
+ {
+ "port",
+ Zero
+ }
+ },
+ ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
+ Package (0x01)
+ {
+ Package (0x02)
+ {
+ "endpoint0",
+ "EP00"
+ }
+ }
+ })
+ Name (EP00, Package (0x02)
+ {
+ ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package (0x05)
+ {
+ Package (0x02)
+ {
+ "endpoint",
+ Zero
+ },
+ Package (0x02)
+ {
+ "clock-lanes",
+ Zero
+ },
+ Package (0x02)
+ {
+ "data-lanes",
+ Package (0x04)
+ {
+ One,
+ 0x02,
+ 0x03,
+ 0x04
+ }
+ },
+ Package (0x02)
+ {
+ "link-frequencies",
+ Package (0x02)
+ {
+ 0x15752A00,
+ 0xABA9500
+ }
+ },
+ Package (0x02)
+ {
+ "remote-endpoint",
+ Package (0x03)
+ {
+ IPU0,
+ Zero,
+ Zero
+ }
+ }
+ }
+ })
+ }
+
+ Device (VCM0)
+ {
+ Name (_HID, "PRP0001") /* _HID: Hardware ID */
+ Name (_UID, 0x03) /* _UID: Unique ID */
+ Name (_DDN, "GT9769 VCM") /* _DDN: DOS Device Name */
+ Method (_STA, 0, NotSerialized) /* _STA: Status */
+ {
+ Return (0x0F)
+ }
+ Name (_CRS, ResourceTemplate () /* _CRS: Current Resource Settings */
+ {
+ I2cSerialBus (0x000C, ControllerInitiated, 0x00061A80,
+ AddressingMode7Bit, "\\_SB.PCI0.I2C3",
+ 0x00, ResourceConsumer, ,
+ )
+ })
+ Name (_DEP, Package (0x01) /* _DEP: Dependencies */
+ {
+ CAM0
+ })
+ Name (_PR0, Package (0x01) /* _PR0: Power Resources for D0 */
+ {
+ RCPR
+ })
+ Name (_PR3, Package (0x01) /* _PR3: Power Resources for D3hot */
+ {
+ RCPR
+ })
+ Name (_DSD, Package (0x02) /* _DSD: Device-Specific Data */
+ {
+ ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package (0x01)
+ {
+ Package (0x02)
+ {
+ "compatible",
+ "giantec,gt9769-vcm"
+ }
+ }
+ })
+ }
+ Device (NVM0)
+ {
+ Name (_HID, "PRP0001") // _HID: Hardware ID
+ Name (_UID, 0x03) // _UID: Unique ID
+ Name (_DDN, "GT9769 EEPROM") // _DDN: DOS Device Name
+ Method (_STA, 0, NotSerialized) // _STA: Status
+ {
+ Return (0x0F)
+ }
+ Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
+ {
+ I2cSerialBusV2 (0x0058, ControllerInitiated, 0x00061A80,
+ AddressingMode7Bit, "\\_SB.PCI0.I2C3",
+ 0x00, ResourceConsumer, , Exclusive,
+ )
+ })
+ Name (_DEP, Package (0x01) // _DEP: Dependencies
+ {
+ CAM0
+ })
+ Name (_PR0, Package (0x01) // _PR0: Power Resources for D0
+ {
+ RCPR
+ })
+ Name (_PR3, Package (0x01) // _PR3: Power Resources for D3hot
+ {
+ RCPR
+ })
+ Name (_DSD, Package (0x02) // _DSD: Device-Specific Data
+ {
+ ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301") /* Device Properties for _DSD */,
+ Package (0x05)
+ {
+ Package (0x02)
+ {
+ "size",
+ 0x2800
+ },
+ Package (0x02)
+ {
+ "pagesize",
+ One
+ },
+ Package (0x02)
+ {
+ "read-only",
+ One
+ },
+ Package (0x02)
+ {
+ "address-width",
+ 0x0D
+ },
+ Package (0x02)
+ {
+ "compatible",
+ "giantec,gt9769-eeprom"
+ }
+ }
+ })
+ }
+}
+
+Scope (\_SB.PCI0.I2C2)
+{
+ PowerResource (FCPR, 0x00, 0x0000)
+ {
+ Name (STA, Zero)
+ Method (_ON, 0, Serialized) /* Front camera_ON_: Power On */
+ {
+ If ((STA == Zero))
+ {
+ /* Enable IMG_CLK */
+ MCON(2,1) /* Clock 2, 19.2MHz */
+
+ /* Pull RST low */
+ CTXS(GPP_D4)
+
+ /* Pull SNRPWR_EN high */
+ STXS(GPP_D18)
+
+ /* Pull PWREN high */
+ STXS(GPP_D17)
+ Sleep(10) /* t9 */
+
+ /* Pull RST high */
+ STXS(GPP_D4)
+ Sleep(1) /* t2 */
+
+ Store(1,STA)
+ }
+ }
+ Method (_OFF, 0, Serialized) /* Front camera_OFF_: Power Off */
+ {
+ If ((STA == One))
+ {
+ /* Disable IMG_CLK */
+ Sleep(1) /* t0+t1 */
+ MCOF(2) /* Clock 2 */
+
+ /* Pull RST low */
+ CTXS(GPP_D4)
+
+ /* Pull PWREN low */
+ CTXS(GPP_D17)
+
+ /* Pull SNRPWR_EN low */
+ CTXS(GPP_D18)
+
+ Store(0,STA)
+ }
+ }
+ Method (_STA, 0, NotSerialized) /* _STA: Status */
+ {
+ Return (STA)
+ }
+ }
+
+ Device (CAM1)
+ {
+ Name (_HID, "OVTI2740") /* _HID: Hardware ID */
+ Name (_UID, Zero) /* _UID: Unique ID */
+ Name (_DDN, "Ov 2740 Camera") /* _DDN: DOS Device Name */
+ Method (_STA, 0, NotSerialized) /* _STA: Status */
+ {
+ Return (0x0F)
+ }
+ Name (_CRS, ResourceTemplate () /* _CRS: Current Resource Settings */
+ {
+ I2cSerialBus (0x0010, ControllerInitiated, 0x00061A80,
+ AddressingMode7Bit, "\\_SB.PCI0.I2C2",
+ 0x00, ResourceConsumer, ,
+ )
+ })
+ Name (_PR0, Package (0x01) /* _PR0: Power Resources for D0 */
+ {
+ FCPR
+ })
+ Name (_PR3, Package (0x01) /* _PR3: Power Resources for D3hot */
+ {
+ FCPR
+ })
+ Name (_DSD, Package (0x04) /* _DSD: Device-Specific Data */
+ {
+ ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
+ Package (0x01)
+ {
+ Package (0x02)
+ {
+ "port0",
+ "PRT0"
+ }
+ },
+ ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package (0x01)
+ {
+ Package (0x02)
+ {
+ "clock-frequency",
+ 0x0124F800
+ }
+ }
+ })
+ Name (PRT0, Package (0x04)
+ {
+ ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package (0x01)
+ {
+ Package (0x02)
+ {
+ "port",
+ Zero
+ }
+ },
+ ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
+ Package (0x01)
+ {
+ Package (0x02)
+ {
+ "endpoint0",
+ "EP00"
+ }
+ }
+ })
+ Name (EP00, Package (0x02)
+ {
+ ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
+ Package (0x05)
+ {
+ Package (0x02)
+ {
+ "endpoint",
+ Zero
+ },
+ Package (0x02)
+ {
+ "clock-lanes",
+ Zero
+ },
+ Package (0x02)
+ {
+ "data-lanes",
+ Package (0x02)
+ {
+ One,
+ 0x02
+ }
+ },
+ Package (0x02)
+ {
+ "link-frequencies",
+ Package (0x01)
+ {
+ 0xABA9500
+ }
+ },
+ Package (0x02)
+ {
+ "remote-endpoint",
+ Package (0x03)
+ {
+ IPU0,
+ One,
+ Zero
+ }
+ }
+ }
+ })
+ }
+}
diff --git a/src/mainboard/google/volteer/dsdt.asl b/src/mainboard/google/volteer/dsdt.asl
index 4533f8937d..d2599260d7 100644
--- a/src/mainboard/google/volteer/dsdt.asl
+++ b/src/mainboard/google/volteer/dsdt.asl
@@ -47,4 +47,7 @@ DefinitionBlock(
}
#include <southbridge/intel/common/acpi/sleepstates.asl>
+ /* Camera */
+ #include <soc/intel/tigerlake/acpi/ipu.asl>
+ #include "acpi/mipi_camera.asl"
}