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>
This commit is contained in:
Pandya, Varshit B 2020-03-19 16:10:54 +05:30 committed by Subrata Banik
parent 641221c0a1
commit 39ea0eab41
9 changed files with 365 additions and 14 deletions

View File

@ -19,6 +19,7 @@ smm-$(CONFIG_HAVE_SMI_HANDLER) += smihandler.c
subdirs-y += ../common subdirs-y += ../common
subdirs-y += variants/baseboard subdirs-y += variants/baseboard
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/include
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/variants/baseboard/include CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/variants/baseboard/include
subdirs-y += variants/$(VARIANT_DIR) subdirs-y += variants/$(VARIANT_DIR)

View File

@ -36,15 +36,18 @@ DefinitionBlock(
#if CONFIG(EC_GOOGLE_CHROMEEC) #if CONFIG(EC_GOOGLE_CHROMEEC)
/* Chrome OS Embedded Controller */ /* Chrome OS Embedded Controller */
Scope (\_SB.PCI0.LPCB) Scope (\_SB.PCI0.LPCB)
{ {
/* ACPI code for EC SuperIO functions */ /* ACPI code for EC SuperIO functions */
#include <ec/google/chromeec/acpi/superio.asl> #include <ec/google/chromeec/acpi/superio.asl>
/* ACPI code for EC functions */ /* ACPI code for EC functions */
#include <ec/google/chromeec/acpi/ec.asl> #include <ec/google/chromeec/acpi/ec.asl>
} }
#endif #endif
/* Camera */
#include <variant/acpi/camera.asl>
#include <southbridge/intel/common/acpi/sleepstates.asl> #include <southbridge/intel/common/acpi/sleepstates.asl>
/* Mainboard specific */ /* Mainboard specific */

View File

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

View File

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

View File

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

View File

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

View File

@ -137,7 +137,7 @@ chip soc/intel/jasperlake
.speed_mhz = 1, .speed_mhz = 1,
.early_init = 1, .early_init = 1,
}, },
.i2c[0] = { .i2c[0] = {
.speed = I2C_SPEED_FAST, .speed = I2C_SPEED_FAST,
.speed_config[0] = { .speed_config[0] = {
.speed = I2C_SPEED_FAST, .speed = I2C_SPEED_FAST,
@ -146,13 +146,17 @@ chip soc/intel/jasperlake
.sda_hold = 36, .sda_hold = 36,
} }
}, },
.i2c[5] = {
.speed = I2C_SPEED_FAST,
},
}" }"
device domain 0 on device domain 0 on
device pci 00.0 on end # Host Bridge device pci 00.0 on end # Host Bridge
device pci 02.0 on end # Integrated Graphics Device device pci 02.0 on end # Integrated Graphics Device
device pci 04.0 off end # SA Thermal device device pci 04.0 off end # SA Thermal device
device pci 12.0 off end # Thermal Subsystem 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.5 off end # UFS SCS
device pci 12.6 off end # GSPI #2 device pci 12.6 off end # GSPI #2
device pci 14.0 on 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.4 off end # Management Engine Interface 3
device pci 16.5 off end # Management Engine Interface 4 device pci 16.5 off end # Management Engine Interface 4
device pci 17.0 off end # SATA device pci 17.0 off end # SATA
device pci 19.0 on end # I2C #4 device pci 19.0 off end # I2C #4 Cam 0
device pci 19.1 off end # I2C #5 device pci 19.1 on end # I2C #5 Cam 1 and VCM
device pci 19.2 on end # UART #2 device pci 19.2 on end # UART #2
device pci 1a.0 on end # eMMC device pci 1a.0 on end # eMMC
device pci 1c.0 on end # PCI Express Port 1 device pci 1c.0 on end # PCI Express Port 1
@ -308,7 +312,7 @@ chip soc/intel/jasperlake
device spi 0 on end device spi 0 on end
end end
end # GSPI #1 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.1 on end # P2SB
device pci 1f.2 on end # Power Management Controller device pci 1f.2 on end # Power Management Controller
device pci 1f.3 on end # Intel HDA device pci 1f.3 on end # Intel HDA

View File

@ -64,13 +64,19 @@ static const struct pad_config gpio_table[] = {
/* I2C0_SCL */ /* I2C0_SCL */
PAD_CFG_NF(GPP_C17, UP_2K, DEEP, NF1), PAD_CFG_NF(GPP_C17, UP_2K, DEEP, NF1),
/* CAM2_RST_N */
PAD_CFG_GPO(GPP_C19, 0, PLTRST),
/* WIFI_RF_KILL_N */ /* WIFI_RF_KILL_N */
PAD_CFG_GPO(GPP_D0, 1, PLTRST), PAD_CFG_GPO(GPP_D0, 1, PLTRST),
/* BT_RF_KILL_N */ /* BT_RF_KILL_N */
PAD_CFG_GPO(GPP_D1, 1, PLTRST), 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), PAD_CFG_GPO(GPP_D6, 1, PLTRST),
/* AVS_I2S_MCLK */ /* AVS_I2S_MCLK */
@ -85,6 +91,15 @@ static const struct pad_config gpio_table[] = {
/* CNV_PA_BLANKING */ /* CNV_PA_BLANKING */
PAD_CFG_NF(GPP_D21, NONE, DEEP, NF1), 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 */ /* WWAN_FCP_OFF_N */
PAD_CFG_GPO(GPP_E3, 1, PLTRST), PAD_CFG_GPO(GPP_E3, 1, PLTRST),

View File

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