Merge remote-tracking branches 'asoc/fix/arizona', 'asoc/fix/dpcm', 'asoc/fix/dwc...
[sfrench/cifs-2.6.git] / drivers / mfd / tps65218.c
index ba610adbdbff33503f65cea2ceda2273f95fc2fb..13834a0d28172fe5334f0385571fafb34cc21248 100644 (file)
 
 #define TPS65218_PASSWORD_REGS_UNLOCK   0x7D
 
-/**
- * tps65218_reg_read: Read a single tps65218 register.
- *
- * @tps: Device to read from.
- * @reg: Register to read.
- * @val: Contians the value
- */
-int tps65218_reg_read(struct tps65218 *tps, unsigned int reg,
-                       unsigned int *val)
-{
-       return regmap_read(tps->regmap, reg, val);
-}
-EXPORT_SYMBOL_GPL(tps65218_reg_read);
+static const struct mfd_cell tps65218_cells[] = {
+       {
+               .name = "tps65218-pwrbutton",
+               .of_compatible = "ti,tps65218-pwrbutton",
+       },
+       {
+               .name = "tps65218-gpio",
+               .of_compatible = "ti,tps65218-gpio",
+       },
+       { .name = "tps65218-regulator", },
+};
 
 /**
  * tps65218_reg_write: Write a single tps65218 register.
@@ -93,7 +91,7 @@ static int tps65218_update_bits(struct tps65218 *tps, unsigned int reg,
        int ret;
        unsigned int data;
 
-       ret = tps65218_reg_read(tps, reg, &data);
+       ret = regmap_read(tps->regmap, reg, &data);
        if (ret) {
                dev_err(tps->dev, "Read from reg 0x%x failed\n", reg);
                return ret;
@@ -251,7 +249,7 @@ static int tps65218_probe(struct i2c_client *client,
        if (ret < 0)
                return ret;
 
-       ret = tps65218_reg_read(tps, TPS65218_REG_CHIPID, &chipid);
+       ret = regmap_read(tps->regmap, TPS65218_REG_CHIPID, &chipid);
        if (ret) {
                dev_err(tps->dev, "Failed to read chipid: %d\n", ret);
                return ret;
@@ -259,8 +257,10 @@ static int tps65218_probe(struct i2c_client *client,
 
        tps->rev = chipid & TPS65218_CHIPID_REV_MASK;
 
-       ret = of_platform_populate(client->dev.of_node, NULL, NULL,
-                                  &client->dev);
+       ret = mfd_add_devices(tps->dev, PLATFORM_DEVID_AUTO, tps65218_cells,
+                             ARRAY_SIZE(tps65218_cells), NULL, 0,
+                             regmap_irq_get_domain(tps->irq_data));
+
        if (ret < 0)
                goto err_irq;