diff options
author | Gregory Hermant <gregory.hermant@calao-systems.com> | 2014-09-30 08:59:17 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-11-05 19:24:07 -0800 |
commit | 32304d753304b1aaf79eb4957d1d1375ddc92c14 (patch) | |
tree | 23b094b04bf4b2d72e408f92154e8430c55bead2 /drivers/tty/serial/max310x.c | |
parent | 510d483285432e45c453722f7ff7a9cf63e95bc4 (diff) | |
download | op-kernel-dev-32304d753304b1aaf79eb4957d1d1375ddc92c14.zip op-kernel-dev-32304d753304b1aaf79eb4957d1d1375ddc92c14.tar.gz |
max310x: max3109_detect should use indirect addressing in SPI mode for REVID register
This patch allows to read the REV_ID register in SPI mode and consequently
to properly detect the max3109. Indeed in SPI mode, this register is only
accessible by using indirect addressing.
Signed-off-by: Gregory Hermant <gregory.hermant@calao-systems.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial/max310x.c')
-rw-r--r-- | drivers/tty/serial/max310x.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c index 0041a64..4cdc555 100644 --- a/drivers/tty/serial/max310x.c +++ b/drivers/tty/serial/max310x.c @@ -346,10 +346,13 @@ static int max3109_detect(struct device *dev) unsigned int val = 0; int ret; - ret = regmap_read(s->regmap, MAX310X_REVID_REG, &val); + ret = regmap_write(s->regmap, MAX310X_GLOBALCMD_REG, + MAX310X_EXTREG_ENBL); if (ret) return ret; + regmap_read(s->regmap, MAX310X_REVID_EXTREG, &val); + regmap_write(s->regmap, MAX310X_GLOBALCMD_REG, MAX310X_EXTREG_DSBL); if (((val & MAX310x_REV_MASK) != MAX3109_REV_ID)) { dev_err(dev, "%s ID 0x%02x does not match\n", s->devtype->name, val); |