forked from Minki/linux
cleanup ti-soc-thermal
Simplify code by removing goto's where they point to simple return. Avoid confusing |= on error values. Correct whitespace. Signed-off-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
This commit is contained in:
parent
db6cb88b8f
commit
e34238bf98
@ -103,19 +103,15 @@ do { \
|
|||||||
*/
|
*/
|
||||||
static int ti_bandgap_power(struct ti_bandgap *bgp, bool on)
|
static int ti_bandgap_power(struct ti_bandgap *bgp, bool on)
|
||||||
{
|
{
|
||||||
int i, ret = 0;
|
int i;
|
||||||
|
|
||||||
if (!TI_BANDGAP_HAS(bgp, POWER_SWITCH)) {
|
if (!TI_BANDGAP_HAS(bgp, POWER_SWITCH))
|
||||||
ret = -ENOTSUPP;
|
return -ENOTSUPP;
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < bgp->conf->sensor_count; i++)
|
for (i = 0; i < bgp->conf->sensor_count; i++)
|
||||||
/* active on 0 */
|
/* active on 0 */
|
||||||
RMW_BITS(bgp, i, temp_sensor_ctrl, bgap_tempsoff_mask, !on);
|
RMW_BITS(bgp, i, temp_sensor_ctrl, bgap_tempsoff_mask, !on);
|
||||||
|
return 0;
|
||||||
exit:
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -263,18 +259,13 @@ static
|
|||||||
int ti_bandgap_adc_to_mcelsius(struct ti_bandgap *bgp, int adc_val, int *t)
|
int ti_bandgap_adc_to_mcelsius(struct ti_bandgap *bgp, int adc_val, int *t)
|
||||||
{
|
{
|
||||||
const struct ti_bandgap_data *conf = bgp->conf;
|
const struct ti_bandgap_data *conf = bgp->conf;
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
/* look up for temperature in the table and return the temperature */
|
/* look up for temperature in the table and return the temperature */
|
||||||
if (adc_val < conf->adc_start_val || adc_val > conf->adc_end_val) {
|
if (adc_val < conf->adc_start_val || adc_val > conf->adc_end_val)
|
||||||
ret = -ERANGE;
|
return -ERANGE;
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
*t = bgp->conf->conv_table[adc_val - conf->adc_start_val];
|
*t = bgp->conf->conv_table[adc_val - conf->adc_start_val];
|
||||||
|
return 0;
|
||||||
exit:
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -295,16 +286,14 @@ int ti_bandgap_mcelsius_to_adc(struct ti_bandgap *bgp, long temp, int *adc)
|
|||||||
{
|
{
|
||||||
const struct ti_bandgap_data *conf = bgp->conf;
|
const struct ti_bandgap_data *conf = bgp->conf;
|
||||||
const int *conv_table = bgp->conf->conv_table;
|
const int *conv_table = bgp->conf->conv_table;
|
||||||
int high, low, mid, ret = 0;
|
int high, low, mid;
|
||||||
|
|
||||||
low = 0;
|
low = 0;
|
||||||
high = conf->adc_end_val - conf->adc_start_val;
|
high = conf->adc_end_val - conf->adc_start_val;
|
||||||
mid = (high + low) / 2;
|
mid = (high + low) / 2;
|
||||||
|
|
||||||
if (temp < conv_table[low] || temp > conv_table[high]) {
|
if (temp < conv_table[low] || temp > conv_table[high])
|
||||||
ret = -ERANGE;
|
return -ERANGE;
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (low < high) {
|
while (low < high) {
|
||||||
if (temp < conv_table[mid])
|
if (temp < conv_table[mid])
|
||||||
@ -315,9 +304,7 @@ int ti_bandgap_mcelsius_to_adc(struct ti_bandgap *bgp, long temp, int *adc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
*adc = conf->adc_start_val + low;
|
*adc = conf->adc_start_val + low;
|
||||||
|
return 0;
|
||||||
exit:
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -343,13 +330,11 @@ int ti_bandgap_add_hyst(struct ti_bandgap *bgp, int adc_val, int hyst_val,
|
|||||||
*/
|
*/
|
||||||
ret = ti_bandgap_adc_to_mcelsius(bgp, adc_val, &temp);
|
ret = ti_bandgap_adc_to_mcelsius(bgp, adc_val, &temp);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto exit;
|
return ret;
|
||||||
|
|
||||||
temp += hyst_val;
|
temp += hyst_val;
|
||||||
|
|
||||||
ret = ti_bandgap_mcelsius_to_adc(bgp, temp, sum);
|
ret = ti_bandgap_mcelsius_to_adc(bgp, temp, sum);
|
||||||
|
|
||||||
exit:
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -468,22 +453,18 @@ exit:
|
|||||||
*/
|
*/
|
||||||
static inline int ti_bandgap_validate(struct ti_bandgap *bgp, int id)
|
static inline int ti_bandgap_validate(struct ti_bandgap *bgp, int id)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
if (!bgp || IS_ERR(bgp)) {
|
if (!bgp || IS_ERR(bgp)) {
|
||||||
pr_err("%s: invalid bandgap pointer\n", __func__);
|
pr_err("%s: invalid bandgap pointer\n", __func__);
|
||||||
ret = -EINVAL;
|
return -EINVAL;
|
||||||
goto exit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((id < 0) || (id >= bgp->conf->sensor_count)) {
|
if ((id < 0) || (id >= bgp->conf->sensor_count)) {
|
||||||
dev_err(bgp->dev, "%s: sensor id out of range (%d)\n",
|
dev_err(bgp->dev, "%s: sensor id out of range (%d)\n",
|
||||||
__func__, id);
|
__func__, id);
|
||||||
ret = -ERANGE;
|
return -ERANGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
exit:
|
return 0;
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -511,12 +492,10 @@ static int _ti_bandgap_write_threshold(struct ti_bandgap *bgp, int id, int val,
|
|||||||
|
|
||||||
ret = ti_bandgap_validate(bgp, id);
|
ret = ti_bandgap_validate(bgp, id);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto exit;
|
return ret;
|
||||||
|
|
||||||
if (!TI_BANDGAP_HAS(bgp, TALERT)) {
|
if (!TI_BANDGAP_HAS(bgp, TALERT))
|
||||||
ret = -ENOTSUPP;
|
return -ENOTSUPP;
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
ts_data = bgp->conf->sensors[id].ts_data;
|
ts_data = bgp->conf->sensors[id].ts_data;
|
||||||
tsr = bgp->conf->sensors[id].registers;
|
tsr = bgp->conf->sensors[id].registers;
|
||||||
@ -529,17 +508,15 @@ static int _ti_bandgap_write_threshold(struct ti_bandgap *bgp, int id, int val,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
goto exit;
|
return ret;
|
||||||
|
|
||||||
ret = ti_bandgap_mcelsius_to_adc(bgp, val, &adc_val);
|
ret = ti_bandgap_mcelsius_to_adc(bgp, val, &adc_val);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto exit;
|
return ret;
|
||||||
|
|
||||||
spin_lock(&bgp->lock);
|
spin_lock(&bgp->lock);
|
||||||
ret = ti_bandgap_update_alert_threshold(bgp, id, adc_val, hot);
|
ret = ti_bandgap_update_alert_threshold(bgp, id, adc_val, hot);
|
||||||
spin_unlock(&bgp->lock);
|
spin_unlock(&bgp->lock);
|
||||||
|
|
||||||
exit:
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -582,7 +559,7 @@ static int _ti_bandgap_read_threshold(struct ti_bandgap *bgp, int id,
|
|||||||
|
|
||||||
temp = ti_bandgap_readl(bgp, tsr->bgap_threshold);
|
temp = ti_bandgap_readl(bgp, tsr->bgap_threshold);
|
||||||
temp = (temp & mask) >> __ffs(mask);
|
temp = (temp & mask) >> __ffs(mask);
|
||||||
ret |= ti_bandgap_adc_to_mcelsius(bgp, temp, &temp);
|
ret = ti_bandgap_adc_to_mcelsius(bgp, temp, &temp);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(bgp->dev, "failed to read thot\n");
|
dev_err(bgp->dev, "failed to read thot\n");
|
||||||
ret = -EIO;
|
ret = -EIO;
|
||||||
@ -856,7 +833,7 @@ int ti_bandgap_read_temperature(struct ti_bandgap *bgp, int id,
|
|||||||
temp = ti_bandgap_read_temp(bgp, id);
|
temp = ti_bandgap_read_temp(bgp, id);
|
||||||
spin_unlock(&bgp->lock);
|
spin_unlock(&bgp->lock);
|
||||||
|
|
||||||
ret |= ti_bandgap_adc_to_mcelsius(bgp, temp, &temp);
|
ret = ti_bandgap_adc_to_mcelsius(bgp, temp, &temp);
|
||||||
if (ret)
|
if (ret)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
@ -1220,11 +1197,10 @@ int ti_bandgap_probe(struct platform_device *pdev)
|
|||||||
goto free_irqs;
|
goto free_irqs;
|
||||||
}
|
}
|
||||||
|
|
||||||
bgp->div_clk = clk_get(NULL, bgp->conf->div_ck_name);
|
bgp->div_clk = clk_get(NULL, bgp->conf->div_ck_name);
|
||||||
ret = IS_ERR(bgp->div_clk);
|
ret = IS_ERR(bgp->div_clk);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(&pdev->dev,
|
dev_err(&pdev->dev, "failed to request div_ts_ck clock ref\n");
|
||||||
"failed to request div_ts_ck clock ref\n");
|
|
||||||
ret = PTR_ERR(bgp->div_clk);
|
ret = PTR_ERR(bgp->div_clk);
|
||||||
goto free_irqs;
|
goto free_irqs;
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ static inline int ti_thermal_hotspot_temperature(int t, int s, int c)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* thermal zone ops */
|
/* thermal zone ops */
|
||||||
/* Get temperature callback function for thermal zone*/
|
/* Get temperature callback function for thermal zone */
|
||||||
static inline int __ti_thermal_get_temp(void *devdata, long *temp)
|
static inline int __ti_thermal_get_temp(void *devdata, long *temp)
|
||||||
{
|
{
|
||||||
struct thermal_zone_device *pcb_tz = NULL;
|
struct thermal_zone_device *pcb_tz = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user