drm/i915: Add AVI infoframe support for LSPCON
In order to pass AVI infoframes to LSPCON devices, a source has to write them in a vendor recommended method and location. This patch series: - adds generic LSPCON infoframe setup functions. - registers these functions into existing AVI infoframe framework. - triggers these functions from modeset sequence. Next patches in the series will add vendor specific code. V2: Added new parameter to align with new definition of drm_hdmi_avi_infoframe_quant_range V3: Added r-b from Maarten (for V2) Added new parameter output_format in struct lspcon to accommodate Ville's review comments on last patch of the series V4: Addressed Ville's review comment - Do not add output_format in LSPCON state, as its non-atomic. Add this into CRTC state (added in a later patch). V5: Rebase V6: Rebase V7: Rebase V8: Rebase V9: Rebase V10: Rebase V11: Accommodated rebasing changes in intel_git_port fptrs (set_infoframes and infoframe_enabled) Cc: Ville Syrjala <ville.syrjala@linux.intel.com> Cc: Imre Deak <imre.deak@linux.intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Shashank Sharma <shashank.sharma@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/1539325394-20788-5-git-send-email-shashank.sharma@intel.com
This commit is contained in:

committed by
Jani Nikula

parent
96e35598ce
commit
06c812d7c5
@@ -2978,10 +2978,22 @@ static void intel_ddi_pre_enable(struct intel_encoder *encoder,
|
||||
|
||||
intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, true);
|
||||
|
||||
if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
|
||||
if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) {
|
||||
intel_ddi_pre_enable_hdmi(encoder, crtc_state, conn_state);
|
||||
else
|
||||
} else {
|
||||
struct intel_lspcon *lspcon =
|
||||
enc_to_intel_lspcon(&encoder->base);
|
||||
|
||||
intel_ddi_pre_enable_dp(encoder, crtc_state, conn_state);
|
||||
if (lspcon->active) {
|
||||
struct intel_digital_port *dig_port =
|
||||
enc_to_dig_port(&encoder->base);
|
||||
|
||||
dig_port->set_infoframes(encoder,
|
||||
crtc_state->has_infoframe,
|
||||
crtc_state, conn_state);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void intel_disable_ddi_buf(struct intel_encoder *encoder)
|
||||
@@ -3845,8 +3857,6 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
|
||||
MISSING_CASE(port);
|
||||
}
|
||||
|
||||
intel_infoframe_init(intel_dig_port);
|
||||
|
||||
if (init_dp) {
|
||||
if (!intel_ddi_init_dp_connector(intel_dig_port))
|
||||
goto err;
|
||||
@@ -3875,6 +3885,7 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
|
||||
port_name(port));
|
||||
}
|
||||
|
||||
intel_infoframe_init(intel_dig_port);
|
||||
return;
|
||||
|
||||
err:
|
||||
|
Reference in New Issue
Block a user