diff options
author | Julius Werner <jwerner@chromium.org> | 2021-09-01 16:27:58 -0700 |
---|---|---|
committer | Julius Werner <jwerner@chromium.org> | 2021-09-02 21:43:11 +0000 |
commit | 1f84b2c02597ef7a373478cc97caf07c69f1ae3a (patch) | |
tree | 18df8236084383006a3a10b42a8631609e4d582b | |
parent | 14bb6f5dab90500c7d37b06f0588123bd4c58ffd (diff) | |
download | coreboot-1f84b2c02597ef7a373478cc97caf07c69f1ae3a.tar.gz coreboot-1f84b2c02597ef7a373478cc97caf07c69f1ae3a.tar.bz2 coreboot-1f84b2c02597ef7a373478cc97caf07c69f1ae3a.zip |
drivers/mipi: Make orientation a property of the mainboard, not panel
It doesn't make sense to store the orientation field directly in the
panel information structure, which is supposed to be reuseable between
different boards. The thing that determines orientation is how that
panel is built into the board in question, which only the board itself
can know. The same portrait panel could be rotated left to be used as
landscape in one board and rotated right to be used as landscape in
another. This patch moves the orientation field out of the panel
structure back into the mainboards to reflect this.
Signed-off-by: Julius Werner <jwerner@chromium.org>
Change-Id: If2b716aa4dae036515730c12961fdd8a9ac34753
Reviewed-on: https://review.coreboot.org/c/coreboot/+/57324
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
20 files changed, 23 insertions, 34 deletions
diff --git a/src/drivers/mipi/panel-AUO_B101UAN08_3.c b/src/drivers/mipi/panel-AUO_B101UAN08_3.c index 8eeac85dd6dd..5144ce5ecb1c 100644 --- a/src/drivers/mipi/panel-AUO_B101UAN08_3.c +++ b/src/drivers/mipi/panel-AUO_B101UAN08_3.c @@ -18,7 +18,6 @@ struct panel_serializable_data AUO_B101UAN08_3 = { .x_mm = 135, .y_mm = 216, }, }, - .orientation = LB_FB_ORIENTATION_LEFT_UP, .init = { PANEL_DELAY(24), PANEL_DCS(0xB0, 0x01), diff --git a/src/drivers/mipi/panel-AUO_KD101N80_45NA.c b/src/drivers/mipi/panel-AUO_KD101N80_45NA.c index 436940c9e4a8..60550974c7cb 100644 --- a/src/drivers/mipi/panel-AUO_KD101N80_45NA.c +++ b/src/drivers/mipi/panel-AUO_KD101N80_45NA.c @@ -18,7 +18,6 @@ struct panel_serializable_data AUO_KD101N80_45NA = { .x_mm = 135, .y_mm = 216, }, }, - .orientation = LB_FB_ORIENTATION_LEFT_UP, .init = { PANEL_DELAY(10), PANEL_DCS(0x11), diff --git a/src/drivers/mipi/panel-BOE_TV101WUM_N53.c b/src/drivers/mipi/panel-BOE_TV101WUM_N53.c index bc454747b448..d5df6815d0f5 100644 --- a/src/drivers/mipi/panel-BOE_TV101WUM_N53.c +++ b/src/drivers/mipi/panel-BOE_TV101WUM_N53.c @@ -18,7 +18,6 @@ struct panel_serializable_data BOE_TV101WUM_N53 = { .x_mm = 135, .y_mm = 216, }, }, - .orientation = LB_FB_ORIENTATION_LEFT_UP, .init = { PANEL_DELAY(24), PANEL_DCS(0xB0, 0x05), diff --git a/src/drivers/mipi/panel-BOE_TV101WUM_NL6.c b/src/drivers/mipi/panel-BOE_TV101WUM_NL6.c index 2c990f87296e..d7678d8057a1 100644 --- a/src/drivers/mipi/panel-BOE_TV101WUM_NL6.c +++ b/src/drivers/mipi/panel-BOE_TV101WUM_NL6.c @@ -18,7 +18,6 @@ struct panel_serializable_data BOE_TV101WUM_NL6 = { .x_mm = 135, .y_mm = 216, }, }, - .orientation = LB_FB_ORIENTATION_LEFT_UP, .init = { PANEL_DELAY(24), PANEL_DCS(0xB0, 0x05), diff --git a/src/drivers/mipi/panel-BOE_TV105WUM_NW0.c b/src/drivers/mipi/panel-BOE_TV105WUM_NW0.c index 69311938b56f..97b8483bcb31 100644 --- a/src/drivers/mipi/panel-BOE_TV105WUM_NW0.c +++ b/src/drivers/mipi/panel-BOE_TV105WUM_NW0.c @@ -18,7 +18,6 @@ struct panel_serializable_data BOE_TV105WUM_NW0 = { .x_mm = 147, .y_mm = 236, }, }, - .orientation = LB_FB_ORIENTATION_LEFT_UP, .init = { PANEL_DCS(0x10), PANEL_DELAY(34), diff --git a/src/drivers/mipi/panel-CMN_P097PFG_SSD2858.c b/src/drivers/mipi/panel-CMN_P097PFG_SSD2858.c index 73e85962dd9b..637533e648e0 100644 --- a/src/drivers/mipi/panel-CMN_P097PFG_SSD2858.c +++ b/src/drivers/mipi/panel-CMN_P097PFG_SSD2858.c @@ -18,7 +18,6 @@ struct panel_serializable_data P097PFG_SSD2858 = { .x_mm = 147, .y_mm = 196, }, }, - .orientation = LB_FB_ORIENTATION_NORMAL, .init = { PANEL_GENERIC(0xff, 0x00), /* LOCKCNT=0x1f4, MRX=0, POSTDIV=1 (/2} }, MULT=0x49 diff --git a/src/drivers/mipi/panel-STA_2081101QFH032011_53G.c b/src/drivers/mipi/panel-STA_2081101QFH032011_53G.c index be8ba7360f71..9c4dbe38f407 100644 --- a/src/drivers/mipi/panel-STA_2081101QFH032011_53G.c +++ b/src/drivers/mipi/panel-STA_2081101QFH032011_53G.c @@ -18,7 +18,6 @@ struct panel_serializable_data STA_QFH032011_53G = { .x_mm = 135, .y_mm = 217, }, }, - .orientation = LB_FB_ORIENTATION_LEFT_UP, .init = { PANEL_DCS(0xB0, 0x01), PANEL_DCS(0xC3, 0x4F), diff --git a/src/drivers/mipi/panel-VIS_RM69299.c b/src/drivers/mipi/panel-VIS_RM69299.c index aff2a99c38a2..697b0e744181 100644 --- a/src/drivers/mipi/panel-VIS_RM69299.c +++ b/src/drivers/mipi/panel-VIS_RM69299.c @@ -18,7 +18,6 @@ struct panel_serializable_data VIS_RM69299 = { .x_mm = 74, .y_mm = 131, }, }, - .orientation = LB_FB_ORIENTATION_NORMAL, .init = { PANEL_DCS(0xFE, 0x00, 0x15, 0x80), PANEL_DCS(0xc2, 0x08, 0x15, 0x80), diff --git a/src/include/mipi/panel.h b/src/include/mipi/panel.h index e0a14638238f..edb6df5fdf34 100644 --- a/src/include/mipi/panel.h +++ b/src/include/mipi/panel.h @@ -27,7 +27,6 @@ struct panel_init_command { */ struct panel_serializable_data { struct edid edid; /* edid info of this panel */ - enum lb_fb_orientation orientation; /* Panel orientation */ u8 init[]; /* A packed array of panel_init_command */ }; diff --git a/src/mainboard/google/kukui/mainboard.c b/src/mainboard/google/kukui/mainboard.c index 4affa1631c68..9357b6746889 100644 --- a/src/mainboard/google/kukui/mainboard.c +++ b/src/mainboard/google/kukui/mainboard.c @@ -176,7 +176,7 @@ static bool configure_display(void) mtk_ddp_mode_set(edid); struct fb_info *info = fb_new_framebuffer_info_from_edid(edid, 0); if (info) - fb_set_orientation(info, panel->s->orientation); + fb_set_orientation(info, panel->orientation); return true; } diff --git a/src/mainboard/google/kukui/panel.h b/src/mainboard/google/kukui/panel.h index 17c19837bb42..c5bc43e5fb87 100644 --- a/src/mainboard/google/kukui/panel.h +++ b/src/mainboard/google/kukui/panel.h @@ -11,6 +11,7 @@ struct panel_description { struct panel_serializable_data *s; void (*power_on)(void); /* Callback to turn on panel */ void (*post_power_on)(void); /* Callback to run after panel is turned on */ + enum lb_fb_orientation orientation; }; /* Returns the panel description from given ID. */ diff --git a/src/mainboard/google/kukui/panel_anx7625.c b/src/mainboard/google/kukui/panel_anx7625.c index fb3c9b7eb8e2..90a041b42a38 100644 --- a/src/mainboard/google/kukui/panel_anx7625.c +++ b/src/mainboard/google/kukui/panel_anx7625.c @@ -13,7 +13,6 @@ #define ANX7625_I2C_BUS 4 static struct panel_serializable_data anx7625_data = { - .orientation = LB_FB_ORIENTATION_NORMAL, .init = { PANEL_END }, }; @@ -33,6 +32,7 @@ static void start_anx7625(void) static struct panel_description anx7625_panel = { .s = &anx7625_data, + .orientation = LB_FB_ORIENTATION_NORMAL, .power_on = dummy_power_on, .post_power_on = start_anx7625, }; diff --git a/src/mainboard/google/kukui/panel_flapjack.c b/src/mainboard/google/kukui/panel_flapjack.c index 16a949d2f8d0..3ad9d6a4a18e 100644 --- a/src/mainboard/google/kukui/panel_flapjack.c +++ b/src/mainboard/google/kukui/panel_flapjack.c @@ -3,10 +3,10 @@ #include "panel.h" static struct panel_description flapjack_panels[] = { - [0] = { .name = "BOE_TV101WUM_NG0", }, - [1] = { .name = "BOE_TV080WUM_NG0", }, - [2] = { .name = "INX_OTA7290D10P", }, - [3] = { .name = "AUO_NT51021D8P", }, + [0] = { .name = "BOE_TV101WUM_NG0", .orientation = LB_FB_ORIENTATION_NORMAL}, + [1] = { .name = "BOE_TV080WUM_NG0", .orientation = LB_FB_ORIENTATION_NORMAL}, + [2] = { .name = "INX_OTA7290D10P", .orientation = LB_FB_ORIENTATION_NORMAL}, + [3] = { .name = "AUO_NT51021D8P", .orientation = LB_FB_ORIENTATION_NORMAL}, }; struct panel_description *get_panel_description(int panel_id) diff --git a/src/mainboard/google/kukui/panel_kakadu.c b/src/mainboard/google/kukui/panel_kakadu.c index f01c28bdcf1e..df9a92ebda28 100644 --- a/src/mainboard/google/kukui/panel_kakadu.c +++ b/src/mainboard/google/kukui/panel_kakadu.c @@ -3,7 +3,7 @@ #include "panel.h" static struct panel_description kakadu_panels[] = { - [1] = { .name = "BOE_TV105WUM_NW0", }, + [1] = { .name = "BOE_TV105WUM_NW0", .orientation = LB_FB_ORIENTATION_LEFT_UP}, }; struct panel_description *get_panel_description(int panel_id) diff --git a/src/mainboard/google/kukui/panel_katsu.c b/src/mainboard/google/kukui/panel_katsu.c index f2a20701460a..eeb957341e8c 100644 --- a/src/mainboard/google/kukui/panel_katsu.c +++ b/src/mainboard/google/kukui/panel_katsu.c @@ -3,8 +3,8 @@ #include "panel.h" static struct panel_description katsu_panels[] = { - [1] = { .name = "BOE_TV105WUM_NW0", }, - [2] = { .name = "STA_2081101QFH032011_53G", }, + [1] = { .name = "BOE_TV105WUM_NW0", .orientation = LB_FB_ORIENTATION_LEFT_UP}, + [2] = { .name = "STA_2081101QFH032011_53G", .orientation = LB_FB_ORIENTATION_LEFT_UP}, }; struct panel_description *get_panel_description(int panel_id) diff --git a/src/mainboard/google/kukui/panel_kodama.c b/src/mainboard/google/kukui/panel_kodama.c index efabfa2ba55d..35d3d91495be 100644 --- a/src/mainboard/google/kukui/panel_kodama.c +++ b/src/mainboard/google/kukui/panel_kodama.c @@ -3,8 +3,8 @@ #include "panel.h" static struct panel_description kodama_panels[] = { - [1] = { .name = "AUO_B101UAN08_3", }, - [2] = { .name = "BOE_TV101WUM_N53", }, + [1] = { .name = "AUO_B101UAN08_3", .orientation = LB_FB_ORIENTATION_LEFT_UP}, + [2] = { .name = "BOE_TV101WUM_N53", .orientation = LB_FB_ORIENTATION_LEFT_UP}, }; struct panel_description *get_panel_description(int panel_id) diff --git a/src/mainboard/google/kukui/panel_krane.c b/src/mainboard/google/kukui/panel_krane.c index 6228bcbec03e..30887182d7e4 100644 --- a/src/mainboard/google/kukui/panel_krane.c +++ b/src/mainboard/google/kukui/panel_krane.c @@ -3,9 +3,10 @@ #include "panel.h" static struct panel_description krane_panels[] = { - [0] = { .name = "AUO_KD101N80_45NA", }, - [1] = { .name = "BOE_TV101WUM_NL6", }, /* Only Rev3, can be reused. */ - [11] = { .name = "BOE_TV101WUM_NL6", }, + [0] = { .name = "AUO_KD101N80_45NA", .orientation = LB_FB_ORIENTATION_LEFT_UP}, + /* [1] is only Rev3, can be reused. */ + [1] = { .name = "BOE_TV101WUM_NL6", .orientation = LB_FB_ORIENTATION_LEFT_UP}, + [11] = { .name = "BOE_TV101WUM_NL6", .orientation = LB_FB_ORIENTATION_LEFT_UP}, }; struct panel_description *get_panel_description(int panel_id) diff --git a/src/mainboard/google/kukui/panel_kukui.c b/src/mainboard/google/kukui/panel_kukui.c index ae002e6f34ab..283b641ee667 100644 --- a/src/mainboard/google/kukui/panel_kukui.c +++ b/src/mainboard/google/kukui/panel_kukui.c @@ -25,6 +25,7 @@ static void power_on_ssd2858(void) static struct panel_description kukui_panel = { .name = "CMN_P097PFG_SSD2858", + .orientation = LB_FB_ORIENTATION_NORMAL, .power_on = power_on_ssd2858, }; diff --git a/src/mainboard/google/kukui/panel_ps8640.c b/src/mainboard/google/kukui/panel_ps8640.c index f169254428be..c4e90ea81c88 100644 --- a/src/mainboard/google/kukui/panel_ps8640.c +++ b/src/mainboard/google/kukui/panel_ps8640.c @@ -34,12 +34,12 @@ static void dummy_power_on(void) } static struct panel_serializable_data ps8640_data = { - .orientation = LB_FB_ORIENTATION_NORMAL, .init = { PANEL_END }, }; static struct panel_description ps8640_panel = { .s = &ps8640_data, + .orientation = LB_FB_ORIENTATION_NORMAL, .power_on = dummy_power_on, }; diff --git a/src/mainboard/google/trogdor/mainboard.c b/src/mainboard/google/trogdor/mainboard.c index 4b395ba07ce2..066705eb6b21 100644 --- a/src/mainboard/google/trogdor/mainboard.c +++ b/src/mainboard/google/trogdor/mainboard.c @@ -117,7 +117,8 @@ static enum cb_err display_init(struct panel_serializable_data *panel) static void display_startup(void) { - struct panel_serializable_data *panel = NULL; + struct panel_serializable_data edp_panel = {0}; + struct panel_serializable_data *panel = &edp_panel; if (!display_init_required()) { printk(BIOS_INFO, "Skipping display init.\n"); @@ -130,24 +131,18 @@ static void display_startup(void) return; } else { enum dp_pll_clk_src ref_clk = SN65_SEL_19MHZ; - static struct panel_serializable_data edp_panel = { - .orientation = LB_FB_ORIENTATION_NORMAL, - }; i2c_init(QUPV3_0_SE2, I2C_SPEED_FAST); /* EDP Bridge I2C */ power_on_bridge(); mdelay(250); /* Delay for the panel to be up */ sn65dsi86_bridge_init(BRIDGE_BUS, BRIDGE_CHIP, ref_clk); - if (sn65dsi86_bridge_read_edid(BRIDGE_BUS, BRIDGE_CHIP, &edp_panel.edid) < 0) + if (sn65dsi86_bridge_read_edid(BRIDGE_BUS, BRIDGE_CHIP, &panel->edid) < 0) return; - panel = &edp_panel; } printk(BIOS_INFO, "display init!\n"); edid_set_framebuffer_bits_per_pixel(&panel->edid, 32, 0); - if (display_init(panel) == CB_SUCCESS) { - struct fb_info *info = fb_new_framebuffer_info_from_edid(&panel->edid, 0); - fb_set_orientation(info, panel->orientation); - } + if (display_init(panel) == CB_SUCCESS) + fb_new_framebuffer_info_from_edid(&panel->edid, 0); } static void mainboard_init(struct device *dev) |