]> Pileus Git - ~andy/linux/blobdiff - drivers/staging/omap-thermal/omap-bandgap.c
Merge tag 'fixes-non-critical' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
[~andy/linux] / drivers / staging / omap-thermal / omap-bandgap.c
index 368a2e19b2d4581e04f694df0369761011552665..8346e3450f837474ccbe0326772db66d2541e470 100644 (file)
@@ -38,6 +38,7 @@
 #include <linux/of_device.h>
 #include <linux/of_platform.h>
 #include <linux/of_irq.h>
+#include <linux/io.h>
 
 #include "omap-bandgap.h"
 
@@ -112,6 +113,11 @@ static irqreturn_t talert_irq_handler(int irq, void *data)
 
                omap_bandgap_writel(bg_ptr, ctrl, tsr->bgap_mask_ctrl);
 
+               dev_dbg(bg_ptr->dev,
+                       "%s: IRQ from %s sensor: hotevent %d coldevent %d\n",
+                       __func__, bg_ptr->conf->sensors[i].domain,
+                       t_hot, t_cold);
+
                /* read temperature */
                temp = omap_bandgap_readl(bg_ptr, tsr->temp_sensor_ctrl);
                temp &= tsr->bgap_dtemp_mask;
@@ -843,7 +849,7 @@ static struct omap_bandgap *omap_bandgap_build(struct platform_device *pdev)
 }
 
 static
-int __devinit omap_bandgap_probe(struct platform_device *pdev)
+int omap_bandgap_probe(struct platform_device *pdev)
 {
        struct omap_bandgap *bg_ptr;
        int clk_rate, ret = 0, i;
@@ -992,7 +998,7 @@ free_irqs:
 }
 
 static
-int __devexit omap_bandgap_remove(struct platform_device *pdev)
+int omap_bandgap_remove(struct platform_device *pdev)
 {
        struct omap_bandgap *bg_ptr = platform_get_drvdata(pdev);
        int i;
@@ -1059,7 +1065,6 @@ static int omap_bandgap_save_ctxt(struct omap_bandgap *bg_ptr)
 static int omap_bandgap_restore_ctxt(struct omap_bandgap *bg_ptr)
 {
        int i;
-       u32 temp = 0;
 
        for (i = 0; i < bg_ptr->conf->sensor_count; i++) {
                struct temp_sensor_registers *tsr;
@@ -1072,41 +1077,27 @@ static int omap_bandgap_restore_ctxt(struct omap_bandgap *bg_ptr)
                if (OMAP_BANDGAP_HAS(bg_ptr, COUNTER))
                        val = omap_bandgap_readl(bg_ptr, tsr->bgap_counter);
 
-               if (val == 0) {
-                       if (OMAP_BANDGAP_HAS(bg_ptr, TSHUT_CONFIG))
-                               omap_bandgap_writel(bg_ptr,
-                                       rval->tshut_threshold,
-                                                  tsr->tshut_threshold);
-                       /* Force immediate temperature measurement and update
-                        * of the DTEMP field
-                        */
-                       omap_bandgap_force_single_read(bg_ptr, i);
-
-                       if (OMAP_BANDGAP_HAS(bg_ptr, COUNTER))
-                               omap_bandgap_writel(bg_ptr, rval->bg_counter,
-                                                          tsr->bgap_counter);
-                       if (OMAP_BANDGAP_HAS(bg_ptr, MODE_CONFIG))
-                               omap_bandgap_writel(bg_ptr, rval->bg_mode_ctrl,
-                                                          tsr->bgap_mode_ctrl);
-                       if (OMAP_BANDGAP_HAS(bg_ptr, TALERT)) {
-                               omap_bandgap_writel(bg_ptr,
-                                                          rval->bg_threshold,
-                                                          tsr->bgap_threshold);
-                               omap_bandgap_writel(bg_ptr, rval->bg_ctrl,
-                                                          tsr->bgap_mask_ctrl);
-                       }
-               } else {
-                       temp = omap_bandgap_readl(bg_ptr,
-                                                 tsr->temp_sensor_ctrl);
-                       temp &= (tsr->bgap_dtemp_mask);
-                       omap_bandgap_force_single_read(bg_ptr, i);
-                       if (temp == 0 && OMAP_BANDGAP_HAS(bg_ptr, TALERT)) {
-                               temp = omap_bandgap_readl(bg_ptr,
-                                                         tsr->bgap_mask_ctrl);
-                               temp |= 1 << __ffs(tsr->mode_ctrl_mask);
-                               omap_bandgap_writel(bg_ptr, temp,
-                                                          tsr->bgap_mask_ctrl);
-                       }
+               if (OMAP_BANDGAP_HAS(bg_ptr, TSHUT_CONFIG))
+                       omap_bandgap_writel(bg_ptr,
+                               rval->tshut_threshold,
+                                          tsr->tshut_threshold);
+               /* Force immediate temperature measurement and update
+                * of the DTEMP field
+                */
+               omap_bandgap_force_single_read(bg_ptr, i);
+
+               if (OMAP_BANDGAP_HAS(bg_ptr, COUNTER))
+                       omap_bandgap_writel(bg_ptr, rval->bg_counter,
+                                                  tsr->bgap_counter);
+               if (OMAP_BANDGAP_HAS(bg_ptr, MODE_CONFIG))
+                       omap_bandgap_writel(bg_ptr, rval->bg_mode_ctrl,
+                                                  tsr->bgap_mode_ctrl);
+               if (OMAP_BANDGAP_HAS(bg_ptr, TALERT)) {
+                       omap_bandgap_writel(bg_ptr,
+                                                  rval->bg_threshold,
+                                                  tsr->bgap_threshold);
+                       omap_bandgap_writel(bg_ptr, rval->bg_ctrl,
+                                                  tsr->bgap_mask_ctrl);
                }
        }