zanxi chen has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/57336 )
Change subject: mb/google/trogdor: mipi panel support for mrbland ......................................................................
mb/google/trogdor: mipi panel support for mrbland
Add mipi panel support for mrbland - setup gpio and modify LCD sequence. - use the following panel for mrbland: AUO B101UAN08.3 BOE TV101WUM-N53 - use panel_id to distinguish which mipi panel to use.
BUG=b:195516474 BRANCH=none TEST=builds mrbland image and working properly
Change-Id: Ib7cd2da429b114bf6bad5af312044a0f01319b46 Signed-off-by: Zanxi Chen chenzanxi@huaqin.corp-partner.google.com --- M src/mainboard/google/trogdor/Kconfig M src/mainboard/google/trogdor/board.h M src/mainboard/google/trogdor/chromeos.c M src/mainboard/google/trogdor/mainboard.c 4 files changed, 50 insertions(+), 3 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/36/57336/1
diff --git a/src/mainboard/google/trogdor/Kconfig b/src/mainboard/google/trogdor/Kconfig index 164c05f..88e72dc 100644 --- a/src/mainboard/google/trogdor/Kconfig +++ b/src/mainboard/google/trogdor/Kconfig @@ -14,8 +14,10 @@
config TROGDOR_HAS_MIPI_PANEL bool + default y if BOARD_GOOGLE_MRBLAND + select MIPI_PANEL_AUO_B101UAN08_3 if BOARD_GOOGLE_MRBLAND + select MIPI_PANEL_BOE_TV101WUM_N53 if BOARD_GOOGLE_MRBLAND default n - select MIPI_PANEL_VIS_RM69299
config TROGDOR_HAS_FINGERPRINT bool diff --git a/src/mainboard/google/trogdor/board.h b/src/mainboard/google/trogdor/board.h index 79dafc0..663c793 100644 --- a/src/mainboard/google/trogdor/board.h +++ b/src/mainboard/google/trogdor/board.h @@ -15,13 +15,18 @@ #define GPIO_AMP_ENABLE GPIO(23)
/* Display specific GPIOS */ -#define GPIO_BACKLIGHT_ENABLE GPIO(12) +#define GPIO_BACKLIGHT_ENABLE ((CONFIG(BOARD_GOOGLE_MRBLAND)) ? \ + GPIO(85) : GPIO(12)) #define GPIO_EDP_BRIDGE_ENABLE (CONFIG(TROGDOR_REV0) ? GPIO(14) : GPIO(104)) #define GPIO_EN_PP3300_DX_EDP (CONFIG(TROGDOR_REV0) ? GPIO(106) : \ (CONFIG(BOARD_GOOGLE_TROGDOR) && board_id() == 1 ? GPIO(30) : \ (CONFIG(BOARD_GOOGLE_COACHZ) && board_id() == 0 ? GPIO(52) : \ (CONFIG(BOARD_GOOGLE_LAZOR) || CONFIG(BOARD_GOOGLE_POMPOM) ? GPIO(30) : \ GPIO(67))))) +#define GPIO_MIPI_1V8_ENABLE GPIO(86) +#define GPIO_AVDD_LCD_ENABLE GPIO(88) +#define GPIO_AVEE_LCD_ENABLE GPIO(21) +#define GPIO_VDD_RESET_1V8 GPIO(87)
/* Fingerprint-specific GPIOs. Only for fingerprint-enabled devices (e.g. CoachZ). */ #if CONFIG(TROGDOR_HAS_FINGERPRINT) diff --git a/src/mainboard/google/trogdor/chromeos.c b/src/mainboard/google/trogdor/chromeos.c index c218388..051480c 100644 --- a/src/mainboard/google/trogdor/chromeos.c +++ b/src/mainboard/google/trogdor/chromeos.c @@ -17,6 +17,13 @@ gpio_output(GPIO_EN_PP3300_DX_EDP, 0); gpio_output(GPIO_EDP_BRIDGE_ENABLE, 0);
+ if (CONFIG(TROGDOR_HAS_MIPI_PANEL)) { + gpio_output(GPIO_MIPI_1V8_ENABLE, 0); + gpio_output(GPIO_AVDD_LCD_ENABLE, 0); + gpio_output(GPIO_VDD_RESET_1V8, 0); + gpio_output(GPIO_AVEE_LCD_ENABLE, 0); + } + if (CONFIG(TROGDOR_HAS_FINGERPRINT)) { gpio_output(GPIO_FPMCU_BOOT0, 0); gpio_output(GPIO_FP_RST_L, 0); diff --git a/src/mainboard/google/trogdor/mainboard.c b/src/mainboard/google/trogdor/mainboard.c index 4b395ba..ba8b6ab 100644 --- a/src/mainboard/google/trogdor/mainboard.c +++ b/src/mainboard/google/trogdor/mainboard.c @@ -78,9 +78,41 @@ gpio_output(GPIO_EN_PP3300_DX_EDP, 1); }
+static void configure_mipi_panel(void) +{ + int panel_id = sku_id() >> 4; + gpio_output(GPIO_MIPI_1V8_ENABLE, 1); + mdelay(5); + gpio_output(GPIO_AVDD_LCD_ENABLE, 1); + mdelay(5); + gpio_output(GPIO_AVEE_LCD_ENABLE, 1); + mdelay(15); + gpio_output(GPIO_VDD_RESET_1V8, 1); + mdelay(15); + if (CONFIG(BOARD_GOOGLE_MRBLAND)&(panel_id)) { + gpio_output(GPIO_VDD_RESET_1V8, 0); + mdelay(5); + gpio_output(GPIO_VDD_RESET_1V8, 1); + } +} + static struct panel_serializable_data *get_mipi_panel(void) { - const char *cbfs_filename = "panel-VIS_RM69299"; + const char *cbfs_filename; + int panel_id = sku_id() >> 4; + + if (CONFIG(BOARD_GOOGLE_MRBLAND)) { + switch (panel_id) { + case 0: + cbfs_filename = "panel-AUO_B101UAN08_3"; + break; + case 1: + cbfs_filename = "panel-BOE_TV101WUM_N53"; + break; + default: + return NULL; + } + }
struct panel_serializable_data *panel = cbfs_map(cbfs_filename, NULL); if (!panel) { @@ -126,6 +158,7 @@
if (CONFIG(TROGDOR_HAS_MIPI_PANEL)) { panel = get_mipi_panel(); + configure_mipi_panel(); if (!panel) return; } else {