On Wed, Apr 12, 2023 at 03:49:19PM -0700, Radhakrishna Sripada wrote:
> [...]
> @@ -980,21 +981,38 @@ static int hsw_crtc_get_shared_dpll(struct 
> intel_atomic_state *state,
>  static int dg2_crtc_compute_clock(struct intel_atomic_state *state,
>                                 struct intel_crtc *crtc)
>  {
> +     struct drm_i915_private *i915 = to_i915(state->base.dev);
>       struct intel_crtc_state *crtc_state =
>               intel_atomic_get_new_crtc_state(state, crtc);
>       struct intel_encoder *encoder =
>               intel_get_crtc_new_encoder(state, crtc_state);
> +     enum phy phy = intel_port_to_phy(i915, encoder->port);
>       int ret;
>  
>       ret = intel_mpllb_calc_state(crtc_state, encoder);
>       if (ret)
>               return ret;
>  
> +     /* TODO: Do the readback via intel_compute_shared_dplls() */
> +     if (intel_is_c10phy(i915, phy))
> +             crtc_state->port_clock = intel_c10pll_calc_port_clock(encoder, 
> &crtc_state->cx0pll_state.c10);
> +

Added to the wrong function.

>       crtc_state->hw.adjusted_mode.crtc_clock = 
> intel_crtc_dotclock(crtc_state);

The above is also missing for mtl.

>  
>       return 0;
>  }
>  
> +static int mtl_crtc_compute_clock(struct intel_atomic_state *state,
> +                               struct intel_crtc *crtc)
> +{
> +     struct intel_crtc_state *crtc_state =
> +             intel_atomic_get_new_crtc_state(state, crtc);
> +     struct intel_encoder *encoder =
> +             intel_get_crtc_new_encoder(state, crtc_state);
> +
> +     return intel_cx0pll_calc_state(crtc_state, encoder);
> +}
> +
>
> [...]
>
> +/**
> + * REG_FIELD_PREP8() - Prepare a u8 bitfield value
> + * @__mask: shifted mask defining the field's length and position
> + * @__val: value to put in the field
> + *
> + * Local copy of FIELD_PREP8() to generate an integer constant expression, 
> force

Local copy of FIELD_PREP()

> + * u8 and for consistency with REG_FIELD_GET8(), REG_BIT8() and 
> REG_GENMASK8().
> + *
> + * @return: @__val masked and shifted into the field defined by @__mask.
> + */
> +#define REG_FIELD_PREP8(__mask, __val)                                       
>    \
> +     ((u8)((((typeof(__mask))(__val) << __bf_shf(__mask)) & (__mask)) +      
> \
> +            BUILD_BUG_ON_ZERO(!__is_constexpr(__mask)) +             \
> +            BUILD_BUG_ON_ZERO((__mask) == 0 || (__mask) > U8_MAX) +          
> \
> +            BUILD_BUG_ON_ZERO(!IS_POWER_OF_2((__mask) + (1ULL << 
> __bf_shf(__mask)))) + \
> +            BUILD_BUG_ON_ZERO(__builtin_choose_expr(__is_constexpr(__val), 
> (~((__mask) >> __bf_shf(__mask)) & (__val)), 0))))
> +
>  /**
>   * REG_FIELD_GET() - Extract a u32 bitfield value
>   * @__mask: shifted mask defining the field's length and position
> @@ -155,6 +200,18 @@
>   */
>  #define _PICK(__index, ...) (((const u32 []){ __VA_ARGS__ })[__index])
>  

Reply via email to