mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 07:01:32 +00:00
ad525x_dpot: add support for ADN2860 and AD528x pots
New parts supported: AD5280, AD5282, ADN2860 Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
e3ae68476c
commit
c74cba610c
@ -23,7 +23,8 @@ config AD525X_DPOT
|
|||||||
AD5204, AD5206, AD5207, AD5231, AD5232, AD5233, AD5235,
|
AD5204, AD5206, AD5207, AD5231, AD5232, AD5233, AD5235,
|
||||||
AD5260, AD5262, AD5263, AD5290, AD5291, AD5292, AD5293,
|
AD5260, AD5262, AD5263, AD5290, AD5291, AD5292, AD5293,
|
||||||
AD7376, AD8400, AD8402, AD8403, ADN2850, AD5241, AD5242,
|
AD7376, AD8400, AD8402, AD8403, ADN2850, AD5241, AD5242,
|
||||||
AD5243, AD5245, AD5246, AD5247, AD5248
|
AD5243, AD5245, AD5246, AD5247, AD5248, AD5280, AD5282,
|
||||||
|
ADN2860
|
||||||
digital potentiometer chips.
|
digital potentiometer chips.
|
||||||
|
|
||||||
See Documentation/misc-devices/ad525x_dpot.txt for the
|
See Documentation/misc-devices/ad525x_dpot.txt for the
|
||||||
|
@ -94,6 +94,9 @@ static const struct i2c_device_id ad_dpot_id[] = {
|
|||||||
{"ad5246", AD5246_ID},
|
{"ad5246", AD5246_ID},
|
||||||
{"ad5247", AD5247_ID},
|
{"ad5247", AD5247_ID},
|
||||||
{"ad5248", AD5248_ID},
|
{"ad5248", AD5248_ID},
|
||||||
|
{"ad5280", AD5280_ID},
|
||||||
|
{"ad5282", AD5282_ID},
|
||||||
|
{"adn2860", ADN2860_ID},
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(i2c, ad_dpot_id);
|
MODULE_DEVICE_TABLE(i2c, ad_dpot_id);
|
||||||
|
@ -44,6 +44,9 @@
|
|||||||
* AD5243 2 256 2.5, 10, 50, 100
|
* AD5243 2 256 2.5, 10, 50, 100
|
||||||
* AD5248 2 256 2.5, 10, 50, 100
|
* AD5248 2 256 2.5, 10, 50, 100
|
||||||
* AD5242 2 256 20, 50, 200
|
* 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.
|
* 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(AD5242_ID):
|
||||||
case DPOT_UID(AD5243_ID):
|
case DPOT_UID(AD5243_ID):
|
||||||
case DPOT_UID(AD5248_ID):
|
case DPOT_UID(AD5248_ID):
|
||||||
|
case DPOT_UID(AD5280_ID):
|
||||||
|
case DPOT_UID(AD5282_ID):
|
||||||
ctrl = ((reg & DPOT_RDAC_MASK) == DPOT_RDAC0) ?
|
ctrl = ((reg & DPOT_RDAC_MASK) == DPOT_RDAC0) ?
|
||||||
0 : DPOT_AD5291_RDAC_AB;
|
0 : DPOT_AD5291_RDAC_AB;
|
||||||
return dpot_read_r8d8(dpot, ctrl);
|
return dpot_read_r8d8(dpot, ctrl);
|
||||||
@ -250,21 +255,22 @@ static s32 dpot_write_i2c(struct dpot_data *dpot, u8 reg, u16 value)
|
|||||||
case DPOT_UID(AD5242_ID):
|
case DPOT_UID(AD5242_ID):
|
||||||
case DPOT_UID(AD5243_ID):
|
case DPOT_UID(AD5243_ID):
|
||||||
case DPOT_UID(AD5248_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);
|
return dpot_write_r8d8(dpot, ctrl, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (reg & DPOT_ADDR_CMD)
|
if (reg & DPOT_ADDR_CMD)
|
||||||
return dpot_write_d8(dpot, reg);
|
return dpot_write_d8(dpot, reg);
|
||||||
|
|
||||||
if (dpot->max_pos > 256)
|
if (dpot->max_pos > 256)
|
||||||
return dpot_write_r8d16(dpot, (reg & 0xF8) |
|
return dpot_write_r8d16(dpot, (reg & 0xF8) |
|
||||||
((reg & 0x7) << 1), value);
|
((reg & 0x7) << 1), value);
|
||||||
else
|
else
|
||||||
/* All other registers require instruction + data bytes */
|
/* All other registers require instruction + data bytes */
|
||||||
return dpot_write_r8d8(dpot, reg, value);
|
return dpot_write_r8d8(dpot, reg, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,8 +112,10 @@ enum dpot_devid {
|
|||||||
AD5246_ID = DPOT_CONF(F_RDACS_RW, BRDAC0, 7, 37),
|
AD5246_ID = DPOT_CONF(F_RDACS_RW, BRDAC0, 7, 37),
|
||||||
AD5247_ID = DPOT_CONF(F_RDACS_RW, BRDAC0, 7, 38),
|
AD5247_ID = DPOT_CONF(F_RDACS_RW, BRDAC0, 7, 38),
|
||||||
AD5248_ID = DPOT_CONF(F_RDACS_RW, BRDAC0 | BRDAC1, 8, 39),
|
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
|
#define DPOT_RDAC0 0
|
||||||
|
Loading…
Reference in New Issue
Block a user