]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/mfd/ti_am335x_tscadc.c
mfd: ti_am335x_tscadc: Restore clock divider on resume
[karo-tx-linux.git] / drivers / mfd / ti_am335x_tscadc.c
index baaf5a8123bb8eba1aadffda901238acce2a9a98..a3685d6ef67421b70af1928144f1820af5854648 100644 (file)
@@ -95,7 +95,7 @@ static        int ti_tscadc_probe(struct platform_device *pdev)
        const __be32            *cur;
        u32                     val;
        int                     err, ctrl;
-       int                     clk_value, clock_rate;
+       int                     clock_rate;
        int                     tsc_wires = 0, adc_channels = 0, total_channels;
        int                     readouts = 0;
 
@@ -196,11 +196,11 @@ static    int ti_tscadc_probe(struct platform_device *pdev)
        }
        clock_rate = clk_get_rate(clk);
        clk_put(clk);
-       clk_value = clock_rate / ADC_CLK;
+       tscadc->clk_div = clock_rate / ADC_CLK;
 
        /* TSCADC_CLKDIV needs to be configured to the value minus 1 */
-       clk_value = clk_value - 1;
-       tscadc_writel(tscadc, REG_CLKDIV, clk_value);
+       tscadc->clk_div--;
+       tscadc_writel(tscadc, REG_CLKDIV, tscadc->clk_div);
 
        /* Set the control register bits */
        ctrl = CNTRLREG_STEPCONFIGWRT |
@@ -303,6 +303,8 @@ static int tscadc_resume(struct device *dev)
        tscadc_writel(tscadc_dev, REG_CTRL,
                        (restore | CNTRLREG_TSCSSENB));
 
+       tscadc_writel(tscadc_dev, REG_CLKDIV, tscadc_dev->clk_div);
+
        return 0;
 }