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 <matt.devillier@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/90579
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Eric Lai <ericllai@google.com>
Reviewed-by: Sean Rhodes <sean@starlabs.systems>
This commit is contained in:
Matt DeVillier 2025-12-20 11:18:21 -06:00
commit 65cbf312af
9 changed files with 353 additions and 1015 deletions

View file

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

View file

@ -30,9 +30,6 @@ DefinitionBlock(
#include <soc/intel/tigerlake/acpi/tcss.asl>
#include <soc/intel/common/block/acpi/acpi/gna.asl>
#include <drivers/intel/gma/acpi/default_brightness_levels.asl>
#if CONFIG(VARIANT_HAS_MIPI_CAMERA)
#include <soc/intel/common/block/acpi/acpi/ipu.asl>
#endif
}
/* Mainboard hooks */
#include "mainboard.asl"
@ -48,9 +45,4 @@ DefinitionBlock(
}
#include <southbridge/intel/common/acpi/sleepstates.asl>
#if CONFIG(VARIANT_HAS_MIPI_CAMERA)
/* Camera */
#include <variant/acpi/mipi_camera.asl>
#endif /* VARIANT_HAS_MIPI_CAMERA */
}

View file

@ -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
}
}
}
})
}
}

View file

@ -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
}
}
})
}
}

View file

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

View file

@ -1,3 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <baseboard/acpi/mipi_camera.asl>

View file

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

View file

@ -1,3 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <baseboard/acpi/mipi_camera.asl>

View file

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