Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d95c03f3 authored by Archit Taneja's avatar Archit Taneja Committed by Tomi Valkeinen
Browse files

OMAPDSS: Panel NEC: Set omap_dss_device states correctly



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: default avatarArchit Taneja <archit@ti.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 84309f16
Loading
Loading
Loading
Loading
+52 −9
Original line number Original line Diff line number Diff line
@@ -163,50 +163,93 @@ static void nec_8048_panel_remove(struct omap_dss_device *dssdev)
	kfree(necd);
	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 nec_8048_data *necd = dev_get_drvdata(&dssdev->dev);
	struct backlight_device *bl = necd->bl;
	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) {
	if (dssdev->platform_enable) {
		r = dssdev->platform_enable(dssdev);
		r = dssdev->platform_enable(dssdev);
		if (r)
		if (r)
			return r;
			goto err1;
	}
	}


	r = nec_8048_bl_update_status(bl);
	r = nec_8048_bl_update_status(bl);
	if (r < 0)
	if (r < 0)
		dev_err(&dssdev->dev, "failed to set lcd brightness\n");
		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;
	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 nec_8048_data *necd = dev_get_drvdata(&dssdev->dev);
	struct backlight_device *bl = necd->bl;
	struct backlight_device *bl = necd->bl;


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


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


	if (dssdev->platform_disable)
	if (dssdev->platform_disable)
		dssdev->platform_disable(dssdev);
		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)
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;
	return 0;
}
}


static int nec_8048_panel_resume(struct omap_dss_device *dssdev)
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)
static int nec_8048_recommended_bpp(struct omap_dss_device *dssdev)