From: Tudor Ambarus <tudor.ambarus@linaro.org>
To: Peter Rosin <peda@axentia.se>, LKML <linux-kernel@vger.kernel.org>
Cc: Ludovic Desroches <ludovic.desroches@microchip.com>,
Vinod Koul <vkoul@kernel.org>,
Nicolas Ferre <nicolas.ferre@microchip.com>,
linux-arm-kernel@lists.infradead.org, dmaengine@vger.kernel.org,
"stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: Re: [PATCH v2 1/2] dmaengine: at_hdmac: Repair bitfield macros for peripheral ID handling
Date: Tue, 23 May 2023 18:24:53 +0100 [thread overview]
Message-ID: <06d53c3d-d300-dca1-6877-b8745e0673e8@linaro.org> (raw)
In-Reply-To: <01e5dae1-d4b0-cf31-516b-423b11b077f1@axentia.se>
On 5/23/23 18:20, Peter Rosin wrote:
> The MSB part of the peripheral IDs need to go into the ATC_SRC_PER_MSB
> and ATC_DST_PER_MSB fields. Not the LSB part.
>
> This fixes a severe regression for TSE-850 devices (compatible
> axentia,tse850v3) where output to the audio I2S codec (the main
> purpose of the device) simply do not work.
>
> Fixes: d8840a7edcf0 ("dmaengine: at_hdmac: Use bitfield access macros")
> Cc: stable@vger.kernel.org
> Signed-off-by: Peter Rosin <peda@axentia.se>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
> ---
> drivers/dma/at_hdmac.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
> index 8858470246e1..6362013b90df 100644
> --- a/drivers/dma/at_hdmac.c
> +++ b/drivers/dma/at_hdmac.c
> @@ -153,8 +153,6 @@
> #define ATC_AUTO BIT(31) /* Auto multiple buffer tx enable */
>
> /* Bitfields in CFG */
> -#define ATC_PER_MSB(h) ((0x30U & (h)) >> 4) /* Extract most significant bits of a handshaking identifier */
> -
> #define ATC_SRC_PER GENMASK(3, 0) /* Channel src rq associated with periph handshaking ifc h */
> #define ATC_DST_PER GENMASK(7, 4) /* Channel dst rq associated with periph handshaking ifc h */
> #define ATC_SRC_REP BIT(8) /* Source Replay Mod */
> @@ -181,10 +179,15 @@
> #define ATC_DPIP_HOLE GENMASK(15, 0)
> #define ATC_DPIP_BOUNDARY GENMASK(25, 16)
>
> -#define ATC_SRC_PER_ID(id) (FIELD_PREP(ATC_SRC_PER_MSB, (id)) | \
> - FIELD_PREP(ATC_SRC_PER, (id)))
> -#define ATC_DST_PER_ID(id) (FIELD_PREP(ATC_DST_PER_MSB, (id)) | \
> - FIELD_PREP(ATC_DST_PER, (id)))
> +#define ATC_PER_MSB GENMASK(5, 4) /* Extract MSBs of a handshaking identifier */
> +#define ATC_SRC_PER_ID(id) \
> + ({ typeof(id) _id = (id); \
> + FIELD_PREP(ATC_SRC_PER_MSB, FIELD_GET(ATC_PER_MSB, _id)) | \
> + FIELD_PREP(ATC_SRC_PER, _id); })
> +#define ATC_DST_PER_ID(id) \
> + ({ typeof(id) _id = (id); \
> + FIELD_PREP(ATC_DST_PER_MSB, FIELD_GET(ATC_PER_MSB, _id)) | \
> + FIELD_PREP(ATC_DST_PER, _id); })
>
>
>
WARNING: multiple messages have this Message-ID (diff)
From: Tudor Ambarus <tudor.ambarus@linaro.org>
To: Peter Rosin <peda@axentia.se>, LKML <linux-kernel@vger.kernel.org>
Cc: Vinod Koul <vkoul@kernel.org>,
"stable@vger.kernel.org" <stable@vger.kernel.org>,
Ludovic Desroches <ludovic.desroches@microchip.com>,
dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 1/2] dmaengine: at_hdmac: Repair bitfield macros for peripheral ID handling
Date: Tue, 23 May 2023 18:24:53 +0100 [thread overview]
Message-ID: <06d53c3d-d300-dca1-6877-b8745e0673e8@linaro.org> (raw)
In-Reply-To: <01e5dae1-d4b0-cf31-516b-423b11b077f1@axentia.se>
On 5/23/23 18:20, Peter Rosin wrote:
> The MSB part of the peripheral IDs need to go into the ATC_SRC_PER_MSB
> and ATC_DST_PER_MSB fields. Not the LSB part.
>
> This fixes a severe regression for TSE-850 devices (compatible
> axentia,tse850v3) where output to the audio I2S codec (the main
> purpose of the device) simply do not work.
>
> Fixes: d8840a7edcf0 ("dmaengine: at_hdmac: Use bitfield access macros")
> Cc: stable@vger.kernel.org
> Signed-off-by: Peter Rosin <peda@axentia.se>
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
> ---
> drivers/dma/at_hdmac.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
> index 8858470246e1..6362013b90df 100644
> --- a/drivers/dma/at_hdmac.c
> +++ b/drivers/dma/at_hdmac.c
> @@ -153,8 +153,6 @@
> #define ATC_AUTO BIT(31) /* Auto multiple buffer tx enable */
>
> /* Bitfields in CFG */
> -#define ATC_PER_MSB(h) ((0x30U & (h)) >> 4) /* Extract most significant bits of a handshaking identifier */
> -
> #define ATC_SRC_PER GENMASK(3, 0) /* Channel src rq associated with periph handshaking ifc h */
> #define ATC_DST_PER GENMASK(7, 4) /* Channel dst rq associated with periph handshaking ifc h */
> #define ATC_SRC_REP BIT(8) /* Source Replay Mod */
> @@ -181,10 +179,15 @@
> #define ATC_DPIP_HOLE GENMASK(15, 0)
> #define ATC_DPIP_BOUNDARY GENMASK(25, 16)
>
> -#define ATC_SRC_PER_ID(id) (FIELD_PREP(ATC_SRC_PER_MSB, (id)) | \
> - FIELD_PREP(ATC_SRC_PER, (id)))
> -#define ATC_DST_PER_ID(id) (FIELD_PREP(ATC_DST_PER_MSB, (id)) | \
> - FIELD_PREP(ATC_DST_PER, (id)))
> +#define ATC_PER_MSB GENMASK(5, 4) /* Extract MSBs of a handshaking identifier */
> +#define ATC_SRC_PER_ID(id) \
> + ({ typeof(id) _id = (id); \
> + FIELD_PREP(ATC_SRC_PER_MSB, FIELD_GET(ATC_PER_MSB, _id)) | \
> + FIELD_PREP(ATC_SRC_PER, _id); })
> +#define ATC_DST_PER_ID(id) \
> + ({ typeof(id) _id = (id); \
> + FIELD_PREP(ATC_DST_PER_MSB, FIELD_GET(ATC_PER_MSB, _id)) | \
> + FIELD_PREP(ATC_DST_PER, _id); })
>
>
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-05-23 17:25 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-23 17:19 [PATCH v2 0/2] dmaengine: at_hdmac: Regression fix and cleanup Peter Rosin
2023-05-23 17:19 ` Peter Rosin
2023-05-23 17:20 ` [PATCH v2 1/2] dmaengine: at_hdmac: Repair bitfield macros for peripheral ID handling Peter Rosin
2023-05-23 17:20 ` Peter Rosin
2023-05-23 17:24 ` Tudor Ambarus [this message]
2023-05-23 17:24 ` Tudor Ambarus
2023-05-23 17:20 ` [PATCH v2 2/2] dmaengine: at_hdmac: Extend the Flow Controller bitfield to three bits Peter Rosin
2023-05-23 17:20 ` Peter Rosin
2023-05-24 5:50 ` [PATCH v2 0/2] dmaengine: at_hdmac: Regression fix and cleanup Vinod Koul
2023-05-24 5:50 ` Vinod Koul
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=06d53c3d-d300-dca1-6877-b8745e0673e8@linaro.org \
--to=tudor.ambarus@linaro.org \
--cc=dmaengine@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ludovic.desroches@microchip.com \
--cc=nicolas.ferre@microchip.com \
--cc=peda@axentia.se \
--cc=stable@vger.kernel.org \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.