Hi All,
This patch series adds CANFD support to Renesas RZ/G2L family.
CANFD block on RZ/G2L SoC is almost identical to one found on
R-Car Gen3 SoC's. On RZ/G2L SoC interrupt sources for each channel
are split into individual sources.
Cheers,
Prabhakar
Changes for v2:
* Added interrupt-names property and marked it as required for
RZ/G2L family
* Added descriptions for reset property
* Re-used irq handlers on RZ/G2L SoC
* Added new enum for chip_id
* Dropped R9A07G044_LAST_CORE_CLK
* Dropped patch (clk: renesas: r9a07g044-cpg: Add clock and reset
entries for CANFD) as its been merged into renesas tree
Lad Prabhakar (5):
dt-bindings: net: can: renesas,rcar-canfd: Document RZ/G2L SoC
can: rcar_canfd: Add support for RZ/G2L family
dt-bindings: clk: r9a07g044-cpg: Add entry for P0_DIV2 core clock
clk: renesas: r9a07g044-cpg: Add entry for fixed clock P0_DIV2
arm64: dts: renesas: r9a07g044: Add CANFD node
.../bindings/net/can/renesas,rcar-canfd.yaml | 66 ++++++-
arch/arm64/boot/dts/renesas/r9a07g044.dtsi | 42 +++++
drivers/clk/renesas/r9a07g044-cpg.c | 3 +-
drivers/net/can/rcar/rcar_canfd.c | 178 +++++++++++++++---
include/dt-bindings/clock/r9a07g044-cpg.h | 1 +
5 files changed, 252 insertions(+), 38 deletions(-)
base-commit: 2734d6c1b1a089fb593ef6a23d4b70903526fe0c
--
2.17.1
CANFD block on RZ/G2L SoC is almost identical to one found on
R-Car Gen3 SoC's. On RZ/G2L SoC interrupt sources for each channel
are split into different sources and the IP doesn't divide (1/2)
CANFD clock within the IP.
This patch adds compatible string for RZ/G2L family and registers
the irq handlers required for CANFD operation. IRQ numbers are now
fetched based on names instead of indices. For backward compatibility
on non RZ/G2L SoC's we fallback reading based on indices.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
---
drivers/net/can/rcar/rcar_canfd.c | 178 ++++++++++++++++++++++++------
1 file changed, 147 insertions(+), 31 deletions(-)
@@ -1635,8 +1683,11 @@ static int rcar_canfd_probe(struct platform_device *pdev)structrcar_canfd_global*gpriv;structdevice_node*of_child;unsignedlongchannels_mask=0;-interr,ch_irq,g_irq;+interr,ch_irq,g_irq,g_rx_irq;boolfdmode=true;/* CAN FD only mode - default */+enumrcanfd_chip_idchip_id;++chip_id=(enumrcanfd_chip_id)of_device_get_match_data(&pdev->dev);if(of_property_read_bool(pdev->dev.of_node,"renesas,no-can-fd"))fdmode=false;/* Classical CAN only mode */
@@ -1649,27 +1700,64 @@ static int rcar_canfd_probe(struct platform_device *pdev)if(of_child&&of_device_is_available(of_child))channels_mask|=BIT(1);/* Channel 1 */-ch_irq=platform_get_irq(pdev,0);-if(ch_irq<0){-err=ch_irq;-gotofail_dev;-}+if(chip_id==RENESAS_RCAR_GEN3){+ch_irq=platform_get_irq_byname(pdev,"ch_int");+if(ch_irq<0){+/* For backward compatibility get irq by index */+ch_irq=platform_get_irq(pdev,0);+if(ch_irq<0)+returnch_irq;+}-g_irq=platform_get_irq(pdev,1);-if(g_irq<0){-err=g_irq;-gotofail_dev;+g_irq=platform_get_irq_byname(pdev,"g_int");+if(g_irq<0){+/* For backward compatibility get irq by index */+g_irq=platform_get_irq(pdev,1);+if(g_irq<0)+returng_irq;+}+}else{+g_irq=platform_get_irq_byname(pdev,"g_error");+if(g_irq<0)+returng_irq;++g_rx_irq=platform_get_irq_byname(pdev,"g_rx_fifo");+if(g_rx_irq<0)+returng_rx_irq;}/* Global controller context */gpriv=devm_kzalloc(&pdev->dev,sizeof(*gpriv),GFP_KERNEL);-if(!gpriv){-err=-ENOMEM;-gotofail_dev;-}+if(!gpriv)+return-ENOMEM;+gpriv->pdev=pdev;gpriv->channels_mask=channels_mask;gpriv->fdmode=fdmode;+gpriv->chip_id=chip_id;++if(gpriv->chip_id==RENESAS_RZG2L){+gpriv->rstc1=devm_reset_control_get_exclusive_by_index(&pdev->dev,0);+if(IS_ERR(gpriv->rstc1)){+dev_err(&pdev->dev,"failed to get reset index 0\n");+returnPTR_ERR(gpriv->rstc1);+}++err=reset_control_reset(gpriv->rstc1);+if(err)+returnerr;++gpriv->rstc2=devm_reset_control_get_exclusive_by_index(&pdev->dev,1);+if(IS_ERR(gpriv->rstc2)){+dev_err(&pdev->dev,"failed to get reset index 1\n");+returnPTR_ERR(gpriv->rstc2);+}+err=reset_control_reset(gpriv->rstc2);+if(err){+reset_control_assert(gpriv->rstc1);+returnerr;+}+}/* Peripheral clock */gpriv->clkp=devm_clk_get(&pdev->dev,"fck");
@@ -1699,7 +1787,7 @@ static int rcar_canfd_probe(struct platform_device *pdev)}fcan_freq=clk_get_rate(gpriv->can_clk);-if(gpriv->fcan==RCANFD_CANFDCLK)+if(gpriv->fcan==RCANFD_CANFDCLK&&gpriv->chip_id==RENESAS_RCAR_GEN3)/* CANFD clock is further divided by (1/2) within the IP */fcan_freq/=2;
@@ -1711,21 +1799,43 @@ static int rcar_canfd_probe(struct platform_device *pdev)gpriv->base=addr;/* Request IRQ that's common for both channels */-err=devm_request_irq(&pdev->dev,ch_irq,-rcar_canfd_channel_interrupt,0,-"canfd.chn",gpriv);-if(err){-dev_err(&pdev->dev,"devm_request_irq(%d) failed, error %d\n",-ch_irq,err);-gotofail_dev;-}-err=devm_request_irq(&pdev->dev,g_irq,-rcar_canfd_global_interrupt,0,-"canfd.gbl",gpriv);-if(err){-dev_err(&pdev->dev,"devm_request_irq(%d) failed, error %d\n",-g_irq,err);-gotofail_dev;+if(gpriv->chip_id==RENESAS_RCAR_GEN3){+err=devm_request_irq(&pdev->dev,ch_irq,+rcar_canfd_channel_interrupt,0,+"canfd.chn",gpriv);+if(err){+dev_err(&pdev->dev,"devm_request_irq(%d) failed, error %d\n",+ch_irq,err);+gotofail_dev;+}++err=devm_request_irq(&pdev->dev,g_irq,+rcar_canfd_global_interrupt,0,+"canfd.gbl",gpriv);+if(err){+dev_err(&pdev->dev,"devm_request_irq(%d) failed, error %d\n",+g_irq,err);+gotofail_dev;+}+}else{+err=devm_request_irq(&pdev->dev,g_rx_irq,+rcar_canfd_global_interrupt,0,+"canfd.gblrx",gpriv);++if(err){+dev_err(&pdev->dev,"devm_request_irq(%d) failed, error %d\n",+g_rx_irq,err);+gotofail_dev;+}++err=devm_request_irq(&pdev->dev,g_irq,+rcar_canfd_global_interrupt,0,+"canfd.gblerr",gpriv);+if(err){+dev_err(&pdev->dev,"devm_request_irq(%d) failed, error %d\n",+g_irq,err);+gotofail_dev;+}}/* Enable peripheral clock for register access */
@@ -1791,6 +1901,8 @@ static int rcar_canfd_probe(struct platform_device *pdev)fail_clk:clk_disable_unprepare(gpriv->clkp);fail_dev:+reset_control_assert(gpriv->rstc1);+reset_control_assert(gpriv->rstc2);returnerr;}
@@ -1810,6 +1922,9 @@ static int rcar_canfd_remove(struct platform_device *pdev)/* Enter global sleep mode */rcar_canfd_set_bit(gpriv->base,RCANFD_GCTR,RCANFD_GCTR_GSLPR);clk_disable_unprepare(gpriv->clkp);+reset_control_assert(gpriv->rstc1);+reset_control_assert(gpriv->rstc2);+return0;}
@@ -13,6 +13,13 @@#address-cells=<2>;#size-cells=<2>;+/* External CAN clock - to be overridden by boards that provide it */+can_clk:can{+compatible="fixed-clock";+#clock-cells=<0>;+clock-frequency=<0>;+};+/* clock can be either from exclk or crystal oscillator (XIN/XOUT) */extal_clk:extal{compatible="fixed-clock";
Do you know what the "P" and "C" stands for? It would be nice if the
description could tell us what the reset lines are used for.
I would prefer if you used these names (or shortened versions, for
example "rstp_n", "rstc_n") as "reset-names" and let the driver
reference the resets by name instead of by index.
regards
Philipp
s/receive/rx/?
Some are also a bit long to type.
Perhaps use naming closer to the User's Manual?
INTRCANGERR => g_err
INTRCANGRECC => g_recc
INTRCAN0ERR => ch0_err
INTRCAN0REC => ch0_rec
INTRCAN0TRX => ch0_trx
INTRCAN1ERR => ch1_err
INTRCAN1REC => ch1_rec
INTRCAN1TRX => ch1_trx
These do not have "_int" suffixes...
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
From: Philipp Zabel <p.zabel@pengutronix.de> Date: 2021-07-20 10:28:23
On Mon, 2021-07-19 at 15:38 +0100, Lad Prabhakar wrote:
quoted hunk
CANFD block on RZ/G2L SoC is almost identical to one found on
R-Car Gen3 SoC's. On RZ/G2L SoC interrupt sources for each channel
are split into different sources and the IP doesn't divide (1/2)
CANFD clock within the IP.
This patch adds compatible string for RZ/G2L family and registers
the irq handlers required for CANFD operation. IRQ numbers are now
fetched based on names instead of indices. For backward compatibility
on non RZ/G2L SoC's we fallback reading based on indices.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
---
drivers/net/can/rcar/rcar_canfd.c | 178 ++++++++++++++++++++++++------
1 file changed, 147 insertions(+), 31 deletions(-)
+ if (gpriv->chip_id == RENESAS_RZG2L) {+ gpriv->rstc1 = devm_reset_control_get_exclusive_by_index(&pdev->dev, 0);+ if (IS_ERR(gpriv->rstc1)) {+ dev_err(&pdev->dev, "failed to get reset index 0\n");
Please consider requesting the reset controls by name instead of by
index. See also my reply to the binding patch.
I suggest to wait until after all resource requests have succeeded
before triggering the resets, i.e. first get all reset controls and
clocks, etc., and only then trigger resets, enable clocks, and so on.
That way there will be no spurious resets in case of probe deferrals.
regards
Philipp
Hi Prabhakar,
On Mon, Jul 19, 2021 at 4:39 PM Lad Prabhakar
[off-list ref] wrote:
CANFD block on RZ/G2L SoC is almost identical to one found on
R-Car Gen3 SoC's. On RZ/G2L SoC interrupt sources for each channel
are split into different sources and the IP doesn't divide (1/2)
CANFD clock within the IP.
This patch adds compatible string for RZ/G2L family and registers
the irq handlers required for CANFD operation. IRQ numbers are now
fetched based on names instead of indices. For backward compatibility
on non RZ/G2L SoC's we fallback reading based on indices.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
@@ -513,6 +519,9 @@ struct rcar_canfd_global {enumrcar_canfd_fcanclkfcan;/* CANFD or Ext clock */unsignedlongchannels_mask;/* Enabled channels mask */boolfdmode;/* CAN FD or Classical CAN only mode */+structreset_control*rstc1;/* Pointer to reset source1 */+structreset_control*rstc2;/* Pointer to reset source2 */
Are these comments helpful? IMHO they're stating the obvious.
platform_get_irq_byname_optional()?
Unless you want to urge people to update their DTB.
quoted hunk
+ if (ch_irq < 0) {+ /* For backward compatibility get irq by index */+ ch_irq = platform_get_irq(pdev, 0);+ if (ch_irq < 0)+ return ch_irq;+ }- g_irq = platform_get_irq(pdev, 1);- if (g_irq < 0) {- err = g_irq;- goto fail_dev;+ g_irq = platform_get_irq_byname(pdev, "g_int");
Likewise,
quoted hunk
+ if (g_irq < 0) {+ /* For backward compatibility get irq by index */+ g_irq = platform_get_irq(pdev, 1);+ if (g_irq < 0)+ return g_irq;+ }+ } else {+ g_irq = platform_get_irq_byname(pdev, "g_error");+ if (g_irq < 0)+ return g_irq;++ g_rx_irq = platform_get_irq_byname(pdev, "g_rx_fifo");+ if (g_rx_irq < 0)+ return g_rx_irq; }
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
On Mon, Jul 19, 2021 at 4:40 PM Lad Prabhakar
[off-list ref] wrote:
Add entry for fixed core clock P0_DIV2 and assign LAST_DT_CORE_CLK
to R9A07G044_CLK_P0_DIV2.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
i.e. will queue in renesas-clk-for-v5.15.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
On Mon, Jul 19, 2021 at 4:39 PM Lad Prabhakar
[off-list ref] wrote:
Add P0_DIV2 core clock required for CANFD module. CANFD core clock is
sourced from P0_DIV2 referenced from HW manual Rev.0.50.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
i.e. will queue in renesas-r9a07g044-dt-binding-defs, to be shared by
renesas-clk-for-v5.15 and renesas-devel for v5.15.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Do you know what the "P" and "C" stands for? It would be nice if the
description could tell us what the reset lines are used for.
unfortunately the HW manual does not mention anything about "P" and "C" :(
I would prefer if you used these names (or shortened versions, for
example "rstp_n", "rstc_n") as "reset-names" and let the driver
reference the resets by name instead of by index.
OK will do that and maxItems:2 for resets.
@Geert, for R-Car Gen3 does "canfd_rst" (as it's a module reset)
sounds good for reset-names? Or do you have any other suggestions?
Cheers,
Prabhakar
s/receive/rx/?
Some are also a bit long to type.
Perhaps use naming closer to the User's Manual?
INTRCANGERR => g_err
INTRCANGRECC => g_recc
INTRCAN0ERR => ch0_err
INTRCAN0REC => ch0_rec
INTRCAN0TRX => ch0_trx
INTRCAN1ERR => ch1_err
INTRCAN1REC => ch1_rec
INTRCAN1TRX => ch1_trx
These do not have "_int" suffixes...
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Hi Philipp,
Thank you for the review.
On Tue, Jul 20, 2021 at 11:23 AM Philipp Zabel [off-list ref] wrote:
On Mon, 2021-07-19 at 15:38 +0100, Lad Prabhakar wrote:
quoted
CANFD block on RZ/G2L SoC is almost identical to one found on
R-Car Gen3 SoC's. On RZ/G2L SoC interrupt sources for each channel
are split into different sources and the IP doesn't divide (1/2)
CANFD clock within the IP.
This patch adds compatible string for RZ/G2L family and registers
the irq handlers required for CANFD operation. IRQ numbers are now
fetched based on names instead of indices. For backward compatibility
on non RZ/G2L SoC's we fallback reading based on indices.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
---
drivers/net/can/rcar/rcar_canfd.c | 178 ++++++++++++++++++++++++------
1 file changed, 147 insertions(+), 31 deletions(-)
+ if (gpriv->chip_id == RENESAS_RZG2L) {+ gpriv->rstc1 = devm_reset_control_get_exclusive_by_index(&pdev->dev, 0);+ if (IS_ERR(gpriv->rstc1)) {+ dev_err(&pdev->dev, "failed to get reset index 0\n");
Please consider requesting the reset controls by name instead of by
index. See also my reply to the binding patch.
I suggest to wait until after all resource requests have succeeded
before triggering the resets, i.e. first get all reset controls and
clocks, etc., and only then trigger resets, enable clocks, and so on.
That way there will be no spurious resets in case of probe deferrals.
Do you know what the "P" and "C" stands for? It would be nice if the
description could tell us what the reset lines are used for.
unfortunately the HW manual does not mention anything about "P" and "C" :(
quoted
I would prefer if you used these names (or shortened versions, for
example "rstp_n", "rstc_n") as "reset-names" and let the driver
reference the resets by name instead of by index.
OK will do that and maxItems:2 for resets.
@Geert, for R-Car Gen3 does "canfd_rst" (as it's a module reset)
sounds good for reset-names? Or do you have any other suggestions?
I wouldn't bother with reset-names on R-Car, as there is only a
single reset.
BTW, does there exist a generally-accepted reset-equivalent of "fck"
("Functional ClocK")?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Hi Geert,
Thank you for the review.
On Tue, Jul 20, 2021 at 11:31 AM Geert Uytterhoeven
[off-list ref] wrote:
Hi Prabhakar,
On Mon, Jul 19, 2021 at 4:39 PM Lad Prabhakar
[off-list ref] wrote:
quoted
CANFD block on RZ/G2L SoC is almost identical to one found on
R-Car Gen3 SoC's. On RZ/G2L SoC interrupt sources for each channel
are split into different sources and the IP doesn't divide (1/2)
CANFD clock within the IP.
This patch adds compatible string for RZ/G2L family and registers
the irq handlers required for CANFD operation. IRQ numbers are now
fetched based on names instead of indices. For backward compatibility
on non RZ/G2L SoC's we fallback reading based on indices.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
@@ -513,6 +519,9 @@ struct rcar_canfd_global {enumrcar_canfd_fcanclkfcan;/* CANFD or Ext clock */unsignedlongchannels_mask;/* Enabled channels mask */boolfdmode;/* CAN FD or Classical CAN only mode */+structreset_control*rstc1;/* Pointer to reset source1 */+structreset_control*rstc2;/* Pointer to reset source2 */
Are these comments helpful? IMHO they're stating the obvious.
platform_get_irq_byname_optional()?
Unless you want to urge people to update their DTB.
Good point will change it to platform_get_irq_byname_optional().
quoted
+ if (ch_irq < 0) {+ /* For backward compatibility get irq by index */+ ch_irq = platform_get_irq(pdev, 0);+ if (ch_irq < 0)+ return ch_irq;+ }- g_irq = platform_get_irq(pdev, 1);- if (g_irq < 0) {- err = g_irq;- goto fail_dev;+ g_irq = platform_get_irq_byname(pdev, "g_int");
Likewise,
agreed
Cheers,
Prabhakar
quoted
+ if (g_irq < 0) {+ /* For backward compatibility get irq by index */+ g_irq = platform_get_irq(pdev, 1);+ if (g_irq < 0)+ return g_irq;+ }+ } else {+ g_irq = platform_get_irq_byname(pdev, "g_error");+ if (g_irq < 0)+ return g_irq;++ g_rx_irq = platform_get_irq_byname(pdev, "g_rx_fifo");+ if (g_rx_irq < 0)+ return g_rx_irq; }
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Do you know what the "P" and "C" stands for? It would be nice if the
description could tell us what the reset lines are used for.
unfortunately the HW manual does not mention anything about "P" and "C" :(
quoted
I would prefer if you used these names (or shortened versions, for
example "rstp_n", "rstc_n") as "reset-names" and let the driver
reference the resets by name instead of by index.
OK will do that and maxItems:2 for resets.
@Geert, for R-Car Gen3 does "canfd_rst" (as it's a module reset)
sounds good for reset-names? Or do you have any other suggestions?
I wouldn't bother with reset-names on R-Car, as there is only a
single reset.
OK will keep "description: CANFD reset" for R-Car as done in the
current patch and just add reset-names only for RZ/G2L SoC.
BTW, does there exist a generally-accepted reset-equivalent of "fck"
("Functional ClocK")?
None that I am aware of (Couple of binding docs have "rst"), but maybe
Philipp could have some suggestions.
Cheers,
Prabhakar
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Do you know what the "P" and "C" stands for? It would be nice if the
description could tell us what the reset lines are used for.
unfortunately the HW manual does not mention anything about "P" and "C" :(
Yes, unfortunately this is all too common.
quoted
I would prefer if you used these names (or shortened versions, for
example "rstp_n", "rstc_n") as "reset-names" and let the driver
reference the resets by name instead of by index.
OK will do that and maxItems:2 for resets.
@Geert, for R-Car Gen3 does "canfd_rst" (as it's a module reset)
sounds good for reset-names? Or do you have any other suggestions?
I agree with Geert here. Assuming no second reset will be discovered for
R-Car Gen3 later, there is no need to invent a name.
regards
Philipp
From: Philipp Zabel <p.zabel@pengutronix.de> Date: 2021-07-20 16:38:06
Hi Geert,
On Tue, 2021-07-20 at 17:11 +0200, Geert Uytterhoeven wrote:
[...]
I wouldn't bother with reset-names on R-Car, as there is only a
single reset.
BTW, does there exist a generally-accepted reset-equivalent of "fck"
("Functional ClocK")?
Not really. There is "rst", which seems to be slightly more popular than
"reset". Some bindings use "core" to differentiate between the
functional reset and peripheral resets like bus or phy resets.
Ideally the reset-names would match the names of the reset inputs in the
IP core documentation (not the global names of the reset signals in the
SoC documentation). But more often than not they are not known.
regards
Philipp