Documentation/driver-api/soundwire/bra.rst | 2 +- drivers/soundwire/intel_ace2x.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-)
The limitation of "must be multiples of 32 bytes" does not fit the
requirement of current Intel platforms. Update it to meet the
requirement.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
---
Documentation/driver-api/soundwire/bra.rst | 2 +-
drivers/soundwire/intel_ace2x.c | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/Documentation/driver-api/soundwire/bra.rst b/Documentation/driver-api/soundwire/bra.rst
index 8500253fa3e8..c08ab2591496 100644
--- a/Documentation/driver-api/soundwire/bra.rst
+++ b/Documentation/driver-api/soundwire/bra.rst
@@ -333,4 +333,4 @@ FIFO sizes to avoid xruns.
Alignment requirements are currently not enforced at the core level
but at the platform-level, e.g. for Intel the data sizes must be
-multiples of 32 bytes.
+equal to or larger than 16 bytes.
diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c
index 5b31e1f69591..f899c966cfaf 100644
--- a/drivers/soundwire/intel_ace2x.c
+++ b/drivers/soundwire/intel_ace2x.c
@@ -245,7 +245,7 @@ static void intel_ace2x_bpt_close_stream(struct sdw_intel *sdw, struct sdw_slave
cdns->bus.bpt_stream = NULL;
}
-#define INTEL_BPT_MSG_BYTE_ALIGNMENT 32
+#define INTEL_BPT_MSG_BYTE_MIN 16
static int intel_ace2x_bpt_send_async(struct sdw_intel *sdw, struct sdw_slave *slave,
struct sdw_bpt_msg *msg)
@@ -253,9 +253,9 @@ static int intel_ace2x_bpt_send_async(struct sdw_intel *sdw, struct sdw_slave *s
struct sdw_cdns *cdns = &sdw->cdns;
int ret;
- if (msg->len % INTEL_BPT_MSG_BYTE_ALIGNMENT) {
- dev_err(cdns->dev, "BPT message length %d is not a multiple of %d bytes\n",
- msg->len, INTEL_BPT_MSG_BYTE_ALIGNMENT);
+ if (msg->len < INTEL_BPT_MSG_BYTE_MIN) {
+ dev_err(cdns->dev, "BPT message length %d is less than the minimum bytes %d\n",
+ msg->len, INTEL_BPT_MSG_BYTE_MIN);
return -EINVAL;
}
--
2.43.0
On Tue, 29 Apr 2025 20:23:37 +0800, Bard Liao wrote:
> The limitation of "must be multiples of 32 bytes" does not fit the
> requirement of current Intel platforms. Update it to meet the
> requirement.
>
>
Applied, thanks!
[1/1] soundwire: update Intel BPT message length limitation
commit: 393350c1691f1cbf3a0436f2a12c2b4347c4e953
Best regards,
--
~Vinod
On 29-04-25, 20:23, Bard Liao wrote:
> The limitation of "must be multiples of 32 bytes" does not fit the
> requirement of current Intel platforms. Update it to meet the
> requirement.
>
> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
> ---
> Documentation/driver-api/soundwire/bra.rst | 2 +-
> drivers/soundwire/intel_ace2x.c | 8 ++++----
> 2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/driver-api/soundwire/bra.rst b/Documentation/driver-api/soundwire/bra.rst
> index 8500253fa3e8..c08ab2591496 100644
> --- a/Documentation/driver-api/soundwire/bra.rst
> +++ b/Documentation/driver-api/soundwire/bra.rst
> @@ -333,4 +333,4 @@ FIFO sizes to avoid xruns.
>
> Alignment requirements are currently not enforced at the core level
> but at the platform-level, e.g. for Intel the data sizes must be
> -multiples of 32 bytes.
> +equal to or larger than 16 bytes.
> diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c
> index 5b31e1f69591..f899c966cfaf 100644
> --- a/drivers/soundwire/intel_ace2x.c
> +++ b/drivers/soundwire/intel_ace2x.c
> @@ -245,7 +245,7 @@ static void intel_ace2x_bpt_close_stream(struct sdw_intel *sdw, struct sdw_slave
> cdns->bus.bpt_stream = NULL;
> }
>
> -#define INTEL_BPT_MSG_BYTE_ALIGNMENT 32
> +#define INTEL_BPT_MSG_BYTE_MIN 16
>
> static int intel_ace2x_bpt_send_async(struct sdw_intel *sdw, struct sdw_slave *slave,
> struct sdw_bpt_msg *msg)
> @@ -253,9 +253,9 @@ static int intel_ace2x_bpt_send_async(struct sdw_intel *sdw, struct sdw_slave *s
> struct sdw_cdns *cdns = &sdw->cdns;
> int ret;
>
> - if (msg->len % INTEL_BPT_MSG_BYTE_ALIGNMENT) {
> - dev_err(cdns->dev, "BPT message length %d is not a multiple of %d bytes\n",
> - msg->len, INTEL_BPT_MSG_BYTE_ALIGNMENT);
> + if (msg->len < INTEL_BPT_MSG_BYTE_MIN) {
Reducing is fine, but we should still check it is aligned..?
> + dev_err(cdns->dev, "BPT message length %d is less than the minimum bytes %d\n",
> + msg->len, INTEL_BPT_MSG_BYTE_MIN);
> return -EINVAL;
> }
>
> --
> 2.43.0
--
~Vinod
> -----Original Message-----
> From: Vinod Koul <vkoul@kernel.org>
> Sent: Wednesday, May 14, 2025 7:41 PM
> To: Bard Liao <yung-chuan.liao@linux.intel.com>
> Cc: linux-sound@vger.kernel.org; linux-kernel@vger.kernel.org; pierre-
> louis.bossart@linux.dev; Liao, Bard <bard.liao@intel.com>
> Subject: Re: [PATCH] soundwire: update Intel BPT message length limitation
>
> On 29-04-25, 20:23, Bard Liao wrote:
> > The limitation of "must be multiples of 32 bytes" does not fit the
> > requirement of current Intel platforms. Update it to meet the
> > requirement.
> >
> > Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
> > Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
> > Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
> > ---
> > Documentation/driver-api/soundwire/bra.rst | 2 +-
> > drivers/soundwire/intel_ace2x.c | 8 ++++----
> > 2 files changed, 5 insertions(+), 5 deletions(-)
> >
> > diff --git a/Documentation/driver-api/soundwire/bra.rst
> b/Documentation/driver-api/soundwire/bra.rst
> > index 8500253fa3e8..c08ab2591496 100644
> > --- a/Documentation/driver-api/soundwire/bra.rst
> > +++ b/Documentation/driver-api/soundwire/bra.rst
> > @@ -333,4 +333,4 @@ FIFO sizes to avoid xruns.
> >
> > Alignment requirements are currently not enforced at the core level
> > but at the platform-level, e.g. for Intel the data sizes must be
> > -multiples of 32 bytes.
> > +equal to or larger than 16 bytes.
> > diff --git a/drivers/soundwire/intel_ace2x.c b/drivers/soundwire/intel_ace2x.c
> > index 5b31e1f69591..f899c966cfaf 100644
> > --- a/drivers/soundwire/intel_ace2x.c
> > +++ b/drivers/soundwire/intel_ace2x.c
> > @@ -245,7 +245,7 @@ static void intel_ace2x_bpt_close_stream(struct
> sdw_intel *sdw, struct sdw_slave
> > cdns->bus.bpt_stream = NULL;
> > }
> >
> > -#define INTEL_BPT_MSG_BYTE_ALIGNMENT 32
> > +#define INTEL_BPT_MSG_BYTE_MIN 16
> >
> > static int intel_ace2x_bpt_send_async(struct sdw_intel *sdw, struct
> sdw_slave *slave,
> > struct sdw_bpt_msg *msg)
> > @@ -253,9 +253,9 @@ static int intel_ace2x_bpt_send_async(struct
> sdw_intel *sdw, struct sdw_slave *s
> > struct sdw_cdns *cdns = &sdw->cdns;
> > int ret;
> >
> > - if (msg->len % INTEL_BPT_MSG_BYTE_ALIGNMENT) {
> > - dev_err(cdns->dev, "BPT message length %d is not a multiple of
> %d bytes\n",
> > - msg->len, INTEL_BPT_MSG_BYTE_ALIGNMENT);
> > + if (msg->len < INTEL_BPT_MSG_BYTE_MIN) {
>
> Reducing is fine, but we should still check it is aligned..?
Pad will be added if the message length is not aligned.
For example, length = 17 works on my test.
>
> > + dev_err(cdns->dev, "BPT message length %d is less than the
> minimum bytes %d\n",
> > + msg->len, INTEL_BPT_MSG_BYTE_MIN);
> > return -EINVAL;
> > }
> >
> > --
> > 2.43.0
>
> --
> ~Vinod
© 2016 - 2026 Red Hat, Inc.