Message ID | 20250326122003.122976-11-biju.das.jz@bp.renesas.com (mailing list archive) |
---|---|
State | New |
Delegated to: | Geert Uytterhoeven |
Headers | show |
Series | Add support for RZ/G3E CANFD | expand |
On 26/03/2025 à 21:19, Biju Das wrote: > R-Car Gen3 has CFTML max positional value is 15 whereas on R-Car Gen4 it > is 31. Add a max_cftml variable to struct rcar_canfd_hw_info to handle > this difference. > > Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> > Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr> > --- > v6->v7: > * Collected tag. > v6: > * New patch. > --- > drivers/net/can/rcar/rcar_canfd.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c > index 7cef0673fbc8..c37fb85fe478 100644 > --- a/drivers/net/can/rcar/rcar_canfd.c > +++ b/drivers/net/can/rcar/rcar_canfd.c > @@ -227,7 +227,7 @@ > > /* RSCFDnCFDCFCCk */ > #define RCANFD_CFCC_CFTML(gpriv, x) \ ^ Notwithstanding of above review tag and same as before, please demystify what this x is. > - (((x) & reg_gen4(gpriv, 0x1f, 0xf)) << reg_gen4(gpriv, 16, 20)) > + (((x) & (gpriv)->info->max_cftml) << reg_gen4(gpriv, 16, 20)) > #define RCANFD_CFCC_CFM(gpriv, x) (((x) & 0x3) << reg_gen4(gpriv, 8, 16)) > #define RCANFD_CFCC_CFIM BIT(12) > #define RCANFD_CFCC_CFDC(gpriv, x) (((x) & 0x7) << reg_gen4(gpriv, 21, 8)) > @@ -508,6 +508,7 @@ struct rcar_canfd_hw_info { > u8 rnc_stride; > u8 rnc_field_width; > u8 max_aflpn; > + u8 max_cftml; > u8 max_channels; > u8 postdiv; > /* hardware features */ > @@ -588,6 +589,7 @@ static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { > .rnc_stride = 4, > .rnc_field_width = 8, > .max_aflpn = 31, > + .max_cftml = 15, > .max_channels = 2, > .postdiv = 2, > .shared_global_irqs = 1, > @@ -598,6 +600,7 @@ static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { > .rnc_stride = 2, > .rnc_field_width = 16, > .max_aflpn = 127, > + .max_cftml = 31, > .max_channels = 8, > .postdiv = 2, > .shared_global_irqs = 1, > @@ -608,6 +611,7 @@ static const struct rcar_canfd_hw_info rzg2l_hw_info = { > .rnc_stride = 4, > .rnc_field_width = 8, > .max_aflpn = 31, > + .max_cftml = 15, > .max_channels = 2, > .postdiv = 1, > .multi_channel_irqs = 1, Yours sincerely, Vincent Mailhol
Hi Vincent, Thanks for the feedback. > -----Original Message----- > From: Vincent Mailhol <mailhol.vincent@wanadoo.fr> > Sent: 28 March 2025 12:59 > Subject: Re: [PATCH v7 10/18] can: rcar_canfd: Add max_cftml variable to struct rcar_canfd_hw_info > > On 26/03/2025 à 21:19, Biju Das wrote: > > R-Car Gen3 has CFTML max positional value is 15 whereas on R-Car Gen4 > > it is 31. Add a max_cftml variable to struct rcar_canfd_hw_info to > > handle this difference. > > > > Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> > > Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> > > Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr> > > > --- > > v6->v7: > > * Collected tag. > > v6: > > * New patch. > > --- > > drivers/net/can/rcar/rcar_canfd.c | 6 +++++- > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/net/can/rcar/rcar_canfd.c > > b/drivers/net/can/rcar/rcar_canfd.c > > index 7cef0673fbc8..c37fb85fe478 100644 > > --- a/drivers/net/can/rcar/rcar_canfd.c > > +++ b/drivers/net/can/rcar/rcar_canfd.c > > @@ -227,7 +227,7 @@ > > > > /* RSCFDnCFDCFCCk */ > > #define RCANFD_CFCC_CFTML(gpriv, x) \ > ^ > Notwithstanding of above review tag and same as before, please demystify what this x is. Ok, will replace x->cftml to make it clear. Cheers, Biju > > > - (((x) & reg_gen4(gpriv, 0x1f, 0xf)) << reg_gen4(gpriv, 16, 20)) > > + (((x) & (gpriv)->info->max_cftml) << reg_gen4(gpriv, 16, 20)) > > #define RCANFD_CFCC_CFM(gpriv, x) (((x) & 0x3) << reg_gen4(gpriv, 8, 16)) > > #define RCANFD_CFCC_CFIM BIT(12) > > #define RCANFD_CFCC_CFDC(gpriv, x) (((x) & 0x7) << reg_gen4(gpriv, 21, 8)) > > @@ -508,6 +508,7 @@ struct rcar_canfd_hw_info { > > u8 rnc_stride; > > u8 rnc_field_width; > > u8 max_aflpn; > > + u8 max_cftml; > > u8 max_channels; > > u8 postdiv; > > /* hardware features */ > > @@ -588,6 +589,7 @@ static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { > > .rnc_stride = 4, > > .rnc_field_width = 8, > > .max_aflpn = 31, > > + .max_cftml = 15, > > .max_channels = 2, > > .postdiv = 2, > > .shared_global_irqs = 1, > > @@ -598,6 +600,7 @@ static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { > > .rnc_stride = 2, > > .rnc_field_width = 16, > > .max_aflpn = 127, > > + .max_cftml = 31, > > .max_channels = 8, > > .postdiv = 2, > > .shared_global_irqs = 1, > > @@ -608,6 +611,7 @@ static const struct rcar_canfd_hw_info rzg2l_hw_info = { > > .rnc_stride = 4, > > .rnc_field_width = 8, > > .max_aflpn = 31, > > + .max_cftml = 15, > > .max_channels = 2, > > .postdiv = 1, > > .multi_channel_irqs = 1, > > Yours sincerely, > Vincent Mailhol
diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 7cef0673fbc8..c37fb85fe478 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -227,7 +227,7 @@ /* RSCFDnCFDCFCCk */ #define RCANFD_CFCC_CFTML(gpriv, x) \ - (((x) & reg_gen4(gpriv, 0x1f, 0xf)) << reg_gen4(gpriv, 16, 20)) + (((x) & (gpriv)->info->max_cftml) << reg_gen4(gpriv, 16, 20)) #define RCANFD_CFCC_CFM(gpriv, x) (((x) & 0x3) << reg_gen4(gpriv, 8, 16)) #define RCANFD_CFCC_CFIM BIT(12) #define RCANFD_CFCC_CFDC(gpriv, x) (((x) & 0x7) << reg_gen4(gpriv, 21, 8)) @@ -508,6 +508,7 @@ struct rcar_canfd_hw_info { u8 rnc_stride; u8 rnc_field_width; u8 max_aflpn; + u8 max_cftml; u8 max_channels; u8 postdiv; /* hardware features */ @@ -588,6 +589,7 @@ static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { .rnc_stride = 4, .rnc_field_width = 8, .max_aflpn = 31, + .max_cftml = 15, .max_channels = 2, .postdiv = 2, .shared_global_irqs = 1, @@ -598,6 +600,7 @@ static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { .rnc_stride = 2, .rnc_field_width = 16, .max_aflpn = 127, + .max_cftml = 31, .max_channels = 8, .postdiv = 2, .shared_global_irqs = 1, @@ -608,6 +611,7 @@ static const struct rcar_canfd_hw_info rzg2l_hw_info = { .rnc_stride = 4, .rnc_field_width = 8, .max_aflpn = 31, + .max_cftml = 15, .max_channels = 2, .postdiv = 1, .multi_channel_irqs = 1,