aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/ad525x_dpot.c
diff options
context:
space:
mode:
authorMichael Hennerich <michael.hennerich@analog.com>2010-05-24 17:33:15 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-25 11:07:04 -0400
commitc74cba610c9559e72377fd9725a3d329581aa256 (patch)
tree07d19e28be3c83eac3d6175c7b91b966bb28f69a /drivers/misc/ad525x_dpot.c
parente3ae68476ce0636554b5d95a33777f80ba407dc0 (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.c28
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