Re: [PATCH] iio: adc: ad7887: invert/rework external ref logic

2020-10-02 Thread Alexandru Ardelean
On Fri, Oct 2, 2020 at 1:47 AM kernel test robot  wrote:
>
> Hi Alexandru,
>
> I love your patch! Yet something to improve:
>
> [auto build test ERROR on iio/togreg]
> [also build test ERROR on linux/master linus/master v5.9-rc7 next-20201001]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
>
> url:
> https://github.com/0day-ci/linux/commits/Alexandru-Ardelean/iio-adc-ad7887-invert-rework-external-ref-logic/20201001-220829
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git togreg
> config: c6x-randconfig-r034-20200930 (attached as .config)
> compiler: c6x-elf-gcc (GCC) 9.3.0
> reproduce (this is a W=1 build):
> wget 
> https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
> ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # 
> https://github.com/0day-ci/linux/commit/98dbf5fa747aac2e245826d8c6cd34b087aeaa27
> git remote add linux-review https://github.com/0day-ci/linux
> git fetch --no-tags linux-review 
> Alexandru-Ardelean/iio-adc-ad7887-invert-rework-external-ref-logic/20201001-220829
> git checkout 98dbf5fa747aac2e245826d8c6cd34b087aeaa27
> # save the attached .config to linux build tree
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross 
> ARCH=c6x
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot 
>
> All errors (new ones prefixed by >>):
>
>drivers/iio/adc/ad7887.c: In function 'ad7887_probe':
> >> drivers/iio/adc/ad7887.c:276:22: error: 'struct ad7887_platform_data' has 
> >> no member named 'use_onchip_ref'
>  276 |  if (!pdata || !pdata->use_onchip_ref)
>  |  ^~
>

oh, i really did miss part;
another day of too much multi-tasking


> vim +276 drivers/iio/adc/ad7887.c
>
> 6fe8135fccd66ae drivers/staging/iio/adc/ad7887_core.c Jonathan Cameron   
> 2011-05-18  234
> fc52692c49969ec drivers/iio/adc/ad7887.c  Greg Kroah-Hartman 
> 2012-12-21  235  static int ad7887_probe(struct spi_device *spi)
> 2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
> 2010-11-22  236  {
> 2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
> 2010-11-22  237struct ad7887_platform_data *pdata = 
> spi->dev.platform_data;
> 2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
> 2010-11-22  238struct ad7887_state *st;
> 82429e0d33ece55 drivers/iio/adc/ad7887.c  Sachin Kamat   
> 2013-07-23  239struct iio_dev *indio_dev;
> fce7c3eac7d4ca7 drivers/staging/iio/adc/ad7887.c  Lars-Peter Clausen 
> 2012-11-05  240uint8_t mode;
> bf5d2613c9083b8 drivers/staging/iio/adc/ad7887_core.c Lars-Peter Clausen 
> 2012-11-05  241int ret;
> 2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
> 2010-11-22  242
> 82429e0d33ece55 drivers/iio/adc/ad7887.c  Sachin Kamat   
> 2013-07-23  243indio_dev = devm_iio_device_alloc(>dev, 
> sizeof(*st));
> f39e086adcbdb95 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
> 2011-05-18  244if (indio_dev == NULL)
> f39e086adcbdb95 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
> 2011-05-18  245return -ENOMEM;
> f39e086adcbdb95 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
> 2011-05-18  246
> f39e086adcbdb95 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
> 2011-05-18  247st = iio_priv(indio_dev);
> 2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
> 2010-11-22  248
> 98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
> 2020-10-01  249st->reg = devm_regulator_get_optional(>dev, 
> "vref");
> 98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
> 2020-10-01  250if (IS_ERR(st->reg)) {
> 98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
> 2020-10-01  251if (PTR_ERR(st->reg) != -ENODEV)
> 82429e0d33ece55 drivers/iio/adc/ad7887.c  Sachin Kamat   
> 2013-07-23  252return PTR_ERR(st->reg);
> bf5d2613c9083b8 drivers/staging/iio/adc/ad7887_core.c Lars-Peter Clausen 
> 2012-11-05  253
> 98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
> 2020-10-01  254st->reg = NULL;
> 98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
> 2020-10-01  255}
> 98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
> 2020-10-01  256
> 98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
> 2020-10-01  257if (st->reg) {
> 2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
> 2010-11-22  258ret = regulator_enable(st->reg);
> 

Re: [PATCH] iio: adc: ad7887: invert/rework external ref logic

2020-10-01 Thread kernel test robot
Hi Alexandru,

I love your patch! Yet something to improve:

[auto build test ERROR on iio/togreg]
[also build test ERROR on linux/master linus/master v5.9-rc7 next-20201001]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:
https://github.com/0day-ci/linux/commits/Alexandru-Ardelean/iio-adc-ad7887-invert-rework-external-ref-logic/20201001-220829
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git togreg
config: c6x-randconfig-r034-20200930 (attached as .config)
compiler: c6x-elf-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
# 
https://github.com/0day-ci/linux/commit/98dbf5fa747aac2e245826d8c6cd34b087aeaa27
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review 
Alexandru-Ardelean/iio-adc-ad7887-invert-rework-external-ref-logic/20201001-220829
git checkout 98dbf5fa747aac2e245826d8c6cd34b087aeaa27
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=c6x 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot 

All errors (new ones prefixed by >>):

   drivers/iio/adc/ad7887.c: In function 'ad7887_probe':
>> drivers/iio/adc/ad7887.c:276:22: error: 'struct ad7887_platform_data' has no 
>> member named 'use_onchip_ref'
 276 |  if (!pdata || !pdata->use_onchip_ref)
 |  ^~

vim +276 drivers/iio/adc/ad7887.c

6fe8135fccd66ae drivers/staging/iio/adc/ad7887_core.c Jonathan Cameron   
2011-05-18  234  
fc52692c49969ec drivers/iio/adc/ad7887.c  Greg Kroah-Hartman 
2012-12-21  235  static int ad7887_probe(struct spi_device *spi)
2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
2010-11-22  236  {
2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
2010-11-22  237struct ad7887_platform_data *pdata = 
spi->dev.platform_data;
2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
2010-11-22  238struct ad7887_state *st;
82429e0d33ece55 drivers/iio/adc/ad7887.c  Sachin Kamat   
2013-07-23  239struct iio_dev *indio_dev;
fce7c3eac7d4ca7 drivers/staging/iio/adc/ad7887.c  Lars-Peter Clausen 
2012-11-05  240uint8_t mode;
bf5d2613c9083b8 drivers/staging/iio/adc/ad7887_core.c Lars-Peter Clausen 
2012-11-05  241int ret;
2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
2010-11-22  242  
82429e0d33ece55 drivers/iio/adc/ad7887.c  Sachin Kamat   
2013-07-23  243indio_dev = devm_iio_device_alloc(>dev, 
sizeof(*st));
f39e086adcbdb95 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
2011-05-18  244if (indio_dev == NULL)
f39e086adcbdb95 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
2011-05-18  245return -ENOMEM;
f39e086adcbdb95 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
2011-05-18  246  
f39e086adcbdb95 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
2011-05-18  247st = iio_priv(indio_dev);
2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
2010-11-22  248  
98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
2020-10-01  249st->reg = devm_regulator_get_optional(>dev, "vref");
98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
2020-10-01  250if (IS_ERR(st->reg)) {
98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
2020-10-01  251if (PTR_ERR(st->reg) != -ENODEV)
82429e0d33ece55 drivers/iio/adc/ad7887.c  Sachin Kamat   
2013-07-23  252return PTR_ERR(st->reg);
bf5d2613c9083b8 drivers/staging/iio/adc/ad7887_core.c Lars-Peter Clausen 
2012-11-05  253  
98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
2020-10-01  254st->reg = NULL;
98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
2020-10-01  255}
98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
2020-10-01  256  
98dbf5fa747aac2 drivers/iio/adc/ad7887.c  Alexandru Ardelean 
2020-10-01  257if (st->reg) {
2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
2010-11-22  258ret = regulator_enable(st->reg);
2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael Hennerich  
2010-11-22  259if (ret)
82429e0d33ece55 drivers/iio/adc/ad7887.c  Sachin Kamat   
2013-07-23  260return ret;
2b4756aa36909a9 drivers/staging/iio/adc/ad7887_core.c Michael 

[PATCH] iio: adc: ad7887: invert/rework external ref logic

2020-10-01 Thread Alexandru Ardelean
This change inverts/reworks the logic to use an external reference via a
provided regulator.

Now the driver tries to obtain a regulator. If one is found, then it is
used. The rest of the driver logic already checks if there is a non-NULL
reference to a regulator, so it should be fine.

Signed-off-by: Alexandru Ardelean 
---
 drivers/iio/adc/ad7887.c | 10 +++---
 include/linux/platform_data/ad7887.h |  4 
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/iio/adc/ad7887.c b/drivers/iio/adc/ad7887.c
index 037bcb47693c..9b32b1f43c34 100644
--- a/drivers/iio/adc/ad7887.c
+++ b/drivers/iio/adc/ad7887.c
@@ -246,11 +246,15 @@ static int ad7887_probe(struct spi_device *spi)
 
st = iio_priv(indio_dev);
 
-   if (!pdata || !pdata->use_onchip_ref) {
-   st->reg = devm_regulator_get(>dev, "vref");
-   if (IS_ERR(st->reg))
+   st->reg = devm_regulator_get_optional(>dev, "vref");
+   if (IS_ERR(st->reg)) {
+   if (PTR_ERR(st->reg) != -ENODEV)
return PTR_ERR(st->reg);
 
+   st->reg = NULL;
+   }
+
+   if (st->reg) {
ret = regulator_enable(st->reg);
if (ret)
return ret;
diff --git a/include/linux/platform_data/ad7887.h 
b/include/linux/platform_data/ad7887.h
index 732af46b2d16..9b4dca6ae70b 100644
--- a/include/linux/platform_data/ad7887.h
+++ b/include/linux/platform_data/ad7887.h
@@ -13,13 +13,9 @@
  * second input channel, and Vref is internally connected to Vdd. If set to
  * false the device is used in single channel mode and AIN1/Vref is used as
  * VREF input.
- * @use_onchip_ref: Whether to use the onchip reference. If set to true the
- * internal 2.5V reference is used. If set to false a external reference is
- * used.
  */
 struct ad7887_platform_data {
bool en_dual;
-   bool use_onchip_ref;
 };
 
 #endif /* IIO_ADC_AD7887_H_ */
-- 
2.17.1