Skip to content

Commit

Permalink
regulator: TPS65910: Create an array for init data
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Kyle Manna authored and Mark Brown committed Nov 23, 2011
1 parent 72c108c commit c1fc148
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
13 changes: 10 additions & 3 deletions drivers/regulator/tps65910-regulator.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;

Expand Down
5 changes: 4 additions & 1 deletion include/linux/mfd/tps65910.h
Original file line number Diff line number Diff line change
Expand Up @@ -764,6 +764,9 @@
#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.
Expand All @@ -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];
};

/**
Expand Down

0 comments on commit c1fc148

Please sign in to comment.