OMAP: DSS2: Taal: Implement configurable ESD interval
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Thu, 24 Mar 2011 11:58:01 +0000 (13:58 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 11 May 2011 11:20:44 +0000 (14:20 +0300)
ESD check in Taal driver is currently on/off feature with hardcoded
interval. This patch changes it to a configurable interval, which can be
set from the board file.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/video/omap2/displays/panel-taal.c
include/video/omap-panel-nokia-dsi.h

index 44d73f779ebed5fa515852a827ca155bcad512ce..788104c9998acc878d5ff1ffcf14457de64cd13e 100644 (file)
@@ -63,8 +63,6 @@
 #define DCS_GET_ID2            0xdb
 #define DCS_GET_ID3            0xdc
 
-#define TAAL_ESD_CHECK_PERIOD  msecs_to_jiffies(5000)
-
 static irqreturn_t taal_te_isr(int irq, void *data);
 static void taal_te_timeout_work_callback(struct work_struct *work);
 static int _taal_enable_te(struct omap_dss_device *dssdev, bool enable);
@@ -231,6 +229,7 @@ struct taal_data {
 
        struct workqueue_struct *esd_wq;
        struct delayed_work esd_work;
+       unsigned esd_interval;
 
        struct panel_config *panel_config;
 };
@@ -700,6 +699,7 @@ static int taal_probe(struct omap_dss_device *dssdev)
        }
        td->dssdev = dssdev;
        td->panel_config = panel_config;
+       td->esd_interval = panel_data->esd_interval;
 
        mutex_init(&td->lock);
 
@@ -963,7 +963,6 @@ static void taal_power_off(struct omap_dss_device *dssdev)
 static int taal_enable(struct omap_dss_device *dssdev)
 {
        struct taal_data *td = dev_get_drvdata(&dssdev->dev);
-       struct nokia_dsi_panel_data *panel_data = get_panel_data(dssdev);
        int r;
 
        dev_dbg(&dssdev->dev, "enable\n");
@@ -984,9 +983,9 @@ static int taal_enable(struct omap_dss_device *dssdev)
        if (r)
                goto err;
 
-       if (panel_data->use_esd_check)
+       if (td->esd_interval > 0)
                queue_delayed_work(td->esd_wq, &td->esd_work,
-                               TAAL_ESD_CHECK_PERIOD);
+                               msecs_to_jiffies(td->esd_interval));
 
        dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
 
@@ -1056,7 +1055,6 @@ err:
 static int taal_resume(struct omap_dss_device *dssdev)
 {
        struct taal_data *td = dev_get_drvdata(&dssdev->dev);
-       struct nokia_dsi_panel_data *panel_data = get_panel_data(dssdev);
        int r;
 
        dev_dbg(&dssdev->dev, "resume\n");
@@ -1078,9 +1076,9 @@ static int taal_resume(struct omap_dss_device *dssdev)
                dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
        } else {
                dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
-               if (panel_data->use_esd_check)
+               if (td->esd_interval > 0)
                        queue_delayed_work(td->esd_wq, &td->esd_work,
-                                       TAAL_ESD_CHECK_PERIOD);
+                                       msecs_to_jiffies(td->esd_interval));
        }
 
        mutex_unlock(&td->lock);
@@ -1523,7 +1521,8 @@ static void taal_esd_work(struct work_struct *work)
 
        dsi_bus_unlock();
 
-       queue_delayed_work(td->esd_wq, &td->esd_work, TAAL_ESD_CHECK_PERIOD);
+       queue_delayed_work(td->esd_wq, &td->esd_work,
+                      msecs_to_jiffies(td->esd_interval));
 
        mutex_unlock(&td->lock);
        return;
@@ -1536,7 +1535,8 @@ err:
 
        dsi_bus_unlock();
 
-       queue_delayed_work(td->esd_wq, &td->esd_work, TAAL_ESD_CHECK_PERIOD);
+       queue_delayed_work(td->esd_wq, &td->esd_work,
+                      msecs_to_jiffies(td->esd_interval));
 
        mutex_unlock(&td->lock);
 }
index e109b21e975a169a8bfb0f9fbce53d19d09bcb52..3bd8d231add72f56cf7039d51b89a997b6cf8ea1 100644 (file)
@@ -8,7 +8,7 @@ struct omap_dss_device;
  * @name: panel name
  * @use_ext_te: use external TE
  * @ext_te_gpio: external TE GPIO
- * @use_esd_check: perform ESD checks
+ * @esd_interval: interval of ESD checks, 0 = disabled (ms)
  * @max_backlight_level: maximum backlight level
  * @set_backlight: pointer to backlight set function
  * @get_backlight: pointer to backlight get function
@@ -21,7 +21,7 @@ struct nokia_dsi_panel_data {
        bool use_ext_te;
        int ext_te_gpio;
 
-       bool use_esd_check;
+       unsigned esd_interval;
 
        int max_backlight_level;
        int (*set_backlight)(struct omap_dss_device *dssdev, int level);