On Wed, Feb 12, 2025 at 02:43:16PM -0300, Gustavo Sousa wrote:
> Let the compiler know that we are intetionally using a different enum
> type to perform arithmetic with enum intel_display_power_domain in the
> POWER_DOMAIN_*(). Do that by explicitly casting the macro argument to
> int.
> 
> Reported-by: kernel test robot <l...@intel.com>
> Closes: 
> https://lore.kernel.org/oe-kbuild-all/202502120809.xfmcqkbd-...@intel.com/
> Signed-off-by: Gustavo Sousa <gustavo.so...@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display_power.h | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h 
> b/drivers/gpu/drm/i915/display/intel_display_power.h
> index a3a5c1be8bab..3caa3f517a32 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.h
> @@ -117,12 +117,12 @@ enum intel_display_power_domain {
>       POWER_DOMAIN_INVALID = POWER_DOMAIN_NUM,
>  };
>  
> -#define POWER_DOMAIN_PIPE(pipe) ((pipe) + POWER_DOMAIN_PIPE_A)
> +#define POWER_DOMAIN_PIPE(pipe) ((int)(pipe) + POWER_DOMAIN_PIPE_A)
>  #define POWER_DOMAIN_PIPE_PANEL_FITTER(pipe) \
> -             ((pipe) + POWER_DOMAIN_PIPE_PANEL_FITTER_A)
> +             ((int)(pipe) + POWER_DOMAIN_PIPE_PANEL_FITTER_A)
>  #define POWER_DOMAIN_TRANSCODER(tran) \
>       ((tran) == TRANSCODER_EDP ? POWER_DOMAIN_TRANSCODER_EDP : \
> -      (tran) + POWER_DOMAIN_TRANSCODER_A)
> +      (int)(tran) + POWER_DOMAIN_TRANSCODER_A)

I've generally gone for the 
POWER_DOMAIN_TRANSCODER_A + (tran) - TRANSCODER_A
form for such things, to also make sure it works
even if TRANSCODER_A isn't 0 anymore.
Does that avoid the warning as well?

Maybe these should even be functions rather than macros?

>  
>  struct intel_power_domain_mask {
>       DECLARE_BITMAP(bits, POWER_DOMAIN_NUM);
> -- 
> 2.48.1

-- 
Ville Syrjälä
Intel

Reply via email to