aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/samsung/s6dr171.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/samsung/s6dr171.c')
-rw-r--r--drivers/video/samsung/s6dr171.c146
1 files changed, 76 insertions, 70 deletions
diff --git a/drivers/video/samsung/s6dr171.c b/drivers/video/samsung/s6dr171.c
index 167f658..868c006 100644
--- a/drivers/video/samsung/s6dr171.c
+++ b/drivers/video/samsung/s6dr171.c
@@ -79,7 +79,10 @@ struct lcd_info {
struct dsim_global *dsim;
};
-static int s6e8ax0_write(struct lcd_info *lcd, const unsigned char *seq, int len)
+extern void (*lcd_early_suspend)(void);
+extern void (*lcd_late_resume)(void);
+
+static int s6dr171_write(struct lcd_info *lcd, const unsigned char *seq, int len)
{
int size;
const unsigned char *wbuf;
@@ -104,7 +107,7 @@ static int s6e8ax0_write(struct lcd_info *lcd, const unsigned char *seq, int len
return 0;
}
-static int _s6e8ax0_read(struct lcd_info *lcd, const u8 addr, u16 count, u8 *buf)
+static int _s6dr171_read(struct lcd_info *lcd, const u8 addr, u16 count, u8 *buf)
{
int ret = 0;
@@ -121,12 +124,12 @@ static int _s6e8ax0_read(struct lcd_info *lcd, const u8 addr, u16 count, u8 *buf
return ret;
}
-static int s6e8ax0_read(struct lcd_info *lcd, const u8 addr, u16 count, u8 *buf, u8 retry_cnt)
+static int s6dr171_read(struct lcd_info *lcd, const u8 addr, u16 count, u8 *buf, u8 retry_cnt)
{
int ret = 0;
read_retry:
- ret = _s6e8ax0_read(lcd, addr, count, buf);
+ ret = _s6dr171_read(lcd, addr, count, buf);
if (!ret) {
if (retry_cnt) {
printk(KERN_WARNING "[WARN:LCD] %s : retry cnt : %d\n", __func__, retry_cnt);
@@ -139,55 +142,55 @@ read_retry:
return ret;
}
-static int s6e8ax0_ldi_init(struct lcd_info *lcd)
+static int s6dr171_ldi_init(struct lcd_info *lcd)
{
int ret = 0;
- s6e8ax0_write(lcd, SEQ_APPLY_LEVEL_1_KEY, ARRAY_SIZE(SEQ_APPLY_LEVEL_1_KEY));
- s6e8ax0_write(lcd, SEQ_APPLY_MTP_KEY_ENABLE, ARRAY_SIZE(SEQ_APPLY_MTP_KEY_ENABLE));
- s6e8ax0_write(lcd, SEQ_PWRSEQCTL, ARRAY_SIZE(SEQ_PWRSEQCTL));
- s6e8ax0_write(lcd, SEQ_DISPLAY_BRIGHTNESSS, ARRAY_SIZE(SEQ_DISPLAY_BRIGHTNESSS));
- s6e8ax0_write(lcd, SEQ_CONTROL_DISPLAY, ARRAY_SIZE(SEQ_CONTROL_DISPLAY));
- s6e8ax0_write(lcd, SEQ_SLEEP_OUT, ARRAY_SIZE(SEQ_SLEEP_OUT));
+ s6dr171_write(lcd, SEQ_APPLY_LEVEL_1_KEY, ARRAY_SIZE(SEQ_APPLY_LEVEL_1_KEY));
+ s6dr171_write(lcd, SEQ_APPLY_MTP_KEY_ENABLE, ARRAY_SIZE(SEQ_APPLY_MTP_KEY_ENABLE));
+ s6dr171_write(lcd, SEQ_PWRSEQCTL, ARRAY_SIZE(SEQ_PWRSEQCTL));
+ s6dr171_write(lcd, SEQ_DISPLAY_BRIGHTNESSS, ARRAY_SIZE(SEQ_DISPLAY_BRIGHTNESSS));
+ s6dr171_write(lcd, SEQ_CONTROL_DISPLAY, ARRAY_SIZE(SEQ_CONTROL_DISPLAY));
+ s6dr171_write(lcd, SEQ_SLEEP_OUT, ARRAY_SIZE(SEQ_SLEEP_OUT));
msleep(120);
- s6e8ax0_write(lcd, SEQ_PANEL_CONDITION_SET, ARRAY_SIZE(SEQ_PANEL_CONDITION_SET));
- s6e8ax0_write(lcd, SEQ_DISPLAY_CONDITION_SET, ARRAY_SIZE(SEQ_DISPLAY_CONDITION_SET));
- s6e8ax0_write(lcd, SEQ_GAMMA_CONDITION_SET, ARRAY_SIZE(SEQ_GAMMA_CONDITION_SET));
- s6e8ax0_write(lcd, SEQ_GAMMA_UPDATE, ARRAY_SIZE(SEQ_GAMMA_UPDATE));
+ s6dr171_write(lcd, SEQ_PANEL_CONDITION_SET, ARRAY_SIZE(SEQ_PANEL_CONDITION_SET));
+ s6dr171_write(lcd, SEQ_DISPLAY_CONDITION_SET, ARRAY_SIZE(SEQ_DISPLAY_CONDITION_SET));
+ s6dr171_write(lcd, SEQ_GAMMA_CONDITION_SET, ARRAY_SIZE(SEQ_GAMMA_CONDITION_SET));
+ s6dr171_write(lcd, SEQ_GAMMA_UPDATE, ARRAY_SIZE(SEQ_GAMMA_UPDATE));
msleep(20);
- s6e8ax0_write(lcd, SEQ_GAMMA_UPDATE2, ARRAY_SIZE(SEQ_GAMMA_UPDATE2));
+ s6dr171_write(lcd, SEQ_GAMMA_UPDATE2, ARRAY_SIZE(SEQ_GAMMA_UPDATE2));
msleep(20);
- s6e8ax0_write(lcd, SEQ_ETC_SOURCE_CONTROL, ARRAY_SIZE(SEQ_ETC_SOURCE_CONTROL));
- s6e8ax0_write(lcd, SEQ_ETC_NVM_SETTING, ARRAY_SIZE(SEQ_ETC_NVM_SETTING));
- s6e8ax0_write(lcd, SEQ_ETC_POWER_CONTROL, ARRAY_SIZE(SEQ_ETC_POWER_CONTROL));
+ s6dr171_write(lcd, SEQ_ETC_SOURCE_CONTROL, ARRAY_SIZE(SEQ_ETC_SOURCE_CONTROL));
+ s6dr171_write(lcd, SEQ_ETC_NVM_SETTING, ARRAY_SIZE(SEQ_ETC_NVM_SETTING));
+ s6dr171_write(lcd, SEQ_ETC_POWER_CONTROL, ARRAY_SIZE(SEQ_ETC_POWER_CONTROL));
- s6e8ax0_write(lcd, SEQ_ELVSS_CONTROL, ARRAY_SIZE(SEQ_ELVSS_CONTROL));
+ s6dr171_write(lcd, SEQ_ELVSS_CONTROL, ARRAY_SIZE(SEQ_ELVSS_CONTROL));
return ret;
}
-static int s6e8ax0_ldi_enable(struct lcd_info *lcd)
+static int s6dr171_ldi_enable(struct lcd_info *lcd)
{
int ret = 0;
- s6e8ax0_write(lcd, SEQ_DISPLAY_ON, ARRAY_SIZE(SEQ_DISPLAY_ON));
+ s6dr171_write(lcd, SEQ_DISPLAY_ON, ARRAY_SIZE(SEQ_DISPLAY_ON));
return ret;
}
-static int s6e8ax0_ldi_disable(struct lcd_info *lcd)
+static int s6dr171_ldi_disable(struct lcd_info *lcd)
{
int ret = 0;
- s6e8ax0_write(lcd, SEQ_DISPLAY_OFF, ARRAY_SIZE(SEQ_DISPLAY_OFF));
- s6e8ax0_write(lcd, SEQ_STANDBY_ON, ARRAY_SIZE(SEQ_STANDBY_ON));
+ s6dr171_write(lcd, SEQ_DISPLAY_OFF, ARRAY_SIZE(SEQ_DISPLAY_OFF));
+ s6dr171_write(lcd, SEQ_STANDBY_ON, ARRAY_SIZE(SEQ_STANDBY_ON));
return ret;
}
-static int s6e8ax0_power_on(struct lcd_info *lcd)
+static int s6dr171_power_on(struct lcd_info *lcd)
{
int ret = 0;
struct lcd_platform_data *pd = NULL;
@@ -195,7 +198,7 @@ static int s6e8ax0_power_on(struct lcd_info *lcd)
/* dev_info(&lcd->ld->dev, "%s\n", __func__); */
- ret = s6e8ax0_ldi_init(lcd);
+ ret = s6dr171_ldi_init(lcd);
if (ret) {
dev_err(&lcd->ld->dev, "failed to initialize ldi.\n");
goto err;
@@ -203,7 +206,7 @@ static int s6e8ax0_power_on(struct lcd_info *lcd)
msleep(120);
- ret = s6e8ax0_ldi_enable(lcd);
+ ret = s6dr171_ldi_enable(lcd);
if (ret) {
dev_err(&lcd->ld->dev, "failed to enable ldi.\n");
goto err;
@@ -216,7 +219,7 @@ err:
return ret;
}
-static int s6e8ax0_power_off(struct lcd_info *lcd)
+static int s6dr171_power_off(struct lcd_info *lcd)
{
int ret = 0;
@@ -224,21 +227,21 @@ static int s6e8ax0_power_off(struct lcd_info *lcd)
lcd->ldi_enable = 0;
- ret = s6e8ax0_ldi_disable(lcd);
+ ret = s6dr171_ldi_disable(lcd);
msleep(135);
return ret;
}
-static int s6e8ax0_power(struct lcd_info *lcd, int power)
+static int s6dr171_power(struct lcd_info *lcd, int power)
{
int ret = 0;
if (POWER_IS_ON(power) && !POWER_IS_ON(lcd->power))
- ret = s6e8ax0_power_on(lcd);
+ ret = s6dr171_power_on(lcd);
else if (!POWER_IS_ON(power) && POWER_IS_ON(lcd->power))
- ret = s6e8ax0_power_off(lcd);
+ ret = s6dr171_power_off(lcd);
if (!ret)
lcd->power = power;
@@ -246,7 +249,7 @@ static int s6e8ax0_power(struct lcd_info *lcd, int power)
return ret;
}
-static int s6e8ax0_set_power(struct lcd_device *ld, int power)
+static int s6dr171_set_power(struct lcd_device *ld, int power)
{
struct lcd_info *lcd = lcd_get_data(ld);
@@ -256,17 +259,17 @@ static int s6e8ax0_set_power(struct lcd_device *ld, int power)
return -EINVAL;
}
- return s6e8ax0_power(lcd, power);
+ return s6dr171_power(lcd, power);
}
-static int s6e8ax0_get_power(struct lcd_device *ld)
+static int s6dr171_get_power(struct lcd_device *ld)
{
struct lcd_info *lcd = lcd_get_data(ld);
return lcd->power;
}
-static int s6e8ax0_set_brightness(struct backlight_device *bd)
+static int s6dr171_set_brightness(struct backlight_device *bd)
{
int ret = 0;
int brightness = bd->props.brightness;
@@ -292,13 +295,13 @@ static int s6e8ax0_set_brightness(struct backlight_device *bd)
return ret;
}
-static struct lcd_ops s6e8ax0_lcd_ops = {
- .set_power = s6e8ax0_set_power,
- .get_power = s6e8ax0_get_power,
+static struct lcd_ops s6dr171_lcd_ops = {
+ .set_power = s6dr171_set_power,
+ .get_power = s6dr171_get_power,
};
-static const struct backlight_ops s6e8ax0_backlight_ops = {
- .update_status = s6e8ax0_set_brightness,
+static const struct backlight_ops s6dr171_backlight_ops = {
+ .update_status = s6dr171_set_brightness,
};
static ssize_t power_reduce_show(struct device *dev,
@@ -329,7 +332,7 @@ static ssize_t power_reduce_store(struct device *dev,
mutex_lock(&lcd->bl_lock);
lcd->acl_enable = value;
/* if (lcd->ldi_enable)
- s6e8ax0_set_acl(lcd); */
+ s6dr171_set_acl(lcd); */
mutex_unlock(&lcd->bl_lock);
}
}
@@ -389,25 +392,25 @@ static DEVICE_ATTR(auto_brightness, 0644, auto_brightness_show, auto_brightness_
#ifdef CONFIG_HAS_EARLYSUSPEND
struct lcd_info *g_lcd;
-void s6e8ax0_early_suspend(void)
+void s6dr171_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);
+ s6dr171_power(lcd, FB_BLANK_POWERDOWN);
dev_info(&lcd->ld->dev, "-%s\n", __func__);
return ;
}
-void s6e8ax0_late_resume(void)
+void s6dr171_late_resume(void)
{
struct lcd_info *lcd = g_lcd;
dev_info(&lcd->ld->dev, "+%s\n", __func__);
- s6e8ax0_power(lcd, FB_BLANK_UNBLANK);
+ s6dr171_power(lcd, FB_BLANK_UNBLANK);
dev_info(&lcd->ld->dev, "-%s\n", __func__);
set_dsim_lcd_enabled(1);
@@ -416,28 +419,28 @@ void s6e8ax0_late_resume(void)
}
#endif
-static int s6e8ax0_read_mtp(struct lcd_info *lcd, u8 *mtp_data)
+static int s6dr171_read_mtp(struct lcd_info *lcd, u8 *mtp_data)
{
int ret, i;
for (i = 0; i < 3; i++)
- ret = s6e8ax0_read(lcd, LDI_MTP_ADDR+i, LDI_MTP_LENGTH, mtp_data, 0);
+ ret = s6dr171_read(lcd, LDI_MTP_ADDR+i, LDI_MTP_LENGTH, mtp_data, 0);
return ret;
}
-static void s6e8ax0_read_id(struct lcd_info *lcd, u8 *buf)
+static void s6dr171_read_id(struct lcd_info *lcd, u8 *buf)
{
int ret = 0;
- ret = s6e8ax0_read(lcd, LDI_ID_REG, LDI_ID_LEN, buf, 3);
+ ret = s6dr171_read(lcd, LDI_ID_REG, LDI_ID_LEN, buf, 3);
if (!ret) {
lcd->connected = 0;
dev_info(&lcd->ld->dev, "panel is not connected well\n");
}
}
-static int s6e8ax0_probe(struct device *dev)
+static int s6dr171_probe(struct device *dev)
{
int ret = 0;
struct lcd_info *lcd;
@@ -452,14 +455,14 @@ static int s6e8ax0_probe(struct device *dev)
g_lcd = lcd;
- lcd->ld = lcd_device_register("panel", dev, lcd, &s6e8ax0_lcd_ops);
+ lcd->ld = lcd_device_register("panel", dev, lcd, &s6dr171_lcd_ops);
if (IS_ERR(lcd->ld)) {
pr_err("failed to register lcd device\n");
ret = PTR_ERR(lcd->ld);
goto out_free_lcd;
}
- lcd->bd = backlight_device_register("panel", dev, lcd, &s6e8ax0_backlight_ops, NULL);
+ lcd->bd = backlight_device_register("panel", dev, lcd, &s6dr171_backlight_ops, NULL);
if (IS_ERR(lcd->bd)) {
pr_err("failed to register backlight device\n");
ret = PTR_ERR(lcd->bd);
@@ -498,18 +501,21 @@ static int s6e8ax0_probe(struct device *dev)
mutex_init(&lcd->lock);
mutex_init(&lcd->bl_lock);
- s6e8ax0_read_id(lcd, lcd->id);
+ s6dr171_read_id(lcd, lcd->id);
dev_info(&lcd->ld->dev, "ID: %x, %x, %x\n", lcd->id[0], lcd->id[1], lcd->id[2]);
dev_info(&lcd->ld->dev, "lcd panel driver has been probed.\n");
- ret = s6e8ax0_read_mtp(lcd, mtp_data);
+ ret = s6dr171_read_mtp(lcd, mtp_data);
if (!ret) {
printk(KERN_ERR "[LCD:ERROR] : %s read mtp failed\n", __func__);
/*return -EPERM;*/
}
+ lcd_early_suspend = s6dr171_early_suspend;
+ lcd_late_resume = s6dr171_late_resume;
+
return 0;
out_free_backlight:
@@ -525,11 +531,11 @@ err_alloc:
return ret;
}
-static int __devexit s6e8ax0_remove(struct device *dev)
+static int __devexit s6dr171_remove(struct device *dev)
{
struct lcd_info *lcd = dev_get_drvdata(dev);
- s6e8ax0_power(lcd, FB_BLANK_POWERDOWN);
+ s6dr171_power(lcd, FB_BLANK_POWERDOWN);
lcd_device_unregister(lcd->ld);
backlight_device_unregister(lcd->bd);
kfree(lcd);
@@ -538,34 +544,34 @@ static int __devexit s6e8ax0_remove(struct device *dev)
}
/* Power down all displays on reboot, poweroff or halt. */
-static void s6e8ax0_shutdown(struct device *dev)
+static void s6dr171_shutdown(struct device *dev)
{
struct lcd_info *lcd = dev_get_drvdata(dev);
dev_info(&lcd->ld->dev, "%s\n", __func__);
- s6e8ax0_power(lcd, FB_BLANK_POWERDOWN);
+ s6dr171_power(lcd, FB_BLANK_POWERDOWN);
}
-static struct mipi_lcd_driver s6e8ax0_mipi_driver = {
+static struct mipi_lcd_driver s6dr171_mipi_driver = {
.name = "s6e8aa0",
- .probe = s6e8ax0_probe,
- .remove = __devexit_p(s6e8ax0_remove),
- .shutdown = s6e8ax0_shutdown,
+ .probe = s6dr171_probe,
+ .remove = __devexit_p(s6dr171_remove),
+ .shutdown = s6dr171_shutdown,
};
-static int s6e8ax0_init(void)
+static int s6dr171_init(void)
{
- return s5p_dsim_register_lcd_driver(&s6e8ax0_mipi_driver);
+ return s5p_dsim_register_lcd_driver(&s6dr171_mipi_driver);
}
-static void s6e8ax0_exit(void)
+static void s6dr171_exit(void)
{
return;
}
-module_init(s6e8ax0_init);
-module_exit(s6e8ax0_exit);
+module_init(s6dr171_init);
+module_exit(s6dr171_exit);
-MODULE_DESCRIPTION("MIPI-DSI S6E8AA0:AMS529HA01 (800x1280) Panel Driver");
+MODULE_DESCRIPTION("MIPI-DSI S6DR171:AMS480GZ01-0 (720x1280) Panel Driver");
MODULE_LICENSE("GPL");