summaryrefslogtreecommitdiffstats
path: root/drivers/iio
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2016-09-11 18:29:16 +0200
committerJonathan Cameron <jic23@kernel.org>2016-09-12 20:19:16 +0100
commit1696566f995cfd4ddf3f167b4097cdc83f1458f2 (patch)
tree80389a4bf3ec17120542f7fa1cee3a9630d6c438 /drivers/iio
parent7ba4b884b7a890e240a13f5f65d607721e80396a (diff)
downloadlinux-1696566f995cfd4ddf3f167b4097cdc83f1458f2.tar.gz
linux-1696566f995cfd4ddf3f167b4097cdc83f1458f2.tar.bz2
linux-1696566f995cfd4ddf3f167b4097cdc83f1458f2.zip
iio: accel: mxc6255: Fix chip-id check
The initial commit adding support for the mxc6225 assumed the mxc6225 has a chip-id of 0xe5 based on testing on a single Allwinner A23 tablet with a mxc6225. Testing on a bunch of other Allwinner tablets have shown that the chip-id for the mxc6225 is not constant. A datasheet for the MXC6255 which I've found online says that bits 7 and 6 of the chip-id register are undefined (for the mxc6255), testing on 5 different tablets with a mxc6225 has found the following ids: 0x25, 0x45, 0x65, 0x85, 0xe5. So it seems that for the mxc6225 bits 7, 6 and 5 of the chip-id register are undefined. This commit adjusts the chip-id check so that the mxc6255 driver properly recognizes the mxc6225 in all these tablets. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Diffstat (limited to 'drivers/iio')
-rw-r--r--drivers/iio/accel/mxc6255.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/drivers/iio/accel/mxc6255.c b/drivers/iio/accel/mxc6255.c
index 50343a7818d6..0abad6948201 100644
--- a/drivers/iio/accel/mxc6255.c
+++ b/drivers/iio/accel/mxc6255.c
@@ -26,7 +26,6 @@
#define MXC6255_REG_YOUT 0x01
#define MXC6255_REG_CHIP_ID 0x08
-#define MXC6225_CHIP_ID 0xe5
#define MXC6255_CHIP_ID 0x05
/*
@@ -155,11 +154,7 @@ static int mxc6255_probe(struct i2c_client *client,
return ret;
}
- switch (chip_id) {
- case MXC6225_CHIP_ID:
- case MXC6255_CHIP_ID:
- break;
- default:
+ if ((chip_id & 0x1f) != MXC6255_CHIP_ID) {
dev_err(&client->dev, "Invalid chip id %x\n", chip_id);
return -ENODEV;
}