Message ID | 1403451105-31929-3-git-send-email-b.galvani@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
> -----Original Message----- > From: Beniamino Galvani [mailto:b.galvani@gmail.com] > Sent: Sunday, June 22, 2014 11:32 PM > To: Liam Girdwood; Mark Brown > Cc: Yang, Wenyou; Rob Herring; Pawel Moll; Mark Rutland; Ian Campbell; > Kumar Gala; Heiko Stuebner; devicetree@vger.kernel.org; linux- > doc@vger.kernel.org; linux-kernel@vger.kernel.org; linux-arm- > kernel@lists.infradead.org; Beniamino Galvani > Subject: [PATCH 2/5] regulator: act8865: set correct number of > regulators in pdata > > When platform data is populated from DT all the regulators are > instantiated and the value of num_regulators should be the number of > all available regulators rather than the number of matched ones. > > Signed-off-by: Beniamino Galvani <b.galvani@gmail.com> > --- > drivers/regulator/act8865-regulator.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/regulator/act8865-regulator.c > b/drivers/regulator/act8865-regulator.c > index fe2c038..b03a0e8 100644 > --- a/drivers/regulator/act8865-regulator.c > +++ b/drivers/regulator/act8865-regulator.c > @@ -230,7 +230,7 @@ static int act8865_pdata_from_dt(struct device *dev, > if (!pdata->regulators) > return -ENOMEM; > > - pdata->num_regulators = matched; > + pdata->num_regulators = ARRAY_SIZE(act8865_matches); > regulator = pdata->regulators; > > for (i = 0; i < ARRAY_SIZE(act8865_matches); i++) { > -- > 1.7.10.4 Tested on at91-sama5d3_xplained with ACT8865 Tested-by Wenyou.Yang <wenyou.yang@atmel.com> Best Regards, Wenyou Yang
On Sun, Jun 22, 2014 at 05:31:42PM +0200, Beniamino Galvani wrote: > When platform data is populated from DT all the regulators are > instantiated and the value of num_regulators should be the number of > all available regulators rather than the number of matched ones. Could you go into more detail on your logic on this one please? The platform data (and DT configuration) for regulators should be completely optional.
On Fri, Jun 27, 2014 at 05:07:25PM +0100, Mark Brown wrote: > On Sun, Jun 22, 2014 at 05:31:42PM +0200, Beniamino Galvani wrote: > > When platform data is populated from DT all the regulators are > > instantiated and the value of num_regulators should be the number of > > all available regulators rather than the number of matched ones. > > Could you go into more detail on your logic on this one please? The > platform data (and DT configuration) for regulators should be completely > optional. pdata contains an array of struct act8865_regulator_data and a num_regulators field which should hold the number of elements in the array, if I understand correctly. So in the current code, when populating platform data from DT, there is a mismatch between the number of elements that are put in the array (ARRAY_SIZE(act8865_matches)) and the value of num_regulators, which is set to the number of regulators found in the DT. In case of missing regulator nodes in DT, pdata->regulators will be populated with all the regulators but their init_data will be NULL. Beniamino
On Sun, Jun 29, 2014 at 11:46:43AM +0200, Beniamino Galvani wrote: > On Fri, Jun 27, 2014 at 05:07:25PM +0100, Mark Brown wrote: > > On Sun, Jun 22, 2014 at 05:31:42PM +0200, Beniamino Galvani wrote: > > > When platform data is populated from DT all the regulators are > > > instantiated and the value of num_regulators should be the number of > > > all available regulators rather than the number of matched ones. > > Could you go into more detail on your logic on this one please? The > > platform data (and DT configuration) for regulators should be completely > > optional. > pdata contains an array of struct act8865_regulator_data and a > num_regulators field which should hold the number of elements in the > array, if I understand correctly. > So in the current code, when populating platform data from DT, there > is a mismatch between the number of elements that are put in the array > (ARRAY_SIZE(act8865_matches)) and the value of num_regulators, which > is set to the number of regulators found in the DT. > In case of missing regulator nodes in DT, pdata->regulators will be > populated with all the regulators but their init_data will be NULL. OK, so that was slightly unclear but I see what you're saying now - the issue isn't that there will be fewer valid elements in the array, it's that the array is sparsely populated.
On Sun, Jun 22, 2014 at 05:31:42PM +0200, Beniamino Galvani wrote: > When platform data is populated from DT all the regulators are > instantiated and the value of num_regulators should be the number of > all available regulators rather than the number of matched ones. Applied, thanks.
diff --git a/drivers/regulator/act8865-regulator.c b/drivers/regulator/act8865-regulator.c index fe2c038..b03a0e8 100644 --- a/drivers/regulator/act8865-regulator.c +++ b/drivers/regulator/act8865-regulator.c @@ -230,7 +230,7 @@ static int act8865_pdata_from_dt(struct device *dev, if (!pdata->regulators) return -ENOMEM; - pdata->num_regulators = matched; + pdata->num_regulators = ARRAY_SIZE(act8865_matches); regulator = pdata->regulators; for (i = 0; i < ARRAY_SIZE(act8865_matches); i++) {
When platform data is populated from DT all the regulators are instantiated and the value of num_regulators should be the number of all available regulators rather than the number of matched ones. Signed-off-by: Beniamino Galvani <b.galvani@gmail.com> --- drivers/regulator/act8865-regulator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)