On Thu, 11 Jun 2026, Ankit Nautiyal <[email protected]> wrote:
> The Adaptive Sync SDP is currently the only packet with a programmable
> transmission line.
>
> Make a structure struct intel_dip for Data Island Packets. Add a member to
> track Adaptive-Sync SDP transmission line. Include the new member in the
> pipe configuration comparison.
>
> This will pave the way for supporting more packets' programmable
> transmission lines, including the common base SDP transmission line
> introduced with Xe3p_lpd.
>
> Signed-off-by: Ankit Nautiyal <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_dip.h           | 8 ++++++++
>  drivers/gpu/drm/i915/display/intel_display.c       | 2 ++
>  drivers/gpu/drm/i915/display/intel_display_types.h | 3 +++
>  3 files changed, 13 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dip.h 
> b/drivers/gpu/drm/i915/display/intel_dip.h
> index 25bae4a04d6b..37507ac3e645 100644
> --- a/drivers/gpu/drm/i915/display/intel_dip.h
> +++ b/drivers/gpu/drm/i915/display/intel_dip.h
> @@ -35,4 +35,12 @@ struct intel_crtc_state;
>  u16 intel_dip_read_emp_as_sdp_tl(const struct intel_crtc_state *crtc_state);
>  void intel_dip_write_emp_as_sdp_tl(const struct intel_crtc_state 
> *crtc_state);
>  
> +struct intel_dip {
> +     /*
> +      * DIP Transmission line, relative to the Vtotal.
> +      * The programmed transmit line is (Vtotal - value)
> +      */
> +     u16 emp_as_sdp_tl;
> +};
> +
>  #endif /* __INTEL_DIP_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index bdf02b67c1d8..c84ee0e865ee 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -5507,6 +5507,8 @@ intel_pipe_config_compare(const struct intel_crtc_state 
> *current_config,
>  
>       PIPE_CONF_CHECK_I(set_context_latency);
>  
> +     PIPE_CONF_CHECK_I(dip.emp_as_sdp_tl);
> +
>  #undef PIPE_CONF_CHECK_X
>  #undef PIPE_CONF_CHECK_I
>  #undef PIPE_CONF_CHECK_LLI
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index aa4772a1c208..6cc3a4c2f17c 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -46,6 +46,7 @@
>  
>  #include "i915_gtt_view_types.h"
>  #include "intel_bios.h"
> +#include "intel_dip.h"

I understand the motivation, but I'd rather keep the struct here in
intel_display_types.h than blow up the includes. There are already too
many includes *and* this file is included just about everywhere.

The point is, if you change anything unrelated to struct intel_dip in
intel_dip.h, you'll end up rebuilding pretty much all the display code,
and it'll slow everyone down.

C really sucks at this. And embedding a lot of structs makes it worse.


BR,
Jani.



>  #include "intel_display.h"
>  #include "intel_display_conversion.h"
>  #include "intel_display_limits.h"
> @@ -1301,6 +1302,8 @@ struct intel_crtc_state {
>               struct drm_dp_as_sdp as_sdp;
>       } infoframes;
>  
> +     struct intel_dip dip;
> +
>       u8 eld[MAX_ELD_BYTES];
>  
>       /* HDMI scrambling status */

-- 
Jani Nikula, Intel

Reply via email to