blob: bbb1060137d948077161b851e41289b71c57fbfb [file] [log] [blame]
Bo-Chen Chen49465162022-11-30 14:47:41 +08001/* SPDX-License-Identifier: GPL-2.0-only */
2
3#include <boardid.h>
Bo-Chen Chenf57155b2022-12-07 19:09:57 +08004#include <boot/coreboot_tables.h>
Bo-Chen Chen49465162022-11-30 14:47:41 +08005#include <gpio.h>
6#include <soc/gpio_common.h>
7#include <string.h>
8
9#include "gpio.h"
10#include "panel.h"
11
12static void configure_mipi_pwm_backlight(void)
13{
14 gpio_output(GPIO_AP_DISP_BKLTEN, 0);
Liju-Clr Chen26a8dea2022-12-15 13:40:41 +080015 gpio_output(GPIO_MIPI_BL_PWM_1V8, 0);
Bo-Chen Chen49465162022-11-30 14:47:41 +080016}
17
Bo-Chen Chenc07ccd92022-11-30 18:34:54 +080018static void configure_edp_aux_backlight(void)
19{
20 /* TODO: Add edp aux backlight for MUTTO_B152731E1 when we get MUTTO_B152731E1 */
21}
22
Bo-Chen Chen817c6a72023-01-10 15:59:05 +080023static void power_on_mipi_boe_tv110c9m_ll0(void)
Bo-Chen Chen49465162022-11-30 14:47:41 +080024{
Bo-Chen Chen817c6a72023-01-10 15:59:05 +080025 /* TODO: Add the poweron for BOE_TV110C9M_LL0 when we get BOE_TV110C9M_LL0 */
Bo-Chen Chen49465162022-11-30 14:47:41 +080026}
27
Bo-Chen Chenc07ccd92022-11-30 18:34:54 +080028static void power_on_edp_mutto_b152731e1(void)
29{
30 /* TODO: Add the poweron for MUTTO_B152731E1 when we get MUTTO_B152731E1 */
31}
32
Bo-Chen Chen49465162022-11-30 14:47:41 +080033static struct panel_description panels[] = {
34 [1] = {
Bo-Chen Chen817c6a72023-01-10 15:59:05 +080035 .name = "BOE_TV110C9M_LL0",
36 .power_on = power_on_mipi_boe_tv110c9m_ll0,
Bo-Chen Chen49465162022-11-30 14:47:41 +080037 .configure_panel_backlight = configure_mipi_pwm_backlight,
38 .disp_path = DISP_PATH_MIPI,
Bo-Chen Chenf57155b2022-12-07 19:09:57 +080039 .pwm_ctrl_gpio = true,
Bo-Chen Chen49465162022-11-30 14:47:41 +080040 },
Bo-Chen Chenc07ccd92022-11-30 18:34:54 +080041 [11] = {
42 .name = "MUTTO_B152731E1",
43 .power_on = power_on_edp_mutto_b152731e1,
44 .configure_panel_backlight = configure_edp_aux_backlight,
45 .disp_path = DISP_PATH_EDP,
Bo-Chen Chenf57155b2022-12-07 19:09:57 +080046 .pwm_ctrl_gpio = false,
Bo-Chen Chenc07ccd92022-11-30 18:34:54 +080047 },
Bo-Chen Chen49465162022-11-30 14:47:41 +080048};
49
50struct panel_description *get_panel_description(uint32_t panel_id)
51{
52 if (panel_id >= ARRAY_SIZE(panels))
53 return NULL;
54
55 return &panels[panel_id];
56}
Bo-Chen Chenf57155b2022-12-07 19:09:57 +080057
58void fill_lp_backlight_gpios(struct lb_gpios *gpios)
59{
60 struct panel_description *panel = get_active_panel();
61 if (!panel || panel->disp_path == DISP_PATH_NONE)
62 return;
63
64 struct lb_gpio mipi_pwm_gpios[] = {
Liju-Clr Chen26a8dea2022-12-15 13:40:41 +080065 {GPIO_MIPI_BL_PWM_1V8.id, ACTIVE_HIGH, -1, "PWM control"},
Bo-Chen Chenf57155b2022-12-07 19:09:57 +080066 };
67
68 struct lb_gpio edp_pwm_gpios[] = {
69 {GPIO_EDP_BL_PWM_1V8.id, ACTIVE_HIGH, -1, "PWM control"},
70 };
71
72 if (panel->pwm_ctrl_gpio) {
73 /* PWM control for typical eDP and MIPI panels */
74 if (panel->disp_path == DISP_PATH_MIPI)
75 lb_add_gpios(gpios, mipi_pwm_gpios, ARRAY_SIZE(mipi_pwm_gpios));
76 else
77 lb_add_gpios(gpios, edp_pwm_gpios, ARRAY_SIZE(edp_pwm_gpios));
78 }
79
80 struct lb_gpio backlight_gpios[] = {
81 {GPIO_AP_DISP_BKLTEN.id, ACTIVE_HIGH, -1, "backlight enable"},
82 };
83
84 lb_add_gpios(gpios, backlight_gpios, ARRAY_SIZE(backlight_gpios));
85}