Linux-IIO Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v4 0/4] iio: adc: at91: misc driver cleanups
@ 2020-09-30 13:50 Alexandru Ardelean
  2020-09-30 13:50 ` [PATCH v4 1/4] iio: adc: at91_adc: use of_device_get_match_data() helper Alexandru Ardelean
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Alexandru Ardelean @ 2020-09-30 13:50 UTC (permalink / raw)
  To: linux-iio, linux-arm-kernel
  Cc: linux-kernel, jic23, nicolas.ferre, alexandre.belloni,
	ludovic.desroches, Alexandru Ardelean

This whole thing started because the lkp bot haunted me for a while with
this build warning:

>> drivers/iio/adc/at91_adc.c:1439:34: warning: unused variable
>> 'at91_adc_dt_ids' [-Wunused-const-variable]
   static const struct of_device_id at91_adc_dt_ids[] = {
                                    ^
   1 warning generated.

The fix may likely be patch 'iio: adc: at91_adc: add Kconfig dependency
on the OF symbol'; was pointed out by Jonathan.

Changelog v3 -> v4:
- https://lore.kernel.org/linux-iio/20200930125216.90424-1-alexandru.ardelean@analog.com/T/#t
- for patch: 'iio: adc: at91_adc: remove platform data and move defs in driver file'
   * updated/cleand up commit description
   * remove redundant pdata erorr message
   * return error code from at91_adc_probe_dt()
   * remove 'if (!node)' null check in at91_adc_probe_dt()
- added 'Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>'
  for patch: 'iio: adc: at91_adc: add Kconfig dep on the OF symbol and remove of_match_ptr()'

Changelog v2 -> v3:
- https://lore.kernel.org/linux-iio/20200930060008.42134-1-alexandru.ardelean@analog.com/T/#t
- added 'Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>'
  for patches:
     iio: adc: at91_adc: use of_device_get_match_data() helper
     iio: adc: at91_adc: const-ify some driver data
- fixed description for patch 'iio: adc: at91_adc: add Kconfig dependency on the OF symbol'
- squash patches:
     iio: adc: at91_adc: add Kconfig dependency on the OF symbol
     iio: adc: at91_adc: remove of_match_ptr() usage
- added patch: 'iio: adc: at91_adc: remove platform data and move defs in driver file'

Changelog v1 -> v2:
- https://lore.kernel.org/linux-iio/CA+U=Dspd11N-pXXnnY_5CSzNp50iRr7h16zXTCxo8Fk+v48F7g@mail.gmail.com/T/#m7c0efef4dc623776fe8bafdb5f734b0eaca50f82
- for patch 'iio: adc: at91_adc: use of_device_get_match_data() helper'
  changed description; it's just tidy-up patch, not a fix
- added 2 more patches:
  - iio: adc: at91_adc: add Kconfig dependency on the OF symbol
  - iio: adc: at91_adc: remove of_match_ptr() usage

Alexandru Ardelean (4):
  iio: adc: at91_adc: use of_device_get_match_data() helper
  iio: adc: at91_adc: const-ify some driver data
  iio: adc: at91_adc: add Kconfig dep on the OF symbol and remove
    of_match_ptr()
  iio: adc: at91_adc: remove platform data and move defs in driver file

 drivers/iio/adc/Kconfig                |  2 +-
 drivers/iio/adc/at91_adc.c             | 73 ++++++++++----------------
 include/linux/platform_data/at91_adc.h | 49 -----------------
 3 files changed, 28 insertions(+), 96 deletions(-)
 delete mode 100644 include/linux/platform_data/at91_adc.h

-- 
2.17.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v4 1/4] iio: adc: at91_adc: use of_device_get_match_data() helper
  2020-09-30 13:50 [PATCH v4 0/4] iio: adc: at91: misc driver cleanups Alexandru Ardelean
@ 2020-09-30 13:50 ` Alexandru Ardelean
  2020-09-30 13:50 ` [PATCH v4 2/4] iio: adc: at91_adc: const-ify some driver data Alexandru Ardelean
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Alexandru Ardelean @ 2020-09-30 13:50 UTC (permalink / raw)
  To: linux-iio, linux-arm-kernel
  Cc: linux-kernel, jic23, nicolas.ferre, alexandre.belloni,
	ludovic.desroches, Alexandru Ardelean

This is a small tidy-up. The of_device_get_match_data() helper retrieves
the driver data from the OF table, without needed to explicitly know the
table variable (since it can retrieve it from the driver object).

Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
---
 drivers/iio/adc/at91_adc.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
index 9b2c548fae95..c9ec0a4a357e 100644
--- a/drivers/iio/adc/at91_adc.c
+++ b/drivers/iio/adc/at91_adc.c
@@ -829,8 +829,6 @@ static u32 calc_startup_ticks_9x5(u32 startup_time, u32 adc_clk_khz)
 	return ticks;
 }
 
-static const struct of_device_id at91_adc_dt_ids[];
-
 static int at91_adc_probe_dt_ts(struct device_node *node,
 	struct at91_adc_state *st, struct device *dev)
 {
@@ -878,8 +876,7 @@ static int at91_adc_probe_dt(struct iio_dev *idev,
 	if (!node)
 		return -EINVAL;
 
-	st->caps = (struct at91_adc_caps *)
-		of_match_device(at91_adc_dt_ids, &pdev->dev)->data;
+	st->caps = (struct at91_adc_caps *)of_device_get_match_data(&pdev->dev);
 
 	st->use_external = of_property_read_bool(node, "atmel,adc-use-external-triggers");
 
-- 
2.17.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v4 2/4] iio: adc: at91_adc: const-ify some driver data
  2020-09-30 13:50 [PATCH v4 0/4] iio: adc: at91: misc driver cleanups Alexandru Ardelean
  2020-09-30 13:50 ` [PATCH v4 1/4] iio: adc: at91_adc: use of_device_get_match_data() helper Alexandru Ardelean
@ 2020-09-30 13:50 ` Alexandru Ardelean
  2020-09-30 13:50 ` [PATCH v4 3/4] iio: adc: at91_adc: add Kconfig dep on the OF symbol and remove of_match_ptr() Alexandru Ardelean
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Alexandru Ardelean @ 2020-09-30 13:50 UTC (permalink / raw)
  To: linux-iio, linux-arm-kernel
  Cc: linux-kernel, jic23, nicolas.ferre, alexandre.belloni,
	ludovic.desroches, Alexandru Ardelean

The main intent is to get rid of the cast for the void-pointer returned by
of_device_get_match_data().

This requires const-ifying the 'caps' and 'registers' references on the
at91_adc_state struct.

The caps can be obtained also from the old platform_data (in the
at91_adc_probe_pdata() function), but that cast is not touched in this
patch, since the old platform_data should be removed/cleaned-away.
Also, that cast deals with converting a kernel_ulong_t type to a pointer.
So, updating that cast doesn't yield any benefit.

Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
---
 drivers/iio/adc/at91_adc.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
index c9ec0a4a357e..7d846a2852a5 100644
--- a/drivers/iio/adc/at91_adc.c
+++ b/drivers/iio/adc/at91_adc.c
@@ -202,7 +202,7 @@ struct at91_adc_state {
 	struct mutex		lock;
 	u8			num_channels;
 	void __iomem		*reg_base;
-	struct at91_adc_reg_desc *registers;
+	const struct at91_adc_reg_desc *registers;
 	u32			startup_time;
 	u8			sample_hold_time;
 	bool			sleep_mode;
@@ -214,7 +214,7 @@ struct at91_adc_state {
 	u32			res;		/* resolution used for convertions */
 	bool			low_res;	/* the resolution corresponds to the lowest one */
 	wait_queue_head_t	wq_data_avail;
-	struct at91_adc_caps	*caps;
+	const struct at91_adc_caps	*caps;
 
 	/*
 	 * Following ADC channels are shared by touchscreen:
@@ -550,7 +550,7 @@ static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state)
 {
 	struct iio_dev *idev = iio_trigger_get_drvdata(trig);
 	struct at91_adc_state *st = iio_priv(idev);
-	struct at91_adc_reg_desc *reg = st->registers;
+	const struct at91_adc_reg_desc *reg = st->registers;
 	u32 status = at91_adc_readl(st, reg->trigger_register);
 	int value;
 	u8 bit;
@@ -876,7 +876,7 @@ static int at91_adc_probe_dt(struct iio_dev *idev,
 	if (!node)
 		return -EINVAL;
 
-	st->caps = (struct at91_adc_caps *)of_device_get_match_data(&pdev->dev);
+	st->caps = of_device_get_match_data(&pdev->dev);
 
 	st->use_external = of_property_read_bool(node, "atmel,adc-use-external-triggers");
 
-- 
2.17.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v4 3/4] iio: adc: at91_adc: add Kconfig dep on the OF symbol and remove of_match_ptr()
  2020-09-30 13:50 [PATCH v4 0/4] iio: adc: at91: misc driver cleanups Alexandru Ardelean
  2020-09-30 13:50 ` [PATCH v4 1/4] iio: adc: at91_adc: use of_device_get_match_data() helper Alexandru Ardelean
  2020-09-30 13:50 ` [PATCH v4 2/4] iio: adc: at91_adc: const-ify some driver data Alexandru Ardelean
@ 2020-09-30 13:50 ` Alexandru Ardelean
  2020-09-30 13:50 ` [PATCH v4 4/4] iio: adc: at91_adc: remove platform data and move defs in driver file Alexandru Ardelean
  2020-10-10 16:05 ` [PATCH v4 0/4] iio: adc: at91: misc driver cleanups Jonathan Cameron
  4 siblings, 0 replies; 8+ messages in thread
From: Alexandru Ardelean @ 2020-09-30 13:50 UTC (permalink / raw)
  To: linux-iio, linux-arm-kernel
  Cc: linux-kernel, jic23, nicolas.ferre, alexandre.belloni,
	ludovic.desroches, Alexandru Ardelean

This tries to solve a warning reported by the lkp bot:

>> drivers/iio/adc/at91_adc.c:1439:34: warning: unused variable
>> 'at91_adc_dt_ids' [-Wunused-const-variable]
   static const struct of_device_id at91_adc_dt_ids[] = {
                                    ^
   1 warning generated.

This warning has appeared after the AT91_ADC driver compilation has been
enabled via the COMPILE_TEST symbol dependency.

The warning is caused by the 'of_match_ptr()' helper which returns NULL if
OF is undefined. This driver should build only for device-tree context, so
a dependency on the OF Kconfig symbol has been added.
Also, the usage of of_match_ptr() helper has been removed since it
shouldn't ever return NULL (because the driver should not be built for the
non-OF context).

Fixes: 4027860dcc4c ("iio: Kconfig: at91_adc: add COMPILE_TEST dependency to driver")
Reported-by: kernel test robot <lkp@intel.com>
Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
---
 drivers/iio/adc/Kconfig    | 2 +-
 drivers/iio/adc/at91_adc.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
index 91ae90514aff..17e9ceb9c6c4 100644
--- a/drivers/iio/adc/Kconfig
+++ b/drivers/iio/adc/Kconfig
@@ -295,7 +295,7 @@ config ASPEED_ADC
 config AT91_ADC
 	tristate "Atmel AT91 ADC"
 	depends on ARCH_AT91 || COMPILE_TEST
-	depends on INPUT && SYSFS
+	depends on INPUT && SYSFS && OF
 	select IIO_BUFFER
 	select IIO_TRIGGERED_BUFFER
 	help
diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
index 7d846a2852a5..473bffe84fbd 100644
--- a/drivers/iio/adc/at91_adc.c
+++ b/drivers/iio/adc/at91_adc.c
@@ -1466,7 +1466,7 @@ static struct platform_driver at91_adc_driver = {
 	.id_table = at91_adc_ids,
 	.driver = {
 		   .name = DRIVER_NAME,
-		   .of_match_table = of_match_ptr(at91_adc_dt_ids),
+		   .of_match_table = at91_adc_dt_ids,
 		   .pm = &at91_adc_pm_ops,
 	},
 };
-- 
2.17.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v4 4/4] iio: adc: at91_adc: remove platform data and move defs in driver file
  2020-09-30 13:50 [PATCH v4 0/4] iio: adc: at91: misc driver cleanups Alexandru Ardelean
                   ` (2 preceding siblings ...)
  2020-09-30 13:50 ` [PATCH v4 3/4] iio: adc: at91_adc: add Kconfig dep on the OF symbol and remove of_match_ptr() Alexandru Ardelean
@ 2020-09-30 13:50 ` Alexandru Ardelean
  2020-09-30 14:05   ` Alexandre Belloni
  2020-10-10 16:05 ` [PATCH v4 0/4] iio: adc: at91: misc driver cleanups Jonathan Cameron
  4 siblings, 1 reply; 8+ messages in thread
From: Alexandru Ardelean @ 2020-09-30 13:50 UTC (permalink / raw)
  To: linux-iio, linux-arm-kernel
  Cc: linux-kernel, jic23, nicolas.ferre, alexandre.belloni,
	ludovic.desroches, Alexandru Ardelean

The AT91 ADC driver no longer uses the 'at91_add_device_adc' platform data
type. This is no longer used (at least in mainline boards).

This change removes the platform-data initialization from the driver, since
it is mostly dead code now.

Some definitions [from the platform data at91_adc.h include] have been
moved in the driver, since they are needed in the driver.

Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
---
 drivers/iio/adc/at91_adc.c             | 60 ++++++++++----------------
 include/linux/platform_data/at91_adc.h | 49 ---------------------
 2 files changed, 22 insertions(+), 87 deletions(-)
 delete mode 100644 include/linux/platform_data/at91_adc.h

diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
index 473bffe84fbd..be6abf739881 100644
--- a/drivers/iio/adc/at91_adc.c
+++ b/drivers/iio/adc/at91_adc.c
@@ -22,8 +22,6 @@
 #include <linux/slab.h>
 #include <linux/wait.h>
 
-#include <linux/platform_data/at91_adc.h>
-
 #include <linux/iio/iio.h>
 #include <linux/iio/buffer.h>
 #include <linux/iio/trigger.h>
@@ -153,6 +151,25 @@
 #define TOUCH_SHTIM                    0xa
 #define TOUCH_SCTIM_US		10		/* 10us for the Touchscreen Switches Closure Time */
 
+enum atmel_adc_ts_type {
+	ATMEL_ADC_TOUCHSCREEN_NONE = 0,
+	ATMEL_ADC_TOUCHSCREEN_4WIRE = 4,
+	ATMEL_ADC_TOUCHSCREEN_5WIRE = 5,
+};
+
+/**
+ * struct at91_adc_trigger - description of triggers
+ * @name:		name of the trigger advertised to the user
+ * @value:		value to set in the ADC's trigger setup register
+			to enable the trigger
+ * @is_external:	Does the trigger rely on an external pin?
+ */
+struct at91_adc_trigger {
+	const char	*name;
+	u8		value;
+	bool		is_external;
+};
+
 /**
  * struct at91_adc_reg_desc - Various informations relative to registers
  * @channel_base:	Base offset for the channel data registers
@@ -873,9 +890,6 @@ static int at91_adc_probe_dt(struct iio_dev *idev,
 	int i = 0, ret;
 	u32 prop;
 
-	if (!node)
-		return -EINVAL;
-
 	st->caps = of_device_get_match_data(&pdev->dev);
 
 	st->use_external = of_property_read_bool(node, "atmel,adc-use-external-triggers");
@@ -957,30 +971,6 @@ static int at91_adc_probe_dt(struct iio_dev *idev,
 	return ret;
 }
 
-static int at91_adc_probe_pdata(struct at91_adc_state *st,
-				struct platform_device *pdev)
-{
-	struct at91_adc_data *pdata = pdev->dev.platform_data;
-
-	if (!pdata)
-		return -EINVAL;
-
-	st->caps = (struct at91_adc_caps *)
-			platform_get_device_id(pdev)->driver_data;
-
-	st->use_external = pdata->use_external_triggers;
-	st->vref_mv = pdata->vref;
-	st->channels_mask = pdata->channels_used;
-	st->num_channels = st->caps->num_channels;
-	st->startup_time = pdata->startup_time;
-	st->trigger_number = pdata->trigger_number;
-	st->trigger_list = pdata->trigger_list;
-	st->registers = &st->caps->registers;
-	st->touchscreen_type = pdata->touchscreen_type;
-
-	return 0;
-}
-
 static const struct iio_info at91_adc_info = {
 	.read_raw = &at91_adc_read_raw,
 };
@@ -1157,15 +1147,9 @@ static int at91_adc_probe(struct platform_device *pdev)
 
 	st = iio_priv(idev);
 
-	if (pdev->dev.of_node)
-		ret = at91_adc_probe_dt(idev, pdev);
-	else
-		ret = at91_adc_probe_pdata(st, pdev);
-
-	if (ret) {
-		dev_err(&pdev->dev, "No platform data available.\n");
-		return -EINVAL;
-	}
+	ret = at91_adc_probe_dt(idev, pdev);
+	if (ret)
+		return ret;
 
 	platform_set_drvdata(pdev, idev);
 
diff --git a/include/linux/platform_data/at91_adc.h b/include/linux/platform_data/at91_adc.h
deleted file mode 100644
index f20eaeb827ce..000000000000
--- a/include/linux/platform_data/at91_adc.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * Copyright (C) 2011 Free Electrons
- */
-
-#ifndef _AT91_ADC_H_
-#define _AT91_ADC_H_
-
-enum atmel_adc_ts_type {
-	ATMEL_ADC_TOUCHSCREEN_NONE = 0,
-	ATMEL_ADC_TOUCHSCREEN_4WIRE = 4,
-	ATMEL_ADC_TOUCHSCREEN_5WIRE = 5,
-};
-
-/**
- * struct at91_adc_trigger - description of triggers
- * @name:		name of the trigger advertised to the user
- * @value:		value to set in the ADC's trigger setup register
-			to enable the trigger
- * @is_external:	Does the trigger rely on an external pin?
- */
-struct at91_adc_trigger {
-	const char	*name;
-	u8		value;
-	bool		is_external;
-};
-
-/**
- * struct at91_adc_data - platform data for ADC driver
- * @channels_used:		channels in use on the board as a bitmask
- * @startup_time:		startup time of the ADC in microseconds
- * @trigger_list:		Triggers available in the ADC
- * @trigger_number:		Number of triggers available in the ADC
- * @use_external_triggers:	does the board has external triggers availables
- * @vref:			Reference voltage for the ADC in millivolts
- * @touchscreen_type:		If a touchscreen is connected, its type (4 or 5 wires)
- */
-struct at91_adc_data {
-	unsigned long			channels_used;
-	u8				startup_time;
-	struct at91_adc_trigger		*trigger_list;
-	u8				trigger_number;
-	bool				use_external_triggers;
-	u16				vref;
-	enum atmel_adc_ts_type		touchscreen_type;
-};
-
-extern void __init at91_add_device_adc(struct at91_adc_data *data);
-#endif
-- 
2.17.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v4 4/4] iio: adc: at91_adc: remove platform data and move defs in driver file
  2020-09-30 13:50 ` [PATCH v4 4/4] iio: adc: at91_adc: remove platform data and move defs in driver file Alexandru Ardelean
@ 2020-09-30 14:05   ` Alexandre Belloni
  2020-10-10 16:07     ` Jonathan Cameron
  0 siblings, 1 reply; 8+ messages in thread
From: Alexandre Belloni @ 2020-09-30 14:05 UTC (permalink / raw)
  To: Alexandru Ardelean
  Cc: linux-iio, linux-arm-kernel, linux-kernel, jic23, nicolas.ferre,
	ludovic.desroches

On 30/09/2020 16:50:48+0300, Alexandru Ardelean wrote:
> The AT91 ADC driver no longer uses the 'at91_add_device_adc' platform data
> type. This is no longer used (at least in mainline boards).
> 
> This change removes the platform-data initialization from the driver, since
> it is mostly dead code now.
> 
> Some definitions [from the platform data at91_adc.h include] have been
> moved in the driver, since they are needed in the driver.
> 
> Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>

> ---
>  drivers/iio/adc/at91_adc.c             | 60 ++++++++++----------------
>  include/linux/platform_data/at91_adc.h | 49 ---------------------
>  2 files changed, 22 insertions(+), 87 deletions(-)
>  delete mode 100644 include/linux/platform_data/at91_adc.h
> 
> diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
> index 473bffe84fbd..be6abf739881 100644
> --- a/drivers/iio/adc/at91_adc.c
> +++ b/drivers/iio/adc/at91_adc.c
> @@ -22,8 +22,6 @@
>  #include <linux/slab.h>
>  #include <linux/wait.h>
>  
> -#include <linux/platform_data/at91_adc.h>
> -
>  #include <linux/iio/iio.h>
>  #include <linux/iio/buffer.h>
>  #include <linux/iio/trigger.h>
> @@ -153,6 +151,25 @@
>  #define TOUCH_SHTIM                    0xa
>  #define TOUCH_SCTIM_US		10		/* 10us for the Touchscreen Switches Closure Time */
>  
> +enum atmel_adc_ts_type {
> +	ATMEL_ADC_TOUCHSCREEN_NONE = 0,
> +	ATMEL_ADC_TOUCHSCREEN_4WIRE = 4,
> +	ATMEL_ADC_TOUCHSCREEN_5WIRE = 5,
> +};
> +
> +/**
> + * struct at91_adc_trigger - description of triggers
> + * @name:		name of the trigger advertised to the user
> + * @value:		value to set in the ADC's trigger setup register
> +			to enable the trigger
> + * @is_external:	Does the trigger rely on an external pin?
> + */
> +struct at91_adc_trigger {
> +	const char	*name;
> +	u8		value;
> +	bool		is_external;
> +};
> +
>  /**
>   * struct at91_adc_reg_desc - Various informations relative to registers
>   * @channel_base:	Base offset for the channel data registers
> @@ -873,9 +890,6 @@ static int at91_adc_probe_dt(struct iio_dev *idev,
>  	int i = 0, ret;
>  	u32 prop;
>  
> -	if (!node)
> -		return -EINVAL;
> -
>  	st->caps = of_device_get_match_data(&pdev->dev);
>  
>  	st->use_external = of_property_read_bool(node, "atmel,adc-use-external-triggers");
> @@ -957,30 +971,6 @@ static int at91_adc_probe_dt(struct iio_dev *idev,
>  	return ret;
>  }
>  
> -static int at91_adc_probe_pdata(struct at91_adc_state *st,
> -				struct platform_device *pdev)
> -{
> -	struct at91_adc_data *pdata = pdev->dev.platform_data;
> -
> -	if (!pdata)
> -		return -EINVAL;
> -
> -	st->caps = (struct at91_adc_caps *)
> -			platform_get_device_id(pdev)->driver_data;
> -
> -	st->use_external = pdata->use_external_triggers;
> -	st->vref_mv = pdata->vref;
> -	st->channels_mask = pdata->channels_used;
> -	st->num_channels = st->caps->num_channels;
> -	st->startup_time = pdata->startup_time;
> -	st->trigger_number = pdata->trigger_number;
> -	st->trigger_list = pdata->trigger_list;
> -	st->registers = &st->caps->registers;
> -	st->touchscreen_type = pdata->touchscreen_type;
> -
> -	return 0;
> -}
> -
>  static const struct iio_info at91_adc_info = {
>  	.read_raw = &at91_adc_read_raw,
>  };
> @@ -1157,15 +1147,9 @@ static int at91_adc_probe(struct platform_device *pdev)
>  
>  	st = iio_priv(idev);
>  
> -	if (pdev->dev.of_node)
> -		ret = at91_adc_probe_dt(idev, pdev);
> -	else
> -		ret = at91_adc_probe_pdata(st, pdev);
> -
> -	if (ret) {
> -		dev_err(&pdev->dev, "No platform data available.\n");
> -		return -EINVAL;
> -	}
> +	ret = at91_adc_probe_dt(idev, pdev);
> +	if (ret)
> +		return ret;
>  
>  	platform_set_drvdata(pdev, idev);
>  
> diff --git a/include/linux/platform_data/at91_adc.h b/include/linux/platform_data/at91_adc.h
> deleted file mode 100644
> index f20eaeb827ce..000000000000
> --- a/include/linux/platform_data/at91_adc.h
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-or-later */
> -/*
> - * Copyright (C) 2011 Free Electrons
> - */
> -
> -#ifndef _AT91_ADC_H_
> -#define _AT91_ADC_H_
> -
> -enum atmel_adc_ts_type {
> -	ATMEL_ADC_TOUCHSCREEN_NONE = 0,
> -	ATMEL_ADC_TOUCHSCREEN_4WIRE = 4,
> -	ATMEL_ADC_TOUCHSCREEN_5WIRE = 5,
> -};
> -
> -/**
> - * struct at91_adc_trigger - description of triggers
> - * @name:		name of the trigger advertised to the user
> - * @value:		value to set in the ADC's trigger setup register
> -			to enable the trigger
> - * @is_external:	Does the trigger rely on an external pin?
> - */
> -struct at91_adc_trigger {
> -	const char	*name;
> -	u8		value;
> -	bool		is_external;
> -};
> -
> -/**
> - * struct at91_adc_data - platform data for ADC driver
> - * @channels_used:		channels in use on the board as a bitmask
> - * @startup_time:		startup time of the ADC in microseconds
> - * @trigger_list:		Triggers available in the ADC
> - * @trigger_number:		Number of triggers available in the ADC
> - * @use_external_triggers:	does the board has external triggers availables
> - * @vref:			Reference voltage for the ADC in millivolts
> - * @touchscreen_type:		If a touchscreen is connected, its type (4 or 5 wires)
> - */
> -struct at91_adc_data {
> -	unsigned long			channels_used;
> -	u8				startup_time;
> -	struct at91_adc_trigger		*trigger_list;
> -	u8				trigger_number;
> -	bool				use_external_triggers;
> -	u16				vref;
> -	enum atmel_adc_ts_type		touchscreen_type;
> -};
> -
> -extern void __init at91_add_device_adc(struct at91_adc_data *data);
> -#endif
> -- 
> 2.17.1
> 

-- 
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v4 0/4] iio: adc: at91: misc driver cleanups
  2020-09-30 13:50 [PATCH v4 0/4] iio: adc: at91: misc driver cleanups Alexandru Ardelean
                   ` (3 preceding siblings ...)
  2020-09-30 13:50 ` [PATCH v4 4/4] iio: adc: at91_adc: remove platform data and move defs in driver file Alexandru Ardelean
@ 2020-10-10 16:05 ` Jonathan Cameron
  4 siblings, 0 replies; 8+ messages in thread
From: Jonathan Cameron @ 2020-10-10 16:05 UTC (permalink / raw)
  To: Alexandru Ardelean
  Cc: linux-iio, linux-arm-kernel, linux-kernel, nicolas.ferre,
	alexandre.belloni, ludovic.desroches

On Wed, 30 Sep 2020 16:50:44 +0300
Alexandru Ardelean <alexandru.ardelean@analog.com> wrote:

> This whole thing started because the lkp bot haunted me for a while with
> this build warning:
> 
> >> drivers/iio/adc/at91_adc.c:1439:34: warning: unused variable
> >> 'at91_adc_dt_ids' [-Wunused-const-variable]  
>    static const struct of_device_id at91_adc_dt_ids[] = {
>                                     ^
>    1 warning generated.
> 
> The fix may likely be patch 'iio: adc: at91_adc: add Kconfig dependency
> on the OF symbol'; was pointed out by Jonathan.

Series applied to the togreg branch of iio.git and pushed out as testing
for the autobuilders to play with it and see what we missed.

Thanks,

Jonathan

> 
> Changelog v3 -> v4:
> - https://lore.kernel.org/linux-iio/20200930125216.90424-1-alexandru.ardelean@analog.com/T/#t
> - for patch: 'iio: adc: at91_adc: remove platform data and move defs in driver file'
>    * updated/cleand up commit description
>    * remove redundant pdata erorr message
>    * return error code from at91_adc_probe_dt()
>    * remove 'if (!node)' null check in at91_adc_probe_dt()
> - added 'Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>'
>   for patch: 'iio: adc: at91_adc: add Kconfig dep on the OF symbol and remove of_match_ptr()'
> 
> Changelog v2 -> v3:
> - https://lore.kernel.org/linux-iio/20200930060008.42134-1-alexandru.ardelean@analog.com/T/#t
> - added 'Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>'
>   for patches:
>      iio: adc: at91_adc: use of_device_get_match_data() helper
>      iio: adc: at91_adc: const-ify some driver data
> - fixed description for patch 'iio: adc: at91_adc: add Kconfig dependency on the OF symbol'
> - squash patches:
>      iio: adc: at91_adc: add Kconfig dependency on the OF symbol
>      iio: adc: at91_adc: remove of_match_ptr() usage
> - added patch: 'iio: adc: at91_adc: remove platform data and move defs in driver file'
> 
> Changelog v1 -> v2:
> - https://lore.kernel.org/linux-iio/CA+U=Dspd11N-pXXnnY_5CSzNp50iRr7h16zXTCxo8Fk+v48F7g@mail.gmail.com/T/#m7c0efef4dc623776fe8bafdb5f734b0eaca50f82
> - for patch 'iio: adc: at91_adc: use of_device_get_match_data() helper'
>   changed description; it's just tidy-up patch, not a fix
> - added 2 more patches:
>   - iio: adc: at91_adc: add Kconfig dependency on the OF symbol
>   - iio: adc: at91_adc: remove of_match_ptr() usage
> 
> Alexandru Ardelean (4):
>   iio: adc: at91_adc: use of_device_get_match_data() helper
>   iio: adc: at91_adc: const-ify some driver data
>   iio: adc: at91_adc: add Kconfig dep on the OF symbol and remove
>     of_match_ptr()
>   iio: adc: at91_adc: remove platform data and move defs in driver file
> 
>  drivers/iio/adc/Kconfig                |  2 +-
>  drivers/iio/adc/at91_adc.c             | 73 ++++++++++----------------
>  include/linux/platform_data/at91_adc.h | 49 -----------------
>  3 files changed, 28 insertions(+), 96 deletions(-)
>  delete mode 100644 include/linux/platform_data/at91_adc.h
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v4 4/4] iio: adc: at91_adc: remove platform data and move defs in driver file
  2020-09-30 14:05   ` Alexandre Belloni
@ 2020-10-10 16:07     ` Jonathan Cameron
  0 siblings, 0 replies; 8+ messages in thread
From: Jonathan Cameron @ 2020-10-10 16:07 UTC (permalink / raw)
  To: Alexandre Belloni
  Cc: Alexandru Ardelean, linux-iio, linux-arm-kernel, linux-kernel,
	nicolas.ferre, ludovic.desroches

On Wed, 30 Sep 2020 16:05:55 +0200
Alexandre Belloni <alexandre.belloni@bootlin.com> wrote:

> On 30/09/2020 16:50:48+0300, Alexandru Ardelean wrote:
> > The AT91 ADC driver no longer uses the 'at91_add_device_adc' platform data
> > type. This is no longer used (at least in mainline boards).
> > 
> > This change removes the platform-data initialization from the driver, since
> > it is mostly dead code now.
> > 
> > Some definitions [from the platform data at91_adc.h include] have been
> > moved in the driver, since they are needed in the driver.
> > 
> > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>  
> Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
> 
> > ---
> >  drivers/iio/adc/at91_adc.c             | 60 ++++++++++----------------
> >  include/linux/platform_data/at91_adc.h | 49 ---------------------
> >  2 files changed, 22 insertions(+), 87 deletions(-)
> >  delete mode 100644 include/linux/platform_data/at91_adc.h
> > 
> > diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
> > index 473bffe84fbd..be6abf739881 100644
> > --- a/drivers/iio/adc/at91_adc.c
> > +++ b/drivers/iio/adc/at91_adc.c
> > @@ -22,8 +22,6 @@
> >  #include <linux/slab.h>
> >  #include <linux/wait.h>
> >  
> > -#include <linux/platform_data/at91_adc.h>
> > -
> >  #include <linux/iio/iio.h>
> >  #include <linux/iio/buffer.h>
> >  #include <linux/iio/trigger.h>
> > @@ -153,6 +151,25 @@
> >  #define TOUCH_SHTIM                    0xa
> >  #define TOUCH_SCTIM_US		10		/* 10us for the Touchscreen Switches Closure Time */
> >  
> > +enum atmel_adc_ts_type {
> > +	ATMEL_ADC_TOUCHSCREEN_NONE = 0,
> > +	ATMEL_ADC_TOUCHSCREEN_4WIRE = 4,
> > +	ATMEL_ADC_TOUCHSCREEN_5WIRE = 5,
> > +};
> > +
> > +/**
> > + * struct at91_adc_trigger - description of triggers
> > + * @name:		name of the trigger advertised to the user
> > + * @value:		value to set in the ADC's trigger setup register
> > +			to enable the trigger
Build with W=1 (and hence kernel doc checks) picked up missing * 
on this line.

Fixed.

Jonathan

> > + * @is_external:	Does the trigger rely on an external pin?
> > + */
> > +struct at91_adc_trigger {
> > +	const char	*name;
> > +	u8		value;
> > +	bool		is_external;
> > +};
> > +
> >  /**
> >   * struct at91_adc_reg_desc - Various informations relative to registers
> >   * @channel_base:	Base offset for the channel data registers
> > @@ -873,9 +890,6 @@ static int at91_adc_probe_dt(struct iio_dev *idev,
> >  	int i = 0, ret;
> >  	u32 prop;
> >  
> > -	if (!node)
> > -		return -EINVAL;
> > -
> >  	st->caps = of_device_get_match_data(&pdev->dev);
> >  
> >  	st->use_external = of_property_read_bool(node, "atmel,adc-use-external-triggers");
> > @@ -957,30 +971,6 @@ static int at91_adc_probe_dt(struct iio_dev *idev,
> >  	return ret;
> >  }
> >  
> > -static int at91_adc_probe_pdata(struct at91_adc_state *st,
> > -				struct platform_device *pdev)
> > -{
> > -	struct at91_adc_data *pdata = pdev->dev.platform_data;
> > -
> > -	if (!pdata)
> > -		return -EINVAL;
> > -
> > -	st->caps = (struct at91_adc_caps *)
> > -			platform_get_device_id(pdev)->driver_data;
> > -
> > -	st->use_external = pdata->use_external_triggers;
> > -	st->vref_mv = pdata->vref;
> > -	st->channels_mask = pdata->channels_used;
> > -	st->num_channels = st->caps->num_channels;
> > -	st->startup_time = pdata->startup_time;
> > -	st->trigger_number = pdata->trigger_number;
> > -	st->trigger_list = pdata->trigger_list;
> > -	st->registers = &st->caps->registers;
> > -	st->touchscreen_type = pdata->touchscreen_type;
> > -
> > -	return 0;
> > -}
> > -
> >  static const struct iio_info at91_adc_info = {
> >  	.read_raw = &at91_adc_read_raw,
> >  };
> > @@ -1157,15 +1147,9 @@ static int at91_adc_probe(struct platform_device *pdev)
> >  
> >  	st = iio_priv(idev);
> >  
> > -	if (pdev->dev.of_node)
> > -		ret = at91_adc_probe_dt(idev, pdev);
> > -	else
> > -		ret = at91_adc_probe_pdata(st, pdev);
> > -
> > -	if (ret) {
> > -		dev_err(&pdev->dev, "No platform data available.\n");
> > -		return -EINVAL;
> > -	}
> > +	ret = at91_adc_probe_dt(idev, pdev);
> > +	if (ret)
> > +		return ret;
> >  
> >  	platform_set_drvdata(pdev, idev);
> >  
> > diff --git a/include/linux/platform_data/at91_adc.h b/include/linux/platform_data/at91_adc.h
> > deleted file mode 100644
> > index f20eaeb827ce..000000000000
> > --- a/include/linux/platform_data/at91_adc.h
> > +++ /dev/null
> > @@ -1,49 +0,0 @@
> > -/* SPDX-License-Identifier: GPL-2.0-or-later */
> > -/*
> > - * Copyright (C) 2011 Free Electrons
> > - */
> > -
> > -#ifndef _AT91_ADC_H_
> > -#define _AT91_ADC_H_
> > -
> > -enum atmel_adc_ts_type {
> > -	ATMEL_ADC_TOUCHSCREEN_NONE = 0,
> > -	ATMEL_ADC_TOUCHSCREEN_4WIRE = 4,
> > -	ATMEL_ADC_TOUCHSCREEN_5WIRE = 5,
> > -};
> > -
> > -/**
> > - * struct at91_adc_trigger - description of triggers
> > - * @name:		name of the trigger advertised to the user
> > - * @value:		value to set in the ADC's trigger setup register
> > -			to enable the trigger
> > - * @is_external:	Does the trigger rely on an external pin?
> > - */
> > -struct at91_adc_trigger {
> > -	const char	*name;
> > -	u8		value;
> > -	bool		is_external;
> > -};
> > -
> > -/**
> > - * struct at91_adc_data - platform data for ADC driver
> > - * @channels_used:		channels in use on the board as a bitmask
> > - * @startup_time:		startup time of the ADC in microseconds
> > - * @trigger_list:		Triggers available in the ADC
> > - * @trigger_number:		Number of triggers available in the ADC
> > - * @use_external_triggers:	does the board has external triggers availables
> > - * @vref:			Reference voltage for the ADC in millivolts
> > - * @touchscreen_type:		If a touchscreen is connected, its type (4 or 5 wires)
> > - */
> > -struct at91_adc_data {
> > -	unsigned long			channels_used;
> > -	u8				startup_time;
> > -	struct at91_adc_trigger		*trigger_list;
> > -	u8				trigger_number;
> > -	bool				use_external_triggers;
> > -	u16				vref;
> > -	enum atmel_adc_ts_type		touchscreen_type;
> > -};
> > -
> > -extern void __init at91_add_device_adc(struct at91_adc_data *data);
> > -#endif
> > -- 
> > 2.17.1
> >   
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, back to index

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-30 13:50 [PATCH v4 0/4] iio: adc: at91: misc driver cleanups Alexandru Ardelean
2020-09-30 13:50 ` [PATCH v4 1/4] iio: adc: at91_adc: use of_device_get_match_data() helper Alexandru Ardelean
2020-09-30 13:50 ` [PATCH v4 2/4] iio: adc: at91_adc: const-ify some driver data Alexandru Ardelean
2020-09-30 13:50 ` [PATCH v4 3/4] iio: adc: at91_adc: add Kconfig dep on the OF symbol and remove of_match_ptr() Alexandru Ardelean
2020-09-30 13:50 ` [PATCH v4 4/4] iio: adc: at91_adc: remove platform data and move defs in driver file Alexandru Ardelean
2020-09-30 14:05   ` Alexandre Belloni
2020-10-10 16:07     ` Jonathan Cameron
2020-10-10 16:05 ` [PATCH v4 0/4] iio: adc: at91: misc driver cleanups Jonathan Cameron

Linux-IIO Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-iio/0 linux-iio/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-iio linux-iio/ https://lore.kernel.org/linux-iio \
		linux-iio@vger.kernel.org
	public-inbox-index linux-iio

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-iio


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git