Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c74cba61 authored by Michael Hennerich's avatar Michael Hennerich Committed by Linus Torvalds
Browse files

ad525x_dpot: add support for ADN2860 and AD528x pots



New parts supported:
	AD5280, AD5282, ADN2860

Signed-off-by: default avatarMichael Hennerich <michael.hennerich@analog.com>
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent e3ae6847
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -23,7 +23,8 @@ config AD525X_DPOT
	  AD5204, AD5206, AD5207, AD5231, AD5232, AD5233, AD5235,
	  AD5260, AD5262, AD5263, AD5290, AD5291, AD5292, AD5293,
	  AD7376, AD8400, AD8402, AD8403, ADN2850, AD5241, AD5242,
	  AD5243, AD5245, AD5246, AD5247, AD5248
	  AD5243, AD5245, AD5246, AD5247, AD5248, AD5280, AD5282,
	  ADN2860
	  digital potentiometer chips.

	  See Documentation/misc-devices/ad525x_dpot.txt for the
+3 −0
Original line number Diff line number Diff line
@@ -94,6 +94,9 @@ static const struct i2c_device_id ad_dpot_id[] = {
	{"ad5246", AD5246_ID},
	{"ad5247", AD5247_ID},
	{"ad5248", AD5248_ID},
	{"ad5280", AD5280_ID},
	{"ad5282", AD5282_ID},
	{"adn2860", ADN2860_ID},
	{}
};
MODULE_DEVICE_TABLE(i2c, ad_dpot_id);
+17 −11
Original line number Diff line number Diff line
@@ -44,6 +44,9 @@
 * AD5243		2		256		2.5, 10, 50, 100
 * AD5248		2		256		2.5, 10, 50, 100
 * AD5242		2		256		20, 50, 200
 * AD5280		1		256		20, 50, 200
 * AD5282		2		256		20, 50, 200
 * ADN2860		3		512		25, 250
 *
 * See Documentation/misc-devices/ad525x_dpot.txt for more info.
 *
@@ -154,6 +157,8 @@ static s32 dpot_read_i2c(struct dpot_data *dpot, u8 reg)
	case DPOT_UID(AD5242_ID):
	case DPOT_UID(AD5243_ID):
	case DPOT_UID(AD5248_ID):
	case DPOT_UID(AD5280_ID):
	case DPOT_UID(AD5282_ID):
		ctrl = ((reg & DPOT_RDAC_MASK) == DPOT_RDAC0) ?
			0 : DPOT_AD5291_RDAC_AB;
		return dpot_read_r8d8(dpot, ctrl);
@@ -250,11 +255,12 @@ static s32 dpot_write_i2c(struct dpot_data *dpot, u8 reg, u16 value)
	case DPOT_UID(AD5242_ID):
	case DPOT_UID(AD5243_ID):
	case DPOT_UID(AD5248_ID):
		ctrl = ((reg & DPOT_RDAC_MASK) == DPOT_RDAC0) ? 0 : DPOT_AD5291_RDAC_AB;
	case DPOT_UID(AD5280_ID):
	case DPOT_UID(AD5282_ID):
		ctrl = ((reg & DPOT_RDAC_MASK) == DPOT_RDAC0) ?
			0 : DPOT_AD5291_RDAC_AB;
		return dpot_write_r8d8(dpot, ctrl, value);
		break;


	default:
		if (reg & DPOT_ADDR_CMD)
			return dpot_write_d8(dpot, reg);
+4 −2
Original line number Diff line number Diff line
@@ -112,8 +112,10 @@ enum dpot_devid {
	AD5246_ID = DPOT_CONF(F_RDACS_RW, BRDAC0, 7, 37),
	AD5247_ID = DPOT_CONF(F_RDACS_RW, BRDAC0, 7, 38),
	AD5248_ID = DPOT_CONF(F_RDACS_RW, BRDAC0 | BRDAC1, 8, 39),


	AD5280_ID = DPOT_CONF(F_RDACS_RW, BRDAC0, 8, 40),
	AD5282_ID = DPOT_CONF(F_RDACS_RW, BRDAC0 | BRDAC1, 8, 41),
	ADN2860_ID = DPOT_CONF(F_RDACS_RW_TOL | F_CMD_INC,
			BRDAC0 | BRDAC1 | BRDAC2, 9, 42),
};

#define DPOT_RDAC0		0