diff --git a/drivers/staging/omap-thermal/omap-bandgap.c b/drivers/staging/omap-thermal/omap-bandgap.c index e49a11509fed..963fcafc76e1 100644 --- a/drivers/staging/omap-thermal/omap-bandgap.c +++ b/drivers/staging/omap-thermal/omap-bandgap.c @@ -236,7 +236,6 @@ static irqreturn_t omap_bandgap_tshut_irq_handler(int irq, void *data) /** * omap_bandgap_adc_to_mcelsius() - converts an ADC value to mCelsius scale * @bg_ptr: struct omap_bandgap pointer - * @id: sensor id * @adc_val: value in ADC representation * @t: address where to write the resulting temperature in mCelsius * @@ -245,35 +244,34 @@ static irqreturn_t omap_bandgap_tshut_irq_handler(int irq, void *data) * The conversion table is indexed by the ADC values. */ static -int omap_bandgap_adc_to_mcelsius(struct omap_bandgap *bg_ptr, int id, +int omap_bandgap_adc_to_mcelsius(struct omap_bandgap *bg_ptr, int adc_val, int *t) { - struct temp_sensor_data *ts_data = bg_ptr->conf->sensors[id].ts_data; + struct omap_bandgap_data *conf = bg_ptr->conf; int ret = 0; /* look up for temperature in the table and return the temperature */ - if (adc_val < ts_data->adc_start_val || - adc_val > ts_data->adc_end_val) { + if (adc_val < conf->adc_start_val || adc_val > conf->adc_end_val) { ret = -ERANGE; goto exit; } - *t = bg_ptr->conf->conv_table[adc_val - ts_data->adc_start_val]; + *t = bg_ptr->conf->conv_table[adc_val - conf->adc_start_val]; exit: return ret; } static -int omap_bandgap_mcelsius_to_adc(struct omap_bandgap *bg_ptr, int i, long temp, +int omap_bandgap_mcelsius_to_adc(struct omap_bandgap *bg_ptr, long temp, int *adc) { - struct temp_sensor_data *ts_data = bg_ptr->conf->sensors[i].ts_data; + struct omap_bandgap_data *conf = bg_ptr->conf; const int *conv_table = bg_ptr->conf->conv_table; int high, low, mid, ret = 0; low = 0; - high = ts_data->adc_end_val - ts_data->adc_start_val; + high = conf->adc_end_val - conf->adc_start_val; mid = (high + low) / 2; if (temp < conv_table[low] || temp > conv_table[high]) { @@ -289,7 +287,7 @@ int omap_bandgap_mcelsius_to_adc(struct omap_bandgap *bg_ptr, int i, long temp, mid = (low + high) / 2; } - *adc = ts_data->adc_start_val + low; + *adc = conf->adc_start_val + low; exit: return ret; @@ -323,18 +321,17 @@ static int temp_sensor_unmask_interrupts(struct omap_bandgap *bg_ptr, int id, } static -int add_hyst(int adc_val, int hyst_val, struct omap_bandgap *bg_ptr, int i, - u32 *sum) +int add_hyst(int adc_val, int hyst_val, struct omap_bandgap *bg_ptr, u32 *sum) { int temp, ret; - ret = omap_bandgap_adc_to_mcelsius(bg_ptr, i, adc_val, &temp); + ret = omap_bandgap_adc_to_mcelsius(bg_ptr, adc_val, &temp); if (ret < 0) return ret; temp += hyst_val; - return omap_bandgap_mcelsius_to_adc(bg_ptr, i, temp, sum); + return omap_bandgap_mcelsius_to_adc(bg_ptr, temp, sum); } /* Talert Thot threshold. Call it only if HAS(TALERT) is set */ @@ -354,7 +351,7 @@ int temp_sensor_configure_thot(struct omap_bandgap *bg_ptr, int id, int t_hot) __ffs(tsr->threshold_tcold_mask); if (t_hot <= cold) { /* change the t_cold to t_hot - 5000 millidegrees */ - err |= add_hyst(t_hot, -ts_data->hyst_val, bg_ptr, id, &cold); + err |= add_hyst(t_hot, -ts_data->hyst_val, bg_ptr, &cold); /* write the new t_cold value */ reg_val = thresh_val & (~tsr->threshold_tcold_mask); reg_val |= cold << __ffs(tsr->threshold_tcold_mask); @@ -392,7 +389,7 @@ int temp_sensor_configure_tcold(struct omap_bandgap *bg_ptr, int id, if (t_cold >= hot) { /* change the t_hot to t_cold + 5000 millidegrees */ - err |= add_hyst(t_cold, ts_data->hyst_val, bg_ptr, id, &hot); + err |= add_hyst(t_cold, ts_data->hyst_val, bg_ptr, &hot); /* write the new t_hot value */ reg_val = thresh_val & (~tsr->threshold_thot_mask); reg_val |= hot << __ffs(tsr->threshold_thot_mask); @@ -459,7 +456,7 @@ int omap_bandgap_read_thot(struct omap_bandgap *bg_ptr, int id, temp = omap_bandgap_readl(bg_ptr, tsr->bgap_threshold); temp = (temp & tsr->threshold_thot_mask) >> __ffs(tsr->threshold_thot_mask); - ret |= omap_bandgap_adc_to_mcelsius(bg_ptr, id, temp, &temp); + ret |= omap_bandgap_adc_to_mcelsius(bg_ptr, temp, &temp); if (ret) { dev_err(bg_ptr->dev, "failed to read thot\n"); return -EIO; @@ -497,7 +494,7 @@ int omap_bandgap_write_thot(struct omap_bandgap *bg_ptr, int id, int val) if (val < ts_data->min_temp + ts_data->hyst_val) return -EINVAL; - ret = omap_bandgap_mcelsius_to_adc(bg_ptr, id, val, &t_hot); + ret = omap_bandgap_mcelsius_to_adc(bg_ptr, val, &t_hot); if (ret < 0) return ret; @@ -534,7 +531,7 @@ int omap_bandgap_read_tcold(struct omap_bandgap *bg_ptr, int id, temp = omap_bandgap_readl(bg_ptr, tsr->bgap_threshold); temp = (temp & tsr->threshold_tcold_mask) >> __ffs(tsr->threshold_tcold_mask); - ret |= omap_bandgap_adc_to_mcelsius(bg_ptr, id, temp, &temp); + ret |= omap_bandgap_adc_to_mcelsius(bg_ptr, temp, &temp); if (ret) return -EIO; @@ -570,7 +567,7 @@ int omap_bandgap_write_tcold(struct omap_bandgap *bg_ptr, int id, int val) if (val > ts_data->max_temp + ts_data->hyst_val) return -EINVAL; - ret = omap_bandgap_mcelsius_to_adc(bg_ptr, id, val, &t_cold); + ret = omap_bandgap_mcelsius_to_adc(bg_ptr, val, &t_cold); if (ret < 0) return ret; @@ -661,7 +658,7 @@ int omap_bandgap_read_temperature(struct omap_bandgap *bg_ptr, int id, temp = omap_bandgap_read_temp(bg_ptr, id); mutex_unlock(&bg_ptr->bg_mutex); - ret |= omap_bandgap_adc_to_mcelsius(bg_ptr, id, temp, &temp); + ret |= omap_bandgap_adc_to_mcelsius(bg_ptr, temp, &temp); if (ret) return -EIO; diff --git a/drivers/staging/omap-thermal/omap-bandgap.h b/drivers/staging/omap-thermal/omap-bandgap.h index 28d9104369cc..edcc9652d53f 100644 --- a/drivers/staging/omap-thermal/omap-bandgap.h +++ b/drivers/staging/omap-thermal/omap-bandgap.h @@ -166,8 +166,6 @@ struct temp_sensor_registers { * @max_temp: sensor maximum temperature * @min_temp: sensor minimum temperature * @hyst_val: temperature hysteresis considered while converting ADC values - * @adc_start_val: ADC conversion table starting value - * @adc_end_val: ADC conversion table ending value * @update_int1: update interval * @update_int2: update interval * @@ -185,8 +183,6 @@ struct temp_sensor_data { int max_temp; int min_temp; int hyst_val; - u32 adc_start_val; - u32 adc_end_val; u32 update_int1; /* not used */ u32 update_int2; /* not used */ }; @@ -325,6 +321,8 @@ struct omap_temp_sensor { * struct omap_bandgap_data - omap bandgap data configuration structure * @features: a bitwise flag set to describe the device features * @conv_table: Pointer to ADC to temperature conversion table + * @adc_start_val: ADC conversion table starting value + * @adc_end_val: ADC conversion table ending value * @fclock_name: clock name of the functional clock * @div_ck_name: clock name of the clock divisor * @sensor_count: count of temperature sensor within this bandgap device @@ -342,6 +340,8 @@ struct omap_temp_sensor { struct omap_bandgap_data { unsigned int features; const int *conv_table; + u32 adc_start_val; + u32 adc_end_val; char *fclock_name; char *div_ck_name; int sensor_count; diff --git a/drivers/staging/omap-thermal/omap4-thermal-data.c b/drivers/staging/omap-thermal/omap4-thermal-data.c index 7ec5570a21e8..88ed01446d7c 100644 --- a/drivers/staging/omap-thermal/omap4-thermal-data.c +++ b/drivers/staging/omap-thermal/omap4-thermal-data.c @@ -45,8 +45,6 @@ static struct temp_sensor_data omap4430_mpu_temp_sensor_data = { .max_temp = OMAP4430_MAX_TEMP, .min_temp = OMAP4430_MIN_TEMP, .hyst_val = OMAP4430_HYST_VAL, - .adc_start_val = OMAP4430_ADC_START_VALUE, - .adc_end_val = OMAP4430_ADC_END_VALUE, }; /* @@ -75,6 +73,8 @@ const struct omap_bandgap_data omap4430_data = { .fclock_name = "bandgap_fclk", .div_ck_name = "bandgap_fclk", .conv_table = omap4430_adc_to_temp, + .adc_start_val = OMAP4430_ADC_START_VALUE, + .adc_end_val = OMAP4430_ADC_END_VALUE, .expose_sensor = omap_thermal_expose_sensor, .remove_sensor = omap_thermal_remove_sensor, .sensors = { @@ -142,8 +142,6 @@ static struct temp_sensor_data omap4460_mpu_temp_sensor_data = { .max_temp = OMAP4460_MAX_TEMP, .min_temp = OMAP4460_MIN_TEMP, .hyst_val = OMAP4460_HYST_VAL, - .adc_start_val = OMAP4460_ADC_START_VALUE, - .adc_end_val = OMAP4460_ADC_END_VALUE, .update_int1 = 1000, .update_int2 = 2000, }; @@ -214,6 +212,8 @@ const struct omap_bandgap_data omap4460_data = { .fclock_name = "bandgap_ts_fclk", .div_ck_name = "div_ts_ck", .conv_table = omap4460_adc_to_temp, + .adc_start_val = OMAP4460_ADC_START_VALUE, + .adc_end_val = OMAP4460_ADC_END_VALUE, .expose_sensor = omap_thermal_expose_sensor, .remove_sensor = omap_thermal_remove_sensor, .sensors = { @@ -244,6 +244,8 @@ const struct omap_bandgap_data omap4470_data = { .fclock_name = "bandgap_ts_fclk", .div_ck_name = "div_ts_ck", .conv_table = omap4460_adc_to_temp, + .adc_start_val = OMAP4460_ADC_START_VALUE, + .adc_end_val = OMAP4460_ADC_END_VALUE, .expose_sensor = omap_thermal_expose_sensor, .remove_sensor = omap_thermal_remove_sensor, .sensors = { diff --git a/drivers/staging/omap-thermal/omap5-thermal-data.c b/drivers/staging/omap-thermal/omap5-thermal-data.c index 3d10704ce2eb..a48c286dde01 100644 --- a/drivers/staging/omap-thermal/omap5-thermal-data.c +++ b/drivers/staging/omap-thermal/omap5-thermal-data.c @@ -171,8 +171,6 @@ static struct temp_sensor_data omap5430_mpu_temp_sensor_data = { .max_temp = OMAP5430_MPU_MAX_TEMP, .min_temp = OMAP5430_MPU_MIN_TEMP, .hyst_val = OMAP5430_MPU_HYST_VAL, - .adc_start_val = OMAP5430_ADC_START_VALUE, - .adc_end_val = OMAP5430_ADC_END_VALUE, .update_int1 = 1000, .update_int2 = 2000, }; @@ -188,8 +186,6 @@ static struct temp_sensor_data omap5430_gpu_temp_sensor_data = { .max_temp = OMAP5430_GPU_MAX_TEMP, .min_temp = OMAP5430_GPU_MIN_TEMP, .hyst_val = OMAP5430_GPU_HYST_VAL, - .adc_start_val = OMAP5430_ADC_START_VALUE, - .adc_end_val = OMAP5430_ADC_END_VALUE, .update_int1 = 1000, .update_int2 = 2000, }; @@ -205,8 +201,6 @@ static struct temp_sensor_data omap5430_core_temp_sensor_data = { .max_temp = OMAP5430_CORE_MAX_TEMP, .min_temp = OMAP5430_CORE_MIN_TEMP, .hyst_val = OMAP5430_CORE_HYST_VAL, - .adc_start_val = OMAP5430_ADC_START_VALUE, - .adc_end_val = OMAP5430_ADC_END_VALUE, .update_int1 = 1000, .update_int2 = 2000, }; @@ -325,6 +319,8 @@ const struct omap_bandgap_data omap5430_data = { .fclock_name = "l3instr_ts_gclk_div", .div_ck_name = "l3instr_ts_gclk_div", .conv_table = omap5430_adc_to_temp, + .adc_start_val = OMAP5430_ADC_START_VALUE, + .adc_end_val = OMAP5430_ADC_END_VALUE, .expose_sensor = omap_thermal_expose_sensor, .remove_sensor = omap_thermal_remove_sensor, .sensors = {