X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=drivers%2Fstaging%2Fomap-thermal%2Fomap-bandgap.c;h=8346e3450f837474ccbe0326772db66d2541e470;hb=2989950cea13711f0cc573c26cde8fe08a36be03;hp=368a2e19b2d4581e04f694df0369761011552665;hpb=b7e97d22113bcaafff93774e3085f5b567eaba9c;p=~andy%2Flinux diff --git a/drivers/staging/omap-thermal/omap-bandgap.c b/drivers/staging/omap-thermal/omap-bandgap.c index 368a2e19b2d..8346e3450f8 100644 --- a/drivers/staging/omap-thermal/omap-bandgap.c +++ b/drivers/staging/omap-thermal/omap-bandgap.c @@ -38,6 +38,7 @@ #include #include #include +#include #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); } }