]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/mfd/max77693.c
Merge branch 'for-3.19' of git://linux-nfs.org/~bfields/linux
[mirror_ubuntu-artful-kernel.git] / drivers / mfd / max77693.c
index 711773e8e64bdd9ee5835c8ae9d738aecf31eeba..a159593e27a0c42dd751ad24ae38026b6694c885 100644 (file)
 
 static const struct mfd_cell max77693_devs[] = {
        { .name = "max77693-pmic", },
-       { .name = "max77693-charger", },
+       {
+               .name = "max77693-charger",
+               .of_compatible = "maxim,max77693-charger",
+       },
        { .name = "max77693-muic", },
-       { .name = "max77693-haptic", },
+       {
+               .name = "max77693-haptic",
+               .of_compatible = "maxim,max77693-haptic",
+       },
        {
                .name = "max77693-flash",
                .of_compatible = "maxim,max77693-flash",
@@ -147,6 +153,12 @@ static const struct regmap_irq_chip max77693_muic_irq_chip = {
        .num_irqs               = ARRAY_SIZE(max77693_muic_irqs),
 };
 
+static const struct regmap_config max77693_regmap_haptic_config = {
+       .reg_bits = 8,
+       .val_bits = 8,
+       .max_register = MAX77693_HAPTIC_REG_END,
+};
+
 static int max77693_i2c_probe(struct i2c_client *i2c,
                              const struct i2c_device_id *id)
 {
@@ -196,6 +208,15 @@ static int max77693_i2c_probe(struct i2c_client *i2c,
        }
        i2c_set_clientdata(max77693->haptic, max77693);
 
+       max77693->regmap_haptic = devm_regmap_init_i2c(max77693->haptic,
+                                       &max77693_regmap_haptic_config);
+       if (IS_ERR(max77693->regmap_haptic)) {
+               ret = PTR_ERR(max77693->regmap_haptic);
+               dev_err(max77693->dev,
+                       "failed to initialize haptic register map: %d\n", ret);
+               goto err_regmap;
+       }
+
        /*
         * Initialize register map for MUIC device because use regmap-muic
         * instance of MUIC device when irq of max77693 is initialized
@@ -207,7 +228,7 @@ static int max77693_i2c_probe(struct i2c_client *i2c,
                ret = PTR_ERR(max77693->regmap_muic);
                dev_err(max77693->dev,
                        "failed to allocate register map: %d\n", ret);
-               goto err_regmap_muic;
+               goto err_regmap;
        }
 
        ret = regmap_add_irq_chip(max77693->regmap, max77693->irq,
@@ -217,7 +238,7 @@ static int max77693_i2c_probe(struct i2c_client *i2c,
                                &max77693->irq_data_led);
        if (ret) {
                dev_err(max77693->dev, "failed to add irq chip: %d\n", ret);
-               goto err_regmap_muic;
+               goto err_regmap;
        }
 
        ret = regmap_add_irq_chip(max77693->regmap, max77693->irq,
@@ -280,7 +301,7 @@ err_irq_charger:
        regmap_del_irq_chip(max77693->irq, max77693->irq_data_topsys);
 err_irq_topsys:
        regmap_del_irq_chip(max77693->irq, max77693->irq_data_led);
-err_regmap_muic:
+err_regmap:
        i2c_unregister_device(max77693->haptic);
 err_i2c_haptic:
        i2c_unregister_device(max77693->muic);