Bo-Chen Chen | 4946516 | 2022-11-30 14:47:41 +0800 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
| 2 | |
Rex-BC Chen | d7b7460 | 2023-01-17 11:04:58 +0800 | [diff] [blame] | 3 | #include <console/console.h> |
Rex-BC Chen | d7b7460 | 2023-01-17 11:04:58 +0800 | [diff] [blame] | 4 | #include <soc/i2c.h> |
Bo-Chen Chen | 4946516 | 2022-11-30 14:47:41 +0800 | [diff] [blame] | 5 | |
| 6 | #include "gpio.h" |
| 7 | #include "panel.h" |
| 8 | |
Ruihai Zhou | 4a60418 | 2023-05-29 20:27:06 +0800 | [diff] [blame] | 9 | #define PMIC_TPS65132_I2C I2C3 |
Rex-BC Chen | d7b7460 | 2023-01-17 11:04:58 +0800 | [diff] [blame] | 10 | |
Bo-Chen Chen | 817c6a7 | 2023-01-10 15:59:05 +0800 | [diff] [blame] | 11 | static void power_on_mipi_boe_tv110c9m_ll0(void) |
Bo-Chen Chen | 4946516 | 2022-11-30 14:47:41 +0800 | [diff] [blame] | 12 | { |
Ruihai Zhou | 4a60418 | 2023-05-29 20:27:06 +0800 | [diff] [blame] | 13 | const struct tps65132s_reg_setting reg_settings[] = { |
| 14 | { PMIC_TPS65132_VPOS, 0x11, 0x1f }, |
| 15 | { PMIC_TPS65132_VNEG, 0x11, 0x1f }, |
| 16 | { PMIC_TPS65132_DLYX, 0x95, 0xff }, |
| 17 | { PMIC_TPS65132_ASSDD, 0x5b, 0xff }, |
| 18 | }; |
| 19 | const struct tps65132s_cfg cfg = { |
| 20 | .i2c_bus = PMIC_TPS65132_I2C, |
| 21 | .en = GPIO_EN_PPVAR_MIPI_DISP, |
| 22 | .sync = GPIO_EN_PPVAR_MIPI_DISP_150MA, |
| 23 | .settings = reg_settings, |
| 24 | .setting_counts = ARRAY_SIZE(reg_settings), |
| 25 | }; |
Ruihai Zhou | d4b6b81 | 2023-11-08 09:11:34 +0800 | [diff] [blame] | 26 | power_on_mipi_panel(&cfg); |
Bo-Chen Chen | 4946516 | 2022-11-30 14:47:41 +0800 | [diff] [blame] | 27 | } |
| 28 | |
| 29 | static struct panel_description panels[] = { |
| 30 | [1] = { |
Bo-Chen Chen | 817c6a7 | 2023-01-10 15:59:05 +0800 | [diff] [blame] | 31 | .name = "BOE_TV110C9M_LL0", |
| 32 | .power_on = power_on_mipi_boe_tv110c9m_ll0, |
Yidi Lin | ba604b5 | 2024-01-03 16:07:24 +0800 | [diff] [blame] | 33 | .configure_backlight = configure_mipi_pwm_backlight, |
| 34 | .orientation = LB_FB_ORIENTATION_BOTTOM_UP, |
Bo-Chen Chen | 4946516 | 2022-11-30 14:47:41 +0800 | [diff] [blame] | 35 | .disp_path = DISP_PATH_MIPI, |
Bo-Chen Chen | f57155b | 2022-12-07 19:09:57 +0800 | [diff] [blame] | 36 | .pwm_ctrl_gpio = true, |
Bo-Chen Chen | 4946516 | 2022-11-30 14:47:41 +0800 | [diff] [blame] | 37 | }, |
Bo-Chen Chen | 4946516 | 2022-11-30 14:47:41 +0800 | [diff] [blame] | 38 | }; |
| 39 | |
| 40 | struct panel_description *get_panel_description(uint32_t panel_id) |
| 41 | { |
Yidi Lin | 0b192d3 | 2023-03-20 17:40:31 +0800 | [diff] [blame] | 42 | /* Only PANEL_ID_LOW_CHANNEL value is valid for the reference board. */ |
| 43 | uint32_t id = panel_id & 0xF; |
| 44 | |
| 45 | if (id >= ARRAY_SIZE(panels)) |
Bo-Chen Chen | 4946516 | 2022-11-30 14:47:41 +0800 | [diff] [blame] | 46 | return NULL; |
| 47 | |
Yidi Lin | 0b192d3 | 2023-03-20 17:40:31 +0800 | [diff] [blame] | 48 | return &panels[id]; |
Bo-Chen Chen | 4946516 | 2022-11-30 14:47:41 +0800 | [diff] [blame] | 49 | } |