Loading drivers/mfd/tps65086.c +12 −5 Original line number Diff line number Diff line Loading @@ -81,16 +81,23 @@ static int tps65086_probe(struct i2c_client *client) return PTR_ERR(tps->regmap); } ret = regmap_read(tps->regmap, TPS65086_DEVICEID, &version); /* Store device ID to load regulator configuration that fit to IC variant */ ret = regmap_read(tps->regmap, TPS65086_DEVICEID1, &tps->chip_id); if (ret) { dev_err(tps->dev, "Failed to read revision register\n"); dev_err(tps->dev, "Failed to read revision register 1\n"); return ret; } ret = regmap_read(tps->regmap, TPS65086_DEVICEID2, &version); if (ret) { dev_err(tps->dev, "Failed to read revision register 2\n"); return ret; } dev_info(tps->dev, "Device: TPS65086%01lX, OTP: %c, Rev: %ld\n", (version & TPS65086_DEVICEID_PART_MASK), (char)((version & TPS65086_DEVICEID_OTP_MASK) >> 4) + 'A', (version & TPS65086_DEVICEID_REV_MASK) >> 6); (version & TPS65086_DEVICEID2_PART_MASK), (char)((version & TPS65086_DEVICEID2_OTP_MASK) >> 4) + 'A', (version & TPS65086_DEVICEID2_REV_MASK) >> 6); if (tps->irq > 0) { ret = regmap_add_irq_chip(tps->regmap, tps->irq, IRQF_ONESHOT, 0, Loading include/linux/mfd/tps65086.h +14 −6 Original line number Diff line number Diff line Loading @@ -13,7 +13,8 @@ #include <linux/regmap.h> /* List of registers for TPS65086 */ #define TPS65086_DEVICEID 0x01 #define TPS65086_DEVICEID1 0x00 #define TPS65086_DEVICEID2 0x01 #define TPS65086_IRQ 0x02 #define TPS65086_IRQ_MASK 0x03 #define TPS65086_PMICSTAT 0x04 Loading Loading @@ -75,10 +76,16 @@ #define TPS65086_IRQ_SHUTDN_MASK BIT(3) #define TPS65086_IRQ_FAULT_MASK BIT(7) /* DEVICEID Register field definitions */ #define TPS65086_DEVICEID_PART_MASK GENMASK(3, 0) #define TPS65086_DEVICEID_OTP_MASK GENMASK(5, 4) #define TPS65086_DEVICEID_REV_MASK GENMASK(7, 6) /* DEVICEID1 Register field definitions */ #define TPS6508640_ID 0x00 #define TPS65086401_ID 0x01 #define TPS6508641_ID 0x10 #define TPS65086470_ID 0x70 /* DEVICEID2 Register field definitions */ #define TPS65086_DEVICEID2_PART_MASK GENMASK(3, 0) #define TPS65086_DEVICEID2_OTP_MASK GENMASK(5, 4) #define TPS65086_DEVICEID2_REV_MASK GENMASK(7, 6) /* VID Masks */ #define BUCK_VID_MASK GENMASK(7, 1) Loading @@ -100,6 +107,7 @@ enum tps65086_irqs { struct tps65086 { struct device *dev; struct regmap *regmap; unsigned int chip_id; /* IRQ Data */ int irq; Loading Loading
drivers/mfd/tps65086.c +12 −5 Original line number Diff line number Diff line Loading @@ -81,16 +81,23 @@ static int tps65086_probe(struct i2c_client *client) return PTR_ERR(tps->regmap); } ret = regmap_read(tps->regmap, TPS65086_DEVICEID, &version); /* Store device ID to load regulator configuration that fit to IC variant */ ret = regmap_read(tps->regmap, TPS65086_DEVICEID1, &tps->chip_id); if (ret) { dev_err(tps->dev, "Failed to read revision register\n"); dev_err(tps->dev, "Failed to read revision register 1\n"); return ret; } ret = regmap_read(tps->regmap, TPS65086_DEVICEID2, &version); if (ret) { dev_err(tps->dev, "Failed to read revision register 2\n"); return ret; } dev_info(tps->dev, "Device: TPS65086%01lX, OTP: %c, Rev: %ld\n", (version & TPS65086_DEVICEID_PART_MASK), (char)((version & TPS65086_DEVICEID_OTP_MASK) >> 4) + 'A', (version & TPS65086_DEVICEID_REV_MASK) >> 6); (version & TPS65086_DEVICEID2_PART_MASK), (char)((version & TPS65086_DEVICEID2_OTP_MASK) >> 4) + 'A', (version & TPS65086_DEVICEID2_REV_MASK) >> 6); if (tps->irq > 0) { ret = regmap_add_irq_chip(tps->regmap, tps->irq, IRQF_ONESHOT, 0, Loading
include/linux/mfd/tps65086.h +14 −6 Original line number Diff line number Diff line Loading @@ -13,7 +13,8 @@ #include <linux/regmap.h> /* List of registers for TPS65086 */ #define TPS65086_DEVICEID 0x01 #define TPS65086_DEVICEID1 0x00 #define TPS65086_DEVICEID2 0x01 #define TPS65086_IRQ 0x02 #define TPS65086_IRQ_MASK 0x03 #define TPS65086_PMICSTAT 0x04 Loading Loading @@ -75,10 +76,16 @@ #define TPS65086_IRQ_SHUTDN_MASK BIT(3) #define TPS65086_IRQ_FAULT_MASK BIT(7) /* DEVICEID Register field definitions */ #define TPS65086_DEVICEID_PART_MASK GENMASK(3, 0) #define TPS65086_DEVICEID_OTP_MASK GENMASK(5, 4) #define TPS65086_DEVICEID_REV_MASK GENMASK(7, 6) /* DEVICEID1 Register field definitions */ #define TPS6508640_ID 0x00 #define TPS65086401_ID 0x01 #define TPS6508641_ID 0x10 #define TPS65086470_ID 0x70 /* DEVICEID2 Register field definitions */ #define TPS65086_DEVICEID2_PART_MASK GENMASK(3, 0) #define TPS65086_DEVICEID2_OTP_MASK GENMASK(5, 4) #define TPS65086_DEVICEID2_REV_MASK GENMASK(7, 6) /* VID Masks */ #define BUCK_VID_MASK GENMASK(7, 1) Loading @@ -100,6 +107,7 @@ enum tps65086_irqs { struct tps65086 { struct device *dev; struct regmap *regmap; unsigned int chip_id; /* IRQ Data */ int irq; Loading