Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 371336
b: refs/heads/master
c: 7eab07e
h: refs/heads/master
v: v3
  • Loading branch information
Archit Taneja authored and Tomi Valkeinen committed Apr 3, 2013
1 parent ca0dc63 commit 2d1cfc3
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 16 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: be9a0067c5dca8b96b19abc41d28d4b089973c22
refs/heads/master: 7eab07e4cb2747e6ea4624a081684932cce72e6e
36 changes: 21 additions & 15 deletions trunk/drivers/video/omap2/displays/panel-tpo-td043mtea1.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include <linux/slab.h>

#include <video/omapdss.h>
#include <video/omap-panel-data.h>

#define TPO_R02_MODE(x) ((x) & 7)
#define TPO_R02_MODE_800x480 7
Expand Down Expand Up @@ -278,9 +279,14 @@ static const struct omap_video_timings tpo_td043_timings = {
.sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES,
};

static inline struct panel_tpo_td043_data
*get_panel_data(const struct omap_dss_device *dssdev)
{
return (struct panel_tpo_td043_data *) dssdev->data;
}

static int tpo_td043_power_on(struct tpo_td043_device *tpo_td043)
{
int nreset_gpio = tpo_td043->nreset_gpio;
int r;

if (tpo_td043->powered_on)
Expand All @@ -293,8 +299,8 @@ static int tpo_td043_power_on(struct tpo_td043_device *tpo_td043)
/* wait for panel to stabilize */
msleep(160);

if (gpio_is_valid(nreset_gpio))
gpio_set_value(nreset_gpio, 1);
if (gpio_is_valid(tpo_td043->nreset_gpio))
gpio_set_value(tpo_td043->nreset_gpio, 1);

tpo_td043_write(tpo_td043->spi, 2,
TPO_R02_MODE(tpo_td043->mode) | TPO_R02_NCLK_RISING);
Expand All @@ -311,16 +317,14 @@ static int tpo_td043_power_on(struct tpo_td043_device *tpo_td043)

static void tpo_td043_power_off(struct tpo_td043_device *tpo_td043)
{
int nreset_gpio = tpo_td043->nreset_gpio;

if (!tpo_td043->powered_on)
return;

tpo_td043_write(tpo_td043->spi, 3,
TPO_R03_VAL_STANDBY | TPO_R03_EN_PWM);

if (gpio_is_valid(nreset_gpio))
gpio_set_value(nreset_gpio, 0);
if (gpio_is_valid(tpo_td043->nreset_gpio))
gpio_set_value(tpo_td043->nreset_gpio, 0);

/* wait for at least 2 vsyncs before cutting off power */
msleep(50);
Expand Down Expand Up @@ -407,7 +411,7 @@ static void tpo_td043_disable(struct omap_dss_device *dssdev)
static int tpo_td043_probe(struct omap_dss_device *dssdev)
{
struct tpo_td043_device *tpo_td043 = g_tpo_td043;
int nreset_gpio = dssdev->reset_gpio;
struct panel_tpo_td043_data *pdata = get_panel_data(dssdev);
int ret = 0;

dev_dbg(&dssdev->dev, "probe\n");
Expand All @@ -417,6 +421,11 @@ static int tpo_td043_probe(struct omap_dss_device *dssdev)
return -ENODEV;
}

if (!pdata)
return -EINVAL;

tpo_td043->nreset_gpio = pdata->nreset_gpio;

dssdev->panel.timings = tpo_td043_timings;
dssdev->ctrl.pixel_size = 24;

Expand All @@ -430,9 +439,10 @@ static int tpo_td043_probe(struct omap_dss_device *dssdev)
goto fail_regulator;
}

if (gpio_is_valid(nreset_gpio)) {
ret = gpio_request_one(nreset_gpio, GPIOF_OUT_INIT_LOW,
"lcd reset");
if (gpio_is_valid(tpo_td043->nreset_gpio)) {
ret = devm_gpio_request_one(&dssdev->dev,
tpo_td043->nreset_gpio, GPIOF_OUT_INIT_LOW,
"lcd reset");
if (ret < 0) {
dev_err(&dssdev->dev, "couldn't request reset GPIO\n");
goto fail_gpio_req;
Expand All @@ -457,14 +467,11 @@ static int tpo_td043_probe(struct omap_dss_device *dssdev)
static void tpo_td043_remove(struct omap_dss_device *dssdev)
{
struct tpo_td043_device *tpo_td043 = dev_get_drvdata(&dssdev->dev);
int nreset_gpio = dssdev->reset_gpio;

dev_dbg(&dssdev->dev, "remove\n");

sysfs_remove_group(&dssdev->dev.kobj, &tpo_td043_attr_group);
regulator_put(tpo_td043->vcc_reg);
if (gpio_is_valid(nreset_gpio))
gpio_free(nreset_gpio);
}

static void tpo_td043_set_timings(struct omap_dss_device *dssdev,
Expand Down Expand Up @@ -527,7 +534,6 @@ static int tpo_td043_spi_probe(struct spi_device *spi)
return -ENOMEM;

tpo_td043->spi = spi;
tpo_td043->nreset_gpio = dssdev->reset_gpio;
dev_set_drvdata(&spi->dev, tpo_td043);
g_tpo_td043 = tpo_td043;

Expand Down

0 comments on commit 2d1cfc3

Please sign in to comment.