From 4ef51ffbd7e0437de15011929257b6286da7f8f9 Mon Sep 17 00:00:00 2001 From: Vince Liu Date: Mon, 16 Jun 2025 22:43:58 +0800 Subject: [PATCH] mb/google/skywalker: Add panel driver in mainboard Add panel driver in mainboard for skywalker project. BUG=b:400886838,b:425272330 BRANCH=none TEST=check edp training pass and show log: EQ training pass Change-Id: I7352a6728237842a6819b7129c61a1d4c7646fcb Signed-off-by: Bincai Liu Signed-off-by: Cong Yang Signed-off-by: Vince Liu Reviewed-on: https://review.coreboot.org/c/coreboot/+/88170 Reviewed-by: Yu-Ping Wu Reviewed-by: Yidi Lin Tested-by: build bot (Jenkins) --- src/mainboard/google/skywalker/Makefile.mk | 1 + src/mainboard/google/skywalker/chromeos.c | 6 ++++ src/mainboard/google/skywalker/gpio.h | 4 +++ src/mainboard/google/skywalker/panel.c | 32 ++++++++++++++++++++++ 4 files changed, 43 insertions(+) create mode 100644 src/mainboard/google/skywalker/panel.c diff --git a/src/mainboard/google/skywalker/Makefile.mk b/src/mainboard/google/skywalker/Makefile.mk index 3e5bad3f37..ff3c1701de 100644 --- a/src/mainboard/google/skywalker/Makefile.mk +++ b/src/mainboard/google/skywalker/Makefile.mk @@ -11,4 +11,5 @@ romstage-y += regulator.c ramstage-y += boardid.c ramstage-y += mainboard.c +ramstage-y += panel.c ramstage-y += regulator.c diff --git a/src/mainboard/google/skywalker/chromeos.c b/src/mainboard/google/skywalker/chromeos.c index 700d815c68..2bf47ed797 100644 --- a/src/mainboard/google/skywalker/chromeos.c +++ b/src/mainboard/google/skywalker/chromeos.c @@ -67,6 +67,12 @@ void fill_lb_gpios(struct lb_gpios *gpios) }; lb_add_gpios(gpios, alc5645_gpios, ARRAY_SIZE(alc5645_gpios)); } + + struct lb_gpio edp_pwm_backlight_gpios[] = { + {GPIO_BL_PWM_1V8.id, ACTIVE_HIGH, -1, "PWM control"}, + {GPIO_AP_EDP_BKLTEN.id, ACTIVE_HIGH, -1, "backlight enable"}, + }; + lb_add_gpios(gpios, edp_pwm_backlight_gpios, ARRAY_SIZE(edp_pwm_backlight_gpios)); } int cr50_plat_irq_status(void) diff --git a/src/mainboard/google/skywalker/gpio.h b/src/mainboard/google/skywalker/gpio.h index 4398a6cbf3..a55a01aab1 100644 --- a/src/mainboard/google/skywalker/gpio.h +++ b/src/mainboard/google/skywalker/gpio.h @@ -35,6 +35,10 @@ #define GPIO_I2SOUT0_BCK GPIO(I2SOUT0_BCK) #define GPIO_I2SOUT0_LRCK GPIO(I2SOUT0_LRCK) #define GPIO_I2SOUT0_DOUT GPIO(I2SOUT0_DO) +#define GPIO_BL_PWM_1V8 GPIO(DISP_PWM0) +#define GPIO_AP_EDP_BKLTEN GPIO(GPIO13) +#define GPIO_EN_PP3300_EDP_X GPIO(DSI_LCM_RST) +#define GPIO_EDP_HPD_1V8 GPIO(EDP_TX_HPD) void setup_chromeos_gpios(void); diff --git a/src/mainboard/google/skywalker/panel.c b/src/mainboard/google/skywalker/panel.c new file mode 100644 index 0000000000..b0cb052881 --- /dev/null +++ b/src/mainboard/google/skywalker/panel.c @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: GPL-2.0-only OR MIT */ + +#include +#include + +#include "gpio.h" + +/* Set up backlight control pins as output pins, and set them to power off by default */ +static void configure_backlight(void) +{ + gpio_output(GPIO_AP_EDP_BKLTEN, 0); + gpio_output(GPIO_BL_PWM_1V8, 0); +} + +static void power_on_panel(void) +{ + gpio_output(GPIO_EN_PP3300_EDP_X, 1); + gpio_set_mode(GPIO_EDP_HPD_1V8, GPIO_FUNC(EDP_TX_HPD, EDP_TX_HPD)); + gpio_set_pull(GPIO_EDP_HPD_1V8, GPIO_PULL_DISABLE, GPIO_PULL_UP); +} + +static struct panel_description panel = { + .configure_backlight = configure_backlight, + .power_on = power_on_panel, + .disp_path = DISP_PATH_EDP, + .orientation = LB_FB_ORIENTATION_NORMAL, +}; + +struct panel_description *get_active_panel(void) +{ + return &panel; +}