/* * Function to allocate regfields which are common * between syscfg and memory mapped based sensors
*/ staticint st_thermal_alloc_regfields(struct st_thermal_sensor *sensor)
{ struct device *dev = sensor->dev; struct regmap *regmap = sensor->regmap; conststruct reg_field *reg_fields = sensor->cdata->reg_fields;
/* Check if sensor calibration data is already written */
ret = regmap_field_read(sensor->dcorrect, &val); if (ret) {
dev_err(dev, "failed to read calibration data\n"); return ret;
}
if (!val) { /* * Sensor calibration value not set by bootloader, * default calibration data to be used
*/
ret = regmap_field_write(sensor->dcorrect,
sensor->cdata->calibration_val); if (ret)
dev_err(dev, "failed to set calibration data\n");
}
return ret;
}
/* Callback to get temperature from HW*/ staticint st_thermal_get_temp(struct thermal_zone_device *th, int *temperature)
{ struct st_thermal_sensor *sensor = thermal_zone_device_priv(th); unsignedint temp; unsignedint overflow; int ret;
ret = regmap_field_read(sensor->overflow, &overflow); if (ret) return ret; if (overflow) return -EIO;
ret = regmap_field_read(sensor->temp_data, &temp); if (ret) return ret;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.