/** * omap_bandgap_write_tcold() - sets the sensor tcold * @bg_ptr - pointer to bandgap instance * @id - sensor id * @val - desired tcold value * * returns 0 on success or the proper error code */ int omap_bandgap_write_tcold(struct omap_bandgap *bg_ptr, int id, int val) { struct temp_sensor_data *ts_data; struct temp_sensor_registers *tsr; u32 t_cold; int ret; ret = omap_bandgap_validate(bg_ptr, id); if (ret) return ret; if (!OMAP_BANDGAP_HAS(bg_ptr, TALERT)) return -ENOTSUPP; ts_data = bg_ptr->conf->sensors[id].ts_data; tsr = bg_ptr->conf->sensors[id].registers; if (val > ts_data->max_temp + ts_data->hyst_val) return -EINVAL; ret = temp_to_adc_conversion(val, bg_ptr, id, &t_cold); if (ret < 0) return ret; mutex_lock(&bg_ptr->bg_mutex); temp_sensor_configure_tcold(bg_ptr, id, t_cold); mutex_unlock(&bg_ptr->bg_mutex); return 0; }
int omap4460plus_scm_set_temp_max_hyst(struct scm *scm_ptr, int id, int val) { struct omap4460plus_temp_sensor_registers *tsr; u32 t_cold; tsr = scm_ptr->registers[id]; if (val > scm_ptr->ts_data[id]->max_temp + scm_ptr->ts_data[id]->hyst_val) return -EINVAL; t_cold = temp_to_adc_conversion(val, scm_ptr, id); if (t_cold < 0) return t_cold; mutex_lock(&scm_ptr->scm_mutex); temp_sensor_configure_tcold(scm_ptr, id, t_cold); mutex_unlock(&scm_ptr->scm_mutex); return 0; }