Ruihai Zhou has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/74051 )
Change subject: mb/google/corsola: Refactor the panel description structure ......................................................................
mb/google/corsola: Refactor the panel description structure
The tablet Starmie in corsola will use MIPI panels, which needs hard-coded EDID and init commands. Refactor the panel description struct to add mipi panel serializable data.
BUG=b:275470328 BRANCH=corsola TEST=emerge-corsola coreboot chromeos-bootimage and display normally
Signed-off-by: Ruihai Zhou zhouruihai@huaqin.corp-partner.google.com Change-Id: I6f079e54f0317ff2f685f0e3834ebd1ceb8e9fcb --- M src/mainboard/google/corsola/display.c M src/mainboard/google/corsola/display.h 2 files changed, 33 insertions(+), 12 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/51/74051/1
diff --git a/src/mainboard/google/corsola/display.c b/src/mainboard/google/corsola/display.c index 20923f7..88d7b2f 100644 --- a/src/mainboard/google/corsola/display.c +++ b/src/mainboard/google/corsola/display.c @@ -113,13 +113,13 @@ gpio_output(GPIO_EN_PP3300_DISP_X, 1); }
-static const struct edp_bridge anx7625_bridge = { +static const struct panel_description anx7625_bridge = { .power_on = bridge_anx7625_power_on, .get_edid = bridge_anx7625_get_edid, .post_power_on = bridge_anx7625_post_power_on, };
-static const struct edp_bridge ps8640_bridge = { +static const struct panel_description ps8640_bridge = { .power_on = bridge_ps8640_power_on, .get_edid = bridge_ps8640_get_edid, .post_power_on = bridge_ps8640_post_power_on, @@ -133,16 +133,16 @@ { struct edid edid; const u8 i2c_bus = I2C0; - const struct edp_bridge *bridge; + const struct panel_description *panel; uint32_t board_version = board_id();
if (CONFIG(BOARD_GOOGLE_KINGLER_COMMON)) if (CONFIG(BOARD_GOOGLE_STEELIX) && board_version < 2) - bridge = &ps8640_bridge; + panel = &ps8640_bridge; else - bridge = &anx7625_bridge; + panel = &anx7625_bridge; else /* BOARD_GOOGLE_KRABBY_COMMON */ - bridge = &ps8640_bridge; + panel = &ps8640_bridge;
printk(BIOS_INFO, "%s: Starting display init\n", __func__);
@@ -151,11 +151,11 @@ /* Set up backlight control pins as output pin and power-off by default */ backlight_control();
- assert(bridge->power_on); - bridge->power_on(); + assert(panel->power_on); + panel->power_on();
- assert(bridge->get_edid); - if (bridge->get_edid(i2c_bus, &edid) < 0) { + assert(panel->get_edid); + if (panel->get_edid(i2c_bus, &edid) < 0) { printk(BIOS_ERR, "%s: Failed to get edid\n", __func__); return -1; } @@ -182,7 +182,7 @@ return -1; }
- if (bridge->post_power_on(i2c_bus, &edid) < 0) { + if (panel->post_power_on(i2c_bus, &edid) < 0) { printk(BIOS_ERR, "%s: Failed to post power on bridge\n", __func__); return -1; } diff --git a/src/mainboard/google/corsola/display.h b/src/mainboard/google/corsola/display.h index 4e883f2..eb3f6f5 100644 --- a/src/mainboard/google/corsola/display.h +++ b/src/mainboard/google/corsola/display.h @@ -5,10 +5,13 @@
#include <edid.h>
-struct edp_bridge { +struct panel_description { void (*power_on)(void); int (*get_edid)(u8 i2c_bus, struct edid *edid); int (*post_power_on)(u8 i2c_bus, struct edid *edid); + const char *name; + enum lb_fb_orientation orientation; + struct panel_serializable_data *s; };
int configure_display(void);