Lines Matching full:sensor
3 * Analog Devices LTC2983 Multi-Sensor Digital Temperature Measurement System
173 container_of(_sensor, struct ltc2983_thermocouple, sensor)
176 container_of(_sensor, struct ltc2983_rtd, sensor)
179 container_of(_sensor, struct ltc2983_thermistor, sensor)
182 container_of(_sensor, struct ltc2983_diode, sensor)
185 container_of(_sensor, struct ltc2983_rsense, sensor)
188 container_of(_sensor, struct ltc2983_adc, sensor)
213 const struct ltc2983_sensor *sensor);
214 /* specifies the sensor channel */
216 /* sensor type */
221 /* raw table sensor data */
230 struct ltc2983_sensor sensor; member
237 struct ltc2983_sensor sensor; member
246 struct ltc2983_sensor sensor; member
254 struct ltc2983_sensor sensor; member
261 struct ltc2983_sensor sensor; member
266 struct ltc2983_sensor sensor; member
302 dev_err(dev, "Invalid conversion: Sensor HARD fault\n"); in __ltc2983_fault_handler()
306 dev_warn(dev, "Suspicious conversion: Sensor SOFT fault\n"); in __ltc2983_fault_handler()
313 const struct ltc2983_sensor *sensor, in __ltc2983_chan_assign_common() argument
316 u32 reg = LTC2983_CHAN_START_ADDR(sensor->chan); in __ltc2983_chan_assign_common()
319 chan_val |= LTC2983_CHAN_TYPE(sensor->type); in __ltc2983_chan_assign_common()
337 * configuring the sensor channel, we must write the number of in __ltc2983_chan_custom_sensor_assign()
351 * sensor, a steinhart sensor might have been added changing in __ltc2983_chan_custom_sensor_assign()
358 "Not space left(%d) for new custom sensor(%zu)", in __ltc2983_chan_custom_sensor_assign()
373 dev_dbg(dev, "Assign custom sensor, reg:0x%04X, off:%d, sz:%zu", in __ltc2983_chan_custom_sensor_assign()
376 /* write custom sensor table */ in __ltc2983_chan_custom_sensor_assign()
420 dev_err(dev, "No space left(%d) for new custom sensor(%zu)", in __ltc2983_custom_sensor_new()
469 * sensor will sit in a correct address without the need of filling in __ltc2983_custom_sensor_new()
501 const struct ltc2983_sensor *sensor) in ltc2983_thermocouple_assign_chan() argument
503 struct ltc2983_thermocouple *thermo = to_thermocouple(sensor); in ltc2983_thermocouple_assign_chan()
517 return __ltc2983_chan_assign_common(st, sensor, chan_val); in ltc2983_thermocouple_assign_chan()
521 const struct ltc2983_sensor *sensor) in ltc2983_rtd_assign_chan() argument
523 struct ltc2983_rtd *rtd = to_rtd(sensor); in ltc2983_rtd_assign_chan()
539 return __ltc2983_chan_assign_common(st, sensor, chan_val); in ltc2983_rtd_assign_chan()
543 const struct ltc2983_sensor *sensor) in ltc2983_thermistor_assign_chan() argument
545 struct ltc2983_thermistor *thermistor = to_thermistor(sensor); in ltc2983_thermistor_assign_chan()
562 return __ltc2983_chan_assign_common(st, sensor, chan_val); in ltc2983_thermistor_assign_chan()
566 const struct ltc2983_sensor *sensor) in ltc2983_diode_assign_chan() argument
568 struct ltc2983_diode *diode = to_diode(sensor); in ltc2983_diode_assign_chan()
575 return __ltc2983_chan_assign_common(st, sensor, chan_val); in ltc2983_diode_assign_chan()
579 const struct ltc2983_sensor *sensor) in ltc2983_r_sense_assign_chan() argument
581 struct ltc2983_rsense *rsense = to_rsense(sensor); in ltc2983_r_sense_assign_chan()
586 return __ltc2983_chan_assign_common(st, sensor, chan_val); in ltc2983_r_sense_assign_chan()
590 const struct ltc2983_sensor *sensor) in ltc2983_adc_assign_chan() argument
592 struct ltc2983_adc *adc = to_adc(sensor); in ltc2983_adc_assign_chan()
597 return __ltc2983_chan_assign_common(st, sensor, chan_val); in ltc2983_adc_assign_chan()
603 const struct ltc2983_sensor *sensor) in ltc2983_thermocouple_new() argument
617 ret = of_property_read_u32(child, "adi,sensor-oc-current-microamp", in ltc2983_thermocouple_new()
647 sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { in ltc2983_thermocouple_new()
650 sensor->chan); in ltc2983_thermocouple_new()
671 /* check custom sensor */ in ltc2983_thermocouple_new()
672 if (sensor->type == LTC2983_SENSOR_THERMOCOUPLE_CUSTOM) { in ltc2983_thermocouple_new()
685 thermo->sensor.fault_handler = ltc2983_thermocouple_fault_handler; in ltc2983_thermocouple_new()
686 thermo->sensor.assign_chan = ltc2983_thermocouple_assign_chan; in ltc2983_thermocouple_new()
689 return &thermo->sensor; in ltc2983_thermocouple_new()
694 const struct ltc2983_sensor *sensor) in ltc2983_rtd_new() argument
782 if (sensor->chan < min || sensor->chan > max) { in ltc2983_rtd_new()
784 sensor->chan); in ltc2983_rtd_new()
791 if (sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { in ltc2983_rtd_new()
793 "Invalid chann:%d for RTD", sensor->chan); in ltc2983_rtd_new()
800 /* check custom sensor */ in ltc2983_rtd_new()
801 if (sensor->type == LTC2983_SENSOR_RTD_CUSTOM) { in ltc2983_rtd_new()
812 rtd->sensor.fault_handler = ltc2983_common_fault_handler; in ltc2983_rtd_new()
813 rtd->sensor.assign_chan = ltc2983_rtd_assign_chan; in ltc2983_rtd_new()
858 return &rtd->sensor; in ltc2983_rtd_new()
867 const struct ltc2983_sensor *sensor) in ltc2983_thermistor_new() argument
904 sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { in ltc2983_thermistor_new()
907 sensor->chan); in ltc2983_thermistor_new()
912 /* check custom sensor */ in ltc2983_thermistor_new()
913 if (sensor->type >= LTC2983_SENSOR_THERMISTOR_STEINHART) { in ltc2983_thermistor_new()
917 if (sensor->type == LTC2983_SENSOR_THERMISTOR_STEINHART) { in ltc2983_thermistor_new()
934 thermistor->sensor.fault_handler = ltc2983_common_fault_handler; in ltc2983_thermistor_new()
935 thermistor->sensor.assign_chan = ltc2983_thermistor_assign_chan; in ltc2983_thermistor_new()
941 if (sensor->type >= LTC2983_SENSOR_THERMISTOR_STEINHART) in ltc2983_thermistor_new()
951 if (sensor->type >= in ltc2983_thermistor_new()
1003 return &thermistor->sensor; in ltc2983_thermistor_new()
1012 const struct ltc2983_sensor *sensor) in ltc2983_diode_new() argument
1033 sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { in ltc2983_diode_new()
1036 sensor->chan); in ltc2983_diode_new()
1040 diode->sensor.fault_handler = ltc2983_common_fault_handler; in ltc2983_diode_new()
1041 diode->sensor.assign_chan = ltc2983_diode_assign_chan; in ltc2983_diode_new()
1072 return &diode->sensor; in ltc2983_diode_new()
1077 const struct ltc2983_sensor *sensor) in ltc2983_r_sense_new() argument
1088 if (sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { in ltc2983_r_sense_new()
1090 sensor->chan); in ltc2983_r_sense_new()
1108 rsense->sensor.assign_chan = ltc2983_r_sense_assign_chan; in ltc2983_r_sense_new()
1110 return &rsense->sensor; in ltc2983_r_sense_new()
1115 const struct ltc2983_sensor *sensor) in ltc2983_adc_new() argument
1127 sensor->chan < LTC2983_DIFFERENTIAL_CHAN_MIN) { in ltc2983_adc_new()
1129 sensor->chan); in ltc2983_adc_new()
1133 adc->sensor.assign_chan = ltc2983_adc_assign_chan; in ltc2983_adc_new()
1134 adc->sensor.fault_handler = ltc2983_common_fault_handler; in ltc2983_adc_new()
1136 return &adc->sensor; in ltc2983_adc_new()
1140 const struct ltc2983_sensor *sensor, int *val) in ltc2983_chan_read() argument
1147 start_conversion |= LTC2983_STATUS_CHAN_SEL(sensor->chan); in ltc2983_chan_read()
1149 sensor->chan, start_conversion); in ltc2983_chan_read()
1159 * Depending on the sensor configuration, there are 2/3 conversions in ltc2983_chan_read()
1170 ret = regmap_bulk_read(st->regmap, LTC2983_CHAN_RES_ADDR(sensor->chan), in ltc2983_chan_read()
1182 ret = sensor->fault_handler(st, *val); in ltc2983_chan_read()
1285 struct ltc2983_sensor sensor; in ltc2983_parse_dt() local
1287 ret = of_property_read_u32(child, "reg", &sensor.chan); in ltc2983_parse_dt()
1294 if (sensor.chan < LTC2983_MIN_CHANNELS_NR || in ltc2983_parse_dt()
1295 sensor.chan > LTC2983_MAX_CHANNELS_NR) { in ltc2983_parse_dt()
1298 "chan:%d must be from 1 to 20\n", sensor.chan); in ltc2983_parse_dt()
1300 } else if (channel_avail_mask & BIT(sensor.chan)) { in ltc2983_parse_dt()
1302 dev_err(dev, "chan:%d already in use\n", sensor.chan); in ltc2983_parse_dt()
1306 ret = of_property_read_u32(child, "adi,sensor-type", in ltc2983_parse_dt()
1307 &sensor.type); in ltc2983_parse_dt()
1310 "adi,sensor-type property must given for child nodes\n"); in ltc2983_parse_dt()
1314 dev_dbg(dev, "Create new sensor, type %u, chann %u", in ltc2983_parse_dt()
1315 sensor.type, in ltc2983_parse_dt()
1316 sensor.chan); in ltc2983_parse_dt()
1318 if (sensor.type >= LTC2983_SENSOR_THERMOCOUPLE && in ltc2983_parse_dt()
1319 sensor.type <= LTC2983_SENSOR_THERMOCOUPLE_CUSTOM) { in ltc2983_parse_dt()
1321 &sensor); in ltc2983_parse_dt()
1322 } else if (sensor.type >= LTC2983_SENSOR_RTD && in ltc2983_parse_dt()
1323 sensor.type <= LTC2983_SENSOR_RTD_CUSTOM) { in ltc2983_parse_dt()
1324 st->sensors[chan] = ltc2983_rtd_new(child, st, &sensor); in ltc2983_parse_dt()
1325 } else if (sensor.type >= LTC2983_SENSOR_THERMISTOR && in ltc2983_parse_dt()
1326 sensor.type <= LTC2983_SENSOR_THERMISTOR_CUSTOM) { in ltc2983_parse_dt()
1328 &sensor); in ltc2983_parse_dt()
1329 } else if (sensor.type == LTC2983_SENSOR_DIODE) { in ltc2983_parse_dt()
1331 &sensor); in ltc2983_parse_dt()
1332 } else if (sensor.type == LTC2983_SENSOR_SENSE_RESISTOR) { in ltc2983_parse_dt()
1334 &sensor); in ltc2983_parse_dt()
1337 } else if (sensor.type == LTC2983_SENSOR_DIRECT_ADC) { in ltc2983_parse_dt()
1338 st->sensors[chan] = ltc2983_adc_new(child, st, &sensor); in ltc2983_parse_dt()
1340 dev_err(dev, "Unknown sensor type %d\n", sensor.type); in ltc2983_parse_dt()
1346 dev_err(dev, "Failed to create sensor %ld", in ltc2983_parse_dt()
1351 /* set generic sensor parameters */ in ltc2983_parse_dt()
1352 st->sensors[chan]->chan = sensor.chan; in ltc2983_parse_dt()
1353 st->sensors[chan]->type = sensor.type; in ltc2983_parse_dt()
1355 channel_avail_mask |= BIT(sensor.chan); in ltc2983_parse_dt()
1424 * reference the sensor given the iio_chan_spec in ltc2983_setup()