UPSTREAM: usb: dwc3: omap: use request_threaded_irq()
[firefly-linux-kernel-4.4.55.git] / drivers / hwmon / rockchip_tsadc.c
index b0d351e170ad0849b6f862ea6244d1dd3a93e980..22691294087cd3dc04a3ccc951ad3bfe5d75389c 100755 (executable)
@@ -194,7 +194,6 @@ void rockchip_tsadc_auto_ht_work(struct work_struct *work)
 //     printk("%s,line=%d\n", __func__,__LINE__);
 
        mutex_lock(&tsadc_mutex);
-       clk_enable(g_dev->pclk);
 
        val = tsadc_readl(TSADC_INT_PD);
        tsadc_writel(val &(~ (1 <<8) ), TSADC_INT_PD);
@@ -204,8 +203,6 @@ void rockchip_tsadc_auto_ht_work(struct work_struct *work)
                printk("rockchip tsadc is over temp . %s,line=%d\n", __func__,__LINE__);
                pm_power_off();                                 //power_off
        }
-
-       clk_disable(g_dev->pclk);
        mutex_unlock(&tsadc_mutex);
 }
 
@@ -274,10 +271,14 @@ static void rockchip_tsadc_auto_mode_set(int chn, int int_temp,
                return;
        
        mutex_lock(&tsadc_mutex);
+       
        clk_enable(g_dev->pclk);
-
+       clk_enable(g_dev->clk);
+       
+       msleep(10);
        tsadc_writel(0, TSADC_AUTO_CON);
-       tsadc_writel(1 << (4+chn), TSADC_AUTO_CON);
+       tsadc_writel(3 << (4+chn), TSADC_AUTO_CON);
+       msleep(10);
        if ((tsadc_readl(TSADC_AUTO_CON) & TSADC_AUTO_STAS_BUSY_MASK) != TSADC_AUTO_STAS_BUSY) {
                rockchip_tsadc_set_cmpn_int_vale(chn,int_temp);
                rockchip_tsadc_set_cmpn_shut_vale(chn,shut_temp),
@@ -293,11 +294,11 @@ static void rockchip_tsadc_auto_mode_set(int chn, int int_temp,
                rockchip_tsadc_set_auto_int_en(chn,int_en,shut_en);     
        }
 
+       msleep(10);
+
        ret = tsadc_readl(TSADC_AUTO_CON);
        tsadc_writel(ret | (1 <<0) , TSADC_AUTO_CON);
        
-       usleep_range(10000, 11000);
-       clk_disable(g_dev->pclk);
        mutex_unlock(&tsadc_mutex);
                
 }
@@ -346,7 +347,6 @@ static void rockchip_tsadc_get(int chn, int *temp, int *code)
 
        mutex_unlock(&tsadc_mutex);
 #else
-       clk_enable(g_dev->pclk);
        *code = tsadc_readl((TSADC_DATA0 + chn*4)) & TSADC_DATA_MASK;
        for (i = 0; i < ARRAY_SIZE(table) - 1; i++) {
                if ((*code) <= table[i].code && (*code) > table[i + 1].code)
@@ -354,7 +354,6 @@ static void rockchip_tsadc_get(int chn, int *temp, int *code)
                        - table[i].temp) * (table[i].code - (*code))
                        / (table[i].code - table[i + 1].code);
        }
-       clk_disable(g_dev->pclk);
 #endif
 }
 
@@ -464,7 +463,7 @@ int rockchip_hwmon_init(struct rockchip_temp *data)
            ret = PTR_ERR(rockchip_tsadc_data->pclk);
            return -EPERM;
        }
-       clk_prepare(rockchip_tsadc_data->pclk);
+       clk_prepare_enable(rockchip_tsadc_data->pclk);
 
        platform_set_drvdata(data->pdev, rockchip_tsadc_data);
        g_dev = rockchip_tsadc_data;