aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/samsung/s3cfb_s6e8ab0.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/samsung/s3cfb_s6e8ab0.c')
-rw-r--r--drivers/video/samsung/s3cfb_s6e8ab0.c50
1 files changed, 11 insertions, 39 deletions
diff --git a/drivers/video/samsung/s3cfb_s6e8ab0.c b/drivers/video/samsung/s3cfb_s6e8ab0.c
index 185bab0..bc47c37 100644
--- a/drivers/video/samsung/s3cfb_s6e8ab0.c
+++ b/drivers/video/samsung/s3cfb_s6e8ab0.c
@@ -101,9 +101,9 @@ struct lcd_info {
struct str_elvss elvss;
#endif
unsigned int connected;
-};
-static struct mipi_ddi_platform_data *ddi_pd;
+ struct dsim_global *dsim;
+};
static int s6e8ax0_write(struct lcd_info *lcd, const unsigned char *seq, int len)
{
@@ -119,11 +119,11 @@ static int s6e8ax0_write(struct lcd_info *lcd, const unsigned char *seq, int len
wbuf = seq;
if (size == 1)
- ddi_pd->cmd_write(ddi_pd->dsim_base, DCS_WR_NO_PARA, wbuf[0], 0);
+ lcd->dsim->ops->cmd_write(lcd->dsim, DCS_WR_NO_PARA, wbuf[0], 0);
else if (size == 2)
- ddi_pd->cmd_write(ddi_pd->dsim_base, DCS_WR_1_PARA, wbuf[0], wbuf[1]);
+ lcd->dsim->ops->cmd_write(lcd->dsim, DCS_WR_1_PARA, wbuf[0], wbuf[1]);
else
- ddi_pd->cmd_write(ddi_pd->dsim_base, DCS_LONG_WR, (unsigned int)wbuf, size);
+ lcd->dsim->ops->cmd_write(lcd->dsim, DCS_LONG_WR, (unsigned int)wbuf, size);
mutex_unlock(&lcd->lock);
@@ -139,44 +139,14 @@ static int _s6e8ax0_read(struct lcd_info *lcd, const u8 addr, u16 count, u8 *buf
mutex_lock(&lcd->lock);
- if (ddi_pd->cmd_read)
- ret = ddi_pd->cmd_read(ddi_pd->dsim_base, addr, count, buf);
+ if (lcd->dsim->ops->cmd_read)
+ ret = lcd->dsim->ops->cmd_read(lcd->dsim, addr, count, buf);
mutex_unlock(&lcd->lock);
return ret;
}
-static int s6e8ax0_set_link(void *pd, unsigned int dsim_base,
- unsigned char (*cmd_write) (unsigned int dsim_base, unsigned int data0,
- unsigned int data1, unsigned int data2),
- int (*cmd_read) (u32 reg_base, u8 addr, u16 count, u8 *buf))
-{
- struct mipi_ddi_platform_data *temp_pd = NULL;
-
- temp_pd = (struct mipi_ddi_platform_data *) pd;
- if (temp_pd == NULL) {
- printk(KERN_ERR "mipi_ddi_platform_data is null.\n");
- return -EPERM;
- }
-
- ddi_pd = temp_pd;
-
- ddi_pd->dsim_base = dsim_base;
-
- if (cmd_write)
- ddi_pd->cmd_write = cmd_write;
- else
- printk(KERN_WARNING "cmd_write function is null.\n");
-
- if (cmd_read)
- ddi_pd->cmd_read = cmd_read;
- else
- printk(KERN_WARNING "cmd_read function is null.\n");
-
- return 0;
-}
-
static int s6e8ax0_read(struct lcd_info *lcd, const u8 addr, u16 count, u8 *buf, u8 retry_cnt)
{
int ret = 0;
@@ -781,6 +751,8 @@ void s6e8ax0_early_suspend(void)
{
struct lcd_info *lcd = g_lcd;
+ set_dsim_lcd_enabled(0);
+
dev_info(&lcd->ld->dev, "+%s\n", __func__);
s6e8ax0_power(lcd, FB_BLANK_POWERDOWN);
dev_info(&lcd->ld->dev, "-%s\n", __func__);
@@ -796,7 +768,7 @@ void s6e8ax0_late_resume(void)
s6e8ax0_power(lcd, FB_BLANK_UNBLANK);
dev_info(&lcd->ld->dev, "-%s\n", __func__);
- set_dsim_lcd_enabled();
+ set_dsim_lcd_enabled(1);
return ;
}
@@ -884,6 +856,7 @@ static int s6e8ax0_probe(struct device *dev)
}
lcd->dev = dev;
+ lcd->dsim = (struct dsim_global *)dev_get_drvdata(dev->parent);
lcd->bd->props.max_brightness = MAX_BRIGHTNESS;
lcd->bd->props.brightness = DEFAULT_BRIGHTNESS;
lcd->bl = DEFAULT_GAMMA_LEVEL;
@@ -990,7 +963,6 @@ static void s6e8ax0_shutdown(struct device *dev)
static struct mipi_lcd_driver s6e8ax0_mipi_driver = {
.name = "s6e8ab0",
- .set_link = s6e8ax0_set_link,
.probe = s6e8ax0_probe,
.remove = __devexit_p(s6e8ax0_remove),
.shutdown = s6e8ax0_shutdown,