static void rk30_tsadc_get(unsigned int chn, int *temp, int *code) { *temp = 0; *code = 0; if (!g_dev || chn > 1) return; mutex_lock(&tsadc_mutex); clk_enable(g_dev->pclk); clk_enable(g_dev->clk); msleep(10); tsadc_writel(0, TSADC_CTRL); tsadc_writel(TSADC_CTRL_POWER_UP | TSADC_CTRL_CH(chn), TSADC_CTRL); msleep(10); if ((tsadc_readl(TSADC_STAS) & TSADC_STAS_BUSY_MASK) != TSADC_STAS_BUSY) { int i; *code = tsadc_readl(TSADC_DATA) & TSADC_DATA_MASK; for (i = 0; i < ARRAY_SIZE(table) - 1; i++) { if ((*code) <= table[i].code && (*code) > table[i + 1].code) { *temp = table[i].temp + (table[i + 1].temp - table[i].temp) * (table[i].code - (*code)) / (table[i].code - table[i + 1].code); } } } tsadc_writel(0, TSADC_CTRL); msleep(10); clk_disable(g_dev->clk); clk_disable(g_dev->pclk); mutex_unlock(&tsadc_mutex); }
static void rockchip_tsadc_get(int chn, int *temp, int *code) { int i; *temp = 0; *code = 0; if (!g_dev || chn > 4){ *temp = INVALID_TEMP; return ; } #if 0 mutex_lock(&tsadc_mutex); clk_enable(g_dev->pclk); clk_enable(g_dev->clk); msleep(10); tsadc_writel(0, TSADC_USER_CON); tsadc_writel(TSADC_CTRL_POWER_UP | TSADC_CTRL_CH(chn), TSADC_USER_CON); msleep(20); if ((tsadc_readl(TSADC_USER_CON) & TSADC_STAS_BUSY_MASK) != TSADC_STAS_BUSY) { *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) { *temp = table[i].temp + (table[i + 1].temp - table[i].temp) * (table[i].code - (*code)) / (table[i].code - table[i + 1].code); } } } tsadc_writel(0, TSADC_USER_CON); clk_disable(g_dev->clk); clk_disable(g_dev->pclk); mutex_unlock(&tsadc_mutex); #else *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) *temp = table[i].temp + (table[i + 1].temp - table[i].temp) * (table[i].code - (*code)) / (table[i].code - table[i + 1].code); } #endif }