diff options
Diffstat (limited to 'drivers/regulator/pfuze100-regulator.c')
| -rw-r--r-- | drivers/regulator/pfuze100-regulator.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/regulator/pfuze100-regulator.c b/drivers/regulator/pfuze100-regulator.c index ba67b2c4e2e7..8b5e4c712a01 100644 --- a/drivers/regulator/pfuze100-regulator.c +++ b/drivers/regulator/pfuze100-regulator.c | |||
| @@ -38,7 +38,7 @@ | |||
| 38 | 38 | ||
| 39 | #define PFUZE100_DEVICEID 0x0 | 39 | #define PFUZE100_DEVICEID 0x0 |
| 40 | #define PFUZE100_REVID 0x3 | 40 | #define PFUZE100_REVID 0x3 |
| 41 | #define PFUZE100_FABID 0x3 | 41 | #define PFUZE100_FABID 0x4 |
| 42 | 42 | ||
| 43 | #define PFUZE100_SW1ABVOL 0x20 | 43 | #define PFUZE100_SW1ABVOL 0x20 |
| 44 | #define PFUZE100_SW1CVOL 0x2e | 44 | #define PFUZE100_SW1CVOL 0x2e |
| @@ -308,9 +308,15 @@ static int pfuze_identify(struct pfuze_chip *pfuze_chip) | |||
| 308 | if (ret) | 308 | if (ret) |
| 309 | return ret; | 309 | return ret; |
| 310 | 310 | ||
| 311 | if (value & 0x0f) { | 311 | switch (value & 0x0f) { |
| 312 | dev_warn(pfuze_chip->dev, "Illegal ID: %x\n", value); | 312 | /* Freescale misprogrammed 1-3% of parts prior to week 8 of 2013 as ID=8 */ |
| 313 | return -ENODEV; | 313 | case 0x8: |
| 314 | dev_info(pfuze_chip->dev, "Assuming misprogrammed ID=0x8"); | ||
| 315 | case 0x0: | ||
| 316 | break; | ||
| 317 | default: | ||
| 318 | dev_warn(pfuze_chip->dev, "Illegal ID: %x\n", value); | ||
| 319 | return -ENODEV; | ||
| 314 | } | 320 | } |
| 315 | 321 | ||
| 316 | ret = regmap_read(pfuze_chip->regmap, PFUZE100_REVID, &value); | 322 | ret = regmap_read(pfuze_chip->regmap, PFUZE100_REVID, &value); |
