Commit 913fd409 authored by Jakob Hauser's avatar Jakob Hauser Committed by Jonathan Cameron
Browse files

iio: magnetometer: yas530: Add IIO scaling to "chip_info"



Add IIO scaling to the "chip_info" structure to ease the handling to
different YAS variants.

Signed-off-by: default avatarJakob Hauser <jahau@rocketmail.com>
Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/a12f892633bbee13a8856c231dc793ebbc5d3a03.1660337264.git.jahau@rocketmail.com


Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent dd9bd44f
Loading
Loading
Loading
Loading
+7 −21
Original line number Diff line number Diff line
@@ -130,6 +130,7 @@ struct yas5xx;
 * @version_names: version letters or namings
 * @volatile_reg: device-specific volatile registers
 * @volatile_reg_qty: quantity of device-specific volatile registers
 * @scaling_val2: scaling value for IIO_CHAN_INFO_SCALE
 */
struct yas5xx_chip_info {
	unsigned int devid;
@@ -137,6 +138,7 @@ struct yas5xx_chip_info {
	char *version_names[2];
	const int *volatile_reg;
	int volatile_reg_qty;
	u32 scaling_val2;
};

/**
@@ -504,27 +506,8 @@ static int yas5xx_read_raw(struct iio_dev *indio_dev,
		}
		return IIO_VAL_INT;
	case IIO_CHAN_INFO_SCALE:
		switch (ci->devid) {
		case YAS530_DEVICE_ID:
			/*
			 * Raw values of YAS530 are in picotesla. Divide by
			 * 100000000 (10^8) to get Gauss.
			 */
			*val = 1;
			*val2 = 100000000;
			break;
		case YAS532_DEVICE_ID:
			/*
			 * Raw values of YAS532 are in nanotesla. Divide by
			 * 100000 (10^5) to get Gauss.
			 */
		*val = 1;
			*val2 = 100000;
			break;
		default:
			dev_err(yas5xx->dev, "unknown device type\n");
			return -EINVAL;
		}
		*val2 = ci->scaling_val2;
		return IIO_VAL_FRACTIONAL;
	default:
		/* Unknown request */
@@ -951,6 +934,7 @@ static const struct yas5xx_chip_info yas5xx_chip_info_tbl[] = {
		.version_names = { "A", "B" },
		.volatile_reg = yas530_volatile_reg,
		.volatile_reg_qty = ARRAY_SIZE(yas530_volatile_reg),
		.scaling_val2 = 100000000, /* picotesla to Gauss */
	},
	[yas532] = {
		.devid = YAS532_DEVICE_ID,
@@ -958,6 +942,7 @@ static const struct yas5xx_chip_info yas5xx_chip_info_tbl[] = {
		.version_names = { "AB", "AC" },
		.volatile_reg = yas530_volatile_reg,
		.volatile_reg_qty = ARRAY_SIZE(yas530_volatile_reg),
		.scaling_val2 = 100000, /* nanotesla to Gauss */
	},
	[yas533] = {
		.devid = YAS532_DEVICE_ID,
@@ -965,6 +950,7 @@ static const struct yas5xx_chip_info yas5xx_chip_info_tbl[] = {
		.version_names = { "AB", "AC" },
		.volatile_reg = yas530_volatile_reg,
		.volatile_reg_qty = ARRAY_SIZE(yas530_volatile_reg),
		.scaling_val2 = 100000, /* nanotesla to Gauss */
	},
};