Lines Matching refs:gpadc

121 	int (*calibrate)(struct twl6030_gpadc_data *gpadc);
384 struct twl6030_gpadc_data *gpadc = iio_priv(indio_dev);
386 complete(&gpadc->irq_complete);
447 static int twl6030_gpadc_make_correction(struct twl6030_gpadc_data *gpadc,
450 const struct twl6030_ideal_code *ideal = gpadc->pdata->ideal;
454 i = twl6030_gpadc_lookup(ideal, channel, gpadc->pdata->nchannels);
456 gpadc->twl6030_cal_tbl[i].offset_error) /
457 gpadc->twl6030_cal_tbl[i].gain_error;
462 static int twl6030_gpadc_get_raw(struct twl6030_gpadc_data *gpadc,
465 u8 reg = gpadc->pdata->channel_to_reg(channel);
472 dev_dbg(gpadc->dev, "unable to read register 0x%X\n", reg);
477 dev_dbg(gpadc->dev, "GPADC raw code: %d", raw_code);
479 if (twl6030_channel_calibrated(gpadc->pdata, channel))
480 *res = twl6030_gpadc_make_correction(gpadc, channel, raw_code);
487 static int twl6030_gpadc_get_processed(struct twl6030_gpadc_data *gpadc,
490 const struct twl6030_ideal_code *ideal = gpadc->pdata->ideal;
496 ret = twl6030_gpadc_get_raw(gpadc, channel, &corrected_code);
500 i = twl6030_gpadc_lookup(ideal, channel, gpadc->pdata->nchannels);
502 gpadc->twl6030_cal_tbl[i].gain;
507 dev_dbg(gpadc->dev, "GPADC corrected code: %d", corrected_code);
508 dev_dbg(gpadc->dev, "GPADC value: %d", channel_value);
519 struct twl6030_gpadc_data *gpadc = iio_priv(indio_dev);
523 mutex_lock(&gpadc->lock);
525 ret = gpadc->pdata->start_conversion(chan->channel);
527 dev_err(gpadc->dev, "failed to start conversion\n");
532 &gpadc->irq_complete, msecs_to_jiffies(5000));
543 ret = twl6030_gpadc_get_raw(gpadc, chan->channel, val);
548 ret = twl6030_gpadc_get_processed(gpadc, chan->channel, val);
556 mutex_unlock(&gpadc->lock);
572 static void twl6030_calibrate_channel(struct twl6030_gpadc_data *gpadc,
576 const struct twl6030_ideal_code *ideal = gpadc->pdata->ideal;
578 i = twl6030_gpadc_lookup(ideal, channel, gpadc->pdata->nchannels);
593 gpadc->twl6030_cal_tbl[i].gain = gain;
594 gpadc->twl6030_cal_tbl[i].gain_error = k;
595 gpadc->twl6030_cal_tbl[i].offset_error = b;
597 dev_dbg(gpadc->dev, "GPADC d1 for Chn: %d = %d\n", channel, d1);
598 dev_dbg(gpadc->dev, "GPADC d2 for Chn: %d = %d\n", channel, d2);
599 dev_dbg(gpadc->dev, "GPADC x1 for Chn: %d = %d\n", channel, x1);
600 dev_dbg(gpadc->dev, "GPADC x2 for Chn: %d = %d\n", channel, x2);
601 dev_dbg(gpadc->dev, "GPADC Gain for Chn: %d = %d\n", channel, gain);
602 dev_dbg(gpadc->dev, "GPADC k for Chn: %d = %d\n", channel, k);
603 dev_dbg(gpadc->dev, "GPADC b for Chn: %d = %d\n", channel, b);
620 static int twl6030_calibration(struct twl6030_gpadc_data *gpadc)
637 dev_err(gpadc->dev, "calibration failed\n");
687 twl6030_calibrate_channel(gpadc, chn, d1, d2);
707 static int twl6032_calibration(struct twl6030_gpadc_data *gpadc)
716 dev_err(gpadc->dev, "calibration failed\n");
795 twl6030_calibrate_channel(gpadc, chn, d1, d2);
866 .compatible = "ti,twl6030-gpadc",
870 .compatible = "ti,twl6032-gpadc",
880 struct twl6030_gpadc_data *gpadc;
893 indio_dev = devm_iio_device_alloc(dev, sizeof(*gpadc));
897 gpadc = iio_priv(indio_dev);
899 gpadc->twl6030_cal_tbl = devm_kcalloc(dev,
901 sizeof(*gpadc->twl6030_cal_tbl),
903 if (!gpadc->twl6030_cal_tbl)
906 gpadc->dev = dev;
907 gpadc->pdata = pdata;
910 mutex_init(&gpadc->lock);
911 init_completion(&gpadc->irq_complete);
913 ret = pdata->calibrate(gpadc);