From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from saturn.retrosnub.co.uk ([178.18.118.26]:55153 "EHLO saturn.retrosnub.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750756AbaDZKzU (ORCPT ); Sat, 26 Apr 2014 06:55:20 -0400 Message-ID: <535B90EF.9070707@kernel.org> Date: Sat, 26 Apr 2014 11:56:47 +0100 From: Jonathan Cameron MIME-Version: 1.0 To: Linus Walleij , linux-iio@vger.kernel.org, Denis CIOCCA CC: Lee Jones Subject: Re: [PATCH 3/6] iio: st_sensors: get platform data from device tree References: <1397416143-4396-1-git-send-email-linus.walleij@linaro.org> <1397416143-4396-4-git-send-email-linus.walleij@linaro.org> In-Reply-To: <1397416143-4396-4-git-send-email-linus.walleij@linaro.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Sender: linux-iio-owner@vger.kernel.org List-Id: linux-iio@vger.kernel.org On 13/04/14 20:09, Linus Walleij wrote: > Currently the STMicroelectronics sensors only support one single > platform data item: configuration of the DRDY (data ready) pin > for a particular design. Augment the core to prioritize and take > this information from the device tree if the parent device has an > assigned device node, else fall back to passed in platform data > (usually the default data). > > Cc: Lee Jones > Cc: Denis CIOCCA > Signed-off-by: Linus Walleij This one adds binding elements so needs to sit for another week I think... If you are respinning patch 5 then I'll probably wait for a repost before taking another look at the remaining 4 patches. Thanks, Jonathan > --- > drivers/iio/common/st_sensors/st_sensors_core.c | 35 ++++++++++++++++++++++++- > 1 file changed, 34 insertions(+), 1 deletion(-) > > diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/common/st_sensors/st_sensors_core.c > index e8b932fed70e..1cdcef94e6a2 100644 > --- a/drivers/iio/common/st_sensors/st_sensors_core.c > +++ b/drivers/iio/common/st_sensors/st_sensors_core.c > @@ -14,8 +14,8 @@ > #include > #include > #include > +#include > #include > - > #include > > > @@ -265,14 +265,47 @@ static int st_sensors_set_drdy_int_pin(struct iio_dev *indio_dev, > return 0; > } > > +#ifdef CONFIG_OF > +static struct st_sensors_platform_data *st_sensors_of_probe(struct device *dev, > + struct st_sensors_platform_data *defdata) > +{ > + struct st_sensors_platform_data *pdata; > + struct device_node *np = dev->of_node; > + u32 val; > + > + if (!np) > + return NULL; > + > + pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL); > + if (!of_property_read_u32(np, "st,drdy-int-pin", &val) && (val <= 2)) > + pdata->drdy_int_pin = (u8) val; > + else > + pdata->drdy_int_pin = defdata ? defdata->drdy_int_pin : 1; > + > + return pdata; > +} > +#else > +static struct st_sensors_platform_data *st_sensors_of_probe(struct device *dev, > + struct st_sensors_platform_data *defdata) > +{ > + return NULL; > +} > +#endif > + > int st_sensors_init_sensor(struct iio_dev *indio_dev, > struct st_sensors_platform_data *pdata) > { > struct st_sensor_data *sdata = iio_priv(indio_dev); > + struct st_sensors_platform_data *of_pdata; > int err = 0; > > mutex_init(&sdata->tb.buf_lock); > > + /* If OF/DT pdata exists, it will take precedence of anything else */ > + of_pdata = st_sensors_of_probe(indio_dev->dev.parent, pdata); > + if (of_pdata) > + pdata = of_pdata; > + > if (pdata) > err = st_sensors_set_drdy_int_pin(indio_dev, pdata); > >