drm: Add adv7511 encoder driver
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / mfd / ti_am335x_tscadc.c
index d4e8604..155fcc0 100644 (file)
@@ -14,7 +14,6 @@
  */
 
 #include <linux/module.h>
-#include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/err.h>
 #include <linux/io.h>
@@ -54,11 +53,11 @@ void am335x_tsc_se_set_cache(struct ti_tscadc_dev *tsadc, u32 val)
        unsigned long flags;
 
        spin_lock_irqsave(&tsadc->reg_lock, flags);
-       tsadc->reg_se_cache = val;
+       tsadc->reg_se_cache |= val;
        if (tsadc->adc_waiting)
                wake_up(&tsadc->reg_se_wait);
        else if (!tsadc->adc_in_use)
-               tscadc_writel(tsadc, REG_SE, val);
+               tscadc_writel(tsadc, REG_SE, tsadc->reg_se_cache);
 
        spin_unlock_irqrestore(&tsadc->reg_lock, flags);
 }
@@ -97,6 +96,7 @@ static void am335x_tscadc_need_adc(struct ti_tscadc_dev *tsadc)
 void am335x_tsc_se_set_once(struct ti_tscadc_dev *tsadc, u32 val)
 {
        spin_lock_irq(&tsadc->reg_lock);
+       tsadc->reg_se_cache |= val;
        am335x_tscadc_need_adc(tsadc);
 
        tscadc_writel(tsadc, REG_SE, val);