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 <[email protected]>
> Closes:
> https://lore.kernel.org/oe-kbuild-all/[email protected]/
> Signed-off-by: Gustavo Sousa <[email protected]>
> ---
> 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