[PATCH 00/29] drm/i915: Eliminate DDI encoder->type frobbery redux

Ville Syrjala
2017-09-18T18:26:08Z

This series aims to eliminate the DDI encoder->type shenanigans.
Afterwards encoder->type will permanently be "DDI" for DDI DP/HDMI
ports, and "EDP" for DDI eDP ports. To figure out in which mode
we want to drive the port we use the output_types bitmask, which
for DDI will be computed by the new .compute_output_type() encoder
hook.

Originally (some years ago?) I simply planned to avoid this role
switching for the DDI encoders by splitting each encoders into two
two separate instances (which is how the pre-DDI platforms work).
I even posted a patch series achieving this. But the series didn't
land before LSPCON happened and at that point I figured that we
actually might want to switch the encoder mode as needed. So I
came up with this alternative apporach (and introduced the
output_types bitmask). Unfortunately I never managed to land the
remaining bits.

Having a single encoder per DDI port does have the benefit of
giving userspace a hint that there's no way to enable both the DP
and HDMI connectors handing off it at the same time. With pre-DDI
platforms userspace has no idea which connectors are tied to the
same port. So one might argue that this is indeed the better
approach.

Since I last posted this stuff a lot has changed in the DDI code
(BXT and CNL at least, can't recall if SKL was a thing when
I originally posted this stuff). So this series actually turned
out into a rather massive "clean up DDI" series. I regret it
ending up this big, but I don't think I want to start spliting
it up at this point. So I'll just offer my apologies and post
the series as is. The patches shouldn't be too tricky to read
since it's basically just refactoring all over.

Entire series is available here:
git://github.com/vsyrjala/linux.git ddi_output_types

Ville Syrjälä (29):
drm/i915: Replace some spaces with tabs
drm/i915: Shrink bxt_ddi_buf_trans
drm/i915: Shrink cnl_ddi_buf_trans
drm/i915: Dump 'output_types' in crtc state dump
drm/i915: Extract intel_ddi_clk_disable()
drm/i915: Extract intel_disable_ddi_buf()
drm/i915: Inline the required bits of intel_ddi_post_disable() into
intel_ddi_fdi_post_disable()
drm/i915: Split intel_ddi_post_disable() into DP vs. HDMI variants
drm/i915: Remove useless eDP check from intel_ddi_pre_enable_dp()
drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants
drm/i915: Plump crtc_state etc. directly to
intel_ddi_pre_enable_{dp,hdmi}()
drm/i915: Split intel_enable_ddi() into DP and HDMI variants
drm/i915: Relocate intel_ddi_get_buf_trans_*() functions
drm/i915: Extract intel_ddi_get_buf_trans_hdmi()
drm/i915: Pass the encoder type explicitly to skl_set_iboost()
drm/i915: Pass the level to intel_prepare_hdmi_ddi_buffers()
drm/i915: Integrate BXT into intel_ddi_dp_voltage_max()
drm/i915: Pass encoder type to cnl_ddi_vswing_sequence() explicitly
drm/i915: Kill off the BXT buf_trans default_index
drm/i915: Don't use encoder->type in intel_ddi_set_pipe_settings()
drm/i915: Pass crtc state to intel_prepare_dp_ddi_buffers()
drm/i915: Start using output_types for DPLL selection
drm/i915: Stop using encoder->type in
intel_ddi_enable_transcoder_func()
drm/i915: Centralize the SKL DDI A/E vs. B/C/D buf trans handling
drm/i915: Stop frobbing with DDI encoder->type
drm/i915: Unify error handling for missing DDI buf trans tables
drm/i915: Clear up the types we use for DDI buf trans level/n_entries
drm/i915: Replace most intel_ddi_get_encoder_port() alls with
encoder->port
drm/i915: Pass a crtc state to ddi post_disable from MST code

drivers/gpu/drm/i915/i915_debugfs.c | 2 +-
drivers/gpu/drm/i915/intel_ddi.c | 973 ++++++++++++++++++----------------
drivers/gpu/drm/i915/intel_display.c | 59 ++-
drivers/gpu/drm/i915/intel_dp.c | 19 +-
drivers/gpu/drm/i915/intel_dp_mst.c | 2 +-
drivers/gpu/drm/i915/intel_dpll_mgr.c | 36 +-
drivers/gpu/drm/i915/intel_drv.h | 7 +-
drivers/gpu/drm/i915/intel_hdmi.c | 10 +-
drivers/gpu/drm/i915/intel_opregion.c | 2 +-
9 files changed, 603 insertions(+), 507 deletions(-)