mbox series

[v6,00/18] Add support for RZ/G3E CANFD

Message ID 20250320091101.33637-1-biju.das.jz@bp.renesas.com (mailing list archive)
Headers show
Series Add support for RZ/G3E CANFD | expand

Message

Biju Das March 20, 2025, 9:10 a.m. UTC
The CAN-FD module on RZ/G3E is very similar to the one on both R-Car V4H
and RZ/G2L, but differs in some hardware parameters:
 * No external clock, but instead has ram clock.
 * Support up to 6 channels.
 * 20 interrupts.

v5->v6:
 * Replaced RCANFD_RNC_PER_REG macro with rnc_stride variable.
 * Updated commit description for patch#7 and #8
 * Dropped mask_table:
     AFLPN_MASK is replaced by max_aflpn variable.
     CFTML_MASK is replaced by max_cftml variable.
     BITTIMING MASK's are replaced by {nom,data}_bittiming variables.
 * Collected tag from Geert.
v4->v5:
 * Collected tag from Geert.
 * The rules for R-Car Gen3/4 could be kept together, reducing the number
   of lines. Similar change for rzg2l-canfd aswell.
 * Keeping interrupts and resets together allows to keep a clear
   separation between RZ/G2L and RZ/G3E, at the expense of only
   a single line.
 * Retained the tags for binding patches as it is trivial changes.
 * Dropped the unused macro RCANFD_GAFLCFG_GETRNC.
 * Updated macro RCANFD_GERFL_ERR by using gpriv->channels_mask and
   dropped unused macro RCANFD_GERFL_EEF0_7.
 * Replaced RNC mask in RCANFD_GAFLCFG_SETRNC macro by using
   info->num_supported_rules variable.
 * Updated the macro RCANFD_GAFLCFG by using info->rnc_field_width
   variable.
 * Updated shift value in RCANFD_GAFLCFG_SETRNC macro by using a formula
   (32 - (n % rnc_per_reg + 1) * field_width).
 * Replaced the variable name shared_can_reg->shared_can_regs.
 * Improved commit description for patch{#11,#12}by replacing has->have.
 * Dropped RCANFD_EEF_MASK and RCANFD_RNC_MASK as it is taken
   care by gpriv->channels_mask and info->num_supported_rules.
 * Dropped RCANFD_FIRST_RNC_SH and RCANFD_SECOND_RNC_SH by using a
   formula (32 - (n % rnc_per_reg + 1) * rnc_field_width.
 * Improved commit description by "All SoCs supports extenal clock"->
   "All existing SoCs support an external clock".
 * Updated error description in probe as "cannot get enabled ram clock"
 * Updated r9a09g047_hw_info table.
v3->v4:
 * Added Rb tag from Rob for patch#2.
 * Added prefix RCANFD_* to enum rcar_canfd_reg_offset_id.
 * Added prefix RCANFD_* to enum rcar_canfd_mask_id.
 * Added prefix RCANFD_* to enum rcar_canfd_shift_id.
v2->v3:
 * Collected tags.
 * Dropped reg_gen4() and is_gen4() by adding mask_table, shift_table,
   regs, ch_interface_mode and shared_can_reg variables to
   struct rcar_canfd_hw_info.
v1->v2:
 * Split the series with fixes patch separately.
 * Added patch for Simplify rcar_canfd_probe() using
   of_get_available_child_by_name() as dependency patch hit on can-next.
 * Added Rb tag from Vincent Mailhol.
 * Dropped redundant comment from commit description for patch#3.

Biju Das (18):
  dt-bindings: can: renesas,rcar-canfd: Simplify the conditional schema
  dt-bindings: can: renesas,rcar-canfd: Document RZ/G3E support
  can: rcar_canfd: Use of_get_available_child_by_name()
  can: rcar_canfd: Drop RCANFD_GAFLCFG_GETRNC macro
  can: rcar_canfd: Drop RCANFD_GERFL_EEF* macros in RCANFD_GERFL_ERR
  can: rcar_canfd: Add num_supported_rules variable to struct
    rcar_canfd_hw_info
  can: rcar_canfd: Add rnc_stride variable to struct rcar_canfd_hw_info
  can: rcar_canfd: Simplify RCANFD_GAFLCFG_SETRNC macro
  can: rcar_canfd: Add max_aflpn variable to struct rcar_canfd_hw_info
  can: rcar_canfd: Add max_cftml variable to struct rcar_canfd_hw_info
  can: rcar_canfd: Add {nom,data}_bittiming variables to struct
    rcar_canfd_hw_info
  can: rcar_canfd: Add ch_interface_mode variable to struct
    rcar_canfd_hw_info
  can: rcar_canfd: Add shared_can_regs variable to struct
    rcar_canfd_hw_info
  can: rcar_canfd: Add register mapping table to struct
    rcar_canfd_hw_info
  can: rcar_canfd: Add shift table to struct rcar_canfd_hw_info
  can: rcar_canfd: Add only_internal_clks variable to struct
    rcar_canfd_hw_info
  can: rcar_canfd: Enhance multi_channel_irqs handling
  can: rcar_canfd: Add RZ/G3E support

 .../bindings/net/can/renesas,rcar-canfd.yaml  | 171 +++++++++---
 drivers/net/can/rcar/rcar_canfd.c             | 256 ++++++++++++++----
 2 files changed, 327 insertions(+), 100 deletions(-)

Comments

Biju Das March 21, 2025, 9:09 a.m. UTC | #1
Hi Marc,

The Fixes patches[1] hit on net-next

[1]
https://web.git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=d5cd454825566989f97e0748e1047b9532338b99

Cheers,
Biju

> -----Original Message-----
> From: Biju Das <biju.das.jz@bp.renesas.com>
> Sent: 20 March 2025 09:11
> Subject: [PATCH v6 00/18] Add support for RZ/G3E CANFD
> 
> The CAN-FD module on RZ/G3E is very similar to the one on both R-Car V4H and RZ/G2L, but differs in
> some hardware parameters:
>  * No external clock, but instead has ram clock.
>  * Support up to 6 channels.
>  * 20 interrupts.
> 
> v5->v6:
>  * Replaced RCANFD_RNC_PER_REG macro with rnc_stride variable.
>  * Updated commit description for patch#7 and #8
>  * Dropped mask_table:
>      AFLPN_MASK is replaced by max_aflpn variable.
>      CFTML_MASK is replaced by max_cftml variable.
>      BITTIMING MASK's are replaced by {nom,data}_bittiming variables.
>  * Collected tag from Geert.
> v4->v5:
>  * Collected tag from Geert.
>  * The rules for R-Car Gen3/4 could be kept together, reducing the number
>    of lines. Similar change for rzg2l-canfd aswell.
>  * Keeping interrupts and resets together allows to keep a clear
>    separation between RZ/G2L and RZ/G3E, at the expense of only
>    a single line.
>  * Retained the tags for binding patches as it is trivial changes.
>  * Dropped the unused macro RCANFD_GAFLCFG_GETRNC.
>  * Updated macro RCANFD_GERFL_ERR by using gpriv->channels_mask and
>    dropped unused macro RCANFD_GERFL_EEF0_7.
>  * Replaced RNC mask in RCANFD_GAFLCFG_SETRNC macro by using
>    info->num_supported_rules variable.
>  * Updated the macro RCANFD_GAFLCFG by using info->rnc_field_width
>    variable.
>  * Updated shift value in RCANFD_GAFLCFG_SETRNC macro by using a formula
>    (32 - (n % rnc_per_reg + 1) * field_width).
>  * Replaced the variable name shared_can_reg->shared_can_regs.
>  * Improved commit description for patch{#11,#12}by replacing has->have.
>  * Dropped RCANFD_EEF_MASK and RCANFD_RNC_MASK as it is taken
>    care by gpriv->channels_mask and info->num_supported_rules.
>  * Dropped RCANFD_FIRST_RNC_SH and RCANFD_SECOND_RNC_SH by using a
>    formula (32 - (n % rnc_per_reg + 1) * rnc_field_width.
>  * Improved commit description by "All SoCs supports extenal clock"->
>    "All existing SoCs support an external clock".
>  * Updated error description in probe as "cannot get enabled ram clock"
>  * Updated r9a09g047_hw_info table.
> v3->v4:
>  * Added Rb tag from Rob for patch#2.
>  * Added prefix RCANFD_* to enum rcar_canfd_reg_offset_id.
>  * Added prefix RCANFD_* to enum rcar_canfd_mask_id.
>  * Added prefix RCANFD_* to enum rcar_canfd_shift_id.
> v2->v3:
>  * Collected tags.
>  * Dropped reg_gen4() and is_gen4() by adding mask_table, shift_table,
>    regs, ch_interface_mode and shared_can_reg variables to
>    struct rcar_canfd_hw_info.
> v1->v2:
>  * Split the series with fixes patch separately.
>  * Added patch for Simplify rcar_canfd_probe() using
>    of_get_available_child_by_name() as dependency patch hit on can-next.
>  * Added Rb tag from Vincent Mailhol.
>  * Dropped redundant comment from commit description for patch#3.
> 
> Biju Das (18):
>   dt-bindings: can: renesas,rcar-canfd: Simplify the conditional schema
>   dt-bindings: can: renesas,rcar-canfd: Document RZ/G3E support
>   can: rcar_canfd: Use of_get_available_child_by_name()
>   can: rcar_canfd: Drop RCANFD_GAFLCFG_GETRNC macro
>   can: rcar_canfd: Drop RCANFD_GERFL_EEF* macros in RCANFD_GERFL_ERR
>   can: rcar_canfd: Add num_supported_rules variable to struct
>     rcar_canfd_hw_info
>   can: rcar_canfd: Add rnc_stride variable to struct rcar_canfd_hw_info
>   can: rcar_canfd: Simplify RCANFD_GAFLCFG_SETRNC macro
>   can: rcar_canfd: Add max_aflpn variable to struct rcar_canfd_hw_info
>   can: rcar_canfd: Add max_cftml variable to struct rcar_canfd_hw_info
>   can: rcar_canfd: Add {nom,data}_bittiming variables to struct
>     rcar_canfd_hw_info
>   can: rcar_canfd: Add ch_interface_mode variable to struct
>     rcar_canfd_hw_info
>   can: rcar_canfd: Add shared_can_regs variable to struct
>     rcar_canfd_hw_info
>   can: rcar_canfd: Add register mapping table to struct
>     rcar_canfd_hw_info
>   can: rcar_canfd: Add shift table to struct rcar_canfd_hw_info
>   can: rcar_canfd: Add only_internal_clks variable to struct
>     rcar_canfd_hw_info
>   can: rcar_canfd: Enhance multi_channel_irqs handling
>   can: rcar_canfd: Add RZ/G3E support
> 
>  .../bindings/net/can/renesas,rcar-canfd.yaml  | 171 +++++++++---
>  drivers/net/can/rcar/rcar_canfd.c             | 256 ++++++++++++++----
>  2 files changed, 327 insertions(+), 100 deletions(-)
> 
> --
> 2.43.0