Commit f804bd0d authored by Andreas Kemnade's avatar Andreas Kemnade Committed by Jonathan Cameron
Browse files

iio:adc:twl6030: Enable measurements of VUSB, VBAT and others



Some inputs need to be wired up to produce proper measurements,
without this change only near zero values are reported.

Signed-off-by: default avatarAndreas Kemnade <andreas@kemnade.info>
Fixes: 1696f364 ("iio: twl6030-gpadc: TWL6030, TWL6032 GPADC driver")
Link: https://lore.kernel.org/r/20221201181635.3522962-1-andreas@kemnade.info


Cc: <Stable@vger.kernel.org>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 0fc3562a
Loading
Loading
Loading
Loading
+32 −0
Original line number Original line Diff line number Diff line
@@ -57,6 +57,18 @@
#define TWL6030_GPADCS				BIT(1)
#define TWL6030_GPADCS				BIT(1)
#define TWL6030_GPADCR				BIT(0)
#define TWL6030_GPADCR				BIT(0)


#define USB_VBUS_CTRL_SET			0x04
#define USB_ID_CTRL_SET				0x06

#define TWL6030_MISC1				0xE4
#define VBUS_MEAS				0x01
#define ID_MEAS					0x01

#define VAC_MEAS                0x04
#define VBAT_MEAS               0x02
#define BB_MEAS                 0x01


/**
/**
 * struct twl6030_chnl_calib - channel calibration
 * struct twl6030_chnl_calib - channel calibration
 * @gain:		slope coefficient for ideal curve
 * @gain:		slope coefficient for ideal curve
@@ -927,6 +939,26 @@ static int twl6030_gpadc_probe(struct platform_device *pdev)
		return ret;
		return ret;
	}
	}


	ret = twl_i2c_write_u8(TWL_MODULE_USB, VBUS_MEAS, USB_VBUS_CTRL_SET);
	if (ret < 0) {
		dev_err(dev, "failed to wire up inputs\n");
		return ret;
	}

	ret = twl_i2c_write_u8(TWL_MODULE_USB, ID_MEAS, USB_ID_CTRL_SET);
	if (ret < 0) {
		dev_err(dev, "failed to wire up inputs\n");
		return ret;
	}

	ret = twl_i2c_write_u8(TWL6030_MODULE_ID0,
				VBAT_MEAS | BB_MEAS | BB_MEAS,
				TWL6030_MISC1);
	if (ret < 0) {
		dev_err(dev, "failed to wire up inputs\n");
		return ret;
	}

	indio_dev->name = DRIVER_NAME;
	indio_dev->name = DRIVER_NAME;
	indio_dev->info = &twl6030_gpadc_iio_info;
	indio_dev->info = &twl6030_gpadc_iio_info;
	indio_dev->modes = INDIO_DIRECT_MODE;
	indio_dev->modes = INDIO_DIRECT_MODE;