diff options
Diffstat (limited to 'src/mainboard/google')
-rw-r--r-- | src/mainboard/google/geralt/Makefile.inc | 1 | ||||
-rw-r--r-- | src/mainboard/google/geralt/display.c | 74 | ||||
-rw-r--r-- | src/mainboard/google/geralt/display.h | 8 | ||||
-rw-r--r-- | src/mainboard/google/geralt/mainboard.c | 4 | ||||
-rw-r--r-- | src/mainboard/google/geralt/panel.c | 52 | ||||
-rw-r--r-- | src/mainboard/google/geralt/panel.h | 14 | ||||
-rw-r--r-- | src/mainboard/google/geralt/panel_geralt.c | 3 |
7 files changed, 6 insertions, 150 deletions
diff --git a/src/mainboard/google/geralt/Makefile.inc b/src/mainboard/google/geralt/Makefile.inc index 2b1f313ec9..e954309e2a 100644 --- a/src/mainboard/google/geralt/Makefile.inc +++ b/src/mainboard/google/geralt/Makefile.inc @@ -20,7 +20,6 @@ romstage-y += sdram_configs.c ramstage-y += memlayout.ld ramstage-y += boardid.c ramstage-y += chromeos.c -ramstage-y += display.c ramstage-y += mainboard.c ramstage-y += panel.c ramstage-y += regulator.c diff --git a/src/mainboard/google/geralt/display.c b/src/mainboard/google/geralt/display.c deleted file mode 100644 index 68a0a22231..0000000000 --- a/src/mainboard/google/geralt/display.c +++ /dev/null @@ -1,74 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include <console/console.h> -#include <delay.h> -#include <edid.h> -#include <framebuffer_info.h> -#include <gpio.h> -#include <soc/ddp.h> -#include <soc/dptx.h> -#include <soc/dsi.h> -#include <soc/gpio_common.h> -#include <soc/mtcmos.h> - -#include "display.h" -#include "gpio.h" -#include "panel.h" - -int configure_display(void) -{ - struct edid edid; - struct fb_info *info; - const char *name; - struct panel_description *panel = get_active_panel(); - if (!panel) - return -1; - - printk(BIOS_INFO, "%s: Starting display initialization\n", __func__); - - mtcmos_display_power_on(); - mtcmos_protect_display_bus(); - - panel->configure_panel_backlight(); - panel->power_on(); - - mtk_ddp_init(); - - if (panel->disp_path == DISP_PATH_EDP) { - mdelay(200); - if (mtk_edp_init(&edid) < 0) { - printk(BIOS_ERR, "%s: Failed to initialize eDP\n", __func__); - return -1; - } - - } else { - u32 mipi_dsi_flags = (MIPI_DSI_MODE_VIDEO | - MIPI_DSI_MODE_VIDEO_SYNC_PULSE | - MIPI_DSI_MODE_LPM | - MIPI_DSI_MODE_EOT_PACKET); - - edid = panel->s->edid; - - if (mtk_dsi_init(mipi_dsi_flags, MIPI_DSI_FMT_RGB888, 4, &edid, - panel->s->init) < 0) { - printk(BIOS_ERR, "%s: Failed in DSI init\n", __func__); - return -1; - } - } - - name = edid.ascii_string; - if (name[0] == '\0') - name = "unknown name"; - printk(BIOS_INFO, "%s: '%s %s' %dx%d@%dHz\n", __func__, - edid.manufacturer_name, name, edid.mode.ha, edid.mode.va, - edid.mode.refresh); - - edid_set_framebuffer_bits_per_pixel(&edid, 32, 0); - - mtk_ddp_mode_set(&edid, panel->disp_path); - info = fb_new_framebuffer_info_from_edid(&edid, (uintptr_t)0); - if (info) - fb_set_orientation(info, LB_FB_ORIENTATION_BOTTOM_UP); - - return 0; -} diff --git a/src/mainboard/google/geralt/display.h b/src/mainboard/google/geralt/display.h deleted file mode 100644 index 29153b303c..0000000000 --- a/src/mainboard/google/geralt/display.h +++ /dev/null @@ -1,8 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#ifndef __MAINBOARD_GOOGLE_GERALT_DISPLAY_H__ -#define __MAINBOARD_GOOGLE_GERALT_DISPLAY_H__ - -int configure_display(void); - -#endif diff --git a/src/mainboard/google/geralt/mainboard.c b/src/mainboard/google/geralt/mainboard.c index 6bb8380a64..3f9ab5d0f6 100644 --- a/src/mainboard/google/geralt/mainboard.c +++ b/src/mainboard/google/geralt/mainboard.c @@ -3,13 +3,13 @@ #include <bootmode.h> #include <device/device.h> #include <soc/bl31.h> +#include <soc/display.h> #include <soc/i2c.h> #include <soc/msdc.h> #include <soc/mt6359p.h> #include <soc/mtcmos.h> #include <soc/usb.h> -#include "display.h" #include "gpio.h" #define AFE_SE_SECURE_CON (AUDIO_BASE + 0x17a8) @@ -44,7 +44,7 @@ static void mainboard_init(struct device *dev) mt6359p_init_pmif_arb(); if (display_init_required()) { - if (configure_display() < 0) + if (mtk_display_init() < 0) printk(BIOS_ERR, "%s: Failed to init display\n", __func__); } else { printk(BIOS_INFO, "%s: Skipped display initialization\n", __func__); diff --git a/src/mainboard/google/geralt/panel.c b/src/mainboard/google/geralt/panel.c index e25b5cbedd..202eda7b7d 100644 --- a/src/mainboard/google/geralt/panel.c +++ b/src/mainboard/google/geralt/panel.c @@ -12,30 +12,6 @@ #include "gpio.h" #include "panel.h" -static void get_mipi_cmd_from_cbfs(struct panel_description *desc) -{ - /* - * The CBFS file name is panel-{MANUFACTURER}-${PANEL_NAME}, where MANUFACTURER is 3 - * characters and PANEL_NAME is usually 13 characters. - */ - char cbfs_name[64]; - static union { - u8 raw[4 * 1024]; /* Most panels only need < 2K. */ - struct panel_serializable_data s; - } buffer; - - if (!desc->name) { - printk(BIOS_ERR, "Missing panel CBFS file name.\n"); - return; - } - - snprintf(cbfs_name, sizeof(cbfs_name), "panel-%s", desc->name); - if (cbfs_load(cbfs_name, buffer.raw, sizeof(buffer))) - desc->s = &buffer.s; - else - printk(BIOS_ERR, "Missing %s in CBFS.\n", cbfs_name); -} - struct panel_description __weak *get_panel_description(uint32_t panel_id) { printk(BIOS_WARNING, "%s: %s: the panel configuration is not ready\n", @@ -46,33 +22,7 @@ struct panel_description __weak *get_panel_description(uint32_t panel_id) struct panel_description *get_active_panel(void) { uint32_t active_panel_id = panel_id(); - - struct panel_description *panel = get_panel_description(active_panel_id); - if (!panel || panel->disp_path == DISP_PATH_NONE) { - printk(BIOS_ERR, "%s: Panel %u is not supported.\n", __func__, active_panel_id); - return NULL; - } - - /* For eDP, we will get edid after eDP initialization is done, so we return directly. */ - if (panel->disp_path == DISP_PATH_EDP) { - printk(BIOS_INFO, "%s: Use eDP as the display\n", __func__); - return panel; - } - - /* We need to find init cmds for MIPI panel from CBFS */ - get_mipi_cmd_from_cbfs(panel); - if (!panel->s) - return NULL; - - const struct edid *edid = &panel->s->edid; - const char *name = edid->ascii_string; - if (name[0] == '\0') { - name = "unknown name"; - printk(BIOS_INFO, "%s: Found ID %u: '%s %s' %dx%d@%dHz\n", __func__, - active_panel_id, edid->manufacturer_name, name, edid->mode.ha, - edid->mode.va, edid->mode.refresh); - } - return panel; + return get_panel_description(active_panel_id); } void configure_mipi_pwm_backlight(void) diff --git a/src/mainboard/google/geralt/panel.h b/src/mainboard/google/geralt/panel.h index 71cecdf5e6..3d0fafdaed 100644 --- a/src/mainboard/google/geralt/panel.h +++ b/src/mainboard/google/geralt/panel.h @@ -3,23 +3,11 @@ #ifndef __MAINBOARD_GOOGLE_GERALT_PANEL_H__ #define __MAINBOARD_GOOGLE_GERALT_PANEL_H__ -#include <boot/coreboot_tables.h> -#include <mipi/panel.h> -#include <soc/ddp.h> - -struct panel_description { - const char *name; - struct panel_serializable_data *s; - void (*power_on)(void); - void (*configure_panel_backlight)(void); - enum disp_path_sel disp_path; - bool pwm_ctrl_gpio; -}; +#include <soc/display.h> void configure_mipi_pwm_backlight(void); void fill_lp_backlight_gpios(struct lb_gpios *gpios); uint32_t panel_id(void); struct panel_description *get_panel_description(uint32_t panel_id); -struct panel_description *get_active_panel(void); #endif diff --git a/src/mainboard/google/geralt/panel_geralt.c b/src/mainboard/google/geralt/panel_geralt.c index 2ca95bece5..6eed3fb122 100644 --- a/src/mainboard/google/geralt/panel_geralt.c +++ b/src/mainboard/google/geralt/panel_geralt.c @@ -52,7 +52,8 @@ static struct panel_description panels[] = { [1] = { .name = "BOE_TV110C9M_LL0", .power_on = power_on_mipi_boe_tv110c9m_ll0, - .configure_panel_backlight = configure_mipi_pwm_backlight, + .configure_backlight = configure_mipi_pwm_backlight, + .orientation = LB_FB_ORIENTATION_BOTTOM_UP, .disp_path = DISP_PATH_MIPI, .pwm_ctrl_gpio = true, }, |