]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/mfd/tps65910.c
Merge remote branch 'wireless-next/master' into ath6kl-next
[karo-tx-linux.git] / drivers / mfd / tps65910.c
index 553574da361117bcfbffacb75351f1b4ac8b9a8e..be9e07b77325a6afef8ed64253bc4a51e5cb4cc9 100644 (file)
@@ -146,9 +146,7 @@ static struct tps65910_board *tps65910_parse_dt(struct i2c_client *client,
        struct tps65910_board *board_info;
        unsigned int prop;
        const struct of_device_id *match;
-       unsigned int prop_array[TPS6591X_MAX_NUM_GPIO];
        int ret = 0;
-       int idx;
 
        match = of_match_device(tps65910_of_match, &client->dev);
        if (!match) {
@@ -177,27 +175,15 @@ static struct tps65910_board *tps65910_parse_dt(struct i2c_client *client,
        else if (*chip_id == TPS65911)
                dev_warn(&client->dev, "VMBCH2-Threshold not specified");
 
-       ret = of_property_read_u32_array(np, "ti,en-gpio-sleep",
-                                  prop_array, TPS6591X_MAX_NUM_GPIO);
-       if (!ret)
-               for (idx = 0; idx < ARRAY_SIZE(prop_array); idx++)
-                       board_info->en_gpio_sleep[idx] = (prop_array[idx] != 0);
-       else if (ret != -EINVAL) {
-               dev_err(&client->dev,
-                       "error reading property ti,en-gpio-sleep: %d\n.", ret);
-               return NULL;
-       }
-
-
        board_info->irq = client->irq;
        board_info->irq_base = -1;
-       board_info->gpio_base = -1;
 
        return board_info;
 }
 #else
-static inline struct tps65910_board *tps65910_parse_dt(
-                                       struct i2c_client *client)
+static inline
+struct tps65910_board *tps65910_parse_dt(struct i2c_client *client,
+                                        int *chip_id)
 {
        return NULL;
 }
@@ -208,14 +194,17 @@ static __devinit int tps65910_i2c_probe(struct i2c_client *i2c,
 {
        struct tps65910 *tps65910;
        struct tps65910_board *pmic_plat_data;
+       struct tps65910_board *of_pmic_plat_data = NULL;
        struct tps65910_platform_data *init_data;
        int ret = 0;
        int chip_id = id->driver_data;
 
        pmic_plat_data = dev_get_platdata(&i2c->dev);
 
-       if (!pmic_plat_data && i2c->dev.of_node)
+       if (!pmic_plat_data && i2c->dev.of_node) {
                pmic_plat_data = tps65910_parse_dt(i2c, &chip_id);
+               of_pmic_plat_data = pmic_plat_data;
+       }
 
        if (!pmic_plat_data)
                return -EINVAL;
@@ -228,6 +217,7 @@ static __devinit int tps65910_i2c_probe(struct i2c_client *i2c,
        if (tps65910 == NULL)
                return -ENOMEM;
 
+       tps65910->of_plat_data = of_pmic_plat_data;
        i2c_set_clientdata(i2c, tps65910);
        tps65910->dev = &i2c->dev;
        tps65910->i2c_client = i2c;