Hi,

On 05/10/2025 06:02, Marek Vasut wrote:
> Introduce VCLKSET_BPP_MASK macro and use FIELD_PREP() to generate
> appropriate bitfield from mask and value without bitshift. Remove
> VCLKSET_COLOR_RGB which is never used, replace it with code comment.
> 
> Do not convert bits and bitfields to BIT() and GENMASK() yet, to be
> consisten with the current style. Conversion to BIT() and GENMASK()
> macros is done at the very end of this series in the last two patches.
> 
> Signed-off-by: Marek Vasut <[email protected]>
> ---
> Cc: David Airlie <[email protected]>
> Cc: Geert Uytterhoeven <[email protected]>
> Cc: Kieran Bingham <[email protected]>
> Cc: Laurent Pinchart <[email protected]>
> Cc: Maarten Lankhorst <[email protected]>
> Cc: Magnus Damm <[email protected]>
> Cc: Maxime Ripard <[email protected]>
> Cc: Simona Vetter <[email protected]>
> Cc: Thomas Zimmermann <[email protected]>
> Cc: Tomi Valkeinen <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> ---
> NOTE: No functional change expected, this is a preparatory patch which
> partly removes macros which evaluate to zeroes from rcar_mipi_dsi_regs.h .
> The other patches in this series proceed with that job, piece by piece,
> to make it all reviewable.
> ---
> V2: Move FIELD_PREP() back into rcar_mipi_dsi_regs.h
> V3: Include linux/bitfield.h which contains the FIELD_PREP() macro
> ---
>  drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c      |  4 +++-
>  drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi_regs.h | 12 ++++++------
>  2 files changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c 
> b/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c
> index e13249e0134b4..f6427476feb72 100644
> --- a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c
> +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c
> @@ -5,6 +5,7 @@
>   * Copyright (C) 2020 Renesas Electronics Corporation
>   */
>  
> +#include <linux/bitfield.h>
>  #include <linux/clk.h>
>  #include <linux/delay.h>
>  #include <linux/io.h>
> @@ -624,6 +625,7 @@ static int rcar_mipi_dsi_startup(struct rcar_mipi_dsi 
> *dsi,
>       vclkset = VCLKSET_CKEN;
>       rcar_mipi_dsi_write(dsi, VCLKSET, vclkset);
>  
> +     /* Output is always RGB, never YCbCr */
>       if (dsi_format == 24)
>               vclkset |= VCLKSET_BPP_24;
>       else if (dsi_format == 18)
> @@ -635,7 +637,7 @@ static int rcar_mipi_dsi_startup(struct rcar_mipi_dsi 
> *dsi,
>               return -EINVAL;
>       }
>  
> -     vclkset |= VCLKSET_COLOR_RGB | VCLKSET_LANE(dsi->lanes - 1);
> +     vclkset |= VCLKSET_LANE(dsi->lanes - 1);
>  
>       switch (dsi->info->model) {
>       case RCAR_DSI_V3U:
> diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi_regs.h 
> b/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi_regs.h
> index 90e8e3de3e580..468f84cd1325e 100644
> --- a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi_regs.h
> +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi_regs.h
> @@ -246,14 +246,14 @@
>  
>  #define VCLKSET                              0x100c
>  #define VCLKSET_CKEN                 (1 << 16)
> -#define VCLKSET_COLOR_RGB            (0 << 8)
> -#define VCLKSET_COLOR_YCC            (1 << 8)
> +#define VCLKSET_COLOR_YCC            (1 << 8) /* 0:RGB 1:YCbCr */
>  #define VCLKSET_DIV_V3U(x)           (((x) & 0x3) << 4)
>  #define VCLKSET_DIV_V4H(x)           (((x) & 0x7) << 4)
> -#define VCLKSET_BPP_16                       (0 << 2)
> -#define VCLKSET_BPP_18                       (1 << 2)
> -#define VCLKSET_BPP_18L                      (2 << 2)
> -#define VCLKSET_BPP_24                       (3 << 2)
> +#define VCLKSET_BPP_MASK             (3 << 2)
> +#define VCLKSET_BPP_16                       FIELD_PREP(VCLKSET_BPP_MASK, 0)
> +#define VCLKSET_BPP_18                       FIELD_PREP(VCLKSET_BPP_MASK, 1)
> +#define VCLKSET_BPP_18L                      FIELD_PREP(VCLKSET_BPP_MASK, 2)
> +#define VCLKSET_BPP_24                       FIELD_PREP(VCLKSET_BPP_MASK, 3)
>  #define VCLKSET_LANE(x)                      (((x) & 0x3) << 0)
It probably doesn't matter, but just wanted to mention: here FIELD_PREP
is used with, e.g., (3 << 2). GENMASK returns an unsigned value, whereas
(3 << 2) is signed.

 Tomi

Reply via email to