diff options
author | Michael Hennerich <michael.hennerich@analog.com> | 2011-05-17 02:17:23 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2011-05-17 02:20:09 -0400 |
commit | e223cc7e96ddbcd32c4a0314d42ae56ade8008e5 (patch) | |
tree | 9fc6329a887ddd6b638a2c70042b475ec075d3a6 /drivers/input | |
parent | dc5f4f5e9a3434bfe925f05db9db2908fbab771f (diff) |
Input: ad714x - fix threshold and completion interrupt masks
Fix two issues in the threshold and completion interrupt mask and unmask
functions. According to the AD714x datasheets the highest stage completion
interrupt should be enabled. Fix mask computation.
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Tested-by: Jean-Francois Dagenais <jeff.dagenais@gmail.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'drivers/input')
-rw-r--r-- | drivers/input/misc/ad714x.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/input/misc/ad714x.c b/drivers/input/misc/ad714x.c index 2ceb0289a757..0f2db45f730c 100644 --- a/drivers/input/misc/ad714x.c +++ b/drivers/input/misc/ad714x.c | |||
@@ -158,10 +158,10 @@ static void ad714x_use_com_int(struct ad714x_chip *ad714x, | |||
158 | unsigned short data; | 158 | unsigned short data; |
159 | unsigned short mask; | 159 | unsigned short mask; |
160 | 160 | ||
161 | mask = ((1 << (end_stage + 1)) - 1) - (1 << start_stage); | 161 | mask = ((1 << (end_stage + 1)) - 1) - ((1 << start_stage) - 1); |
162 | 162 | ||
163 | ad714x->read(ad714x->dev, STG_COM_INT_EN_REG, &data); | 163 | ad714x->read(ad714x->dev, STG_COM_INT_EN_REG, &data); |
164 | data |= 1 << start_stage; | 164 | data |= 1 << end_stage; |
165 | ad714x->write(ad714x->dev, STG_COM_INT_EN_REG, data); | 165 | ad714x->write(ad714x->dev, STG_COM_INT_EN_REG, data); |
166 | 166 | ||
167 | ad714x->read(ad714x->dev, STG_HIGH_INT_EN_REG, &data); | 167 | ad714x->read(ad714x->dev, STG_HIGH_INT_EN_REG, &data); |
@@ -175,10 +175,10 @@ static void ad714x_use_thr_int(struct ad714x_chip *ad714x, | |||
175 | unsigned short data; | 175 | unsigned short data; |
176 | unsigned short mask; | 176 | unsigned short mask; |
177 | 177 | ||
178 | mask = ((1 << (end_stage + 1)) - 1) - (1 << start_stage); | 178 | mask = ((1 << (end_stage + 1)) - 1) - ((1 << start_stage) - 1); |
179 | 179 | ||
180 | ad714x->read(ad714x->dev, STG_COM_INT_EN_REG, &data); | 180 | ad714x->read(ad714x->dev, STG_COM_INT_EN_REG, &data); |
181 | data &= ~(1 << start_stage); | 181 | data &= ~(1 << end_stage); |
182 | ad714x->write(ad714x->dev, STG_COM_INT_EN_REG, data); | 182 | ad714x->write(ad714x->dev, STG_COM_INT_EN_REG, data); |
183 | 183 | ||
184 | ad714x->read(ad714x->dev, STG_HIGH_INT_EN_REG, &data); | 184 | ad714x->read(ad714x->dev, STG_HIGH_INT_EN_REG, &data); |