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>
This commit is contained in:
parent
14bb6f5dab
commit
1f84b2c025
@ -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),
|
||||
|
@ -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),
|
||||
|
@ -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),
|
||||
|
@ -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),
|
||||
|
@ -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),
|
||||
|
@ -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
|
||||
|
@ -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),
|
||||
|
@ -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),
|
||||
|
@ -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 */
|
||||
};
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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. */
|
||||
|
@ -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,
|
||||
};
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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,
|
||||
};
|
||||
|
||||
|
@ -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,
|
||||
};
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user