[PATCH v3 6/8] can: rcar_canfd: Add support for Renesas RZ/G3S
Claudiu Beznea <[email protected]> Tue, 14 Jul 2026 20:33:13 +0300
| Newsgroups | org.kernel.vger.linux-can,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-renesas-soc |
|---|---|
| Message-ID | <[email protected]> |
From: Claudiu Beznea <[email protected]> Add support for Renesas RZ/G3S The Renesas RZ/G3S CAN-FD controller is largely compatible with the variant found on the Renesas RZ/G3E. The main differences are: - the RZ/G3S provides 16 AFL pages - the RZ/G3S supports only two channels - the RZ/G3S supports only CAN-FD operation and does not implement the bits used to select between classical CAN-only and CAN FD-only modes. - the RZ/G3S includes an internal divider that allows the peripheral clock to be used as the CAN FD clock source. Add support for the Renesas RZ/G3S. Reviewed-by: Biju Das <[email protected]> Signed-off-by: Claudiu Beznea <[email protected]> --- Changes in v3: - updated max_aflpn as it refers to the number of available pages that could be used to access the acceptance filters; updated the patch description for this change Changes in v2: - initialized shared_global_irqs = 0 for RZ/G3S, to follow the request from https://lore.kernel.org/all/[email protected] - collected tags drivers/net/can/rcar/rcar_canfd.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 8ba8905c965a..d858778ff002 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -661,6 +661,26 @@ static const struct rcar_canfd_hw_info rzg2l_hw_info = { .mode_select_na = 0, }; +static const struct rcar_canfd_hw_info r9a08g045_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 = 2, + .postdiv = 2, + .shared_global_irqs = 0, + .multi_channel_irqs = 1, + .ch_interface_mode = 1, + .shared_can_regs = 1, + .external_clk = 1, + .fcan_pclk = 1, + .mode_select_na = 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, @@ -2384,6 +2404,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,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