Skip to content

Commit

Permalink
OMAPDSS: Panel NEC: Set omap_dss_device states correctly
Browse files Browse the repository at this point in the history
The display state parameter of omap_dss_device struct is not being set correctly
in the panel driver NEC panel driver panel-nec-nl8048hl11-01b.c. Set the correct
states in the panel's enable/disable/suspend/resume functions.

CC: Erik Gilling <konkers@android.com>
Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
  • Loading branch information
Archit Taneja authored and Tomi Valkeinen committed Jan 2, 2012
1 parent 84309f1 commit d95c03f
Showing 1 changed file with 52 additions and 9 deletions.
61 changes: 52 additions & 9 deletions drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c
Original file line number Diff line number Diff line change
Expand Up @@ -163,50 +163,93 @@ static void nec_8048_panel_remove(struct omap_dss_device *dssdev)
kfree(necd);
}

static int nec_8048_panel_enable(struct omap_dss_device *dssdev)
static int nec_8048_panel_power_on(struct omap_dss_device *dssdev)
{
int r = 0;
int r;
struct nec_8048_data *necd = dev_get_drvdata(&dssdev->dev);
struct backlight_device *bl = necd->bl;

if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE)
return 0;

r = omapdss_dpi_display_enable(dssdev);
if (r)
goto err0;

if (dssdev->platform_enable) {
r = dssdev->platform_enable(dssdev);
if (r)
return r;
goto err1;
}

r = nec_8048_bl_update_status(bl);
if (r < 0)
dev_err(&dssdev->dev, "failed to set lcd brightness\n");

r = omapdss_dpi_display_enable(dssdev);

return 0;
err1:
omapdss_dpi_display_disable(dssdev);
err0:
return r;
}

static void nec_8048_panel_disable(struct omap_dss_device *dssdev)
static void nec_8048_panel_power_off(struct omap_dss_device *dssdev)
{
struct nec_8048_data *necd = dev_get_drvdata(&dssdev->dev);
struct backlight_device *bl = necd->bl;

omapdss_dpi_display_disable(dssdev);
if (dssdev->state != OMAP_DSS_DISPLAY_ACTIVE)
return;

bl->props.brightness = 0;
nec_8048_bl_update_status(bl);

if (dssdev->platform_disable)
dssdev->platform_disable(dssdev);

omapdss_dpi_display_disable(dssdev);
}

static int nec_8048_panel_enable(struct omap_dss_device *dssdev)
{
int r;

r = nec_8048_panel_power_on(dssdev);
if (r)
return r;

dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;

return 0;
}

static void nec_8048_panel_disable(struct omap_dss_device *dssdev)
{
nec_8048_panel_power_off(dssdev);

dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}

static int nec_8048_panel_suspend(struct omap_dss_device *dssdev)
{
nec_8048_panel_disable(dssdev);
nec_8048_panel_power_off(dssdev);

dssdev->state = OMAP_DSS_DISPLAY_SUSPENDED;

return 0;
}

static int nec_8048_panel_resume(struct omap_dss_device *dssdev)
{
return nec_8048_panel_enable(dssdev);
int r;

r = nec_8048_panel_power_on(dssdev);
if (r)
return r;

dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;

return 0;
}

static int nec_8048_recommended_bpp(struct omap_dss_device *dssdev)
Expand Down

0 comments on commit d95c03f

Please sign in to comment.