mb/google/dedede: Replace static Camera ACPI by driver for WDoo

This change updates devicetree to enable SSDT generation for world
facing camera and user facing camera of Waddledoo. Also reverts DSDT
changes related to both the camera.

Signed-off-by: Pandya, Varshit B <varshit.b.pandya@intel.com>
Change-Id: Ib7e875d297c04f35d4e980ff33d9a3767d2910ac
Signed-off-by: Sugnan Prabhu S <sugnan.prabhu.s@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/44397
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Rizwan Qureshi <rizwan.qureshi@intel.com>
This commit is contained in:
Pandya, Varshit B 2020-08-11 20:01:49 +05:30 committed by Patrick Georgi
parent cd91db953c
commit d121a117cc
9 changed files with 128 additions and 676 deletions

View file

@ -24,6 +24,8 @@ config BOARD_GOOGLE_BASEBOARD_DEDEDE
select SOC_INTEL_COMMON_BLOCK_DTT
select SOC_INTEL_CSE_LITE_SKU
select GENERIC_SPD_BIN if !BOARD_GOOGLE_DEDEDE
select DRIVERS_INTEL_MIPI_CAMERA
select SOC_INTEL_COMMON_BLOCK_IPU
if BOARD_GOOGLE_BASEBOARD_DEDEDE
@ -119,10 +121,4 @@ config VARIANT_DIR
default "wheelie" if BOARD_GOOGLE_WHEELIE
default "magolor" if BOARD_GOOGLE_MAGOLOR
config VARIANT_HAS_CAMERA_ACPI
bool
default n
help
Select this option to enable camera ACPI support on the variant.
endif #BOARD_GOOGLE_BASEBOARD_DEDEDE

View file

@ -34,7 +34,6 @@ config BOARD_GOOGLE_MADOO
select BOARD_GOOGLE_BASEBOARD_DEDEDE
select BASEBOARD_DEDEDE_LAPTOP
select DRIVERS_GENERIC_MAX98357A
select VARIANT_HAS_CAMERA_ACPI
config BOARD_GOOGLE_WADDLEDOO
bool "Waddledoo"
@ -43,7 +42,8 @@ config BOARD_GOOGLE_WADDLEDOO
select BOARD_ROMSIZE_KB_32768
select DRIVERS_GENERIC_MAX98357A
select DRIVERS_I2C_DA7219
select VARIANT_HAS_CAMERA_ACPI
select DRIVERS_INTEL_MIPI_CAMERA
select SOC_INTEL_COMMON_BLOCK_IPU
config BOARD_GOOGLE_WADDLEDEE
bool "Waddledee"

View file

@ -1,187 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
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 (0x05)
{
Package (0x02)
{
"endpoint",
Zero
},
Package (0x02)
{
"clock-lanes",
Zero
},
Package (0x02)
{
"data-lanes",
Package (0x01)
{
One
}
},
Package (0x02)
{
"link-frequencies",
Package (0x01)
{
180000000
}
},
Package (0x02)
{
"remote-endpoint",
Package (0x03)
{
IPU0,
Zero,
Zero
}
}
}
})
}
}

View file

@ -1,308 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
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 (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,
One,
Zero
}
}
}
})
}
Device(VCM0)
{
Name (_HID, "PRP0001") /* _HID: Hardware ID */
Name (_UID, 0x00) /* _UID: Unique ID */
Name (_DDN, "DW9768 VCM") /* _DDN: DOS Device Name */
Method (_STA, 0, NotSerialized) /* _STA: Status */
{
Return (0x0F)
}
Name (_CRS, ResourceTemplate () /* _CRS: Current Resource Settings */
{
I2cSerialBusV2 (0x000C, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C3",
0x00, ResourceConsumer, , Exclusive,
)
})
Name (_DEP, Package (0x01) /* _DEP: Dependencies */
{
CAM1
})
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 (0x01)
{
Package (0x02)
{
"compatible",
"dongwoon,dw9768"
}
}
})
}
Device (NVM0)
{
Name (_HID, "PRP0001") /* _HID: Hardware ID */
Name (_UID, 0x01) /* _UID: Unique ID */
Name (_DDN, "AT24 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 */
{
CAM1
})
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",
0x0E
},
Package (0x02)
{
"compatible",
"atmel,24c1024"
}
}
})
}
}

View file

@ -1,6 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include "ipu_mainboard.asl"
#include "ipu_endpoints.asl"
#include "cam0.asl"
#include "cam1.asl"

View file

@ -1,84 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
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
}
}
}
})
}

View file

@ -1,79 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
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"
}
}
})
}

View file

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

View file

@ -50,7 +50,21 @@ chip soc/intel/jasperlake
},
}"
device domain 0 on
device pci 05.0 on end # IPU - MIPI Camera
device pci 05.0 on # IPU - MIPI Camera
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" = "{1,4}"
register "cio2_lane_endpoint[0]" = ""^I2C3.CAM0""
register "cio2_lane_endpoint[1]" = ""^I2C3.CAM1""
register "cio2_prt[0]" = "0"
register "cio2_prt[1]" = "2"
device generic 0 on end
end
end
device pci 14.0 on
chip drivers/usb/acpi
device usb 0.0 on
@ -123,6 +137,115 @@ chip soc/intel/jasperlake
device i2c 10 on end
end
end # I2C 2
device pci 15.3 on #I2C #3 CAM0 CAM1 and VCM0
chip drivers/intel/mipi_camera
register "acpi_hid" = ""OVTI8856""
register "acpi_uid" = "0"
register "acpi_name" = ""CAM1""
register "chip_name" = ""Ov 8856 Camera""
register "device_type" = "INTEL_ACPI_CAMERA_SENSOR"
register "ssdb.lanes_used" = "4"
register "ssdb.link_used" = "1"
register "ssdb.vcm_type" = "0x0C"
register "vcm_name" = ""VCM0""
register "num_freq_entries" = "2"
register "link_freq[0]" = "360000000"
register "link_freq[1]" = "180000000"
register "remote_name" = ""IPU0""
register "has_power_resource" = "1"
#Controls
register "clk_panel.clks[0].clknum" = "1" #IMGCLKOUT_1
register "clk_panel.clks[0].freq" = "1" #19.2 Mhz
register "gpio_panel.gpio[0].gpio_num" = "GPP_D13" #power_enable_2p8
register "gpio_panel.gpio[1].gpio_num" = "GPP_D14" #power_enable_1p2
register "gpio_panel.gpio[2].gpio_num" = "GPP_D12" #reset
#_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_ENABLE(0, 5)"
register "on_seq.ops[2]" = "SEQ_OPS_GPIO_ENABLE(1, 5)"
register "on_seq.ops[3]" = "SEQ_OPS_GPIO_DISABLE(2, 5)"
register "on_seq.ops[4]" = "SEQ_OPS_GPIO_ENABLE(2, 5)"
#_OFF
register "off_seq.ops_cnt" = "4"
register "off_seq.ops[0]" = "SEQ_OPS_CLK_DISABLE(0, 0)"
register "off_seq.ops[1]" = "SEQ_OPS_GPIO_DISABLE(2, 0)"
register "off_seq.ops[2]" = "SEQ_OPS_GPIO_DISABLE(1, 0)"
register "off_seq.ops[3]" = "SEQ_OPS_GPIO_DISABLE(0, 0)"
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.CAM1.PRIC""
register "vcm_compat" = ""dongwoon,dw9768""
device i2c 0C on end
end
chip drivers/intel/mipi_camera
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.CAM1.PRIC""
register "nvm_compat" = ""atmel,24c1024""
register "nvm_size" = "0x2800"
register "nvm_pagesize" = "0x01"
register "nvm_readonly" = "0x01"
register "nvm_width" = "0x0E"
device i2c 58 on end
end
chip drivers/intel/mipi_camera
register "acpi_hid" = ""OVTI9734""
register "acpi_uid" = "0"
register "acpi_name" = ""CAM0""
register "chip_name" = ""Ov 9734 Camera""
register "device_type" = "INTEL_ACPI_CAMERA_SENSOR"
register "has_power_resource" = "1"
register "ssdb.lanes_used" = "1"
register "num_freq_entries" = "1"
register "link_freq[0]" = "180000000"
register "remote_name" = ""IPU0""
#Controls
register "clk_panel.clks[0].clknum" = "0" #IMGCLKOUT_0
register "clk_panel.clks[0].freq" = "1" #19.2 Mhz
register "gpio_panel.gpio[0].gpio_num" = "GPP_D13" #power_enable_2p8
register "gpio_panel.gpio[1].gpio_num" = "GPP_D14" #power_enable_1p2
register "gpio_panel.gpio[2].gpio_num" = "GPP_D15" #reset
#_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_ENABLE(0, 5)"
register "on_seq.ops[2]" = "SEQ_OPS_GPIO_ENABLE(1, 5)"
register "on_seq.ops[3]" = "SEQ_OPS_GPIO_DISABLE(2, 5)"
register "on_seq.ops[4]" = "SEQ_OPS_GPIO_ENABLE(2, 5)"
#_OFF
register "off_seq.ops_cnt" = "4"
register "off_seq.ops[0]" = "SEQ_OPS_CLK_DISABLE(0, 0)"
register "off_seq.ops[1]" = "SEQ_OPS_GPIO_DISABLE(2, 0)"
register "off_seq.ops[2]" = "SEQ_OPS_GPIO_DISABLE(1, 0)"
register "off_seq.ops[3]" = "SEQ_OPS_GPIO_DISABLE(0, 0)"
device i2c 36 on end
end
end
device pci 1c.7 on
chip drivers/intel/wifi
register "wake" = "GPE0_DW2_03"