diff options
author | Michael Hennerich <michael.hennerich@analog.com> | 2010-05-24 17:33:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-25 11:07:04 -0400 |
commit | c74cba610c9559e72377fd9725a3d329581aa256 (patch) | |
tree | 07d19e28be3c83eac3d6175c7b91b966bb28f69a /drivers/misc/ad525x_dpot.c | |
parent | e3ae68476ce0636554b5d95a33777f80ba407dc0 (diff) |
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>
Diffstat (limited to 'drivers/misc/ad525x_dpot.c')
-rw-r--r-- | drivers/misc/ad525x_dpot.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/drivers/misc/ad525x_dpot.c b/drivers/misc/ad525x_dpot.c index 35a4c4b343d4..255ba4b5e355 100644 --- a/drivers/misc/ad525x_dpot.c +++ b/drivers/misc/ad525x_dpot.c | |||
@@ -44,6 +44,9 @@ | |||
44 | * AD5243 2 256 2.5, 10, 50, 100 | 44 | * AD5243 2 256 2.5, 10, 50, 100 |
45 | * AD5248 2 256 2.5, 10, 50, 100 | 45 | * AD5248 2 256 2.5, 10, 50, 100 |
46 | * AD5242 2 256 20, 50, 200 | 46 | * AD5242 2 256 20, 50, 200 |
47 | * AD5280 1 256 20, 50, 200 | ||
48 | * AD5282 2 256 20, 50, 200 | ||
49 | * ADN2860 3 512 25, 250 | ||
47 | * | 50 | * |
48 | * See Documentation/misc-devices/ad525x_dpot.txt for more info. | 51 | * See Documentation/misc-devices/ad525x_dpot.txt for more info. |
49 | * | 52 | * |
@@ -154,6 +157,8 @@ static s32 dpot_read_i2c(struct dpot_data *dpot, u8 reg) | |||
154 | case DPOT_UID(AD5242_ID): | 157 | case DPOT_UID(AD5242_ID): |
155 | case DPOT_UID(AD5243_ID): | 158 | case DPOT_UID(AD5243_ID): |
156 | case DPOT_UID(AD5248_ID): | 159 | case DPOT_UID(AD5248_ID): |
160 | case DPOT_UID(AD5280_ID): | ||
161 | case DPOT_UID(AD5282_ID): | ||
157 | ctrl = ((reg & DPOT_RDAC_MASK) == DPOT_RDAC0) ? | 162 | ctrl = ((reg & DPOT_RDAC_MASK) == DPOT_RDAC0) ? |
158 | 0 : DPOT_AD5291_RDAC_AB; | 163 | 0 : DPOT_AD5291_RDAC_AB; |
159 | return dpot_read_r8d8(dpot, ctrl); | 164 | return dpot_read_r8d8(dpot, ctrl); |
@@ -250,21 +255,22 @@ static s32 dpot_write_i2c(struct dpot_data *dpot, u8 reg, u16 value) | |||
250 | case DPOT_UID(AD5242_ID): | 255 | case DPOT_UID(AD5242_ID): |
251 | case DPOT_UID(AD5243_ID): | 256 | case DPOT_UID(AD5243_ID): |
252 | case DPOT_UID(AD5248_ID): | 257 | case DPOT_UID(AD5248_ID): |
253 | ctrl = ((reg & DPOT_RDAC_MASK) == DPOT_RDAC0) ? 0 : DPOT_AD5291_RDAC_AB; | 258 | case DPOT_UID(AD5280_ID): |
259 | case DPOT_UID(AD5282_ID): | ||
260 | ctrl = ((reg & DPOT_RDAC_MASK) == DPOT_RDAC0) ? | ||
261 | 0 : DPOT_AD5291_RDAC_AB; | ||
254 | return dpot_write_r8d8(dpot, ctrl, value); | 262 | return dpot_write_r8d8(dpot, ctrl, value); |
255 | break; | 263 | break; |
256 | |||
257 | |||
258 | default: | 264 | default: |
259 | if (reg & DPOT_ADDR_CMD) | 265 | if (reg & DPOT_ADDR_CMD) |
260 | return dpot_write_d8(dpot, reg); | 266 | return dpot_write_d8(dpot, reg); |
261 | 267 | ||
262 | if (dpot->max_pos > 256) | 268 | if (dpot->max_pos > 256) |
263 | return dpot_write_r8d16(dpot, (reg & 0xF8) | | 269 | return dpot_write_r8d16(dpot, (reg & 0xF8) | |
264 | ((reg & 0x7) << 1), value); | 270 | ((reg & 0x7) << 1), value); |
265 | else | 271 | else |
266 | /* All other registers require instruction + data bytes */ | 272 | /* All other registers require instruction + data bytes */ |
267 | return dpot_write_r8d8(dpot, reg, value); | 273 | return dpot_write_r8d8(dpot, reg, value); |
268 | } | 274 | } |
269 | } | 275 | } |
270 | 276 | ||