Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Michael Hennerich and committed by
Dmitry Torokhov
e223cc7e dc5f4f5e

+4 -4
+4 -4
drivers/input/misc/ad714x.c
··· 158 158 unsigned short data; 159 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 163 ad714x->read(ad714x->dev, STG_COM_INT_EN_REG, &data); 164 - data |= 1 << start_stage; 164 + data |= 1 << end_stage; 165 165 ad714x->write(ad714x->dev, STG_COM_INT_EN_REG, data); 166 166 167 167 ad714x->read(ad714x->dev, STG_HIGH_INT_EN_REG, &data); ··· 175 175 unsigned short data; 176 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 180 ad714x->read(ad714x->dev, STG_COM_INT_EN_REG, &data); 181 - data &= ~(1 << start_stage); 181 + data &= ~(1 << end_stage); 182 182 ad714x->write(ad714x->dev, STG_COM_INT_EN_REG, data); 183 183 184 184 ad714x->read(ad714x->dev, STG_HIGH_INT_EN_REG, &data);