linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] iio: proximity: sx_common: use stack allocated buffer for scan data
@ 2025-07-11 15:55 David Lechner
  2025-07-11 16:42 ` Andy Shevchenko
  2025-07-13 13:59 ` Jonathan Cameron
  0 siblings, 2 replies; 3+ messages in thread
From: David Lechner @ 2025-07-11 15:55 UTC (permalink / raw)
  To: Jonathan Cameron, Nuno Sá, Andy Shevchenko
  Cc: linux-iio, linux-kernel, David Lechner

Use IIO_DECLARE_BUFFER_WITH_TS() to declare a stack allocated buffer
in sx_common_trigger_handler(). Since the scan buffer isn't used outside
of this function and doesn't need to be DMA-safe, it doesn't need to be
in struct sx_common_data.

Signed-off-by: David Lechner <dlechner@baylibre.com>
---
 drivers/iio/proximity/sx_common.c | 7 ++++---
 drivers/iio/proximity/sx_common.h | 6 ------
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/drivers/iio/proximity/sx_common.c b/drivers/iio/proximity/sx_common.c
index 59b35e40739b0d931dbac076ca5c83ba421ba766..fae035e8d2f5a40ed7379dd6e306f84878a9bef0 100644
--- a/drivers/iio/proximity/sx_common.c
+++ b/drivers/iio/proximity/sx_common.c
@@ -361,6 +361,7 @@ static irqreturn_t sx_common_irq_thread_handler(int irq, void *private)
 
 static irqreturn_t sx_common_trigger_handler(int irq, void *private)
 {
+	IIO_DECLARE_BUFFER_WITH_TS(__be16, buffer, SX_COMMON_MAX_NUM_CHANNELS);
 	struct iio_poll_func *pf = private;
 	struct iio_dev *indio_dev = pf->indio_dev;
 	struct sx_common_data *data = iio_priv(indio_dev);
@@ -376,11 +377,11 @@ static irqreturn_t sx_common_trigger_handler(int irq, void *private)
 		if (ret)
 			goto out;
 
-		data->buffer.channels[i++] = val;
+		buffer[i++] = val;
 	}
 
-	iio_push_to_buffers_with_ts(indio_dev, &data->buffer,
-				    sizeof(data->buffer), pf->timestamp);
+	iio_push_to_buffers_with_ts(indio_dev, buffer, sizeof(buffer),
+				    pf->timestamp);
 
 out:
 	mutex_unlock(&data->mutex);
diff --git a/drivers/iio/proximity/sx_common.h b/drivers/iio/proximity/sx_common.h
index 259b5c695233b4e295ad8ae2b05fceeaa4a7ae61..97b264aa50b0c9811ce6b42be34eace03eae2627 100644
--- a/drivers/iio/proximity/sx_common.h
+++ b/drivers/iio/proximity/sx_common.h
@@ -122,12 +122,6 @@ struct sx_common_data {
 	unsigned long chan_prox_stat;
 	bool trigger_enabled;
 
-	/* Ensure correct alignment of timestamp when present. */
-	struct {
-		__be16 channels[SX_COMMON_MAX_NUM_CHANNELS];
-		aligned_s64 ts;
-	} buffer;
-
 	unsigned int suspend_ctrl;
 	unsigned long chan_read;
 	unsigned long chan_event;

---
base-commit: f8f559752d573a051a984adda8d2d1464f92f954
change-id: 20250711-iio-use-more-iio_declare_buffer_with_ts-5-f4c91d73037d

Best regards,
-- 
David Lechner <dlechner@baylibre.com>


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

* Re: [PATCH] iio: proximity: sx_common: use stack allocated buffer for scan data
  2025-07-11 15:55 [PATCH] iio: proximity: sx_common: use stack allocated buffer for scan data David Lechner
@ 2025-07-11 16:42 ` Andy Shevchenko
  2025-07-13 13:59 ` Jonathan Cameron
  1 sibling, 0 replies; 3+ messages in thread
From: Andy Shevchenko @ 2025-07-11 16:42 UTC (permalink / raw)
  To: David Lechner
  Cc: Jonathan Cameron, Nuno Sá, Andy Shevchenko, linux-iio,
	linux-kernel

On Fri, Jul 11, 2025 at 10:55:07AM -0500, David Lechner wrote:
> Use IIO_DECLARE_BUFFER_WITH_TS() to declare a stack allocated buffer
> in sx_common_trigger_handler(). Since the scan buffer isn't used outside
> of this function and doesn't need to be DMA-safe, it doesn't need to be
> in struct sx_common_data.

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

-- 
With Best Regards,
Andy Shevchenko



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

* Re: [PATCH] iio: proximity: sx_common: use stack allocated buffer for scan data
  2025-07-11 15:55 [PATCH] iio: proximity: sx_common: use stack allocated buffer for scan data David Lechner
  2025-07-11 16:42 ` Andy Shevchenko
@ 2025-07-13 13:59 ` Jonathan Cameron
  1 sibling, 0 replies; 3+ messages in thread
From: Jonathan Cameron @ 2025-07-13 13:59 UTC (permalink / raw)
  To: David Lechner; +Cc: Nuno Sá, Andy Shevchenko, linux-iio, linux-kernel

On Fri, 11 Jul 2025 10:55:07 -0500
David Lechner <dlechner@baylibre.com> wrote:

> Use IIO_DECLARE_BUFFER_WITH_TS() to declare a stack allocated buffer
> in sx_common_trigger_handler(). Since the scan buffer isn't used outside
> of this function and doesn't need to be DMA-safe, it doesn't need to be
> in struct sx_common_data.
> 
> Signed-off-by: David Lechner <dlechner@baylibre.com>
Same question - why not the structure which is more descriptive than
the buffer macro?  To me that's cleaner when we can do it with the magic
of the buffer macro being great when we can't because we have more than
8 bytes of potential channels before the timestamp.

> ---
>  drivers/iio/proximity/sx_common.c | 7 ++++---
>  drivers/iio/proximity/sx_common.h | 6 ------
>  2 files changed, 4 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/iio/proximity/sx_common.c b/drivers/iio/proximity/sx_common.c
> index 59b35e40739b0d931dbac076ca5c83ba421ba766..fae035e8d2f5a40ed7379dd6e306f84878a9bef0 100644
> --- a/drivers/iio/proximity/sx_common.c
> +++ b/drivers/iio/proximity/sx_common.c
> @@ -361,6 +361,7 @@ static irqreturn_t sx_common_irq_thread_handler(int irq, void *private)
>  
>  static irqreturn_t sx_common_trigger_handler(int irq, void *private)
>  {
> +	IIO_DECLARE_BUFFER_WITH_TS(__be16, buffer, SX_COMMON_MAX_NUM_CHANNELS);
>  	struct iio_poll_func *pf = private;
>  	struct iio_dev *indio_dev = pf->indio_dev;
>  	struct sx_common_data *data = iio_priv(indio_dev);
> @@ -376,11 +377,11 @@ static irqreturn_t sx_common_trigger_handler(int irq, void *private)
>  		if (ret)
>  			goto out;
>  
> -		data->buffer.channels[i++] = val;
> +		buffer[i++] = val;
>  	}
>  
> -	iio_push_to_buffers_with_ts(indio_dev, &data->buffer,
> -				    sizeof(data->buffer), pf->timestamp);
> +	iio_push_to_buffers_with_ts(indio_dev, buffer, sizeof(buffer),
> +				    pf->timestamp);
>  
>  out:
>  	mutex_unlock(&data->mutex);
> diff --git a/drivers/iio/proximity/sx_common.h b/drivers/iio/proximity/sx_common.h
> index 259b5c695233b4e295ad8ae2b05fceeaa4a7ae61..97b264aa50b0c9811ce6b42be34eace03eae2627 100644
> --- a/drivers/iio/proximity/sx_common.h
> +++ b/drivers/iio/proximity/sx_common.h
> @@ -122,12 +122,6 @@ struct sx_common_data {
>  	unsigned long chan_prox_stat;
>  	bool trigger_enabled;
>  
> -	/* Ensure correct alignment of timestamp when present. */
> -	struct {
> -		__be16 channels[SX_COMMON_MAX_NUM_CHANNELS];
> -		aligned_s64 ts;
> -	} buffer;
> -
>  	unsigned int suspend_ctrl;
>  	unsigned long chan_read;
>  	unsigned long chan_event;
> 
> ---
> base-commit: f8f559752d573a051a984adda8d2d1464f92f954
> change-id: 20250711-iio-use-more-iio_declare_buffer_with_ts-5-f4c91d73037d
> 
> Best regards,


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

end of thread, other threads:[~2025-07-13 13:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-11 15:55 [PATCH] iio: proximity: sx_common: use stack allocated buffer for scan data David Lechner
2025-07-11 16:42 ` Andy Shevchenko
2025-07-13 13:59 ` Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).