Patrick Georgi submitted this change.

View Change

Approvals: build bot (Jenkins): Verified Aamir Bohra: Looks good to me, but someone else must approve Karthik Ramasubramanian: Looks good to me, approved
mb/google/dedede: Add ACPI support for camera

1. Add support as per the schematics
2. Add 2 Ports and 2 Endpoints
3. Add support for OTVI8856 and OTVI5676
4. Add ON and OFF logic as Power Rails are same for both sensor

BUG=None
BRANCH=None
TEST=Build and Boot waddledoo board and able to capture image
using world facing camera.

Change-Id: Ic8687bce4896d9fc17b2190b8d11618af3515cc1
Signed-off-by: Pandya, Varshit B <varshit.b.pandya@intel.com>
Signed-off-by: Rizwan Qureshi <rizwan.qureshi@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/39360
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aamir Bohra <aamir.bohra@intel.com>
Reviewed-by: Karthik Ramasubramanian <kramasub@google.com>
---
A src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/cam0.asl
A src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/cam1.asl
A src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/camera.asl
A src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/ipu_endpoints.asl
A src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/ipu_mainboard.asl
5 files changed, 521 insertions(+), 0 deletions(-)

diff --git a/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/cam0.asl b/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/cam0.asl
new file mode 100644
index 0000000..ca40e91
--- /dev/null
+++ b/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/cam0.asl
@@ -0,0 +1,173 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/* This file is part of the coreboot project. */
+
+Scope (\_SB.PCI0.I2C3)
+{
+ Name (STA0, Zero)
+
+ /* Method to turn off Power Rails */
+ Method (POFF, 0)
+ {
+ /* Disable PP1200 lane */
+ CTXS(GPP_D14)
+ /* Disable PP2800 lane */
+ CTXS(GPP_D13)
+ }
+
+ Method (PON, 0)
+ {
+ /* Enable PP2800 lane */
+ STXS(GPP_D13)
+ /* Enable PP1200 lane */
+ STXS(GPP_D14)
+ }
+
+ PowerResource (FCPR, 0x00, 0x0000)
+ {
+ Method (_ON, 0, Serialized) /* _ON_: Power On */
+ {
+ MCON(0, 1) /* Clock 0, 19.2MHz */
+ IF(!STA1)
+ {
+ /* Other sensor is OFF, so turn on power signals. */
+ PON()
+ }
+ /* Assert Reset */
+ CTXS(GPP_D15)
+ Sleep(5) /* 5 us */
+ /* Deassert Reset */
+ STXS(GPP_D15)
+ Sleep(5) /* 5 us */
+ STA0 = 1
+ }
+
+ Method (_OFF, 0, Serialized) /* _OFF_: Power Off */
+ {
+ MCOF(0) /* Clock 0 */
+ /* Assert Reset */
+ CTXS(GPP_D15)
+ IF(!STA1)
+ {
+ /* Other sensor is OFF, so turn off power signals. */
+ POFF()
+ }
+ STA0 = 0
+ }
+
+ Method (_STA, 0, NotSerialized) /* _STA: Status */
+ {
+ Return (STA0)
+ }
+ }
+
+ Device (CAM0)
+ {
+ Name (_HID, "OVTI9734") /* _HID: Hardware ID */
+
+ Name (_UID, Zero) /* _UID: Unique ID */
+
+ Name (_DDN, "Ov 9734 Camera") /* _DDN: DOS Device Name */
+
+ Method (_STA, 0, NotSerialized) /* _STA: Status */
+ {
+ Return (0x0F)
+ }
+
+ Name (_CRS, ResourceTemplate () /* _CRS: Current Resource Settings */
+ {
+ I2cSerialBus (0x0036, ControllerInitiated, 0x00061A80,
+ AddressingMode7Bit, "\\_SB.PCI0.I2C3",
+ 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 (0x03)
+ {
+ Package (0x02)
+ {
+ "endpoint",
+ Zero
+ },
+
+ Package (0x02)
+ {
+ "link-frequencies",
+ Package (0x01)
+ {
+ 0x325AA000
+ }
+ },
+
+ Package (0x02)
+ {
+ "remote-endpoint",
+ Package (0x03)
+ {
+ IPU0,
+ Zero,
+ Zero
+ }
+ }
+ }
+ })
+ }
+}
diff --git a/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/cam1.asl b/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/cam1.asl
new file mode 100644
index 0000000..7cc9034
--- /dev/null
+++ b/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/cam1.asl
@@ -0,0 +1,176 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/* This file is part of the coreboot project. */
+
+Scope (\_SB.PCI0.I2C3)
+{
+ Name (STA1, Zero)
+
+ PowerResource (RCPR, 0x00, 0x0000)
+ {
+ Method (_ON, 0, Serialized) /* _ON_: Power On */
+ {
+ MCON(1, 1) /* Clock 1, 19.2MHz */
+ /* Check if another sensor is ON */
+ IF(!STA0)
+ {
+ /* Other sensor is OFF, so turn on power signals. */
+ PON()
+ }
+ /* Assert Reset */
+ CTXS(GPP_D12)
+ Sleep(5) /* 5 us */
+ /* DeAssert Reset */
+ STXS(GPP_D12)
+ Sleep(5) /* 5 us */
+ STA1 = 1
+ }
+
+ Method (_OFF, 0, Serialized) /* _OFF_: Power Off */
+ {
+ MCOF(1) /* Clock 1 */
+ /* Assert Reset */
+ CTXS(GPP_D12)
+ IF(!STA0)
+ {
+ /* Other sensor is OFF, so turn off power signals. */
+ POFF()
+ }
+ STA1 = 0
+ }
+
+ Method (_STA, 0, NotSerialized) /* _STA: Status */
+ {
+ Return (STA1)
+ }
+ }
+
+ Device(CAM1)
+ {
+ 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 (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 (0x04)
+ {
+ One,
+ 0x02,
+ 0x03,
+ 0x04,
+ }
+ },
+
+ Package (0x02)
+ {
+ "link-frequencies",
+ Package (0x02)
+ {
+ 0x15752A00,
+ 0xABA9500
+ }
+ },
+
+ Package (0x02)
+ {
+ "remote-endpoint",
+ Package (0x03)
+ {
+ IPU0,
+ One,
+ Zero
+ }
+ }
+ }
+ })
+ }
+}
diff --git a/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/camera.asl b/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/camera.asl
new file mode 100644
index 0000000..fae8e5d
--- /dev/null
+++ b/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/camera.asl
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/* This file is part of the coreboot project. */
+
+#include "ipu_mainboard.asl"
+#include "ipu_endpoints.asl"
+#include "cam0.asl"
+#include "cam1.asl"
diff --git a/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/ipu_endpoints.asl b/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/ipu_endpoints.asl
new file mode 100644
index 0000000..cff20e4
--- /dev/null
+++ b/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/ipu_endpoints.asl
@@ -0,0 +1,85 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/* This file is part of the coreboot project. */
+
+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 (0x01)
+ {
+ One,
+ }
+ },
+
+ 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,
+ 0x03,
+ 0x04,
+ }
+ },
+
+ Package (0x02)
+ {
+ "remote-endpoint",
+ Package (0x03)
+ {
+ ^I2C3.CAM1,
+ Zero,
+ Zero
+ }
+ }
+ }
+ })
+}
diff --git a/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/ipu_mainboard.asl b/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/ipu_mainboard.asl
new file mode 100644
index 0000000..9d29499
--- /dev/null
+++ b/src/mainboard/google/dedede/variants/baseboard/include/baseboard/acpi/ipu_mainboard.asl
@@ -0,0 +1,80 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/* This file is part of the coreboot project. */
+
+Scope (\_SB.PCI0)
+{
+ Device (IPU0)
+ {
+ Name (_ADR, 0x00050000) /* _ADR: Address */
+
+ Name (_DDN, "Camera and Imaging Subsystem") /* _DDN: DOS Device Name */
+ }
+}
+
+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",
+ Zero
+ }
+ },
+
+ 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",
+ 2
+ }
+ },
+
+ ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
+ Package (0x01)
+ {
+ Package (0x02)
+ {
+ "endpoint0",
+ "EP10"
+ }
+ }
+ })
+}

To view, visit change 39360. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Ic8687bce4896d9fc17b2190b8d11618af3515cc1
Gerrit-Change-Number: 39360
Gerrit-PatchSet: 23
Gerrit-Owner: Varshit B Pandya <varshit.b.pandya@intel.com>
Gerrit-Reviewer: Aamir Bohra <aamir.bohra@intel.com>
Gerrit-Reviewer: Divagar Mohandass <divagar.mohandass@intel.com>
Gerrit-Reviewer: Karthik Ramasubramanian <kramasub@google.com>
Gerrit-Reviewer: Maulik V Vaghela <maulik.v.vaghela@intel.com>
Gerrit-Reviewer: Patrick Georgi <pgeorgi@google.com>
Gerrit-Reviewer: Paul Menzel <paulepanter@users.sourceforge.net>
Gerrit-Reviewer: Rizwan Qureshi <rizwan.qureshi@intel.com>
Gerrit-Reviewer: Ronak Kanabar <ronak.kanabar@intel.com>
Gerrit-Reviewer: Shaunak Saha <shaunak.saha@intel.com>
Gerrit-Reviewer: Subrata Banik <subrata.banik@intel.com>
Gerrit-Reviewer: Wonkyu Kim <wonkyu.kim@intel.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-CC: Furquan Shaikh <furquan@google.com>
Gerrit-MessageType: merged