|
@@ -110,7 +110,7 @@ static const struct mfd_cell da9063_devs[] = {
|
|
|
int da9063_device_init(struct da9063 *da9063, unsigned int irq)
|
|
|
{
|
|
|
struct da9063_pdata *pdata = da9063->dev->platform_data;
|
|
|
- int model, revision;
|
|
|
+ int model, variant_id, variant_code;
|
|
|
int ret;
|
|
|
|
|
|
if (pdata) {
|
|
@@ -141,23 +141,26 @@ int da9063_device_init(struct da9063 *da9063, unsigned int irq)
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
|
|
|
- ret = regmap_read(da9063->regmap, DA9063_REG_CHIP_VARIANT, &revision);
|
|
|
+ ret = regmap_read(da9063->regmap, DA9063_REG_CHIP_VARIANT, &variant_id);
|
|
|
if (ret < 0) {
|
|
|
- dev_err(da9063->dev, "Cannot read chip revision id.\n");
|
|
|
+ dev_err(da9063->dev, "Cannot read chip variant id.\n");
|
|
|
return -EIO;
|
|
|
}
|
|
|
- revision >>= DA9063_CHIP_VARIANT_SHIFT;
|
|
|
- if (revision != 3) {
|
|
|
- dev_err(da9063->dev, "Unknown chip revision: %d\n", revision);
|
|
|
+
|
|
|
+ variant_code = variant_id >> DA9063_CHIP_VARIANT_SHIFT;
|
|
|
+
|
|
|
+ dev_info(da9063->dev,
|
|
|
+ "Device detected (chip-ID: 0x%02X, var-ID: 0x%02X)\n",
|
|
|
+ model, variant_id);
|
|
|
+
|
|
|
+ if (variant_code != PMIC_DA9063_BB) {
|
|
|
+ dev_err(da9063->dev, "Unknown chip variant code: 0x%02X\n",
|
|
|
+ variant_code);
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
|
|
|
da9063->model = model;
|
|
|
- da9063->revision = revision;
|
|
|
-
|
|
|
- dev_info(da9063->dev,
|
|
|
- "Device detected (model-ID: 0x%02X rev-ID: 0x%02X)\n",
|
|
|
- model, revision);
|
|
|
+ da9063->variant_code = variant_code;
|
|
|
|
|
|
ret = da9063_irq_init(da9063);
|
|
|
if (ret) {
|