* [PATCH v6 0/4] Add support for Renesas RZ/G3L CANFD
@ 2026-10-21 8:32 Biju Das
2026-10-21 8:32 ` [PATCH v6 1/4] dt-bindings: can: renesas,rcar-canfd: Simplify renesas,no-can-fd description Biju Das
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Biju Das @ 2026-10-21 8:32 UTC (permalink / raw)
To: Marc Kleine-Budde, Vincent Mailhol, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven,
Magnus Damm, Fabrizio Castro
Cc: linux-can, devicetree, linux-renesas-soc, linux-kernel, Biju Das
Add support for Renesas RZ/G3L CANFD.
The RZ/G3L CANFD IP has 3 channels and 11 interrupts compared to 2 channels
and 8 interrupts that of RZ/G3S. RZ/G3L has 288 buffers compared to 192
buffers on RZ/G3S SoC.
This patch series depend upon [1]
[1] https://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git/commit/?id=2b4a5055d517b11bf4a5671cef32e4d77bc45626
v5->v6:
* Updated commit header and description of patch#1
* Simplified renesas,no-can-fd description by removing the mode list and
keep only the statement of what the property does.
* Updated commit description of patch#3.
* Dropped adding RZ/G3L in the description of renesas,no-can-fd as the
description is generic.
v4->v5:
* Added patches for Documenting RZ/G3{L,S} SoC has no Classical CAN mode.
* Dropped the patch "can: rcar_canfd: Derive max_channels from the device
tree"
* Dropped the tags as there are new changes.
* Restored maxItems on interrupts and interrupt-names.
* Added resets/reset-names required property for RZ/G3L.
* Added r9a08g046_hw_info to device data.
v3->v4:
* Dropped maxItems from interrupts,interrupt-names and resets.
* Collected tags.
v2->v3:
* Collected tags.
* Added check against RCANFD_NUM_CHANNELS, to avoid overrunning the
fixed-size rcar_canfd_global.ch[] and transceivers[] arrays.
* Fixed typo 198->192 buffers in commit description.
v1->v2:
* Added support for deriving max_channels from the device tree.
* Dropped clock patch as it is accepted.
* Dropped devicetree patches, will send it later.
* Updated commit description
* Dropped RZ/G3S fallback as there are lot of differences.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
Biju Das (4):
dt-bindings: can: renesas,rcar-canfd: Simplify renesas,no-can-fd description
can: rcar_canfd: Document that RZ/G3S has no Classical CAN mode
dt-bindings: can: renesas,rcar-canfd: Document RZ/G3L SoC
can: rcar_canfd: Add support for Renesas RZ/G3L
.../bindings/net/can/renesas,rcar-canfd.yaml | 31 +++++++++++++++++++---
drivers/net/can/rcar/rcar_canfd.c | 31 ++++++++++++++++++----
2 files changed, 53 insertions(+), 9 deletions(-)
---
base-commit: ef2fff76f76133f4f02bc4bd116858b040c17fef
change-id: 20261020-canfd_rzg3l-248b76100fb1
Best regards,
--
Biju Das <biju.das.jz@bp.renesas.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v6 1/4] dt-bindings: can: renesas,rcar-canfd: Simplify renesas,no-can-fd description
2026-10-21 8:32 [PATCH v6 0/4] Add support for Renesas RZ/G3L CANFD Biju Das
@ 2026-10-21 8:32 ` Biju Das
2026-10-21 16:27 ` Conor Dooley
2026-10-21 8:32 ` [PATCH v6 2/4] can: rcar_canfd: Document that RZ/G3S has no Classical CAN mode Biju Das
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Biju Das @ 2026-10-21 8:32 UTC (permalink / raw)
To: Marc Kleine-Budde, Vincent Mailhol, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven,
Magnus Damm, Fabrizio Castro
Cc: linux-can, devicetree, linux-renesas-soc, linux-kernel, Biju Das
The description of renesas,no-can-fd lists the operating modes
(CAN-FD, FD-Only and Classical CAN) and which SoCs support each one.
This is not accurate for every supported SoC, for example RZ/G3S, whose
CAN-FD controller has no Classical CAN mode.
Drop the mode list and keep only the statement of what the property
does, so the description no longer implies that all SoCs can operate in
Classical CAN mode.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
v5->v6:
* Updated commit header and description
* Simplified renesas,no-can-fd description by removing the mode list and
keep only the statement of what the property does.
v5:
* New patch.
---
Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
index 1a7a9ce45e97..81674ea4bef4 100644
--- a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
+++ b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
@@ -145,9 +145,7 @@ properties:
renesas,no-can-fd:
$ref: /schemas/types.yaml#/definitions/flag
description:
- The controller can operate in either CAN-FD mode (default) or FD-Only
- mode (RZ/{G2L,G3E} and R-Car Gen4) or Classical CAN mode. Specify this
- property to put the controller in Classical CAN mode.
+ Specify this property to put the controller in Classical CAN mode.
renesas,fd-only:
$ref: /schemas/types.yaml#/definitions/flag
--
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v6 2/4] can: rcar_canfd: Document that RZ/G3S has no Classical CAN mode
2026-10-21 8:32 [PATCH v6 0/4] Add support for Renesas RZ/G3L CANFD Biju Das
2026-10-21 8:32 ` [PATCH v6 1/4] dt-bindings: can: renesas,rcar-canfd: Simplify renesas,no-can-fd description Biju Das
@ 2026-10-21 8:32 ` Biju Das
2026-10-21 8:32 ` [PATCH v6 3/4] dt-bindings: can: renesas,rcar-canfd: Document RZ/G3L SoC Biju Das
2026-10-21 8:32 ` [PATCH v6 4/4] can: rcar_canfd: Add support for Renesas RZ/G3L Biju Das
3 siblings, 0 replies; 7+ messages in thread
From: Biju Das @ 2026-10-21 8:32 UTC (permalink / raw)
To: Marc Kleine-Budde, Vincent Mailhol, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven,
Magnus Damm, Fabrizio Castro
Cc: linux-can, devicetree, linux-renesas-soc, linux-kernel, Biju Das
The header comments in the driver describe Classical CAN (CAN 2.0)
only mode as a mode the controller can operate in, without saying that
this does not apply to every supported SoC. RZ/G3S does not support
Classical CAN mode.
Update the comments to note the RZ/G3S exception, so that readers of
the driver are not misled about which SoCs can use that mode. This
matches the corresponding dt-bindings update.
No functional change.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
v5->v6:
* No change.
v5:
* New patch.
---
drivers/net/can/rcar/rcar_canfd.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c
index 74c3c3f20991..86fa88ccf63b 100644
--- a/drivers/net/can/rcar/rcar_canfd.c
+++ b/drivers/net/can/rcar/rcar_canfd.c
@@ -6,7 +6,7 @@
/* The R-Car CAN FD controller can operate in either one of the below two modes
* - CAN FD only mode
- * - Classical CAN (CAN 2.0) only mode
+ * - Classical CAN (CAN 2.0) only mode (Except RZ/G3S)
*
* This driver puts the controller in CAN FD only mode by default. In this
* mode, the controller acts as a CAN FD node that can also interoperate with
@@ -247,10 +247,10 @@
#define RCANFD_CFFDCSTS_CFBRS BIT(1)
#define RCANFD_CFFDCSTS_CFESI BIT(0)
-/* This controller supports either Classical CAN only mode or CAN FD only mode.
- * These modes are supported in two separate set of register maps & names.
- * However, some of the register offsets are common for both modes. Those
- * offsets are listed below as Common registers.
+/* This controller supports either Classical CAN only mode(Except RZ/G3S) or
+ * CAN FD only mode. These modes are supported in two separate set of register
+ * maps & names. However, some of the register offsets are common for both
+ * modes. Those offsets are listed below as Common registers.
*
* The CAN FD only mode specific registers & Classical CAN only mode specific
* registers are listed separately. Their register names starts with
--
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v6 3/4] dt-bindings: can: renesas,rcar-canfd: Document RZ/G3L SoC
2026-10-21 8:32 [PATCH v6 0/4] Add support for Renesas RZ/G3L CANFD Biju Das
2026-10-21 8:32 ` [PATCH v6 1/4] dt-bindings: can: renesas,rcar-canfd: Simplify renesas,no-can-fd description Biju Das
2026-10-21 8:32 ` [PATCH v6 2/4] can: rcar_canfd: Document that RZ/G3S has no Classical CAN mode Biju Das
@ 2026-10-21 8:32 ` Biju Das
2026-10-21 16:30 ` Conor Dooley
2026-10-21 8:32 ` [PATCH v6 4/4] can: rcar_canfd: Add support for Renesas RZ/G3L Biju Das
3 siblings, 1 reply; 7+ messages in thread
From: Biju Das @ 2026-10-21 8:32 UTC (permalink / raw)
To: Marc Kleine-Budde, Vincent Mailhol, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven,
Magnus Damm, Fabrizio Castro
Cc: linux-can, devicetree, linux-renesas-soc, linux-kernel, Biju Das
Document the RZ/G3L (R9A08G046) SoC support.
RZ/G3L has 11 interrupts and 3 CANFD channels compared to 8 interrupts
and 2 CANFD channels on RZ/G3S. RZ/G3L has 288 buffers in total
compared to 192 buffers in RZ/G3S.
Like RZ/G3S, RZ/G3L supports only CAN-FD mode, so renesas,no-can-fd is
disallowed for it.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
v5->v6:
* Updated commit description.
* Dropped adding RZ/G3L in the description of renesas,no-can-fd as the
description is generic.
v4->v5:
* Dropped the tags as there are new changes.
* Updated the description for renesas,no-can-fd to document RZ/G3L has no
Classical CAN mode.
* Restored maxItems on interrupts and interrupt-names.
* Added resets/reset-names required property for RZ/G3L.
v3->v4:
* Dropped maxItems from interrupts,interrupt-names and resets.
* Collected tag.
v2->v3:
* Collected tag.
v1->v2:
* Updated commit description
* Dropped RZ/G3S fallback as there are lot of differences.
---
.../bindings/net/can/renesas,rcar-canfd.yaml | 27 +++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
index 81674ea4bef4..dc7437702120 100644
--- a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
+++ b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml
@@ -14,6 +14,7 @@ properties:
oneOf:
- enum:
- renesas,r9a08g045-canfd # RZ/G3S
+ - renesas,r9a08g046-canfd # RZ/G3L
- renesas,r9a09g047-canfd # RZ/G3E
- renesas,r9a09g077-canfd # RZ/T2H
@@ -292,6 +293,27 @@ allOf:
patternProperties:
"^channel[6-7]$": false
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: renesas,r9a08g046-canfd
+ then:
+ properties:
+ interrupts:
+ minItems: 11
+ maxItems: 11
+
+ interrupt-names:
+ minItems: 11
+ maxItems: 11
+
+ resets:
+ minItems: 2
+
+ patternProperties:
+ "^channel[3-7]$": false
+
- if:
properties:
compatible:
@@ -332,6 +354,7 @@ allOf:
contains:
enum:
- renesas,r9a08g045-canfd
+ - renesas,r9a08g046-canfd
- renesas,r9a09g047-canfd
- renesas,rzg2l-canfd
then:
@@ -356,7 +379,9 @@ allOf:
properties:
compatible:
contains:
- const: renesas,r9a08g045-canfd
+ enum:
+ - renesas,r9a08g045-canfd
+ - renesas,r9a08g046-canfd
then:
properties:
renesas,no-can-fd: false
--
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v6 4/4] can: rcar_canfd: Add support for Renesas RZ/G3L
2026-10-21 8:32 [PATCH v6 0/4] Add support for Renesas RZ/G3L CANFD Biju Das
` (2 preceding siblings ...)
2026-10-21 8:32 ` [PATCH v6 3/4] dt-bindings: can: renesas,rcar-canfd: Document RZ/G3L SoC Biju Das
@ 2026-10-21 8:32 ` Biju Das
3 siblings, 0 replies; 7+ messages in thread
From: Biju Das @ 2026-10-21 8:32 UTC (permalink / raw)
To: Marc Kleine-Budde, Vincent Mailhol, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven,
Magnus Damm, Fabrizio Castro
Cc: linux-can, devicetree, linux-renesas-soc, linux-kernel, Biju Das
Add support for Renesas RZ/G3L CANFD IP. RZ/G3L has 3 channels and
11 interrupts, compared 2 channels and 8 interrupts on RZ/G3S.
RZ/G3L has 288 buffers compared to 192 buffers on RZ/G3S.
Like RZ/G3S, the controller supports only CAN-FD mode and update
the comments to note that Classical CAN mode is not available on
RZ/G3L either.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
v5->v6:
* No change.
v4->v5:
* Dropped the tags as there are new changes.
* Documented Classical CAN mode is not available on RZ/G3L.
* Added r9a08g046_hw_info to device data.
v3->v4:
* Collected the tag.
v2->v3:
* Fixed the typo 198->192 buffers in commit description.
* Collected the tag.
v1->v2:
* Updated commit description
* Dropped RZ/G3S fallback
---
drivers/net/can/rcar/rcar_canfd.c | 31 ++++++++++++++++++++++++++-----
1 file changed, 26 insertions(+), 5 deletions(-)
diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c
index 86fa88ccf63b..0da2fefb047b 100644
--- a/drivers/net/can/rcar/rcar_canfd.c
+++ b/drivers/net/can/rcar/rcar_canfd.c
@@ -6,7 +6,7 @@
/* The R-Car CAN FD controller can operate in either one of the below two modes
* - CAN FD only mode
- * - Classical CAN (CAN 2.0) only mode (Except RZ/G3S)
+ * - Classical CAN (CAN 2.0) only mode (Except RZ/G3{L,S})
*
* This driver puts the controller in CAN FD only mode by default. In this
* mode, the controller acts as a CAN FD node that can also interoperate with
@@ -247,10 +247,10 @@
#define RCANFD_CFFDCSTS_CFBRS BIT(1)
#define RCANFD_CFFDCSTS_CFESI BIT(0)
-/* This controller supports either Classical CAN only mode(Except RZ/G3S) or
- * CAN FD only mode. These modes are supported in two separate set of register
- * maps & names. However, some of the register offsets are common for both
- * modes. Those offsets are listed below as Common registers.
+/* This controller supports either Classical CAN only mode(Except RZ/G3{L,S})
+ * or CAN FD only mode. These modes are supported in two separate set of
+ * register maps & names. However, some of the register offsets are common for
+ * both modes. Those offsets are listed below as Common registers.
*
* The CAN FD only mode specific registers & Classical CAN only mode specific
* registers are listed separately. Their register names starts with
@@ -681,6 +681,26 @@ static const struct rcar_canfd_hw_info r9a08g045_hw_info = {
.fixed_canfd = 1,
};
+static const struct rcar_canfd_hw_info r9a08g046_hw_info = {
+ .nom_bittiming = &rcar_canfd_gen4_nom_bittiming_const,
+ .data_bittiming = &rcar_canfd_gen4_data_bittiming_const,
+ .tdc_const = &rcar_canfd_gen4_tdc_const,
+ .regs = &rcar_gen4_regs,
+ .sh = &rcar_gen4_shift_data,
+ .rnc_field_width = 16,
+ .max_aflpn = 15,
+ .max_cftml = 31,
+ .max_channels = 3,
+ .postdiv = 2,
+ .shared_global_irqs = 0,
+ .multi_channel_irqs = 1,
+ .ch_interface_mode = 1,
+ .shared_can_regs = 1,
+ .external_clk = 1,
+ .fcan_pclk = 1,
+ .fixed_canfd = 1,
+};
+
static const struct rcar_canfd_hw_info r9a09g047_hw_info = {
.nom_bittiming = &rcar_canfd_gen4_nom_bittiming_const,
.data_bittiming = &rcar_canfd_gen4_data_bittiming_const,
@@ -2404,6 +2424,7 @@ static DEFINE_SIMPLE_DEV_PM_OPS(rcar_canfd_pm_ops, rcar_canfd_suspend,
static const __maybe_unused struct of_device_id rcar_canfd_of_table[] = {
{ .compatible = "renesas,r8a779a0-canfd", .data = &rcar_gen4_hw_info },
{ .compatible = "renesas,r9a08g045-canfd", .data = &r9a08g045_hw_info },
+ { .compatible = "renesas,r9a08g046-canfd", .data = &r9a08g046_hw_info },
{ .compatible = "renesas,r9a09g047-canfd", .data = &r9a09g047_hw_info },
{ .compatible = "renesas,r9a09g077-canfd", .data = &r9a09g077_hw_info },
{ .compatible = "renesas,rcar-gen3-canfd", .data = &rcar_gen3_hw_info },
--
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v6 1/4] dt-bindings: can: renesas,rcar-canfd: Simplify renesas,no-can-fd description
2026-10-21 8:32 ` [PATCH v6 1/4] dt-bindings: can: renesas,rcar-canfd: Simplify renesas,no-can-fd description Biju Das
@ 2026-10-21 16:27 ` Conor Dooley
0 siblings, 0 replies; 7+ messages in thread
From: Conor Dooley @ 2026-10-21 16:27 UTC (permalink / raw)
To: Biju Das
Cc: Marc Kleine-Budde, Vincent Mailhol, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven,
Magnus Damm, Fabrizio Castro, linux-can, devicetree,
linux-renesas-soc, linux-kernel, Biju Das
[-- Attachment #1: Type: text/plain, Size: 75 bytes --]
Acked-by: Conor Dooley <conor.dooley@microchip.com>
pw-bot: not-applicable
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v6 3/4] dt-bindings: can: renesas,rcar-canfd: Document RZ/G3L SoC
2026-10-21 8:32 ` [PATCH v6 3/4] dt-bindings: can: renesas,rcar-canfd: Document RZ/G3L SoC Biju Das
@ 2026-10-21 16:30 ` Conor Dooley
0 siblings, 0 replies; 7+ messages in thread
From: Conor Dooley @ 2026-10-21 16:30 UTC (permalink / raw)
To: Biju Das
Cc: Marc Kleine-Budde, Vincent Mailhol, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven,
Magnus Damm, Fabrizio Castro, linux-can, devicetree,
linux-renesas-soc, linux-kernel, Biju Das
[-- Attachment #1: Type: text/plain, Size: 75 bytes --]
Acked-by: Conor Dooley <conor.dooley@microchip.com>
pw-bot: not-applicable
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-10-21 16:30 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-21 8:32 [PATCH v6 0/4] Add support for Renesas RZ/G3L CANFD Biju Das
2026-10-21 8:32 ` [PATCH v6 1/4] dt-bindings: can: renesas,rcar-canfd: Simplify renesas,no-can-fd description Biju Das
2026-10-21 16:27 ` Conor Dooley
2026-10-21 8:32 ` [PATCH v6 2/4] can: rcar_canfd: Document that RZ/G3S has no Classical CAN mode Biju Das
2026-10-21 8:32 ` [PATCH v6 3/4] dt-bindings: can: renesas,rcar-canfd: Document RZ/G3L SoC Biju Das
2026-10-21 16:30 ` Conor Dooley
2026-10-21 8:32 ` [PATCH v6 4/4] can: rcar_canfd: Add support for Renesas RZ/G3L Biju Das
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®