MFD: ti_tscadc: Disable TSC config registers in adc mode
authorPatil, Rachna <rachna@ti.com>
Sat, 20 Jul 2013 16:27:34 +0000 (17:27 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 31 Jul 2013 00:04:40 +0000 (02:04 +0200)
AFE Pen Ctrl and TouchScreen transistors enabling is not
required when only ADC mode is being used, so check for availability of
TSC driver before accessing control register.

Signed-off-by: Patil, Rachna <rachna@ti.com>
Acked-by: Vaibhav Hiremath <hvaibhav@ti.com>
Signed-off-by: Zubair Lutfullah <zubair.lutfullah@gmail.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/ti_am335x_tscadc.c

index e0852ec..cd74d59 100644 (file)
@@ -204,13 +204,14 @@ static    int ti_tscadc_probe(struct platform_device *pdev)
 
        /* Set the control register bits */
        ctrl = CNTRLREG_STEPCONFIGWRT |
-                       CNTRLREG_TSCENB |
-                       CNTRLREG_STEPID |
-                       CNTRLREG_4WIRE;
+                       CNTRLREG_STEPID;
+       if (tsc_wires > 0)
+               ctrl |= CNTRLREG_4WIRE | CNTRLREG_TSCENB;
        tscadc_writel(tscadc, REG_CTRL, ctrl);
 
        /* Set register bits for Idle Config Mode */
-       tscadc_idle_config(tscadc);
+       if (tsc_wires > 0)
+               tscadc_idle_config(tscadc);
 
        /* Enable the TSC module enable bit */
        ctrl = tscadc_readl(tscadc, REG_CTRL);
@@ -290,10 +291,13 @@ static int tscadc_resume(struct device *dev)
        pm_runtime_get_sync(dev);
 
        /* context restore */
-       ctrl = CNTRLREG_STEPCONFIGWRT | CNTRLREG_TSCENB |
-                       CNTRLREG_STEPID | CNTRLREG_4WIRE;
+       ctrl = CNTRLREG_STEPCONFIGWRT | CNTRLREG_STEPID;
+       if (tscadc_dev->tsc_cell != -1)
+               ctrl |= CNTRLREG_TSCENB | CNTRLREG_4WIRE;
        tscadc_writel(tscadc_dev, REG_CTRL, ctrl);
-       tscadc_idle_config(tscadc_dev);
+
+       if (tscadc_dev->tsc_cell != -1)
+               tscadc_idle_config(tscadc_dev);
        am335x_tsc_se_update(tscadc_dev);
        restore = tscadc_readl(tscadc_dev, REG_CTRL);
        tscadc_writel(tscadc_dev, REG_CTRL,