[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID:
<TYCPR01MB120932E90CFDA0D04F3E9D010C2C52@TYCPR01MB12093.jpnprd01.prod.outlook.com>
Date: Wed, 19 Feb 2025 18:11:39 +0000
From: Fabrizio Castro <fabrizio.castro.jz@...esas.com>
To: Fabrizio Castro <fabrizio.castro.jz@...esas.com>, Vinod Koul
<vkoul@...nel.org>, Geert Uytterhoeven <geert+renesas@...der.be>
CC: Magnus Damm <magnus.damm@...il.com>, Biju Das
<biju.das.jz@...renesas.com>, Wolfram Sang
<wsa+renesas@...g-engineering.com>, Uwe Kleine-König
<u.kleine-koenig@...libre.com>, "dmaengine@...r.kernel.org"
<dmaengine@...r.kernel.org>, "linux-kernel@...r.kernel.org"
<linux-kernel@...r.kernel.org>, "linux-renesas-soc@...r.kernel.org"
<linux-renesas-soc@...r.kernel.org>, Prabhakar Mahadev Lad
<prabhakar.mahadev-lad.rj@...renesas.com>
Subject: RE: [PATCH v3 6/7] dmaengine: sh: rz-dmac: Add RZ/V2H(P) support
> From: Fabrizio Castro <fabrizio.castro.jz@...esas.com>
> Sent: 18 February 2025 23:43
> Subject: [PATCH v3 6/7] dmaengine: sh: rz-dmac: Add RZ/V2H(P) support
>
> The DMAC IP found on the Renesas RZ/V2H(P) family of SoCs is
> similar to the version found on the Renesas RZ/G2L family of
> SoCs, but there are some differences:
> * It only uses one register area
> * It only uses one clock
> * It only uses one reset
> * Instead of using MID/IRD it uses REQ NO/ACK NO
> * It is connected to the Interrupt Control Unit (ICU)
> * On the RZ/G2L there is only 1 DMAC, on the RZ/V2H(P) there are 5
>
> Add specific support for the Renesas RZ/V2H(P) family of SoC by
> tackling the aforementioned differences.
>
> Signed-off-by: Fabrizio Castro <fabrizio.castro.jz@...esas.com>
> ---
> v2->v3:
> * Dropped change to Kconfig.
> * Replaced rz_dmac_type with has_icu flag.
> * Put req_no and ack_no in an anonymous struct, nested under an
> anonymous union with mid_rid.
> * Dropped data field of_rz_dmac_match[], and added logic to determine
> value of has_icu flag from DT parsing.
> v1->v2:
> * Switched to new macros for minimum values.
> ---
[..]
>
> static struct dma_chan *rz_dmac_of_xlate(struct of_phandle_args *dma_spec,
> @@ -769,6 +849,8 @@ static int rz_dmac_chan_probe(struct rz_dmac *dmac,
>
> channel->index = index;
> channel->mid_rid = -EINVAL;
> + channel->req_no = RZV2H_ICU_DMAC_REQ_NO_DEFAULT;
> + channel->ack_no = RZV2H_ICU_DMAC_ACK_NO_DEFAULT;
Actually, this should look like the below now that mid_rid and req_no/ack_no
are mutually exclusive:
if (!dmac->has_icu) {
channel->mid_rid = -EINVAL;
} else {
channel->req_no = RZV2H_ICU_DMAC_REQ_NO_DEFAULT;
channel->ack_no = RZV2H_ICU_DMAC_ACK_NO_DEFAULT;
}
I'll send a new version to address this.
Sorry for the noise.
Cheers,
Fab
Powered by blists - more mailing lists