Lines Matching defs:adc_tm
241 static int adc_tm5_read(struct adc_tm5_chip *adc_tm, u16 offset, u8 *data, int len)
243 return regmap_bulk_read(adc_tm->regmap, adc_tm->base + offset, data, len);
246 static int adc_tm5_write(struct adc_tm5_chip *adc_tm, u16 offset, u8 *data, int len)
248 return regmap_bulk_write(adc_tm->regmap, adc_tm->base + offset, data, len);
251 static int adc_tm5_reg_update(struct adc_tm5_chip *adc_tm, u16 offset, u8 mask, u8 val)
253 return regmap_write_bits(adc_tm->regmap, adc_tm->base + offset, mask, val);
668 static int adc_tm5_register_tzd(struct adc_tm5_chip *adc_tm)
673 for (i = 0; i < adc_tm->nchannels; i++) {
674 adc_tm->channels[i].chip = adc_tm;
675 tzd = devm_thermal_of_zone_register(adc_tm->dev,
676 adc_tm->channels[i].channel,
677 &adc_tm->channels[i],
681 dev_dbg(adc_tm->dev, "thermal sensor on channel %d is not used\n",
682 adc_tm->channels[i].channel);
686 dev_err(adc_tm->dev, "Error registering TZ zone for channel %d: %ld\n",
687 adc_tm->channels[i].channel, PTR_ERR(tzd));
690 adc_tm->channels[i].tzd = tzd;
691 devm_thermal_add_hwmon_sysfs(adc_tm->dev, tzd);
780 static int adc_tm5_get_dt_channel_data(struct adc_tm5_chip *adc_tm,
787 struct device *dev = adc_tm->dev;
821 if (adc_tm->data->gen == ADC_TM5_GEN2)
830 channel->iio = devm_fwnode_iio_channel_get_by_name(adc_tm->dev,
855 ret = qcom_adc5_hw_settle_time_from_dt(value, adc_tm->data->hw_settle);
871 if (adc_tm->data->gen == ADC_TM5_GEN2) {
874 ret = qcom_adc5_decimation_from_dt(value, adc_tm->data->decimation);
941 static int adc_tm5_get_dt_data(struct adc_tm5_chip *adc_tm, struct device_node *node)
947 struct device *dev = adc_tm->dev;
949 adc_tm->nchannels = of_get_available_child_count(node);
950 if (!adc_tm->nchannels)
953 adc_tm->channels = devm_kcalloc(dev, adc_tm->nchannels,
954 sizeof(*adc_tm->channels), GFP_KERNEL);
955 if (!adc_tm->channels)
958 channels = adc_tm->channels;
960 adc_tm->data = of_device_get_match_data(dev);
961 if (!adc_tm->data)
962 adc_tm->data = &adc_tm5_data_pmic;
966 ret = qcom_adc5_decimation_from_dt(value, adc_tm->data->decimation);
971 adc_tm->decimation = ret;
973 adc_tm->decimation = ADC5_DECIMATION_DEFAULT;
983 adc_tm->avg_samples = ret;
985 adc_tm->avg_samples = VADC_DEF_AVG_SAMPLES;
989 ret = adc_tm5_get_dt_channel_data(adc_tm, channels, child);
1005 struct adc_tm5_chip *adc_tm;
1018 adc_tm = devm_kzalloc(&pdev->dev, sizeof(*adc_tm), GFP_KERNEL);
1019 if (!adc_tm)
1022 adc_tm->regmap = regmap;
1023 adc_tm->dev = dev;
1024 adc_tm->base = reg;
1030 ret = adc_tm5_get_dt_data(adc_tm, node);
1034 ret = adc_tm->data->init(adc_tm);
1040 ret = adc_tm5_register_tzd(adc_tm);
1046 return devm_request_threaded_irq(dev, irq, NULL, adc_tm->data->isr,
1047 IRQF_ONESHOT, adc_tm->data->irq_name, adc_tm);