RE: [PATCH v2 08/11] can: rcar_can: BCR bitfield conversion

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Geert,

Thanks for the patch.

> -----Original Message-----
> From: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>
> Sent: 22 August 2025 11:17
> To: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx>; Vincent Mailhol <mailhol.vincent@xxxxxxxxxx>
> Cc: linux-can@xxxxxxxxxxxxxxx; linux-renesas-soc@xxxxxxxxxxxxxxx; Geert Uytterhoeven
> <geert+renesas@xxxxxxxxx>
> Subject: [PATCH v2 08/11] can: rcar_can: BCR bitfield conversion
> 
> Convert CAN Bit Configuration Register field accesses to use the
> FIELD_PREP() bitfield access macro.  While at it, fix the misspelling of BRP.
> 
> This gets rid of custom function-like field preparation macros.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>

Reviewed-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>

Cheers,
Biju

> ---
> v2:
>   - No changes.
> ---
>  drivers/net/can/rcar/rcar_can.c | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/net/can/rcar/rcar_can.c b/drivers/net/can/rcar/rcar_can.c index
> 6f28dc9354511120..4c5c1f0446913d37 100644
> --- a/drivers/net/can/rcar/rcar_can.c
> +++ b/drivers/net/can/rcar/rcar_can.c
> @@ -152,10 +152,10 @@ static const struct can_bittiming_const rcar_can_bittiming_const = {
>  #define RCAR_CAN_N_RX_MKREGS2	8
> 
>  /* Bit Configuration Register settings */
> -#define RCAR_CAN_BCR_TSEG1(x)	(((x) & 0x0f) << 20)
> -#define RCAR_CAN_BCR_BPR(x)	(((x) & 0x3ff) << 8)
> -#define RCAR_CAN_BCR_SJW(x)	(((x) & 0x3) << 4)
> -#define RCAR_CAN_BCR_TSEG2(x)	((x) & 0x07)
> +#define RCAR_CAN_BCR_TSEG1	GENMASK(23, 20)
> +#define RCAR_CAN_BCR_BRP	GENMASK(17, 8)
> +#define RCAR_CAN_BCR_SJW	GENMASK(5, 4)
> +#define RCAR_CAN_BCR_TSEG2	GENMASK(2, 0)
> 
>  /* Mailbox and Mask Registers bits */
>  #define RCAR_CAN_IDE		BIT(31)		/* ID Extension */
> @@ -428,9 +428,10 @@ static void rcar_can_set_bittiming(struct net_device *ndev)
>  	struct can_bittiming *bt = &priv->can.bittiming;
>  	u32 bcr;
> 
> -	bcr = RCAR_CAN_BCR_TSEG1(bt->phase_seg1 + bt->prop_seg - 1) |
> -	      RCAR_CAN_BCR_BPR(bt->brp - 1) | RCAR_CAN_BCR_SJW(bt->sjw - 1) |
> -	      RCAR_CAN_BCR_TSEG2(bt->phase_seg2 - 1);
> +	bcr = FIELD_PREP(RCAR_CAN_BCR_TSEG1, bt->phase_seg1 + bt->prop_seg - 1) |
> +	      FIELD_PREP(RCAR_CAN_BCR_BRP, bt->brp - 1) |
> +	      FIELD_PREP(RCAR_CAN_BCR_SJW, bt->sjw - 1) |
> +	      FIELD_PREP(RCAR_CAN_BCR_TSEG2, bt->phase_seg2 - 1);
>  	/* Don't overwrite CLKR with 32-bit BCR access; CLKR has 8-bit access.
>  	 * All the registers are big-endian but they get byte-swapped on 32-bit
>  	 * read/write (but not on 8-bit, contrary to the manuals)...
> --
> 2.43.0
> 






[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux