summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVinod Koul <vkoul@kernel.org>2021-05-20 14:09:36 +0530
committerVinod Koul <vkoul@kernel.org>2021-05-20 14:21:34 +0530
commitcfc5362b9028e02e8acf47886684be79130a93a8 (patch)
tree39fd9f66faadae58f30aa386faae68467b30048a
parent19674d75238c185268f7bf1fda1b09a04daff0ad (diff)
fixup! drm: panel: Add lg sw43408 panel driver
-rw-r--r--drivers/gpu/drm/panel/panel-lg-sw43408.c51
1 files changed, 15 insertions, 36 deletions
diff --git a/drivers/gpu/drm/panel/panel-lg-sw43408.c b/drivers/gpu/drm/panel/panel-lg-sw43408.c
index e0c80b12b06d..5e68ecfb2581 100644
--- a/drivers/gpu/drm/panel/panel-lg-sw43408.c
+++ b/drivers/gpu/drm/panel/panel-lg-sw43408.c
@@ -212,7 +212,6 @@ static int lg_panel_power_off(struct drm_panel *panel)
{
struct panel_info *pinfo = to_panel_info(panel);
int i, ret = 0;
-pr_err("In sw43408 panel_power_off\n");
gpiod_set_value(pinfo->reset_gpio, 0);
ret = panel_set_pinctrl_state(pinfo, false);
@@ -241,7 +240,6 @@ pr_err("In sw43408 panel_power_off\n");
static int lg_panel_unprepare(struct drm_panel *panel)
{
-pr_err("In sw43408 panel_unprepare\n");
/* HACK : Currently, after a suspend, the resume doesn't enable screen, so
* don't disable the panel until we figure out why that is.
*/
@@ -285,7 +283,6 @@ return 0;
static int lg_panel_power_on(struct panel_info *pinfo)
{
int ret, i;
-pr_err("In sw43408 panel_power_on\n");
for (i = 0; i < ARRAY_SIZE(pinfo->supplies); i++) {
ret = regulator_set_load(pinfo->supplies[i].consumer,
regulator_enable_loads[i]);
@@ -307,12 +304,14 @@ pr_err("In sw43408 panel_power_on\n");
* Reset sequence of LG sw43408 panel requires the panel to be
* out of reset for 9ms, followed by being held in reset
* for 1ms and then out again
+ * For now dont set this sequence as it causes panel to not come
+ * back
*/
- gpiod_set_value(pinfo->reset_gpio, 1);
- usleep_range(9000, 10000);
- gpiod_set_value(pinfo->reset_gpio, 0);
- usleep_range(1000, 2000);
- gpiod_set_value(pinfo->reset_gpio, 1);
+ //gpiod_set_value(pinfo->reset_gpio, 1);
+ //usleep_range(9000, 10000);
+ //gpiod_set_value(pinfo->reset_gpio, 0);
+ //usleep_range(1000, 2000);
+ //gpiod_set_value(pinfo->reset_gpio, 1);
usleep_range(9000, 10000);
return 0;
@@ -322,7 +321,6 @@ static int lg_panel_prepare(struct drm_panel *panel)
{
struct panel_info *pinfo = to_panel_info(panel);
int err;
-pr_err("In sw43408 panel_prepare\n");
if (unlikely(pinfo->first_enable)) {
pinfo->first_enable = false;
@@ -405,20 +403,11 @@ static int lg_panel_enable(struct drm_panel *panel)
if (pinfo->enabled)
return 0;
-pr_err("In sw43408 panel_enable\n");
- ret = backlight_enable(pinfo->backlight);
- if (ret) {
- DRM_DEV_ERROR(panel->dev,
- "Failed to enable backlight %d\n", ret);
- return ret;
- }
-
if (panel->dsc) {
/* this panel uses DSC so send the pps */
drm_dsc_dsi_pps_header_init(&pps.dsc_header);
drm_dsc_compute_rc_parameters(panel->dsc);
drm_dsc_pps_payload_pack(&pps.pps_payload, panel->dsc);
- pr_err("VK: in %s doing pps write now\n", __func__);
ret = mipi_dsi_dcs_write(pinfo->link,
MIPI_DSI_PICTURE_PARAMETER_SET,
&pps, 135);
@@ -428,6 +417,13 @@ pr_err("In sw43408 panel_enable\n");
return ret;
}
}
+ ret = backlight_enable(pinfo->backlight);
+ if (ret) {
+ DRM_DEV_ERROR(panel->dev,
+ "Failed to enable backlight %d\n", ret);
+ return ret;
+ }
+
pinfo->enabled = true;
@@ -440,11 +436,8 @@ static int lg_panel_get_modes(struct drm_panel *panel,
struct panel_info *pinfo = to_panel_info(panel);
const struct drm_display_mode *m = pinfo->desc->display_mode;
struct drm_display_mode *mode;
-pr_err("In sw43408 panel_get_modes\n");
mode = drm_mode_duplicate(connector->dev, m);
if (!mode) {
- //DRM_DEV_ERROR(panel->dev, "failed to add mode %ux%u@%u\n",
- // m->hdisplay, m->vdisplay, m->vrefresh);
DRM_DEV_ERROR(panel->dev, "failed to add mode %ux%u\n",
m->hdisplay, m->vdisplay);
return -ENOMEM;
@@ -472,12 +465,8 @@ static int lg_panel_backlight_update_status(struct backlight_device *bl)
else
pinfo->brightness = bl->props.brightness;
-pr_err("sw43408: panel_backlight_update_status: setting brightness to: %d\n", pinfo->brightness);
-
ret = mipi_dsi_dcs_set_display_brightness(pinfo->link,
pinfo->brightness);
-pr_err("sw43408: mipi_dsi_dcs_set_display_brightness returned : %d\n", ret);
-
return ret;
}
@@ -488,7 +477,6 @@ static int lg_panel_backlight_get_brightness(struct backlight_device *bl)
u16 brightness = 0;
ret = mipi_dsi_dcs_get_display_brightness(pinfo->link, &brightness);
-pr_err("sw43408: panel_backlight_get_brightness: current brightness is: %d, ret: %d\n", brightness, ret);
if (ret < 0)
return ret;
@@ -506,10 +494,9 @@ static int lg_panel_backlight_init(struct panel_info *pinfo)
struct backlight_device *bl;
struct device *dev = &pinfo->link->dev;
-pr_err("sw43408: panel_backlight_init\n");
props.type = BACKLIGHT_RAW;
- // Set the max_brightness to 255 to begin with
+ /* Set the max_brightness to 255 to begin with */
props.max_brightness = pinfo->max_brightness = 255;
props.brightness = pinfo->max_brightness;
pinfo->brightness = pinfo->max_brightness;
@@ -577,7 +564,6 @@ static const struct drm_display_mode lg_panel_default_mode = {
.vsync_start = 2160 + 20,
.vsync_end = 2160 + 20 + 4,
.vtotal = 2160 + 20 + 4 + 20,
- //.vrefresh = 60,
.type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
};
@@ -643,7 +629,6 @@ static int panel_add(struct panel_info *pinfo)
{
struct device *dev = &pinfo->link->dev;
int i, ret;
-pr_err("In sw43408 panel add\n");
pinfo->init_delay_us = 5000;
@@ -672,10 +657,8 @@ pr_err("In sw43408 panel add\n");
drm_panel_init(&pinfo->base, dev, &panel_funcs,
DRM_MODE_CONNECTOR_DSI);
-pr_err("In sw43408 panel add: after drm_panel_init\n");
drm_panel_add(&pinfo->base);
-pr_err("In sw43408 panel add: drm_panel_add returned %d\n", ret);
return ret;
}
@@ -703,14 +686,12 @@ static int panel_probe(struct mipi_dsi_device *dsi)
pinfo->link = dsi;
mipi_dsi_set_drvdata(dsi, pinfo);
-pr_err("In sw43408 panel probe\n");
err = panel_add(pinfo);
if (err < 0)
return err;
err = mipi_dsi_attach(dsi);
-pr_err("In sw43408 panel probe: mipi_dsi_attach returned: %d\n", err);
return err;
}
@@ -733,7 +714,6 @@ static int panel_remove(struct mipi_dsi_device *dsi)
DRM_DEV_ERROR(&dsi->dev, "failed to detach from DSI host: %d\n",
err);
-// drm_panel_detach(&pinfo->base);
panel_del(pinfo);
return 0;
@@ -742,7 +722,6 @@ static int panel_remove(struct mipi_dsi_device *dsi)
static void panel_shutdown(struct mipi_dsi_device *dsi)
{
struct panel_info *pinfo = mipi_dsi_get_drvdata(dsi);
-pr_err("sw43408: panel_shutdown\n");
lg_panel_disable(&pinfo->base);
lg_panel_unprepare(&pinfo->base);
}