Lines Matching defs:madc

11  * Based on twl4030-madc.c
118 * struct twl4030_madc_request - madc request packet for channel conversion
153 * struct twl4030_madc_data - a container for madc info
154 * @dev: Pointer to device structure for madc
156 * @usb3v1: Pointer to bias regulator for madc
178 struct twl4030_madc_data *madc = iio_priv(iio_dev);
182 req.method = madc->use_second_irq ? TWL4030_MADC_SW2 : TWL4030_MADC_SW1;
303 * @madc: pointer to struct twl4030_madc_data
308 static int twl4030_madc_channel_raw_read(struct twl4030_madc_data *madc, u8 reg)
318 dev_err(madc->dev, "unable to read register 0x%X\n", reg);
371 * @madc - pointer to twl4030_madc_data struct
379 static int twl4030_madc_read_channels(struct twl4030_madc_data *madc,
390 buf[i] = twl4030_madc_channel_raw_read(madc, reg);
392 dev_err(madc->dev, "Unable to read register 0x%X\n",
404 dev_err(madc->dev, "err reading current\n");
414 dev_err(madc->dev, "err reading temperature\n");
442 * @madc - pointer to twl4030_madc_data struct
448 static int twl4030_madc_disable_irq(struct twl4030_madc_data *madc, u8 id)
453 ret = twl_i2c_read_u8(TWL4030_MODULE_MADC, &val, madc->imr);
455 dev_err(madc->dev, "unable to read imr register 0x%X\n",
456 madc->imr);
460 ret = twl_i2c_write_u8(TWL4030_MODULE_MADC, val, madc->imr);
462 dev_err(madc->dev,
463 "unable to write imr register 0x%X\n", madc->imr);
472 struct twl4030_madc_data *madc = _madc;
478 mutex_lock(&madc->lock);
479 ret = twl_i2c_read_u8(TWL4030_MODULE_MADC, &isr_val, madc->isr);
481 dev_err(madc->dev, "unable to read isr register 0x%X\n",
482 madc->isr);
485 ret = twl_i2c_read_u8(TWL4030_MODULE_MADC, &imr_val, madc->imr);
487 dev_err(madc->dev, "unable to read imr register 0x%X\n",
488 madc->imr);
495 ret = twl4030_madc_disable_irq(madc, i);
497 dev_dbg(madc->dev, "Disable interrupt failed %d\n", i);
498 madc->requests[i].result_pending = true;
501 r = &madc->requests[i];
507 twl4030_madc_read_channels(madc, method->rbase,
513 mutex_unlock(&madc->lock);
523 r = &madc->requests[i];
528 twl4030_madc_read_channels(madc, method->rbase,
534 mutex_unlock(&madc->lock);
540 * Function which enables the madc conversion
542 * @madc - pointer to twl4030_madc_data struct
547 static int twl4030_madc_start_conversion(struct twl4030_madc_data *madc,
560 dev_err(madc->dev, "unable to write ctrl register 0x%X\n",
570 * @madc - pointer to twl4030_madc_data struct
575 static int twl4030_madc_wait_conversion_ready(struct twl4030_madc_data *madc,
588 dev_err(madc->dev,
597 dev_err(madc->dev, "conversion timeout!\n");
675 * @madc: pointer to twl4030_madc_data struct
684 static int twl4030_madc_set_current_generator(struct twl4030_madc_data *madc,
694 dev_err(madc->dev, "unable to read BCICTL1 reg 0x%X",
708 dev_err(madc->dev, "unable to write BCICTL1 reg 0x%X\n",
718 * @madc - pointer to twl4030_madc_data struct
722 static int twl4030_madc_set_power(struct twl4030_madc_data *madc, int on)
730 dev_err(madc->dev, "unable to read madc ctrl1 reg 0x%X\n",
740 dev_err(madc->dev, "unable to write madc ctrl1 reg 0x%X\n",
753 struct twl4030_madc_data *madc;
765 iio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*madc));
771 madc = iio_priv(iio_dev);
772 madc->dev = &pdev->dev;
786 madc->use_second_irq = (pdata->irq_line != 1);
788 madc->use_second_irq = of_property_read_bool(np,
789 "ti,system-uses-second-madc-irq");
791 madc->imr = madc->use_second_irq ? TWL4030_MADC_IMR2 :
793 madc->isr = madc->use_second_irq ? TWL4030_MADC_ISR2 :
796 ret = twl4030_madc_set_power(madc, 1);
799 ret = twl4030_madc_set_current_generator(madc, 0, 1);
841 mutex_init(&madc->lock);
847 "twl4030_madc", madc);
852 twl4030_madc = madc;
872 madc->usb3v1 = devm_regulator_get(madc->dev, "vusb3v1");
873 if (IS_ERR(madc->usb3v1)) {
878 ret = regulator_enable(madc->usb3v1);
880 dev_err(madc->dev, "could not enable 3v1 bias regulator\n");
893 regulator_disable(madc->usb3v1);
895 twl4030_madc_set_current_generator(madc, 0, 0);
897 twl4030_madc_set_power(madc, 0);
904 struct twl4030_madc_data *madc = iio_priv(iio_dev);
908 twl4030_madc_set_current_generator(madc, 0, 0);
909 twl4030_madc_set_power(madc, 0);
911 regulator_disable(madc->usb3v1);
918 { .compatible = "ti,twl4030-madc", },