From 65cbf312af928fde6260db0a5cc12ad6df4642fe Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Sat, 20 Dec 2025 11:18:21 -0600 Subject: [PATCH] mb/google/volteer: Convert MIPI camera cfg from static ASL to devicetree Convert MIPI camera configurations from static ASL files to devicetree- based runtime ACPI generation using the mipi_camera driver. This moves the camera IPU and device definitions from static ASL includes to devicetree overridetree files. Changes: - Convert baseboard, voema, volteer, and volteer2 from static mipi_camera.asl files to devicetree configuration - Move IPU0 configuration with CAM0 and CAM1 to volteer/volteer2 variant overridetree files (baseboard devicetree not used directly) - Remove all static ASL camera definition files (mipi_camera.asl) - Simplify voema variant to use only 1 IPU port (CAM1 only) instead of 2 ports, removing unused CAM0 port definition - Add SSDB config based on sensor name/type and CIO2 config This, along with follow-on patches, will allow volteer variants to be properly supported under Windows/Linux as well as ChromeOS. Change-Id: I7bd4ef2812a3d21b6541469bc3a126498d72f5ef Signed-off-by: Matt DeVillier Reviewed-on: https://review.coreboot.org/c/coreboot/+/90579 Tested-by: build bot (Jenkins) Reviewed-by: Eric Lai Reviewed-by: Sean Rhodes --- src/mainboard/google/volteer/Kconfig | 12 +- src/mainboard/google/volteer/dsdt.asl | 8 - .../include/baseboard/acpi/mipi_camera.asl | 650 ------------------ .../include/variant/acpi/mipi_camera.asl | 340 --------- .../volteer/variants/voema/overridetree.cb | 74 +- .../include/variant/acpi/mipi_camera.asl | 3 - .../volteer/variants/volteer/overridetree.cb | 139 +++- .../include/variant/acpi/mipi_camera.asl | 3 - .../volteer/variants/volteer2/overridetree.cb | 139 +++- 9 files changed, 353 insertions(+), 1015 deletions(-) delete mode 100644 src/mainboard/google/volteer/variants/baseboard/include/baseboard/acpi/mipi_camera.asl delete mode 100644 src/mainboard/google/volteer/variants/voema/include/variant/acpi/mipi_camera.asl delete mode 100644 src/mainboard/google/volteer/variants/volteer/include/variant/acpi/mipi_camera.asl delete mode 100644 src/mainboard/google/volteer/variants/volteer2/include/variant/acpi/mipi_camera.asl diff --git a/src/mainboard/google/volteer/Kconfig b/src/mainboard/google/volteer/Kconfig index a7537c0fd2..a32681d811 100644 --- a/src/mainboard/google/volteer/Kconfig +++ b/src/mainboard/google/volteer/Kconfig @@ -105,8 +105,8 @@ config BOARD_GOOGLE_TRONDO config BOARD_GOOGLE_VOEMA select BOARD_GOOGLE_BASEBOARD_VOLTEER + select DRIVERS_INTEL_MIPI_CAMERA select INTEL_GMA_HAVE_VBT - select VARIANT_HAS_MIPI_CAMERA config BOARD_GOOGLE_VOLET select BOARD_GOOGLE_BASEBOARD_VOLTEER @@ -114,24 +114,24 @@ config BOARD_GOOGLE_VOLET config BOARD_GOOGLE_VOLTEER select BOARD_GOOGLE_BASEBOARD_VOLTEER + select DRIVERS_INTEL_MIPI_CAMERA select INTEL_CAR_NEM select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES - select VARIANT_HAS_MIPI_CAMERA config BOARD_GOOGLE_VOLTEER2 select BOARD_GOOGLE_BASEBOARD_VOLTEER select DRIVER_I2C_TPM_ACPI select DRIVERS_GENESYSLOGIC_GL9755 + select DRIVERS_INTEL_MIPI_CAMERA select INTEL_GMA_HAVE_VBT select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES - select VARIANT_HAS_MIPI_CAMERA config BOARD_GOOGLE_VOLTEER2_TI50 select BOARD_GOOGLE_BASEBOARD_VOLTEER select DRIVER_I2C_TPM_ACPI select DRIVERS_GENESYSLOGIC_GL9755 + select DRIVERS_INTEL_MIPI_CAMERA select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES - select VARIANT_HAS_MIPI_CAMERA config BOARD_GOOGLE_VOXEL select BOARD_GOOGLE_BASEBOARD_VOLTEER @@ -241,10 +241,6 @@ config VARIANT_DIR default "volteer2" if BOARD_GOOGLE_VOLTEER2_TI50 default "voxel" if BOARD_GOOGLE_VOXEL -config VARIANT_HAS_MIPI_CAMERA - bool - default n - config USE_PM_ACPI_TIMER default n diff --git a/src/mainboard/google/volteer/dsdt.asl b/src/mainboard/google/volteer/dsdt.asl index c200294e74..dbd36043aa 100644 --- a/src/mainboard/google/volteer/dsdt.asl +++ b/src/mainboard/google/volteer/dsdt.asl @@ -30,9 +30,6 @@ DefinitionBlock( #include #include #include -#if CONFIG(VARIANT_HAS_MIPI_CAMERA) - #include -#endif } /* Mainboard hooks */ #include "mainboard.asl" @@ -48,9 +45,4 @@ DefinitionBlock( } #include - -#if CONFIG(VARIANT_HAS_MIPI_CAMERA) - /* Camera */ - #include -#endif /* VARIANT_HAS_MIPI_CAMERA */ } diff --git a/src/mainboard/google/volteer/variants/baseboard/include/baseboard/acpi/mipi_camera.asl b/src/mainboard/google/volteer/variants/baseboard/include/baseboard/acpi/mipi_camera.asl deleted file mode 100644 index f22b402865..0000000000 --- a/src/mainboard/google/volteer/variants/baseboard/include/baseboard/acpi/mipi_camera.asl +++ /dev/null @@ -1,650 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -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", - 0 - }, - Package (0x02) - { - "clock-lanes", - 0 - }, - Package (0x02) - { - "data-lanes", - Package (0x04) - { - 1, - 0x02, - 0x03, - 0x04 - } - }, - Package (0x02) - { - "remote-endpoint", - Package (0x03) - { - ^I2C3.CAM0, - 0, - 0 - } - } - } - }) - Name (EP10, Package (0x02) - { - ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), - Package (0x04) - { - Package (0x02) - { - "endpoint", - 0 - }, - Package (0x02) - { - "clock-lanes", - 0 - }, - Package (0x02) - { - "data-lanes", - Package (0x02) - { - 1, - 0x02 - } - }, - Package (0x02) - { - "remote-endpoint", - Package (0x03) - { - ^I2C2.CAM1, - 0, - 0 - } - } - } - }) -} - -Scope (\_SB.PCI0.I2C3) -{ - /* Reference counter to track power control by RCAM and VCM */ - Name (REFC, 0) - PowerResource (RCPR, 0x00, 0x0000) - { - Name (STA, 0) - Method (_ON, 0, Serialized) /* Rear camera_ON_: Power On */ - { - /* Enable IMG_CLK */ - MCON(3,1) /* Clock 3, 19.2MHz */ - - /* Pull RST low */ - CTXS(GPP_F15) - - /* Pull SNRPWR_EN high */ - STXS(GPP_H14) - - If (REFC == 0) - { - /* Pull PWREN high */ - STXS(GPP_H20) - } - Sleep(2) /* reset pulse width */ - - REFC++ - - /* Pull RST high */ - STXS(GPP_F15) - - Sleep(1) /* t2 */ - - STA = 1 - } - Method (_OFF, 0, Serialized) /* Rear camera _OFF: Power Off */ - { - /* Disable IMG_CLK */ - Sleep(1) /* t0+t1 */ - MCOF(3) /* Clock 3 */ - - /* Pull RST low */ - CTXS(GPP_F15) - - If (REFC == 1) - { - /* Pull PWREN low */ - CTXS(GPP_H20) - } - REFC-- - - /* Pull SNRPWR_EN low */ - CTXS(GPP_H14) - - STA = 0 - } - Method (_STA, 0, NotSerialized) - { - Return (STA) - } - } - - Device (CAM0) - { - Name (_HID, "OVTI8856") - Name (_UID, 0) - Name (_DDN, "Ov 8856 Camera") /* _DDN: DOS Device Name */ - Method (_STA, 0, NotSerialized) - { - 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 (0x03) - { - Package (0x02) - { - "clock-frequency", - 0x0124F800 - }, - Package (0x02) - { - "lens-focus", - Package (0x01) - { - VCM0 - } - }, - Package (0x02) - { - "i2c-allow-low-power-probe", - 0x01 - } - } - }) - Name (PRT0, Package (0x04) - { - ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), - Package (0x01) - { - Package (0x02) - { - "port", - 0 - } - }, - 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", - 0 - }, - Package (0x02) - { - "clock-lanes", - 0 - }, - Package (0x02) - { - "data-lanes", - Package (0x04) - { - 1, - 0x02, - 0x03, - 0x04 - } - }, - Package (0x02) - { - "link-frequencies", - Package (0x02) - { - 0x15752A00, - 0xABA9500 - } - }, - Package (0x02) - { - "remote-endpoint", - Package (0x03) - { - IPU0, - 0, - 0 - } - } - } - }) - } - - PowerResource (VCPR, 0x00, 0x0000) - { - Name (STA, 0) - Method (_ON, 0, Serialized) /* VCPR_ON_: VCM Power On */ - { - If (REFC == 0) - { - /* Pull PWREN high */ - STXS(GPP_H20) - } - REFC++ - STA = 1 - } - Method (_OFF, 0, Serialized) /* VCPR_OFF: VCM Power Off */ - { - If (REFC == 1) - { - /* Pull PWREN low */ - CTXS(GPP_H20) - } - REFC-- - STA = 0 - } - Method (_STA, 0, NotSerialized) - { - Return (STA) - } - } - - Device (VCM0) - { - Name (_HID, "PRP0001") - Name (_UID, 0x00) - Name (_DDN, "DW9768 VCM") /* _DDN: DOS Device Name */ - Method (_STA, 0, NotSerialized) - { - 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 */ - { - VCPR - }) - Name (_PR3, Package (0x01) /* _PR3: Power Resources for D3hot */ - { - VCPR - }) - Name (_DSD, Package (0x02) /* _DSD: Device-Specific Data */ - { - ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), - Package (0x02) - { - Package (0x02) - { - "compatible", - "dongwoon,dw9768" - }, - Package (0x02) - { - "i2c-allow-low-power-probe", - 0x01 - } - } - }) - } - Device (NVM0) - { - Name (_HID, "PRP0001") - Name (_UID, 0x01) - Name (_DDN, "AT24 EEPROM") // _DDN: DOS Device Name - Method (_STA, 0, NotSerialized) - { - 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 (0x06) - { - Package (0x02) - { - "size", - 0x2800 - }, - Package (0x02) - { - "pagesize", - 1 - }, - Package (0x02) - { - "read-only", - 1 - }, - Package (0x02) - { - "address-width", - 0x10 - }, - Package (0x02) - { - "compatible", - "atmel,24c1024" - }, - Package (0x02) - { - "i2c-allow-low-power-probe", - 0x01 - } - } - }) - } -} - -Scope (\_SB.PCI0.I2C2) -{ - Name (STA, 0) - PowerResource (FCPR, 0x00, 0x0000) - { - Method (_ON, 0, Serialized) /* Front camera_ON_: Power On */ - { - If (STA == 0) - { - /* 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 */ - - STA = 1 - } - } - Method (_OFF, 0, Serialized) /* Front camera_OFF_: Power Off */ - { - If (STA == 1) - { - /* 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) - - STA = 0 - } - } - Method (_STA, 0, NotSerialized) - { - Return (STA) - } - } - - Device (CAM1) - { - Name (_HID, "INT3474") - Name (_UID, 0) - Name (_DDN, "Ov 2740 Camera") /* _DDN: DOS Device Name */ - Method (_STA, 0, NotSerialized) - { - 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 (0x02) - { - Package (0x02) - { - "clock-frequency", - 0x0124F800 - }, - Package (0x02) - { - "i2c-allow-low-power-probe", - 0x01 - } - } - }) - Name (PRT0, Package (0x04) - { - ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), - Package (0x01) - { - Package (0x02) - { - "port", - 0 - } - }, - 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", - 0 - }, - Package (0x02) - { - "clock-lanes", - 0 - }, - Package (0x02) - { - "data-lanes", - Package (0x02) - { - 1, - 0x02 - } - }, - Package (0x02) - { - "link-frequencies", - Package (0x01) - { - 0x15752A00 - } - }, - Package (0x02) - { - "remote-endpoint", - Package (0x03) - { - IPU0, - 1, - 0 - } - } - } - }) - } -} diff --git a/src/mainboard/google/volteer/variants/voema/include/variant/acpi/mipi_camera.asl b/src/mainboard/google/volteer/variants/voema/include/variant/acpi/mipi_camera.asl deleted file mode 100644 index e35c3bba8a..0000000000 --- a/src/mainboard/google/volteer/variants/voema/include/variant/acpi/mipi_camera.asl +++ /dev/null @@ -1,340 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -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 (EP10, Package (0x02) - { - ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), - Package (0x04) - { - Package (0x02) - { - "endpoint", - 0 - }, - Package (0x02) - { - "clock-lanes", - 0 - }, - Package (0x02) - { - "data-lanes", - Package (0x02) - { - 1, - 0x02 - } - }, - Package (0x02) - { - "remote-endpoint", - Package (0x03) - { - ^I2C2.CAM1, - 0, - 0 - } - } - } - }) -} - -Scope (\_SB.PCI0.I2C2) -{ - Name (STA, 0) - PowerResource (FCPR, 0x00, 0x0000) - { - Method (_ON, 0, Serialized) /* Front camera_ON_: Power On */ - { - If (STA == 0) - { - /* Enable IMG_CLK */ - MCON(2,1) /* Clock 2, 19.2MHz */ - - /* Pull RST low */ - CTXS(GPP_D4) - - /* Pull PWREN high */ - STXS(GPP_D17) - Sleep(10) /* t9 */ - - /* Pull RST high */ - STXS(GPP_D4) - Sleep(1) /* t2 */ - - STA = 1 - } - } - Method (_OFF, 0, Serialized) /* Front camera_OFF_: Power Off */ - { - If (STA == 1) - { - /* Disable IMG_CLK */ - Sleep(1) /* t0+t1 */ - MCOF(2) /* Clock 2 */ - - /* Pull RST low */ - CTXS(GPP_D4) - - /* Pull PWREN low */ - CTXS(GPP_D17) - - STA = 0 - } - } - Method (_STA, 0, NotSerialized) - { - Return (STA) - } - } - - Device (CAM1) - { - Name (_HID, "INT3474") - Name (_UID, 0) - Name (_DDN, "Ov 2740 Camera") /* _DDN: DOS Device Name */ - Method (_STA, 0, NotSerialized) - { - Return (0x0F) - } - Name (_CRS, ResourceTemplate () /* _CRS: Current Resource Settings */ - { - I2cSerialBus (0x0036, 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 (0x02) - { - Package (0x02) - { - "clock-frequency", - 0x0124F800 - }, - Package (0x02) - { - "i2c-allow-low-power-probe", - 0x01 - } - } - }) - Name (PRT0, Package (0x04) - { - ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), - Package (0x01) - { - Package (0x02) - { - "port", - 0 - } - }, - 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", - 0 - }, - Package (0x02) - { - "clock-lanes", - 0 - }, - Package (0x02) - { - "data-lanes", - Package (0x02) - { - 1, - 0x02 - } - }, - Package (0x02) - { - "link-frequencies", - Package (0x01) - { - 0x15752A00 - } - }, - Package (0x02) - { - "remote-endpoint", - Package (0x03) - { - IPU0, - 1, - 0 - } - } - } - }) - } - Device (NVM0) - { - Name (_HID, "PRP0001") - Name (_UID, 0x01) - Name (_DDN, "AT24 EEPROM") // _DDN: DOS Device Name - Method (_STA, 0, NotSerialized) - { - Return (0x0F) - } - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - I2cSerialBusV2 (0x0050, ControllerInitiated, 0x00061A80, - AddressingMode7Bit, "\\_SB.PCI0.I2C2", - 0x00, ResourceConsumer, , Exclusive, - ) - }) - Name (_DEP, Package (0x01) // _DEP: Dependencies - { - CAM1 - }) - Name (_PR0, Package (0x01) // _PR0: Power Resources for D0 - { - FCPR - }) - Name (_PR3, Package (0x01) // _PR3: Power Resources for D3hot - { - FCPR - }) - Name (_DSD, Package (0x02) // _DSD: Device-Specific Data - { - ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301") /* Device Properties for _DSD */, - Package (0x06) - { - Package (0x02) - { - "size", - 0x2000 - }, - Package (0x02) - { - "pagesize", - 1 - }, - Package (0x02) - { - "read-only", - 1 - }, - Package (0x02) - { - "address-width", - 0x10 - }, - Package (0x02) - { - "compatible", - "atmel,24c64" - }, - Package (0x02) - { - "i2c-allow-low-power-probe", - 0x01 - } - } - }) - } -} diff --git a/src/mainboard/google/volteer/variants/voema/overridetree.cb b/src/mainboard/google/volteer/variants/voema/overridetree.cb index e4b2616807..ecb37987c7 100644 --- a/src/mainboard/google/volteer/variants/voema/overridetree.cb +++ b/src/mainboard/google/volteer/variants/voema/overridetree.cb @@ -9,7 +9,19 @@ chip soc/intel/tigerlake register "typec_aux_bias_pads[0]" = "{.pad_auxp_dc = GPP_E10, .pad_auxn_dc = GPP_E13}" device domain 0 on - device ref ipu on end # IPU + device ref ipu on + chip drivers/intel/mipi_camera + register "acpi_uid" = "0x50000" + register "acpi_name" = ""IPU0"" + register "device_type" = "INTEL_ACPI_CAMERA_CIO2" + + register "cio2_num_ports" = "1" + register "cio2_lanes_used" = "{2}" # 2 CSI Camera lanes are used + register "cio2_lane_endpoint[0]" = ""^I2C2.CAM1"" + register "cio2_prt[0]" = "1" + device generic 0 on end + end + end device ref i2c0 on chip drivers/i2c/generic register "hid" = ""10EC5682"" @@ -62,6 +74,66 @@ chip soc/intel/tigerlake device i2c 10 on end end end + device ref i2c2 on + chip drivers/intel/mipi_camera + register "acpi_hid" = ""INT3474"" + register "acpi_uid" = "0" + register "acpi_name" = ""CAM1"" + register "chip_name" = ""Ov 2740 Camera"" + register "device_type" = "INTEL_ACPI_CAMERA_SENSOR" + register "has_power_resource" = "true" + + register "ssdb.lanes_used" = "2" + register "ssdb.link_used" = "1" + register "ssdb.platform" = "PLAT_TGL" + register "ssdb.rom_type" = "ROM_EEPROM_CAT24C64" + register "rom_address" = "0x50" + register "num_freq_entries" = "1" + register "link_freq[0]" = "360 * MHz" + register "remote_name" = ""IPU0"" + register "max_dstate_for_probe" = "ACPI_DEVICE_SLEEP_D3_COLD" + + #Controls + register "clk_panel.clks[0].clknum" = "2" + register "clk_panel.clks[0].freq" = "FREQ_19_2_MHZ" + + register "gpio_panel.gpio[0].gpio_num" = "GPP_D4" #reset + register "gpio_panel.gpio[1].gpio_num" = "GPP_D17" #power enable + + #_ON + register "on_seq.ops_cnt" = "4" + register "on_seq.ops[0]" = "SEQ_OPS_CLK_ENABLE(0, 0)" + register "on_seq.ops[1]" = "SEQ_OPS_GPIO_DISABLE(0, 0)" # RST low + register "on_seq.ops[2]" = "SEQ_OPS_GPIO_ENABLE(1, 10)" # PWREN high, sleep 10ms + register "on_seq.ops[3]" = "SEQ_OPS_GPIO_ENABLE(0, 1)" # RST high, sleep 1ms + + #_OFF + register "off_seq.ops_cnt" = "3" + register "off_seq.ops[0]" = "SEQ_OPS_CLK_DISABLE(0, 1)" # Disable clock, delay 1ms + register "off_seq.ops[1]" = "SEQ_OPS_GPIO_DISABLE(0, 0)" # RST low + register "off_seq.ops[2]" = "SEQ_OPS_GPIO_DISABLE(1, 0)" # PWREN low + + device i2c 36 on end + end + chip drivers/intel/mipi_camera + register "acpi_hid" = "ACPI_DT_NAMESPACE_HID" + register "acpi_uid" = "1" + register "acpi_name" = ""NVM0"" + register "chip_name" = ""AT24 EEPROM"" + register "device_type" = "INTEL_ACPI_CAMERA_NVM" + register "pr0" = ""\\_SB.PCI0.I2C2.CAM1.PRIC"" + + register "nvm_size" = "0x2000" + register "nvm_pagesize" = "1" + register "nvm_readonly" = "1" + register "nvm_width" = "0x10" + register "nvm_compat" = ""atmel,24c64"" + + register "max_dstate_for_probe" = "ACPI_DEVICE_SLEEP_D0" + + device i2c 50 on end + end + end device ref i2c5 on chip drivers/i2c/generic register "hid" = ""ELAN0000"" diff --git a/src/mainboard/google/volteer/variants/volteer/include/variant/acpi/mipi_camera.asl b/src/mainboard/google/volteer/variants/volteer/include/variant/acpi/mipi_camera.asl deleted file mode 100644 index 418f2e04ba..0000000000 --- a/src/mainboard/google/volteer/variants/volteer/include/variant/acpi/mipi_camera.asl +++ /dev/null @@ -1,3 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include diff --git a/src/mainboard/google/volteer/variants/volteer/overridetree.cb b/src/mainboard/google/volteer/variants/volteer/overridetree.cb index c489c2dc91..21e6c63e55 100644 --- a/src/mainboard/google/volteer/variants/volteer/overridetree.cb +++ b/src/mainboard/google/volteer/variants/volteer/overridetree.cb @@ -63,7 +63,21 @@ chip soc/intel/tigerlake probe DB_USB USB4_GEN3 end - device ref ipu on end + device ref ipu on + chip drivers/intel/mipi_camera + register "acpi_uid" = "0x50000" + register "acpi_name" = ""IPU0"" + register "device_type" = "INTEL_ACPI_CAMERA_CIO2" + + register "cio2_num_ports" = "2" + register "cio2_lanes_used" = "{4,2}" # 4 and 2 CSI Camera lanes are used + register "cio2_lane_endpoint[0]" = ""^I2C3.CAM0"" + register "cio2_lane_endpoint[1]" = ""^I2C2.CAM1"" + register "cio2_prt[0]" = "5" + register "cio2_prt[1]" = "1" + device generic 0 on end + end + end device ref i2c0 on chip drivers/i2c/generic register "hid" = ""10EC5682"" @@ -166,6 +180,129 @@ chip soc/intel/tigerlake register "proxraw_strength" = "0" device i2c 28 on end end + chip drivers/intel/mipi_camera + register "acpi_hid" = ""INT3474"" + register "acpi_uid" = "0" + register "acpi_name" = ""CAM1"" + register "chip_name" = ""Ov 2740 Camera"" + register "device_type" = "INTEL_ACPI_CAMERA_SENSOR" + register "has_power_resource" = "true" + register "low_power_probe" = "1" + + register "ssdb.lanes_used" = "2" + register "ssdb.link_used" = "1" + register "ssdb.platform" = "PLAT_TGL" + register "num_freq_entries" = "1" + register "link_freq[0]" = "360 * MHz" + register "remote_name" = ""IPU0"" + register "max_dstate_for_probe" = "ACPI_DEVICE_SLEEP_D3_COLD" + + #Controls + register "clk_panel.clks[0].clknum" = "2" + register "clk_panel.clks[0].freq" = "FREQ_19_2_MHZ" + + register "gpio_panel.gpio[0].gpio_num" = "GPP_D4" #reset + register "gpio_panel.gpio[1].gpio_num" = "GPP_D17" #power enable + register "gpio_panel.gpio[2].gpio_num" = "GPP_D18" #SNRPWR_EN + + #_ON + register "on_seq.ops_cnt" = "5" + register "on_seq.ops[0]" = "SEQ_OPS_CLK_ENABLE(0, 0)" + register "on_seq.ops[1]" = "SEQ_OPS_GPIO_DISABLE(0, 0)" # RST low + register "on_seq.ops[2]" = "SEQ_OPS_GPIO_ENABLE(2, 0)" # SNRPWR_EN high + register "on_seq.ops[3]" = "SEQ_OPS_GPIO_ENABLE(1, 10)" # PWREN high, sleep 10ms + register "on_seq.ops[4]" = "SEQ_OPS_GPIO_ENABLE(0, 1)" # RST high, sleep 1ms + + #_OFF + register "off_seq.ops_cnt" = "4" + register "off_seq.ops[0]" = "SEQ_OPS_CLK_DISABLE(0, 1)" # Disable clock, delay 1ms + register "off_seq.ops[1]" = "SEQ_OPS_GPIO_DISABLE(0, 0)" # RST low + register "off_seq.ops[2]" = "SEQ_OPS_GPIO_DISABLE(1, 0)" # PWREN low + register "off_seq.ops[3]" = "SEQ_OPS_GPIO_DISABLE(2, 0)" # SNRPWR_EN low + + device i2c 10 on end + end + end + device ref i2c3 on + chip drivers/intel/mipi_camera + register "acpi_hid" = ""OVTI8856"" + register "acpi_uid" = "0" + register "acpi_name" = ""CAM0"" + register "chip_name" = ""Ov 8856 Camera"" + register "device_type" = "INTEL_ACPI_CAMERA_SENSOR" + register "has_power_resource" = "true" + register "low_power_probe" = "1" + + register "ssdb.lanes_used" = "4" + register "ssdb.link_used" = "0" + register "ssdb.platform" = "PLAT_TGL" + register "ssdb.vcm_type" = "VCM_DW9808" + register "vcm_address" = "0x0C" + register "vcm_name" = ""VCM0"" + # placeholder; ROM type 24C1024 currently unsupported + # register "ssdb.rom_type" = "ROM_EEPROM_24C1024" + # register "rom_address" = "0x50" + register "num_freq_entries" = "2" + register "link_freq[0]" = "360 * MHz" # 360 MHz + register "link_freq[1]" = "180 * MHz" # 180 MHz + register "remote_name" = ""IPU0"" + register "max_dstate_for_probe" = "ACPI_DEVICE_SLEEP_D3_COLD" + + #Controls + register "clk_panel.clks[0].clknum" = "3" + register "clk_panel.clks[0].freq" = "FREQ_19_2_MHZ" + + register "gpio_panel.gpio[0].gpio_num" = "GPP_F15" #reset + register "gpio_panel.gpio[1].gpio_num" = "GPP_H20" #power enable + register "gpio_panel.gpio[2].gpio_num" = "GPP_H14" #SNRPWR_EN + + #_ON + register "on_seq.ops_cnt" = "5" + register "on_seq.ops[0]" = "SEQ_OPS_CLK_ENABLE(0, 0)" + register "on_seq.ops[1]" = "SEQ_OPS_GPIO_DISABLE(0, 0)" # RST low + register "on_seq.ops[2]" = "SEQ_OPS_GPIO_ENABLE(2, 0)" # SNRPWR_EN high + register "on_seq.ops[3]" = "SEQ_OPS_GPIO_ENABLE(1, 2)" # PWREN high, sleep 2ms + register "on_seq.ops[4]" = "SEQ_OPS_GPIO_ENABLE(0, 1)" # RST high, sleep 1ms + + #_OFF + register "off_seq.ops_cnt" = "4" + register "off_seq.ops[0]" = "SEQ_OPS_CLK_DISABLE(0, 1)" # Disable clock, delay 1ms + register "off_seq.ops[1]" = "SEQ_OPS_GPIO_DISABLE(0, 0)" # RST low + register "off_seq.ops[2]" = "SEQ_OPS_GPIO_DISABLE(1, 0)" # PWREN low + register "off_seq.ops[3]" = "SEQ_OPS_GPIO_DISABLE(2, 0)" # SNRPWR_EN low + + device i2c 10 on end + end + chip drivers/intel/mipi_camera + register "acpi_uid" = "2" + register "acpi_name" = ""VCM0"" + register "chip_name" = ""DW9768 VCM"" + register "device_type" = "INTEL_ACPI_CAMERA_VCM" + + register "pr0" = ""\\_SB.PCI0.I2C3.CAM0.PRIC"" + register "vcm_compat" = ""dongwoon,dw9768"" + register "max_dstate_for_probe" = "ACPI_DEVICE_SLEEP_D0" + + device i2c 0C on end + end + chip drivers/intel/mipi_camera + register "acpi_hid" = "ACPI_DT_NAMESPACE_HID" + register "acpi_uid" = "1" + register "acpi_name" = ""NVM0"" + register "chip_name" = ""AT24 EEPROM"" + register "device_type" = "INTEL_ACPI_CAMERA_NVM" + register "pr0" = ""\\_SB.PCI0.I2C3.CAM0.PRIC"" + + register "nvm_size" = "0x2800" + register "nvm_pagesize" = "1" + register "nvm_readonly" = "1" + register "nvm_width" = "0x10" + register "nvm_compat" = ""atmel,24c1024"" + + register "max_dstate_for_probe" = "ACPI_DEVICE_SLEEP_D0" + + device i2c 58 on end + end end device ref i2c5 on chip drivers/i2c/generic diff --git a/src/mainboard/google/volteer/variants/volteer2/include/variant/acpi/mipi_camera.asl b/src/mainboard/google/volteer/variants/volteer2/include/variant/acpi/mipi_camera.asl deleted file mode 100644 index 418f2e04ba..0000000000 --- a/src/mainboard/google/volteer/variants/volteer2/include/variant/acpi/mipi_camera.asl +++ /dev/null @@ -1,3 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include diff --git a/src/mainboard/google/volteer/variants/volteer2/overridetree.cb b/src/mainboard/google/volteer/variants/volteer2/overridetree.cb index ee181c86e0..f27bb77f98 100644 --- a/src/mainboard/google/volteer/variants/volteer2/overridetree.cb +++ b/src/mainboard/google/volteer/variants/volteer2/overridetree.cb @@ -117,7 +117,21 @@ chip soc/intel/tigerlake probe DB_USB USB4_GEN3 end - device ref ipu on end # IPU 0x9A19 + device ref ipu on + chip drivers/intel/mipi_camera + register "acpi_uid" = "0x50000" + register "acpi_name" = ""IPU0"" + register "device_type" = "INTEL_ACPI_CAMERA_CIO2" + + register "cio2_num_ports" = "2" + register "cio2_lanes_used" = "{4,2}" # 4 and 2 CSI Camera lanes are used + register "cio2_lane_endpoint[0]" = ""^I2C3.CAM0"" + register "cio2_lane_endpoint[1]" = ""^I2C2.CAM1"" + register "cio2_prt[0]" = "5" + register "cio2_prt[1]" = "1" + device generic 0 on end + end + end device ref i2c0 on chip drivers/i2c/generic register "hid" = ""10EC5682"" @@ -225,6 +239,129 @@ chip soc/intel/tigerlake register "proxraw_strength" = "0" device i2c 28 on end end + chip drivers/intel/mipi_camera + register "acpi_hid" = ""INT3474"" + register "acpi_uid" = "0" + register "acpi_name" = ""CAM1"" + register "chip_name" = ""Ov 2740 Camera"" + register "device_type" = "INTEL_ACPI_CAMERA_SENSOR" + register "has_power_resource" = "true" + register "low_power_probe" = "1" + + register "ssdb.lanes_used" = "2" + register "ssdb.link_used" = "1" + register "ssdb.platform" = "PLAT_TGL" + register "num_freq_entries" = "1" + register "link_freq[0]" = "360 * MHz" + register "remote_name" = ""IPU0"" + register "max_dstate_for_probe" = "ACPI_DEVICE_SLEEP_D3_COLD" + + #Controls + register "clk_panel.clks[0].clknum" = "2" + register "clk_panel.clks[0].freq" = "FREQ_19_2_MHZ" + + register "gpio_panel.gpio[0].gpio_num" = "GPP_D4" #reset + register "gpio_panel.gpio[1].gpio_num" = "GPP_D17" #power enable + register "gpio_panel.gpio[2].gpio_num" = "GPP_D18" #SNRPWR_EN + + #_ON + register "on_seq.ops_cnt" = "5" + register "on_seq.ops[0]" = "SEQ_OPS_CLK_ENABLE(0, 0)" + register "on_seq.ops[1]" = "SEQ_OPS_GPIO_DISABLE(0, 0)" # RST low + register "on_seq.ops[2]" = "SEQ_OPS_GPIO_ENABLE(2, 0)" # SNRPWR_EN high + register "on_seq.ops[3]" = "SEQ_OPS_GPIO_ENABLE(1, 10)" # PWREN high, sleep 10ms + register "on_seq.ops[4]" = "SEQ_OPS_GPIO_ENABLE(0, 1)" # RST high, sleep 1ms + + #_OFF + register "off_seq.ops_cnt" = "4" + register "off_seq.ops[0]" = "SEQ_OPS_CLK_DISABLE(0, 1)" # Disable clock, delay 1ms + register "off_seq.ops[1]" = "SEQ_OPS_GPIO_DISABLE(0, 0)" # RST low + register "off_seq.ops[2]" = "SEQ_OPS_GPIO_DISABLE(1, 0)" # PWREN low + register "off_seq.ops[3]" = "SEQ_OPS_GPIO_DISABLE(2, 0)" # SNRPWR_EN low + + device i2c 10 on end + end + end + device ref i2c3 on + chip drivers/intel/mipi_camera + register "acpi_hid" = ""OVTI8856"" + register "acpi_uid" = "0" + register "acpi_name" = ""CAM0"" + register "chip_name" = ""Ov 8856 Camera"" + register "device_type" = "INTEL_ACPI_CAMERA_SENSOR" + register "has_power_resource" = "true" + register "low_power_probe" = "1" + + register "ssdb.lanes_used" = "4" + register "ssdb.link_used" = "0" + register "ssdb.platform" = "PLAT_TGL" + register "ssdb.vcm_type" = "VCM_DW9808" + register "vcm_address" = "0x0C" + register "vcm_name" = ""VCM0"" + # placeholder; ROM type 24C1024 currently unsupported + # register "ssdb.rom_type" = "ROM_EEPROM_24C1024" + # register "rom_address" = "0x50" + register "num_freq_entries" = "2" + register "link_freq[0]" = "360 * MHz" # 360 MHz + register "link_freq[1]" = "180 * MHz" # 180 MHz + register "remote_name" = ""IPU0"" + register "max_dstate_for_probe" = "ACPI_DEVICE_SLEEP_D3_COLD" + + #Controls + register "clk_panel.clks[0].clknum" = "3" + register "clk_panel.clks[0].freq" = "FREQ_19_2_MHZ" + + register "gpio_panel.gpio[0].gpio_num" = "GPP_F15" #reset + register "gpio_panel.gpio[1].gpio_num" = "GPP_H20" #power enable + register "gpio_panel.gpio[2].gpio_num" = "GPP_H14" #SNRPWR_EN + + #_ON + register "on_seq.ops_cnt" = "5" + register "on_seq.ops[0]" = "SEQ_OPS_CLK_ENABLE(0, 0)" + register "on_seq.ops[1]" = "SEQ_OPS_GPIO_DISABLE(0, 0)" # RST low + register "on_seq.ops[2]" = "SEQ_OPS_GPIO_ENABLE(2, 0)" # SNRPWR_EN high + register "on_seq.ops[3]" = "SEQ_OPS_GPIO_ENABLE(1, 2)" # PWREN high, sleep 2ms + register "on_seq.ops[4]" = "SEQ_OPS_GPIO_ENABLE(0, 1)" # RST high, sleep 1ms + + #_OFF + register "off_seq.ops_cnt" = "4" + register "off_seq.ops[0]" = "SEQ_OPS_CLK_DISABLE(0, 1)" # Disable clock, delay 1ms + register "off_seq.ops[1]" = "SEQ_OPS_GPIO_DISABLE(0, 0)" # RST low + register "off_seq.ops[2]" = "SEQ_OPS_GPIO_DISABLE(1, 0)" # PWREN low + register "off_seq.ops[3]" = "SEQ_OPS_GPIO_DISABLE(2, 0)" # SNRPWR_EN low + + device i2c 10 on end + end + chip drivers/intel/mipi_camera + register "acpi_uid" = "2" + register "acpi_name" = ""VCM0"" + register "chip_name" = ""DW9768 VCM"" + register "device_type" = "INTEL_ACPI_CAMERA_VCM" + + register "pr0" = ""\\_SB.PCI0.I2C3.CAM0.PRIC"" + register "vcm_compat" = ""dongwoon,dw9768"" + register "max_dstate_for_probe" = "ACPI_DEVICE_SLEEP_D0" + + device i2c 0C on end + end + chip drivers/intel/mipi_camera + register "acpi_hid" = "ACPI_DT_NAMESPACE_HID" + register "acpi_uid" = "1" + register "acpi_name" = ""NVM0"" + register "chip_name" = ""AT24 EEPROM"" + register "device_type" = "INTEL_ACPI_CAMERA_NVM" + register "pr0" = ""\\_SB.PCI0.I2C3.CAM0.PRIC"" + + register "nvm_size" = "0x2800" + register "nvm_pagesize" = "1" + register "nvm_readonly" = "1" + register "nvm_width" = "0x10" + register "nvm_compat" = ""atmel,24c1024"" + + register "max_dstate_for_probe" = "ACPI_DEVICE_SLEEP_D0" + + device i2c 58 on end + end end device ref i2c5 on chip drivers/i2c/generic