* [PATCH v2 0/2] spi: Introduce and use spi_bpw_to_bytes()
@ 2025-04-17 15:17 Andy Shevchenko
2025-04-17 15:17 ` [PATCH v2 1/2] spi: Add spi_bpw_to_bytes() helper and use it Andy Shevchenko
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Andy Shevchenko @ 2025-04-17 15:17 UTC (permalink / raw)
To: Mark Brown, Andy Shevchenko, linux-spi, linux-kernel; +Cc: David Lechner
Recently in the discussion with David the idea of having
a common helper popped up. The helper converts the given
bits per word to bytes. The result will always be power-of-two
(e.g. for 37 bits it returns 8 bytes) or 0 for 0 input.
More details are in the respective code comment.
This mini-series introduces it and replaces current users
under drivers/spi and we expect more (and possibly some
lurking in other subsystems).
Mark, if you okay with the idea, please, make this to be
an immutable branch or tag for others to pull.
In v2:
- improved examples in the code comment and commit message (David)
Andy Shevchenko (2):
spi: Add spi_bpw_to_bytes() helper and use it
spi: dw: Use spi_bpw_to_bytes() helper
drivers/spi/spi-dw-core.c | 2 +-
drivers/spi/spi.c | 2 +-
include/linux/spi/spi.h | 25 +++++++++++++++++++++++++
3 files changed, 27 insertions(+), 2 deletions(-)
--
2.47.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/2] spi: Add spi_bpw_to_bytes() helper and use it
2025-04-17 15:17 [PATCH v2 0/2] spi: Introduce and use spi_bpw_to_bytes() Andy Shevchenko
@ 2025-04-17 15:17 ` Andy Shevchenko
2025-04-17 15:22 ` Andy Shevchenko
2025-04-17 15:17 ` [PATCH v2 2/2] spi: dw: Use spi_bpw_to_bytes() helper Andy Shevchenko
2025-04-17 15:29 ` [PATCH v2 0/2] spi: Introduce and use spi_bpw_to_bytes() David Lechner
2 siblings, 1 reply; 5+ messages in thread
From: Andy Shevchenko @ 2025-04-17 15:17 UTC (permalink / raw)
To: Mark Brown, Andy Shevchenko, linux-spi, linux-kernel; +Cc: David Lechner
This helper converts the given bits per word to bytes. The result
will always be power-of-two, e.g.,
=============== =================
Input (in bits) Output (in bytes)
=============== =================
0 0
5 1
9 2
2 4
3 8
=============== =================
There are a couple of cases in SPI that are using the same approach
and at least one more (in IIO) would benefit of it. Add a helper
for everyone.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/spi/spi.c | 2 +-
include/linux/spi/spi.h | 25 +++++++++++++++++++++++++
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index b0e7702951fe..1bc0fdbb1bd7 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -3800,7 +3800,7 @@ int spi_split_transfers_maxwords(struct spi_controller *ctlr,
size_t maxsize;
int ret;
- maxsize = maxwords * roundup_pow_of_two(BITS_TO_BYTES(xfer->bits_per_word));
+ maxsize = maxwords * spi_bpw_to_bytes(xfer->bits_per_word);
if (xfer->len > maxsize) {
ret = __spi_split_transfer_maxsize(ctlr, msg, &xfer,
maxsize);
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h
index 834a09bd8ccc..2611f86180a3 100644
--- a/include/linux/spi/spi.h
+++ b/include/linux/spi/spi.h
@@ -1340,6 +1340,31 @@ static inline bool spi_is_bpw_supported(struct spi_device *spi, u32 bpw)
return false;
}
+/**
+ * spi_bpw_to_bytes - Covert bits per word to bytes
+ * @bpw: Bits per word
+ *
+ * This function converts the given @bpw to bytes. The result is always
+ * power-of-two, e.g.,
+ *
+ * =============== =================
+ * Input (in bits) Output (in bytes)
+ * =============== =================
+ * 0 0
+ * 5 1
+ * 9 2
+ * 2 4
+ * 3 8
+ * =============== =================
+ *
+ * Returns:
+ * Bytes for the given @bpw.
+ */
+static inline u32 spi_bpw_to_bytes(u32 bpw)
+{
+ return roundup_pow_of_two(BITS_TO_BYTES(bpw));
+}
+
/**
* spi_controller_xfer_timeout - Compute a suitable timeout value
* @ctlr: SPI device
--
2.47.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 2/2] spi: dw: Use spi_bpw_to_bytes() helper
2025-04-17 15:17 [PATCH v2 0/2] spi: Introduce and use spi_bpw_to_bytes() Andy Shevchenko
2025-04-17 15:17 ` [PATCH v2 1/2] spi: Add spi_bpw_to_bytes() helper and use it Andy Shevchenko
@ 2025-04-17 15:17 ` Andy Shevchenko
2025-04-17 15:29 ` [PATCH v2 0/2] spi: Introduce and use spi_bpw_to_bytes() David Lechner
2 siblings, 0 replies; 5+ messages in thread
From: Andy Shevchenko @ 2025-04-17 15:17 UTC (permalink / raw)
To: Mark Brown, Andy Shevchenko, linux-spi, linux-kernel; +Cc: David Lechner
Use existing helper to get amount of bytes (as power-of-two value)
from bits per word.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/spi/spi-dw-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c
index 941ecc6f59f8..b3b883cb9541 100644
--- a/drivers/spi/spi-dw-core.c
+++ b/drivers/spi/spi-dw-core.c
@@ -423,7 +423,7 @@ static int dw_spi_transfer_one(struct spi_controller *host,
int ret;
dws->dma_mapped = 0;
- dws->n_bytes = roundup_pow_of_two(BITS_TO_BYTES(transfer->bits_per_word));
+ dws->n_bytes = spi_bpw_to_bytes(transfer->bits_per_word);
dws->tx = (void *)transfer->tx_buf;
dws->tx_len = transfer->len / dws->n_bytes;
dws->rx = transfer->rx_buf;
--
2.47.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/2] spi: Add spi_bpw_to_bytes() helper and use it
2025-04-17 15:17 ` [PATCH v2 1/2] spi: Add spi_bpw_to_bytes() helper and use it Andy Shevchenko
@ 2025-04-17 15:22 ` Andy Shevchenko
0 siblings, 0 replies; 5+ messages in thread
From: Andy Shevchenko @ 2025-04-17 15:22 UTC (permalink / raw)
To: Mark Brown, linux-spi, linux-kernel; +Cc: David Lechner
On Thu, Apr 17, 2025 at 06:17:52PM +0300, Andy Shevchenko wrote:
> This helper converts the given bits per word to bytes. The result
> will always be power-of-two, e.g.,
>
> =============== =================
> Input (in bits) Output (in bytes)
> =============== =================
> 0 0
> 5 1
> 9 2
> 2 4
> 3 8
My gosh, it lost the couple of characters here, should be 21 and 37 respectively...
I'll fix this in v3.
> =============== =================
...
> + * This function converts the given @bpw to bytes. The result is always
> + * power-of-two, e.g.,
> + *
> + * =============== =================
> + * Input (in bits) Output (in bytes)
> + * =============== =================
> + * 0 0
> + * 5 1
> + * 9 2
> + * 2 4
> + * 3 8
As per above,
> + * =============== =================
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 0/2] spi: Introduce and use spi_bpw_to_bytes()
2025-04-17 15:17 [PATCH v2 0/2] spi: Introduce and use spi_bpw_to_bytes() Andy Shevchenko
2025-04-17 15:17 ` [PATCH v2 1/2] spi: Add spi_bpw_to_bytes() helper and use it Andy Shevchenko
2025-04-17 15:17 ` [PATCH v2 2/2] spi: dw: Use spi_bpw_to_bytes() helper Andy Shevchenko
@ 2025-04-17 15:29 ` David Lechner
2 siblings, 0 replies; 5+ messages in thread
From: David Lechner @ 2025-04-17 15:29 UTC (permalink / raw)
To: Andy Shevchenko, Mark Brown, linux-spi, linux-kernel
On 4/17/25 10:17 AM, Andy Shevchenko wrote:
> Recently in the discussion with David the idea of having
> a common helper popped up. The helper converts the given
> bits per word to bytes. The result will always be power-of-two
> (e.g. for 37 bits it returns 8 bytes) or 0 for 0 input.
> More details are in the respective code comment.
>
> This mini-series introduces it and replaces current users
> under drivers/spi and we expect more (and possibly some
> lurking in other subsystems).
>
> Mark, if you okay with the idea, please, make this to be
> an immutable branch or tag for others to pull.
>
> In v2:
> - improved examples in the code comment and commit message (David)
With the typos fixed:
Reviewed-by: David Lechner <dlechner@baylibre.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-04-17 15:29 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-17 15:17 [PATCH v2 0/2] spi: Introduce and use spi_bpw_to_bytes() Andy Shevchenko
2025-04-17 15:17 ` [PATCH v2 1/2] spi: Add spi_bpw_to_bytes() helper and use it Andy Shevchenko
2025-04-17 15:22 ` Andy Shevchenko
2025-04-17 15:17 ` [PATCH v2 2/2] spi: dw: Use spi_bpw_to_bytes() helper Andy Shevchenko
2025-04-17 15:29 ` [PATCH v2 0/2] spi: Introduce and use spi_bpw_to_bytes() David Lechner
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).