disp: msm: Set the dsi panel type
Parse the DTS panel type settings. Consider the default panel physical type as LCD. We need to set OLED in DTS if the panel is an OLED type. Change-Id: Ib53651ab3861e75bf061f38d60a2f6135c1f537d Signed-off-by: Wenjun Zhang <wjzhan@codeaurora.org> Signed-off-by: Yuan Zhao <yzhao@codeaurora.org>
这个提交包含在:

提交者
Gerrit - the friendly Code Review server

父节点
f2873cd69f
当前提交
bb2f60b35c
@@ -3212,6 +3212,7 @@ struct dsi_panel *dsi_panel_get(struct device *parent,
|
||||
{
|
||||
struct dsi_panel *panel;
|
||||
struct dsi_parser_utils *utils;
|
||||
const char *panel_physical_type;
|
||||
int rc = 0;
|
||||
|
||||
panel = kzalloc(sizeof(*panel), GFP_KERNEL);
|
||||
@@ -3230,6 +3231,14 @@ struct dsi_panel *dsi_panel_get(struct device *parent,
|
||||
if (!panel->name)
|
||||
panel->name = DSI_PANEL_DEFAULT_LABEL;
|
||||
|
||||
/*
|
||||
* Set panel type to LCD as default.
|
||||
*/
|
||||
panel->panel_type = DSI_DISPLAY_PANEL_TYPE_LCD;
|
||||
panel_physical_type = utils->get_property(utils->data,
|
||||
"qcom,mdss-dsi-panel-physical-type", NULL);
|
||||
if (panel_physical_type && !strcmp(panel_physical_type, "oled"))
|
||||
panel->panel_type = DSI_DISPLAY_PANEL_TYPE_OLED;
|
||||
rc = dsi_panel_parse_host_config(panel);
|
||||
if (rc) {
|
||||
DSI_ERR("failed to parse host configuration, rc=%d\n",
|
||||
|
@@ -62,6 +62,12 @@ enum dsi_dms_mode {
|
||||
DSI_DMS_MODE_RES_SWITCH_IMMEDIATE,
|
||||
};
|
||||
|
||||
enum dsi_panel_physical_type {
|
||||
DSI_DISPLAY_PANEL_TYPE_LCD = 0,
|
||||
DSI_DISPLAY_PANEL_TYPE_OLED,
|
||||
DSI_DISPLAY_PANEL_TYPE_MAX,
|
||||
};
|
||||
|
||||
struct dsi_dfps_capabilities {
|
||||
enum dsi_dfps_type type;
|
||||
u32 min_refresh_rate;
|
||||
@@ -199,6 +205,7 @@ struct dsi_panel {
|
||||
|
||||
int panel_test_gpio;
|
||||
int power_mode;
|
||||
enum dsi_panel_physical_type panel_type;
|
||||
};
|
||||
|
||||
static inline bool dsi_panel_ulps_feature_enabled(struct dsi_panel *panel)
|
||||
@@ -221,6 +228,11 @@ static inline void dsi_panel_release_panel_lock(struct dsi_panel *panel)
|
||||
mutex_unlock(&panel->panel_lock);
|
||||
}
|
||||
|
||||
static inline bool dsi_panel_is_type_oled(struct dsi_panel *panel)
|
||||
{
|
||||
return (panel->panel_type == DSI_DISPLAY_PANEL_TYPE_OLED);
|
||||
}
|
||||
|
||||
struct dsi_panel *dsi_panel_get(struct device *parent,
|
||||
struct device_node *of_node,
|
||||
struct device_node *parser_node,
|
||||
|
在新工单中引用
屏蔽一个用户