From e78af973499d906c8cc27b2515148b4a8494d35a Mon Sep 17 00:00:00 2001 From: Lijian Zhao Date: Wed, 13 Jun 2018 12:51:47 -0700 Subject: mainboard/google/nocturne: Set camera power sequence To make image sensor working, the intended power sequence need to applied. BUG=NONE TEST=NONE Change-Id: I4833c0e303174b297c1d193495e08e55d294a717 Signed-off-by: Lijian Zhao Signed-off-by: Rajmohan Mani Signed-off-by: Tomasz Figa Reviewed-on: https://review.coreboot.org/27094 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh --- .../nocturne/include/variant/acpi/cam0.asl | 60 ++++++++++++++++++++ .../nocturne/include/variant/acpi/cam1.asl | 64 ++++++++++++++++++++++ .../poppy/variants/nocturne/include/variant/gpio.h | 8 +++ 3 files changed, 132 insertions(+) diff --git a/src/mainboard/google/poppy/variants/nocturne/include/variant/acpi/cam0.asl b/src/mainboard/google/poppy/variants/nocturne/include/variant/acpi/cam0.asl index 1d72a863d4..27f127576c 100644 --- a/src/mainboard/google/poppy/variants/nocturne/include/variant/acpi/cam0.asl +++ b/src/mainboard/google/poppy/variants/nocturne/include/variant/acpi/cam0.asl @@ -34,6 +34,61 @@ Scope (\_SB.PCI0.I2C3) ) }) + Name (STA, 0) + Method (PMON, 0, Serialized) { + If (STA == 0) { + CTXS (GPIO_FCAM_RST_L) + STXS (GPIO_FCAM_PWR_EN) + STXS (GPIO_PCH_FCAM_CLK_EN) + Sleep(3) + STXS (GPIO_FCAM_RST_L) + + /* + * A delay of T7 (minimum of 5 ms) + T8 + * (max 5 ms + delay of coarse integration + * time value + 14 H, time for 14 horizontal + * lines) is needed to have the sensor ready + * for streaming, as soon as the power on + * sequence completes + */ + Sleep(11); + } + STA++ + } + + Method (PMOF, 0, Serialized) { + If (STA == 0) { + Return + } + STA-- + If (STA == 0) { + CTXS (GPIO_PCH_FCAM_CLK_EN) + CTXS (GPIO_FCAM_RST_L) + CTXS (GPIO_FCAM_PWR_EN) + } + } + + Name (_PR0, Package (0x01) { FCPR }) + Name (_PR3, Package (0x01) { FCPR }) + + /* Power resource methods for Rear Camera */ + PowerResource (FCPR, 0, 0) { + Method (_ON, 0, Serialized) { + PMON () + } + Method (_OFF, 0, Serialized) { + PMOF () + } + Method (_STA, 0, Serialized) { + If (LGreater(STA,0)) { + Return (0x1) + } + Else { + Return (0x0) + } + } + } + /* Port0 of CAM0 is connected to port0 of CIO2 device */ Name (_DSD, Package () { ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"), @@ -93,6 +148,11 @@ Scope (\_SB.PCI0.I2C3) 0x00, ResourceConsumer, ,) }) + Name (_DEP, Package() { ^^I2C3.CAM0 }) + + Name (_PR0, Package (0x01) { ^^I2C3.CAM0.FCPR }) + Name (_PR3, Package (0x01) { ^^I2C3.CAM0.FCPR }) + Name (_DSD, Package () { ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), diff --git a/src/mainboard/google/poppy/variants/nocturne/include/variant/acpi/cam1.asl b/src/mainboard/google/poppy/variants/nocturne/include/variant/acpi/cam1.asl index bba761066d..ca2fee4e45 100644 --- a/src/mainboard/google/poppy/variants/nocturne/include/variant/acpi/cam1.asl +++ b/src/mainboard/google/poppy/variants/nocturne/include/variant/acpi/cam1.asl @@ -35,6 +35,60 @@ Scope (\_SB.PCI0.I2C5) ) }) + Name (STA, 0) + Method (PMON, 0, Serialized) { + If (STA == 0) { + CTXS(GPIO_RCAM_RST_L) + STXS(GPIO_RCAM_PWR_EN) + STXS(GPIO_PCH_RCAM_CLK_EN) + Sleep(3) + STXS(GPIO_RCAM_RST_L) + + /* + * A delay of T7 (minimum of 10 ms) + T8 + * (max 1.4 ms + delay of coarse integration + * time value) is needed to have the sensor + * ready for streaming, as soon as the power + * on sequence completes + */ + Sleep(12) + } + STA++ + } + + Method (PMOF, 0, Serialized) { + If (STA == 0) { + Return + } + STA-- + If (STA == 0) { + CTXS(GPIO_PCH_RCAM_CLK_EN) + CTXS(GPIO_RCAM_RST_L) + CTXS(GPIO_RCAM_PWR_EN) + } + } + + Name (_PR0, Package (0x01) { RCPR }) + Name (_PR3, Package (0x01) { RCPR }) + + /* Power resource methods for Rear Camera */ + PowerResource (RCPR, 0, 0) { + Method (_ON, 0, Serialized) { + PMON () + } + Method (_OFF, 0, Serialized) { + PMOF () + } + Method (_STA, 0, Serialized) { + If (LGreater(STA,0)) { + Return (0x1) + } + Else { + Return (0x0) + } + } + } + /* Port0 of CAM1 is connected to port1 of CIO2 device */ Name (_DSD, Package () { ToUUID ("dbb8e3e6-5886-4ba6-8795-1319f52a966b"), @@ -98,6 +152,11 @@ Scope (\_SB.PCI0.I2C5) ) }) + Name (_DEP, Package() { ^^I2C5.CAM1 }) + + Name (_PR0, Package (0x01) { ^^I2C5.CAM1.RCPR }) + Name (_PR3, Package (0x01) { ^^I2C5.CAM1.RCPR }) + Name (_DSD, Package () { ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), Package () { @@ -124,6 +183,11 @@ Scope (\_SB.PCI0.I2C5) 0x00, ResourceConsumer, ,) }) + Name (_DEP, Package () { ^^I2C5.CAM1 }) + + Name (_PR0, Package (0x01) { ^^I2C5.CAM1.RCPR }) + Name (_PR3, Package (0x01) { ^^I2C5.CAM1.RCPR }) + Name (_DSD, Package () { ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), diff --git a/src/mainboard/google/poppy/variants/nocturne/include/variant/gpio.h b/src/mainboard/google/poppy/variants/nocturne/include/variant/gpio.h index 08b51b27f9..028db14f47 100644 --- a/src/mainboard/google/poppy/variants/nocturne/include/variant/gpio.h +++ b/src/mainboard/google/poppy/variants/nocturne/include/variant/gpio.h @@ -37,4 +37,12 @@ /* eSPI virtual wire reporting */ #define EC_SCI_GPI GPE0_ESPI +/* Camera Sensor config */ +#define GPIO_RCAM_PWR_EN GPP_D7 +#define GPIO_PCH_RCAM_CLK_EN GPP_D14 +#define GPIO_RCAM_RST_L GPP_D16 +#define GPIO_FCAM_PWR_EN GPP_D8 +#define GPIO_PCH_FCAM_CLK_EN GPP_D13 +#define GPIO_FCAM_RST_L GPP_D15 + #endif /* BASEBOARD_GPIO_H */ -- cgit v1.2.3