Lines Matching refs:gpadc

123 	int (*calibrate)(struct twl6030_gpadc_data *gpadc);
386 struct twl6030_gpadc_data *gpadc = iio_priv(indio_dev); in twl6030_gpadc_irq_handler() local
388 complete(&gpadc->irq_complete); in twl6030_gpadc_irq_handler()
449 static int twl6030_gpadc_make_correction(struct twl6030_gpadc_data *gpadc, in twl6030_gpadc_make_correction() argument
452 const struct twl6030_ideal_code *ideal = gpadc->pdata->ideal; in twl6030_gpadc_make_correction()
456 i = twl6030_gpadc_lookup(ideal, channel, gpadc->pdata->nchannels); in twl6030_gpadc_make_correction()
458 gpadc->twl6030_cal_tbl[i].offset_error) / in twl6030_gpadc_make_correction()
459 gpadc->twl6030_cal_tbl[i].gain_error; in twl6030_gpadc_make_correction()
464 static int twl6030_gpadc_get_raw(struct twl6030_gpadc_data *gpadc, in twl6030_gpadc_get_raw() argument
467 u8 reg = gpadc->pdata->channel_to_reg(channel); in twl6030_gpadc_get_raw()
474 dev_dbg(gpadc->dev, "unable to read register 0x%X\n", reg); in twl6030_gpadc_get_raw()
479 dev_dbg(gpadc->dev, "GPADC raw code: %d", raw_code); in twl6030_gpadc_get_raw()
481 if (twl6030_channel_calibrated(gpadc->pdata, channel)) in twl6030_gpadc_get_raw()
482 *res = twl6030_gpadc_make_correction(gpadc, channel, raw_code); in twl6030_gpadc_get_raw()
489 static int twl6030_gpadc_get_processed(struct twl6030_gpadc_data *gpadc, in twl6030_gpadc_get_processed() argument
492 const struct twl6030_ideal_code *ideal = gpadc->pdata->ideal; in twl6030_gpadc_get_processed()
498 ret = twl6030_gpadc_get_raw(gpadc, channel, &corrected_code); in twl6030_gpadc_get_processed()
502 i = twl6030_gpadc_lookup(ideal, channel, gpadc->pdata->nchannels); in twl6030_gpadc_get_processed()
504 gpadc->twl6030_cal_tbl[i].gain; in twl6030_gpadc_get_processed()
509 dev_dbg(gpadc->dev, "GPADC corrected code: %d", corrected_code); in twl6030_gpadc_get_processed()
510 dev_dbg(gpadc->dev, "GPADC value: %d", channel_value); in twl6030_gpadc_get_processed()
521 struct twl6030_gpadc_data *gpadc = iio_priv(indio_dev); in twl6030_gpadc_read_raw() local
525 mutex_lock(&gpadc->lock); in twl6030_gpadc_read_raw()
527 ret = gpadc->pdata->start_conversion(chan->channel); in twl6030_gpadc_read_raw()
529 dev_err(gpadc->dev, "failed to start conversion\n"); in twl6030_gpadc_read_raw()
534 &gpadc->irq_complete, msecs_to_jiffies(5000)); in twl6030_gpadc_read_raw()
545 ret = twl6030_gpadc_get_raw(gpadc, chan->channel, val); in twl6030_gpadc_read_raw()
550 ret = twl6030_gpadc_get_processed(gpadc, chan->channel, val); in twl6030_gpadc_read_raw()
558 mutex_unlock(&gpadc->lock); in twl6030_gpadc_read_raw()
574 static void twl6030_calibrate_channel(struct twl6030_gpadc_data *gpadc, in twl6030_calibrate_channel() argument
578 const struct twl6030_ideal_code *ideal = gpadc->pdata->ideal; in twl6030_calibrate_channel()
580 i = twl6030_gpadc_lookup(ideal, channel, gpadc->pdata->nchannels); in twl6030_calibrate_channel()
595 gpadc->twl6030_cal_tbl[i].gain = gain; in twl6030_calibrate_channel()
596 gpadc->twl6030_cal_tbl[i].gain_error = k; in twl6030_calibrate_channel()
597 gpadc->twl6030_cal_tbl[i].offset_error = b; in twl6030_calibrate_channel()
599 dev_dbg(gpadc->dev, "GPADC d1 for Chn: %d = %d\n", channel, d1); in twl6030_calibrate_channel()
600 dev_dbg(gpadc->dev, "GPADC d2 for Chn: %d = %d\n", channel, d2); in twl6030_calibrate_channel()
601 dev_dbg(gpadc->dev, "GPADC x1 for Chn: %d = %d\n", channel, x1); in twl6030_calibrate_channel()
602 dev_dbg(gpadc->dev, "GPADC x2 for Chn: %d = %d\n", channel, x2); in twl6030_calibrate_channel()
603 dev_dbg(gpadc->dev, "GPADC Gain for Chn: %d = %d\n", channel, gain); in twl6030_calibrate_channel()
604 dev_dbg(gpadc->dev, "GPADC k for Chn: %d = %d\n", channel, k); in twl6030_calibrate_channel()
605 dev_dbg(gpadc->dev, "GPADC b for Chn: %d = %d\n", channel, b); in twl6030_calibrate_channel()
622 static int twl6030_calibration(struct twl6030_gpadc_data *gpadc) in twl6030_calibration() argument
639 dev_err(gpadc->dev, "calibration failed\n"); in twl6030_calibration()
689 twl6030_calibrate_channel(gpadc, chn, d1, d2); in twl6030_calibration()
709 static int twl6032_calibration(struct twl6030_gpadc_data *gpadc) in twl6032_calibration() argument
718 dev_err(gpadc->dev, "calibration failed\n"); in twl6032_calibration()
797 twl6030_calibrate_channel(gpadc, chn, d1, d2); in twl6032_calibration()
883 struct twl6030_gpadc_data *gpadc; in twl6030_gpadc_probe() local
896 indio_dev = devm_iio_device_alloc(dev, sizeof(*gpadc)); in twl6030_gpadc_probe()
900 gpadc = iio_priv(indio_dev); in twl6030_gpadc_probe()
902 gpadc->twl6030_cal_tbl = devm_kzalloc(dev, in twl6030_gpadc_probe()
903 sizeof(*gpadc->twl6030_cal_tbl) * in twl6030_gpadc_probe()
905 if (!gpadc->twl6030_cal_tbl) in twl6030_gpadc_probe()
908 gpadc->dev = dev; in twl6030_gpadc_probe()
909 gpadc->pdata = pdata; in twl6030_gpadc_probe()
912 mutex_init(&gpadc->lock); in twl6030_gpadc_probe()
913 init_completion(&gpadc->irq_complete); in twl6030_gpadc_probe()
915 ret = pdata->calibrate(gpadc); in twl6030_gpadc_probe()