]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
regulator: TPS65910: Create an array for init data
authorKyle Manna <kyle.manna@fuel7.com>
Thu, 3 Nov 2011 17:08:06 +0000 (12:08 -0500)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 8 Nov 2011 15:55:34 +0000 (15:55 +0000)
Create an array of fixed size for the platform to pass regulator
initalization data through.

Passing an array of pointers to init data also allows more flexible
definition of init data as well as prevents reading past the end of the
array should the platform define an incorrectly sized array.

Signed-off-by: Kyle Manna <kyle.manna@fuel7.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/regulator/tps65910-regulator.c
include/linux/mfd/tps65910.h

index 44b4f22a7f9ffb6b027fe2173bbe9dcf03f0a173..a620e25c85c4e3bae7bf3b5cba4753725a8135da 100644 (file)
@@ -861,8 +861,6 @@ static __devinit int tps65910_probe(struct platform_device *pdev)
        if (!pmic_plat_data)
                return -EINVAL;
 
-       reg_data = pmic_plat_data->tps65910_pmic_init_data;
-
        pmic = kzalloc(sizeof(*pmic), GFP_KERNEL);
        if (!pmic)
                return -ENOMEM;
@@ -913,7 +911,16 @@ static __devinit int tps65910_probe(struct platform_device *pdev)
                goto err_free_info;
        }
 
-       for (i = 0; i < pmic->num_regulators; i++, info++, reg_data++) {
+       for (i = 0; i < pmic->num_regulators && i < TPS65910_NUM_REGS;
+                       i++, info++) {
+
+               reg_data = pmic_plat_data->tps65910_pmic_init_data[i];
+
+               /* Regulator API handles empty constraints but not NULL
+                * constraints */
+               if (!reg_data)
+                       continue;
+
                /* Register the regulators */
                pmic->info[i] = info;
 
index fc5205d0bd14c45a1b4ff76559277cef502e73db..03a035d2236ba732da1b24ca43cf31dd168dfaaa 100644 (file)
 #define TPS65911_REG_LDO7                              11
 #define TPS65911_REG_LDO8                              12
 
+/* Max number of TPS65910/11 regulators */
+#define TPS65910_NUM_REGS                              13
+
 /**
  * struct tps65910_board
  * Board platform data may be used to initialize regulators.
@@ -775,7 +778,7 @@ struct tps65910_board {
        int irq_base;
        int vmbch_threshold;
        int vmbch2_threshold;
-       struct regulator_init_data *tps65910_pmic_init_data;
+       struct regulator_init_data *tps65910_pmic_init_data[TPS65910_NUM_REGS];
 };
 
 /**