Lines Matching full:sensor
3 * Analog Devices LTC2983 Multi-Sensor Digital Temperature Measurement System
171 container_of(_sensor, struct ltc2983_thermocouple, sensor)
174 container_of(_sensor, struct ltc2983_rtd, sensor)
177 container_of(_sensor, struct ltc2983_thermistor, sensor)
180 container_of(_sensor, struct ltc2983_diode, sensor)
183 container_of(_sensor, struct ltc2983_rsense, sensor)
186 container_of(_sensor, struct ltc2983_adc, sensor)
211 const struct ltc2983_sensor *sensor);
212 /* specifies the sensor channel */
214 /* sensor type */
219 /* raw table sensor data */
228 struct ltc2983_sensor sensor; member
235 struct ltc2983_sensor sensor; member
244 struct ltc2983_sensor sensor; member
252 struct ltc2983_sensor sensor; member
259 struct ltc2983_sensor sensor; member
264 struct ltc2983_sensor sensor; member
300 dev_err(dev, "Invalid conversion: Sensor HARD fault\n"); in __ltc2983_fault_handler()
304 dev_warn(dev, "Suspicious conversion: Sensor SOFT fault\n"); in __ltc2983_fault_handler()
311 const struct ltc2983_sensor *sensor, in __ltc2983_chan_assign_common() argument
314 u32 reg = LTC2983_CHAN_START_ADDR(sensor->chan); in __ltc2983_chan_assign_common()
317 chan_val |= LTC2983_CHAN_TYPE(sensor->type); in __ltc2983_chan_assign_common()
335 * configuring the sensor channel, we must write the number of in __ltc2983_chan_custom_sensor_assign()
349 * sensor, a steinhart sensor might have been added changing in __ltc2983_chan_custom_sensor_assign()
356 "Not space left(%d) for new custom sensor(%zu)", in __ltc2983_chan_custom_sensor_assign()
371 dev_dbg(dev, "Assign custom sensor, reg:0x%04X, off:%d, sz:%zu", in __ltc2983_chan_custom_sensor_assign()
374 /* write custom sensor table */ in __ltc2983_chan_custom_sensor_assign()
418 dev_err(dev, "No space left(%d) for new custom sensor(%zu)", in __ltc2983_custom_sensor_new()
467 * sensor will sit in a correct address without the need of filling in __ltc2983_custom_sensor_new()
499 const struct ltc2983_sensor *sensor) in ltc2983_thermocouple_assign_chan() argument
501 struct ltc2983_thermocouple *thermo = to_thermocouple(sensor); in ltc2983_thermocouple_assign_chan()
515 return __ltc2983_chan_assign_common(st, sensor, chan_val); in ltc2983_thermocouple_assign_chan()
519 const struct ltc2983_sensor *sensor) in ltc2983_rtd_assign_chan() argument
521 struct ltc2983_rtd *rtd = to_rtd(sensor); in ltc2983_rtd_assign_chan()
537 return __ltc2983_chan_assign_common(st, sensor, chan_val); in ltc2983_rtd_assign_chan()
541 const struct ltc2983_sensor *sensor) in ltc2983_thermistor_assign_chan() argument
543 struct ltc2983_thermistor *thermistor = to_thermistor(sensor); in ltc2983_thermistor_assign_chan()
560 return __ltc2983_chan_assign_common(st, sensor, chan_val); in ltc2983_thermistor_assign_chan()
564 const struct ltc2983_sensor *sensor) in ltc2983_diode_assign_chan() argument
566 struct ltc2983_diode *diode = to_diode(sensor); in ltc2983_diode_assign_chan()
573 return __ltc2983_chan_assign_common(st, sensor, chan_val); in ltc2983_diode_assign_chan()
577 const struct ltc2983_sensor *sensor) in ltc2983_r_sense_assign_chan() argument
579 struct ltc2983_rsense *rsense = to_rsense(sensor); in ltc2983_r_sense_assign_chan()
584 return __ltc2983_chan_assign_common(st, sensor, chan_val); in ltc2983_r_sense_assign_chan()
588 const struct ltc2983_sensor *sensor) in ltc2983_adc_assign_chan() argument
590 struct ltc2983_adc *adc = to_adc(sensor); in ltc2983_adc_assign_chan()
595 return __ltc2983_chan_assign_common(st, sensor, chan_val); in ltc2983_adc_assign_chan()
601 const struct ltc2983_sensor *sensor) in ltc2983_thermocouple_new() argument
615 ret = of_property_read_u32(child, "adi,sensor-oc-current-microamp", in ltc2983_thermocouple_new()
645 sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { in ltc2983_thermocouple_new()
648 sensor->chan); in ltc2983_thermocouple_new()
669 /* check custom sensor */ in ltc2983_thermocouple_new()
670 if (sensor->type == LTC2983_SENSOR_THERMOCOUPLE_CUSTOM) { in ltc2983_thermocouple_new()
683 thermo->sensor.fault_handler = ltc2983_thermocouple_fault_handler; in ltc2983_thermocouple_new()
684 thermo->sensor.assign_chan = ltc2983_thermocouple_assign_chan; in ltc2983_thermocouple_new()
687 return &thermo->sensor; in ltc2983_thermocouple_new()
692 const struct ltc2983_sensor *sensor) in ltc2983_rtd_new() argument
780 if (sensor->chan < min || sensor->chan > max) { in ltc2983_rtd_new()
782 sensor->chan); in ltc2983_rtd_new()
789 if (sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { in ltc2983_rtd_new()
791 "Invalid chann:%d for RTD", sensor->chan); in ltc2983_rtd_new()
798 /* check custom sensor */ in ltc2983_rtd_new()
799 if (sensor->type == LTC2983_SENSOR_RTD_CUSTOM) { in ltc2983_rtd_new()
810 rtd->sensor.fault_handler = ltc2983_common_fault_handler; in ltc2983_rtd_new()
811 rtd->sensor.assign_chan = ltc2983_rtd_assign_chan; in ltc2983_rtd_new()
856 return &rtd->sensor; in ltc2983_rtd_new()
865 const struct ltc2983_sensor *sensor) in ltc2983_thermistor_new() argument
902 sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { in ltc2983_thermistor_new()
905 sensor->chan); in ltc2983_thermistor_new()
910 /* check custom sensor */ in ltc2983_thermistor_new()
911 if (sensor->type >= LTC2983_SENSOR_THERMISTOR_STEINHART) { in ltc2983_thermistor_new()
915 if (sensor->type == LTC2983_SENSOR_THERMISTOR_STEINHART) { in ltc2983_thermistor_new()
932 thermistor->sensor.fault_handler = ltc2983_common_fault_handler; in ltc2983_thermistor_new()
933 thermistor->sensor.assign_chan = ltc2983_thermistor_assign_chan; in ltc2983_thermistor_new()
939 if (sensor->type >= LTC2983_SENSOR_THERMISTOR_STEINHART) in ltc2983_thermistor_new()
949 if (sensor->type >= in ltc2983_thermistor_new()
1001 return &thermistor->sensor; in ltc2983_thermistor_new()
1010 const struct ltc2983_sensor *sensor) in ltc2983_diode_new() argument
1031 sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { in ltc2983_diode_new()
1034 sensor->chan); in ltc2983_diode_new()
1038 diode->sensor.fault_handler = ltc2983_common_fault_handler; in ltc2983_diode_new()
1039 diode->sensor.assign_chan = ltc2983_diode_assign_chan; in ltc2983_diode_new()
1070 return &diode->sensor; in ltc2983_diode_new()
1075 const struct ltc2983_sensor *sensor) in ltc2983_r_sense_new() argument
1086 if (sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { in ltc2983_r_sense_new()
1088 sensor->chan); in ltc2983_r_sense_new()
1106 rsense->sensor.assign_chan = ltc2983_r_sense_assign_chan; in ltc2983_r_sense_new()
1108 return &rsense->sensor; in ltc2983_r_sense_new()
1113 const struct ltc2983_sensor *sensor) in ltc2983_adc_new() argument
1125 sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { in ltc2983_adc_new()
1127 sensor->chan); in ltc2983_adc_new()
1131 adc->sensor.assign_chan = ltc2983_adc_assign_chan; in ltc2983_adc_new()
1132 adc->sensor.fault_handler = ltc2983_common_fault_handler; in ltc2983_adc_new()
1134 return &adc->sensor; in ltc2983_adc_new()
1138 const struct ltc2983_sensor *sensor, int *val) in ltc2983_chan_read() argument
1145 start_conversion |= LTC2983_STATUS_CHAN_SEL(sensor->chan); in ltc2983_chan_read()
1147 sensor->chan, start_conversion); in ltc2983_chan_read()
1157 * Depending on the sensor configuration, there are 2/3 conversions in ltc2983_chan_read()
1168 ret = regmap_bulk_read(st->regmap, LTC2983_CHAN_RES_ADDR(sensor->chan), in ltc2983_chan_read()
1180 ret = sensor->fault_handler(st, *val); in ltc2983_chan_read()
1283 struct ltc2983_sensor sensor; in ltc2983_parse_dt() local
1285 ret = of_property_read_u32(child, "reg", &sensor.chan); in ltc2983_parse_dt()
1292 if (sensor.chan < LTC2983_MIN_CHANNELS_NR || in ltc2983_parse_dt()
1293 sensor.chan > LTC2983_MAX_CHANNELS_NR) { in ltc2983_parse_dt()
1296 "chan:%d must be from 1 to 20\n", sensor.chan); in ltc2983_parse_dt()
1298 } else if (channel_avail_mask & BIT(sensor.chan)) { in ltc2983_parse_dt()
1300 dev_err(dev, "chan:%d already in use\n", sensor.chan); in ltc2983_parse_dt()
1304 ret = of_property_read_u32(child, "adi,sensor-type", in ltc2983_parse_dt()
1305 &sensor.type); in ltc2983_parse_dt()
1308 "adi,sensor-type property must given for child nodes\n"); in ltc2983_parse_dt()
1312 dev_dbg(dev, "Create new sensor, type %u, chann %u", in ltc2983_parse_dt()
1313 sensor.type, in ltc2983_parse_dt()
1314 sensor.chan); in ltc2983_parse_dt()
1316 if (sensor.type >= LTC2983_SENSOR_THERMOCOUPLE && in ltc2983_parse_dt()
1317 sensor.type <= LTC2983_SENSOR_THERMOCOUPLE_CUSTOM) { in ltc2983_parse_dt()
1319 &sensor); in ltc2983_parse_dt()
1320 } else if (sensor.type >= LTC2983_SENSOR_RTD && in ltc2983_parse_dt()
1321 sensor.type <= LTC2983_SENSOR_RTD_CUSTOM) { in ltc2983_parse_dt()
1322 st->sensors[chan] = ltc2983_rtd_new(child, st, &sensor); in ltc2983_parse_dt()
1323 } else if (sensor.type >= LTC2983_SENSOR_THERMISTOR && in ltc2983_parse_dt()
1324 sensor.type <= LTC2983_SENSOR_THERMISTOR_CUSTOM) { in ltc2983_parse_dt()
1326 &sensor); in ltc2983_parse_dt()
1327 } else if (sensor.type == LTC2983_SENSOR_DIODE) { in ltc2983_parse_dt()
1329 &sensor); in ltc2983_parse_dt()
1330 } else if (sensor.type == LTC2983_SENSOR_SENSE_RESISTOR) { in ltc2983_parse_dt()
1332 &sensor); in ltc2983_parse_dt()
1335 } else if (sensor.type == LTC2983_SENSOR_DIRECT_ADC) { in ltc2983_parse_dt()
1336 st->sensors[chan] = ltc2983_adc_new(child, st, &sensor); in ltc2983_parse_dt()
1338 dev_err(dev, "Unknown sensor type %d\n", sensor.type); in ltc2983_parse_dt()
1344 dev_err(dev, "Failed to create sensor %ld", in ltc2983_parse_dt()
1349 /* set generic sensor parameters */ in ltc2983_parse_dt()
1350 st->sensors[chan]->chan = sensor.chan; in ltc2983_parse_dt()
1351 st->sensors[chan]->type = sensor.type; in ltc2983_parse_dt()
1353 channel_avail_mask |= BIT(sensor.chan); in ltc2983_parse_dt()
1423 * reference the sensor given the iio_chan_spec in ltc2983_setup()