summaryrefslogtreecommitdiff
path: root/drivers/mfd
diff options
context:
space:
mode:
authorSumit Sharma <sumsharma@nvidia.com>2013-02-06 16:19:12 +0530
committerRiham Haidar <rhaidar@nvidia.com>2013-02-08 16:58:34 -0800
commita71cd7b2d7b3bead924f075ed3ec0ecaf706d11f (patch)
tree70267abac68056ea06cc3351e22561a4f471eebc /drivers/mfd
parent50d23244aaa4df6a2dee83cc7f9457d9f4aeb164 (diff)
mfd: max77663: Added chip version reading support
Added support for reading chip version Bug 1220546 Change-Id: I5a5a223ae2f027c9e1423b5c087c28b0fabb2645 Signed-off-by: Sumit Sharma <sumsharma@nvidia.com> Reviewed-on: http://git-master/r/197931 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Diffstat (limited to 'drivers/mfd')
-rw-r--r--drivers/mfd/max77663-core.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/mfd/max77663-core.c b/drivers/mfd/max77663-core.c
index c06c72108333..3b107243a4cc 100644
--- a/drivers/mfd/max77663-core.c
+++ b/drivers/mfd/max77663-core.c
@@ -59,6 +59,7 @@
#define MAX77663_REG_GPIO_ALT 0x40
#define MAX77663_REG_ONOFF_CFG1 0x41
#define MAX77663_REG_ONOFF_CFG2 0x42
+#define MAX77663_REG_CID4 0x5C
#define MAX77663_REG_CID5 0x5D
#define IRQ_TOP_GLBL_MASK (1 << 7)
@@ -827,6 +828,21 @@ static bool rd_wr_reg_rtc(struct device *dev, unsigned int reg)
return false;
}
+int max77663_read_chip_version(struct device *dev, u8 *val)
+{
+ int ret, version;
+
+ version = MAX77663_DRV_NOT_DEFINED;
+ ret = max77663_read(dev, MAX77663_REG_CID4, val, 1, 0);
+
+ if (!ret) {
+ if (*val == 0x24)
+ version = MAX77663_DRV_24;
+ return version;
+ }
+ return ret;
+}
+
static const struct regmap_config max77663_regmap_config_power = {
.reg_bits = 8,
.val_bits = 8,
@@ -910,6 +926,13 @@ static int max77663_probe(struct i2c_client *client,
return ret;
}
+ /* Reading chip version */
+ ret = max77663_read_chip_version(chip->dev, &val);
+ if (ret < 0)
+ dev_err(chip->dev, "Failed to read chip version\n");
+ else
+ dev_dbg(chip->dev, "Chip version - 0x%x\n", val);
+
max77663_irq_init(chip);
max77663_debugfs_init(chip);
ret = max77663_sleep(chip, false);