summaryrefslogtreecommitdiff
path: root/src/mainboard/intel/jasperlake_rvp
diff options
context:
space:
mode:
authorPandya, Varshit B <varshit.b.pandya@intel.com>2020-03-19 16:10:54 +0530
committerSubrata Banik <subrata.banik@intel.com>2020-05-26 08:41:42 +0000
commit39ea0eab411b1ad7acff00e48d5520f351e868ac (patch)
treedfda924bb2b9ca43ea1854db8108b334b4c289ea /src/mainboard/intel/jasperlake_rvp
parent641221c0a155cc0c601839791efbce578f671199 (diff)
mb/intel/jasperlake_rvp: Add world facing camera support
1. Configure GPIOs as per schematics 2. Add 1 Ports and 1 Endpoints 3. Add support for OTVI5675 WFC is on I2C5 with VCM support and using 2 data-lanes BUG=None BRANCH=None TEST=Build and Boot jslrvp board and able to capture image using world facing camera. Change-Id: I07ae9e3473c16bde8eb1597460e70cc478357b98 Signed-off-by: Pandya, Varshit B <varshit.b.pandya@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/39669 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Ronak Kanabar <ronak.kanabar@intel.com> Reviewed-by: Maulik V Vaghela <maulik.v.vaghela@intel.com> Reviewed-by: Aamir Bohra <aamir.bohra@intel.com>
Diffstat (limited to 'src/mainboard/intel/jasperlake_rvp')
-rw-r--r--src/mainboard/intel/jasperlake_rvp/Makefile.inc1
-rw-r--r--src/mainboard/intel/jasperlake_rvp/dsdt.asl17
-rw-r--r--src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/cam1.asl226
-rw-r--r--src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/camera.asl5
-rw-r--r--src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/ipu_endpoints.asl44
-rw-r--r--src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/ipu_mainboard.asl50
-rw-r--r--src/mainboard/intel/jasperlake_rvp/variants/jslrvp/devicetree.cb16
-rw-r--r--src/mainboard/intel/jasperlake_rvp/variants/jslrvp/gpio.c17
-rw-r--r--src/mainboard/intel/jasperlake_rvp/variants/jslrvp/include/variant/acpi/camera.asl3
9 files changed, 365 insertions, 14 deletions
diff --git a/src/mainboard/intel/jasperlake_rvp/Makefile.inc b/src/mainboard/intel/jasperlake_rvp/Makefile.inc
index 20b3be4bd9..c1fde4969c 100644
--- a/src/mainboard/intel/jasperlake_rvp/Makefile.inc
+++ b/src/mainboard/intel/jasperlake_rvp/Makefile.inc
@@ -19,6 +19,7 @@ smm-$(CONFIG_HAVE_SMI_HANDLER) += smihandler.c
subdirs-y += ../common
subdirs-y += variants/baseboard
+CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/include
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/variants/baseboard/include
subdirs-y += variants/$(VARIANT_DIR)
diff --git a/src/mainboard/intel/jasperlake_rvp/dsdt.asl b/src/mainboard/intel/jasperlake_rvp/dsdt.asl
index 3e45cca168..f47424f996 100644
--- a/src/mainboard/intel/jasperlake_rvp/dsdt.asl
+++ b/src/mainboard/intel/jasperlake_rvp/dsdt.asl
@@ -36,15 +36,18 @@ DefinitionBlock(
#if CONFIG(EC_GOOGLE_CHROMEEC)
/* Chrome OS Embedded Controller */
- Scope (\_SB.PCI0.LPCB)
- {
- /* ACPI code for EC SuperIO functions */
- #include <ec/google/chromeec/acpi/superio.asl>
- /* ACPI code for EC functions */
- #include <ec/google/chromeec/acpi/ec.asl>
- }
+ Scope (\_SB.PCI0.LPCB)
+ {
+ /* ACPI code for EC SuperIO functions */
+ #include <ec/google/chromeec/acpi/superio.asl>
+ /* ACPI code for EC functions */
+ #include <ec/google/chromeec/acpi/ec.asl>
+ }
#endif
+ /* Camera */
+ #include <variant/acpi/camera.asl>
+
#include <southbridge/intel/common/acpi/sleepstates.asl>
/* Mainboard specific */
diff --git a/src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/cam1.asl b/src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/cam1.asl
new file mode 100644
index 0000000000..14139981a9
--- /dev/null
+++ b/src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/cam1.asl
@@ -0,0 +1,226 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+Scope (\_SB.PCI0.I2C5)
+{
+ PowerResource (FCPR, 0x00, 0x0000)
+ {
+ Name (STA, Zero)
+ Method (_ON, 0, Serialized) /* _ON_: Power On */
+ {
+ If ((STA == Zero))
+ {
+ /* Enable CLK1 */
+ MCON(1, 1) // Clock 1, 19.2MHz
+ /* Pull PWREN(GPIO R6) high */
+ STXS(GPP_D4)
+ Sleep(5) /* 5 us */
+ /* Pull RST(GPIO H12) low */
+ CTXS(GPP_C19)
+ Sleep(5) /* 5 us */
+ /* Pull RST high */
+ STXS(GPP_C19)
+ Sleep(5) /* 5 us */
+ STA = 1
+ }
+ }
+
+ Method (_OFF, 0, Serialized) /* _OFF: Power Off */
+ {
+ If ((STA == One))
+ {
+ /* Pull RST low */
+ CTXS(GPP_C19)
+ /* Pull PWREN low */
+ CTXS(GPP_D4)
+ /* Disable CLK0 */
+ MCOF(1) /* Clock 1 */
+ STA = 0
+ }
+ }
+
+ Method (_STA, 0, NotSerialized) /* _STA: Status */
+ {
+ Return (STA)
+ }
+ }
+
+ Device (CAM1)
+ {
+ Name (_HID, "OVTI5675") /* _HID: Hardware ID */
+
+ Name (_UID, Zero) /* _UID: Unique ID */
+
+ Name (_DDN, "Ov 5675 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.I2C5",
+ 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)
+ {
+ "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 (0x04)
+ {
+ Package (0x02)
+ {
+ "endpoint",
+ Zero
+ },
+
+ Package (0x02)
+ {
+ "data-lanes",
+ Package (0x02)
+ {
+ One,
+ 0x02
+ }
+ },
+
+ Package (0x02)
+ {
+ "link-frequencies",
+ Package (0x01)
+ {
+ 0x1AD27480
+ }
+ },
+
+ Package (0x02)
+ {
+ "remote-endpoint",
+ Package (0x03)
+ {
+ IPU0,
+ One,
+ Zero
+ }
+ }
+ }
+ })
+ }
+
+ Device (VCM0)
+ {
+ Name (_HID, "PRP0001") /* _HID: Hadware ID */
+
+ Name (_UID, 0x03) /* _UID: Unique ID */
+
+ Name (_DDN, "DW9714 VCM") /* _DDN: DOS Device Name */
+
+ Method (_STA, 0, NotSerialized) /* _STA: Status */
+ {
+ Return (0x0F)
+ }
+
+ Name (_CRS, ResourceTemplate () /* _CRS: Current Resource Setting */
+ {
+ I2cSerialBusV2 (0x000C, ControllerInitiated, 0x00061A80,
+ AddressingMode7Bit, "\\_SB.PCI0.I2C5",
+ 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(0x01)
+ {
+ Package (0x02)
+ {
+ "compatible",
+ "dongwoon,dw9714"
+ }
+ }
+ })
+ }
+}
diff --git a/src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/camera.asl b/src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/camera.asl
new file mode 100644
index 0000000000..48650c9360
--- /dev/null
+++ b/src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/camera.asl
@@ -0,0 +1,5 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include "ipu_mainboard.asl"
+#include "ipu_endpoints.asl"
+#include "cam1.asl"
diff --git a/src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/ipu_endpoints.asl b/src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/ipu_endpoints.asl
new file mode 100644
index 0000000000..cebf15e753
--- /dev/null
+++ b/src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/ipu_endpoints.asl
@@ -0,0 +1,44 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+Scope (_SB.PCI0.IPU0)
+{
+ 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 (0x02)
+ {
+ One,
+ 0x02,
+ }
+ },
+
+ Package (0x02)
+ {
+ "remote-endpoint",
+ Package (0x03)
+ {
+ ^I2C5.CAM1,
+ Zero,
+ Zero
+ }
+ }
+ }
+ })
+}
diff --git a/src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/ipu_mainboard.asl b/src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/ipu_mainboard.asl
new file mode 100644
index 0000000000..013b26f3c6
--- /dev/null
+++ b/src/mainboard/intel/jasperlake_rvp/variants/baseboard/include/baseboard/acpi/ipu_mainboard.asl
@@ -0,0 +1,50 @@
+/* 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 (0x01)
+ {
+ Package (0x02)
+ {
+ "port1",
+ "PRT1"
+ }
+ }
+ })
+
+ 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"
+ }
+ }
+ })
+}
diff --git a/src/mainboard/intel/jasperlake_rvp/variants/jslrvp/devicetree.cb b/src/mainboard/intel/jasperlake_rvp/variants/jslrvp/devicetree.cb
index 1e88c7ae62..14ca4a5abd 100644
--- a/src/mainboard/intel/jasperlake_rvp/variants/jslrvp/devicetree.cb
+++ b/src/mainboard/intel/jasperlake_rvp/variants/jslrvp/devicetree.cb
@@ -137,7 +137,7 @@ chip soc/intel/jasperlake
.speed_mhz = 1,
.early_init = 1,
},
- .i2c[0] = {
+ .i2c[0] = {
.speed = I2C_SPEED_FAST,
.speed_config[0] = {
.speed = I2C_SPEED_FAST,
@@ -146,13 +146,17 @@ chip soc/intel/jasperlake
.sda_hold = 36,
}
},
+ .i2c[5] = {
+ .speed = I2C_SPEED_FAST,
+ },
}"
device domain 0 on
device pci 00.0 on end # Host Bridge
device pci 02.0 on end # Integrated Graphics Device
- device pci 04.0 off end # SA Thermal device
- device pci 12.0 off end # Thermal Subsystem
+ device pci 04.0 off end # SA Thermal device
+ device pci 05.0 on end #IPU
+ device pci 12.0 off end # Thermal Subsystem
device pci 12.5 off end # UFS SCS
device pci 12.6 off end # GSPI #2
device pci 14.0 on
@@ -285,8 +289,8 @@ chip soc/intel/jasperlake
device pci 16.4 off end # Management Engine Interface 3
device pci 16.5 off end # Management Engine Interface 4
device pci 17.0 off end # SATA
- device pci 19.0 on end # I2C #4
- device pci 19.1 off end # I2C #5
+ device pci 19.0 off end # I2C #4 Cam 0
+ device pci 19.1 on end # I2C #5 Cam 1 and VCM
device pci 19.2 on end # UART #2
device pci 1a.0 on end # eMMC
device pci 1c.0 on end # PCI Express Port 1
@@ -308,7 +312,7 @@ chip soc/intel/jasperlake
device spi 0 on end
end
end # GSPI #1
- device pci 1f.0 on end # eSPI Interface
+ device pci 1f.0 on end # eSPI Interface
device pci 1f.1 on end # P2SB
device pci 1f.2 on end # Power Management Controller
device pci 1f.3 on end # Intel HDA
diff --git a/src/mainboard/intel/jasperlake_rvp/variants/jslrvp/gpio.c b/src/mainboard/intel/jasperlake_rvp/variants/jslrvp/gpio.c
index 5a127a6ebf..d67f4a44e4 100644
--- a/src/mainboard/intel/jasperlake_rvp/variants/jslrvp/gpio.c
+++ b/src/mainboard/intel/jasperlake_rvp/variants/jslrvp/gpio.c
@@ -64,13 +64,19 @@ static const struct pad_config gpio_table[] = {
/* I2C0_SCL */
PAD_CFG_NF(GPP_C17, UP_2K, DEEP, NF1),
+ /* CAM2_RST_N */
+ PAD_CFG_GPO(GPP_C19, 0, PLTRST),
+
/* WIFI_RF_KILL_N */
PAD_CFG_GPO(GPP_D0, 1, PLTRST),
/* BT_RF_KILL_N */
PAD_CFG_GPO(GPP_D1, 1, PLTRST),
- /* LAN_RST_N */
+ /* CAM2_PWREN */
+ PAD_CFG_GPO(GPP_D4, 0, PLTRST),
+
+ /*LAN_RST_N*/
PAD_CFG_GPO(GPP_D6, 1, PLTRST),
/* AVS_I2S_MCLK */
@@ -85,6 +91,15 @@ static const struct pad_config gpio_table[] = {
/* CNV_PA_BLANKING */
PAD_CFG_NF(GPP_D21, NONE, DEEP, NF1),
+ /* I2C5_SDA */
+ PAD_CFG_NF(GPP_D22, NONE, PLTRST, NF1),
+
+ /* I2C5_SCL */
+ PAD_CFG_NF(GPP_D23, NONE, PLTRST, NF1),
+
+ /* IMGCLKOUT_1 */
+ PAD_CFG_NF(GPP_E2, NONE, PLTRST, NF1),
+
/* WWAN_FCP_OFF_N */
PAD_CFG_GPO(GPP_E3, 1, PLTRST),
diff --git a/src/mainboard/intel/jasperlake_rvp/variants/jslrvp/include/variant/acpi/camera.asl b/src/mainboard/intel/jasperlake_rvp/variants/jslrvp/include/variant/acpi/camera.asl
new file mode 100644
index 0000000000..318b0dea04
--- /dev/null
+++ b/src/mainboard/intel/jasperlake_rvp/variants/jslrvp/include/variant/acpi/camera.asl
@@ -0,0 +1,3 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <baseboard/acpi/camera.asl>