mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 13:59:45 -04:00
drm/i915/hdmi: Use an intel_connector pointer everywhere
Following the convention, convert intel_hdmi.c to use an intel_connector pointer everywhere, calling this pointer connector. If the intel connector must be casted from a drm_connector, call this pointer _connector and use this pointer only for the casting. v2: Use for_each_new_intel_connector_in_state(). (Jani) Cc: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://lore.kernel.org/r/20250428134716.3396802-3-imre.deak@intel.com
This commit is contained in:
@@ -715,7 +715,7 @@ intel_hdmi_compute_avi_infoframe(struct intel_encoder *encoder,
|
||||
struct hdmi_avi_infoframe *frame = &crtc_state->infoframes.avi.avi;
|
||||
const struct drm_display_mode *adjusted_mode =
|
||||
&crtc_state->hw.adjusted_mode;
|
||||
struct drm_connector *connector = conn_state->connector;
|
||||
struct intel_connector *connector = to_intel_connector(conn_state->connector);
|
||||
int ret;
|
||||
|
||||
if (!crtc_state->has_infoframe)
|
||||
@@ -724,7 +724,7 @@ intel_hdmi_compute_avi_infoframe(struct intel_encoder *encoder,
|
||||
crtc_state->infoframes.enable |=
|
||||
intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_AVI);
|
||||
|
||||
ret = drm_hdmi_avi_infoframe_from_display_mode(frame, connector,
|
||||
ret = drm_hdmi_avi_infoframe_from_display_mode(frame, &connector->base,
|
||||
adjusted_mode);
|
||||
if (ret)
|
||||
return false;
|
||||
@@ -743,7 +743,7 @@ intel_hdmi_compute_avi_infoframe(struct intel_encoder *encoder,
|
||||
crtc_state->output_format != INTEL_OUTPUT_FORMAT_RGB);
|
||||
|
||||
if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_RGB) {
|
||||
drm_hdmi_avi_infoframe_quant_range(frame, connector,
|
||||
drm_hdmi_avi_infoframe_quant_range(frame, &connector->base,
|
||||
adjusted_mode,
|
||||
crtc_state->limited_color_range ?
|
||||
HDMI_QUANTIZATION_RANGE_LIMITED :
|
||||
@@ -1938,11 +1938,12 @@ static bool intel_hdmi_source_bpc_possible(struct intel_display *display, int bp
|
||||
}
|
||||
}
|
||||
|
||||
static bool intel_hdmi_sink_bpc_possible(struct drm_connector *connector,
|
||||
static bool intel_hdmi_sink_bpc_possible(struct drm_connector *_connector,
|
||||
int bpc, bool has_hdmi_sink,
|
||||
enum intel_output_format sink_format)
|
||||
{
|
||||
const struct drm_display_info *info = &connector->display_info;
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
const struct drm_display_info *info = &connector->base.display_info;
|
||||
const struct drm_hdmi_info *hdmi = &info->hdmi;
|
||||
|
||||
switch (bpc) {
|
||||
@@ -1971,12 +1972,13 @@ static bool intel_hdmi_sink_bpc_possible(struct drm_connector *connector,
|
||||
}
|
||||
|
||||
static enum drm_mode_status
|
||||
intel_hdmi_mode_clock_valid(struct drm_connector *connector, int clock,
|
||||
intel_hdmi_mode_clock_valid(struct drm_connector *_connector, int clock,
|
||||
bool has_hdmi_sink,
|
||||
enum intel_output_format sink_format)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(connector->dev);
|
||||
struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector));
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
struct intel_display *display = to_intel_display(connector);
|
||||
struct intel_hdmi *hdmi = intel_attached_hdmi(connector);
|
||||
enum drm_mode_status status = MODE_OK;
|
||||
int bpc;
|
||||
|
||||
@@ -1991,7 +1993,8 @@ intel_hdmi_mode_clock_valid(struct drm_connector *connector, int clock,
|
||||
if (!intel_hdmi_source_bpc_possible(display, bpc))
|
||||
continue;
|
||||
|
||||
if (!intel_hdmi_sink_bpc_possible(connector, bpc, has_hdmi_sink, sink_format))
|
||||
if (!intel_hdmi_sink_bpc_possible(&connector->base, bpc, has_hdmi_sink,
|
||||
sink_format))
|
||||
continue;
|
||||
|
||||
status = hdmi_port_clock_valid(hdmi, tmds_clock, true, has_hdmi_sink);
|
||||
@@ -2006,15 +2009,16 @@ intel_hdmi_mode_clock_valid(struct drm_connector *connector, int clock,
|
||||
}
|
||||
|
||||
static enum drm_mode_status
|
||||
intel_hdmi_mode_valid(struct drm_connector *connector,
|
||||
intel_hdmi_mode_valid(struct drm_connector *_connector,
|
||||
const struct drm_display_mode *mode)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(connector->dev);
|
||||
struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector));
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
struct intel_display *display = to_intel_display(connector);
|
||||
struct intel_hdmi *hdmi = intel_attached_hdmi(connector);
|
||||
enum drm_mode_status status;
|
||||
int clock = mode->clock;
|
||||
int max_dotclk = to_i915(connector->dev)->display.cdclk.max_dotclk_freq;
|
||||
bool has_hdmi_sink = intel_has_hdmi_sink(hdmi, connector->state);
|
||||
int max_dotclk = display->cdclk.max_dotclk_freq;
|
||||
bool has_hdmi_sink = intel_has_hdmi_sink(hdmi, connector->base.state);
|
||||
bool ycbcr_420_only;
|
||||
enum intel_output_format sink_format;
|
||||
|
||||
@@ -2043,22 +2047,23 @@ intel_hdmi_mode_valid(struct drm_connector *connector,
|
||||
if (clock > 600000)
|
||||
return MODE_CLOCK_HIGH;
|
||||
|
||||
ycbcr_420_only = drm_mode_is_420_only(&connector->display_info, mode);
|
||||
ycbcr_420_only = drm_mode_is_420_only(&connector->base.display_info, mode);
|
||||
|
||||
if (ycbcr_420_only)
|
||||
sink_format = INTEL_OUTPUT_FORMAT_YCBCR420;
|
||||
else
|
||||
sink_format = INTEL_OUTPUT_FORMAT_RGB;
|
||||
|
||||
status = intel_hdmi_mode_clock_valid(connector, clock, has_hdmi_sink, sink_format);
|
||||
status = intel_hdmi_mode_clock_valid(&connector->base, clock, has_hdmi_sink, sink_format);
|
||||
if (status != MODE_OK) {
|
||||
if (ycbcr_420_only ||
|
||||
!connector->ycbcr_420_allowed ||
|
||||
!drm_mode_is_420_also(&connector->display_info, mode))
|
||||
!connector->base.ycbcr_420_allowed ||
|
||||
!drm_mode_is_420_also(&connector->base.display_info, mode))
|
||||
return status;
|
||||
|
||||
sink_format = INTEL_OUTPUT_FORMAT_YCBCR420;
|
||||
status = intel_hdmi_mode_clock_valid(connector, clock, has_hdmi_sink, sink_format);
|
||||
status = intel_hdmi_mode_clock_valid(&connector->base, clock, has_hdmi_sink,
|
||||
sink_format);
|
||||
if (status != MODE_OK)
|
||||
return status;
|
||||
}
|
||||
@@ -2069,16 +2074,16 @@ intel_hdmi_mode_valid(struct drm_connector *connector,
|
||||
bool intel_hdmi_bpc_possible(const struct intel_crtc_state *crtc_state,
|
||||
int bpc, bool has_hdmi_sink)
|
||||
{
|
||||
struct drm_atomic_state *state = crtc_state->uapi.state;
|
||||
struct drm_connector_state *connector_state;
|
||||
struct drm_connector *connector;
|
||||
struct intel_atomic_state *state = to_intel_atomic_state(crtc_state->uapi.state);
|
||||
struct intel_digital_connector_state *connector_state;
|
||||
struct intel_connector *connector;
|
||||
int i;
|
||||
|
||||
for_each_new_connector_in_state(state, connector, connector_state, i) {
|
||||
if (connector_state->crtc != crtc_state->uapi.crtc)
|
||||
for_each_new_intel_connector_in_state(state, connector, connector_state, i) {
|
||||
if (connector_state->base.crtc != crtc_state->uapi.crtc)
|
||||
continue;
|
||||
|
||||
if (!intel_hdmi_sink_bpc_possible(connector, bpc, has_hdmi_sink,
|
||||
if (!intel_hdmi_sink_bpc_possible(&connector->base, bpc, has_hdmi_sink,
|
||||
crtc_state->sink_format))
|
||||
return false;
|
||||
}
|
||||
@@ -2206,7 +2211,7 @@ static bool intel_hdmi_has_audio(struct intel_encoder *encoder,
|
||||
const struct intel_crtc_state *crtc_state,
|
||||
const struct drm_connector_state *conn_state)
|
||||
{
|
||||
struct drm_connector *connector = conn_state->connector;
|
||||
struct intel_connector *connector = to_intel_connector(conn_state->connector);
|
||||
const struct intel_digital_connector_state *intel_conn_state =
|
||||
to_intel_digital_connector_state(conn_state);
|
||||
|
||||
@@ -2214,7 +2219,7 @@ static bool intel_hdmi_has_audio(struct intel_encoder *encoder,
|
||||
return false;
|
||||
|
||||
if (intel_conn_state->force_audio == HDMI_AUDIO_AUTO)
|
||||
return connector->display_info.has_audio;
|
||||
return connector->base.display_info.has_audio;
|
||||
else
|
||||
return intel_conn_state->force_audio == HDMI_AUDIO_ON;
|
||||
}
|
||||
@@ -2318,14 +2323,14 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder,
|
||||
{
|
||||
struct intel_display *display = to_intel_display(encoder);
|
||||
struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode;
|
||||
struct drm_connector *connector = conn_state->connector;
|
||||
struct drm_scdc *scdc = &connector->display_info.hdmi.scdc;
|
||||
struct intel_connector *connector = to_intel_connector(conn_state->connector);
|
||||
struct drm_scdc *scdc = &connector->base.display_info.hdmi.scdc;
|
||||
int ret;
|
||||
|
||||
if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
|
||||
return -EINVAL;
|
||||
|
||||
if (!connector->interlace_allowed &&
|
||||
if (!connector->base.interlace_allowed &&
|
||||
adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -2420,24 +2425,26 @@ void intel_hdmi_encoder_shutdown(struct intel_encoder *encoder)
|
||||
}
|
||||
|
||||
static void
|
||||
intel_hdmi_unset_edid(struct drm_connector *connector)
|
||||
intel_hdmi_unset_edid(struct drm_connector *_connector)
|
||||
{
|
||||
struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector));
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector);
|
||||
|
||||
intel_hdmi->dp_dual_mode.type = DRM_DP_DUAL_MODE_NONE;
|
||||
intel_hdmi->dp_dual_mode.max_tmds_clock = 0;
|
||||
|
||||
drm_edid_free(to_intel_connector(connector)->detect_edid);
|
||||
to_intel_connector(connector)->detect_edid = NULL;
|
||||
drm_edid_free(connector->detect_edid);
|
||||
connector->detect_edid = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector)
|
||||
intel_hdmi_dp_dual_mode_detect(struct drm_connector *_connector)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(connector->dev);
|
||||
struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector));
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
struct intel_display *display = to_intel_display(connector);
|
||||
struct intel_hdmi *hdmi = intel_attached_hdmi(connector);
|
||||
struct intel_encoder *encoder = &hdmi_to_dig_port(hdmi)->base;
|
||||
struct i2c_adapter *ddc = connector->ddc;
|
||||
struct i2c_adapter *ddc = connector->base.ddc;
|
||||
enum drm_dp_dual_mode_type type;
|
||||
|
||||
type = drm_dp_dual_mode_detect(display->drm, ddc);
|
||||
@@ -2452,7 +2459,7 @@ intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector)
|
||||
* if the port is a dual mode capable DP port.
|
||||
*/
|
||||
if (type == DRM_DP_DUAL_MODE_UNKNOWN) {
|
||||
if (!connector->force &&
|
||||
if (!connector->base.force &&
|
||||
intel_bios_encoder_supports_dp_dual_mode(encoder->devdata)) {
|
||||
drm_dbg_kms(display->drm,
|
||||
"Assuming DP dual mode adaptor presence based on VBT\n");
|
||||
@@ -2484,34 +2491,35 @@ intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector)
|
||||
}
|
||||
|
||||
static bool
|
||||
intel_hdmi_set_edid(struct drm_connector *connector)
|
||||
intel_hdmi_set_edid(struct drm_connector *_connector)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(connector->dev);
|
||||
struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector));
|
||||
struct i2c_adapter *ddc = connector->ddc;
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
struct intel_display *display = to_intel_display(connector);
|
||||
struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector);
|
||||
struct i2c_adapter *ddc = connector->base.ddc;
|
||||
intel_wakeref_t wakeref;
|
||||
const struct drm_edid *drm_edid;
|
||||
bool connected = false;
|
||||
|
||||
wakeref = intel_display_power_get(display, POWER_DOMAIN_GMBUS);
|
||||
|
||||
drm_edid = drm_edid_read_ddc(connector, ddc);
|
||||
drm_edid = drm_edid_read_ddc(&connector->base, ddc);
|
||||
|
||||
if (!drm_edid && !intel_gmbus_is_forced_bit(ddc)) {
|
||||
drm_dbg_kms(display->drm,
|
||||
"HDMI GMBUS EDID read failed, retry using GPIO bit-banging\n");
|
||||
intel_gmbus_force_bit(ddc, true);
|
||||
drm_edid = drm_edid_read_ddc(connector, ddc);
|
||||
drm_edid = drm_edid_read_ddc(&connector->base, ddc);
|
||||
intel_gmbus_force_bit(ddc, false);
|
||||
}
|
||||
|
||||
/* Below we depend on display info having been updated */
|
||||
drm_edid_connector_update(connector, drm_edid);
|
||||
drm_edid_connector_update(&connector->base, drm_edid);
|
||||
|
||||
to_intel_connector(connector)->detect_edid = drm_edid;
|
||||
connector->detect_edid = drm_edid;
|
||||
|
||||
if (drm_edid_is_digital(drm_edid)) {
|
||||
intel_hdmi_dp_dual_mode_detect(connector);
|
||||
intel_hdmi_dp_dual_mode_detect(&connector->base);
|
||||
|
||||
connected = true;
|
||||
}
|
||||
@@ -2519,28 +2527,29 @@ intel_hdmi_set_edid(struct drm_connector *connector)
|
||||
intel_display_power_put(display, POWER_DOMAIN_GMBUS, wakeref);
|
||||
|
||||
cec_notifier_set_phys_addr(intel_hdmi->cec_notifier,
|
||||
connector->display_info.source_physical_address);
|
||||
connector->base.display_info.source_physical_address);
|
||||
|
||||
return connected;
|
||||
}
|
||||
|
||||
static enum drm_connector_status
|
||||
intel_hdmi_detect(struct drm_connector *connector, bool force)
|
||||
intel_hdmi_detect(struct drm_connector *_connector, bool force)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(connector->dev);
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
struct intel_display *display = to_intel_display(connector);
|
||||
enum drm_connector_status status = connector_status_disconnected;
|
||||
struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector));
|
||||
struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector);
|
||||
struct intel_encoder *encoder = &hdmi_to_dig_port(intel_hdmi)->base;
|
||||
intel_wakeref_t wakeref;
|
||||
|
||||
drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n",
|
||||
connector->base.id, connector->name);
|
||||
connector->base.base.id, connector->base.name);
|
||||
|
||||
if (!intel_display_device_enabled(display))
|
||||
return connector_status_disconnected;
|
||||
|
||||
if (!intel_display_driver_check_access(display))
|
||||
return connector->status;
|
||||
return connector->base.status;
|
||||
|
||||
wakeref = intel_display_power_get(display, POWER_DOMAIN_GMBUS);
|
||||
|
||||
@@ -2548,9 +2557,9 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
|
||||
!intel_digital_port_connected(encoder))
|
||||
goto out;
|
||||
|
||||
intel_hdmi_unset_edid(connector);
|
||||
intel_hdmi_unset_edid(&connector->base);
|
||||
|
||||
if (intel_hdmi_set_edid(connector))
|
||||
if (intel_hdmi_set_edid(&connector->base))
|
||||
status = connector_status_connected;
|
||||
|
||||
out:
|
||||
@@ -2563,49 +2572,54 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
|
||||
}
|
||||
|
||||
static void
|
||||
intel_hdmi_force(struct drm_connector *connector)
|
||||
intel_hdmi_force(struct drm_connector *_connector)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(connector->dev);
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
struct intel_display *display = to_intel_display(connector);
|
||||
|
||||
drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n",
|
||||
connector->base.id, connector->name);
|
||||
connector->base.base.id, connector->base.name);
|
||||
|
||||
if (!intel_display_driver_check_access(display))
|
||||
return;
|
||||
|
||||
intel_hdmi_unset_edid(connector);
|
||||
intel_hdmi_unset_edid(&connector->base);
|
||||
|
||||
if (connector->status != connector_status_connected)
|
||||
if (connector->base.status != connector_status_connected)
|
||||
return;
|
||||
|
||||
intel_hdmi_set_edid(connector);
|
||||
intel_hdmi_set_edid(&connector->base);
|
||||
}
|
||||
|
||||
static int intel_hdmi_get_modes(struct drm_connector *connector)
|
||||
static int intel_hdmi_get_modes(struct drm_connector *_connector)
|
||||
{
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
|
||||
/* drm_edid_connector_update() done in ->detect() or ->force() */
|
||||
return drm_edid_connector_add_modes(connector);
|
||||
return drm_edid_connector_add_modes(&connector->base);
|
||||
}
|
||||
|
||||
static int
|
||||
intel_hdmi_connector_register(struct drm_connector *connector)
|
||||
intel_hdmi_connector_register(struct drm_connector *_connector)
|
||||
{
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
int ret;
|
||||
|
||||
ret = intel_connector_register(connector);
|
||||
ret = intel_connector_register(&connector->base);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void intel_hdmi_connector_unregister(struct drm_connector *connector)
|
||||
static void intel_hdmi_connector_unregister(struct drm_connector *_connector)
|
||||
{
|
||||
struct cec_notifier *n = intel_attached_hdmi(to_intel_connector(connector))->cec_notifier;
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
struct cec_notifier *n = intel_attached_hdmi(connector)->cec_notifier;
|
||||
|
||||
cec_notifier_conn_unregister(n);
|
||||
|
||||
intel_connector_unregister(connector);
|
||||
intel_connector_unregister(&connector->base);
|
||||
}
|
||||
|
||||
static const struct drm_connector_funcs intel_hdmi_connector_funcs = {
|
||||
@@ -2621,15 +2635,16 @@ static const struct drm_connector_funcs intel_hdmi_connector_funcs = {
|
||||
.atomic_duplicate_state = intel_digital_connector_duplicate_state,
|
||||
};
|
||||
|
||||
static int intel_hdmi_connector_atomic_check(struct drm_connector *connector,
|
||||
static int intel_hdmi_connector_atomic_check(struct drm_connector *_connector,
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct intel_display *display = to_intel_display(connector->dev);
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
struct intel_display *display = to_intel_display(connector);
|
||||
|
||||
if (HAS_DDI(display))
|
||||
return intel_digital_connector_atomic_check(connector, state);
|
||||
return intel_digital_connector_atomic_check(&connector->base, state);
|
||||
else
|
||||
return g4x_hdmi_connector_atomic_check(connector, state);
|
||||
return g4x_hdmi_connector_atomic_check(&connector->base, state);
|
||||
}
|
||||
|
||||
static const struct drm_connector_helper_funcs intel_hdmi_connector_helper_funcs = {
|
||||
@@ -2639,22 +2654,23 @@ static const struct drm_connector_helper_funcs intel_hdmi_connector_helper_funcs
|
||||
};
|
||||
|
||||
static void
|
||||
intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector)
|
||||
intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *_connector)
|
||||
{
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
struct intel_display *display = to_intel_display(intel_hdmi);
|
||||
|
||||
intel_attach_force_audio_property(connector);
|
||||
intel_attach_broadcast_rgb_property(connector);
|
||||
intel_attach_aspect_ratio_property(connector);
|
||||
intel_attach_force_audio_property(&connector->base);
|
||||
intel_attach_broadcast_rgb_property(&connector->base);
|
||||
intel_attach_aspect_ratio_property(&connector->base);
|
||||
|
||||
intel_attach_hdmi_colorspace_property(connector);
|
||||
drm_connector_attach_content_type_property(connector);
|
||||
intel_attach_hdmi_colorspace_property(&connector->base);
|
||||
drm_connector_attach_content_type_property(&connector->base);
|
||||
|
||||
if (DISPLAY_VER(display) >= 10)
|
||||
drm_connector_attach_hdr_output_metadata_property(connector);
|
||||
drm_connector_attach_hdr_output_metadata_property(&connector->base);
|
||||
|
||||
if (!HAS_GMCH(display))
|
||||
drm_connector_attach_max_bpc_property(connector, 8, 12);
|
||||
drm_connector_attach_max_bpc_property(&connector->base, 8, 12);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2676,25 +2692,26 @@ intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *c
|
||||
* True on success, false on failure.
|
||||
*/
|
||||
bool intel_hdmi_handle_sink_scrambling(struct intel_encoder *encoder,
|
||||
struct drm_connector *connector,
|
||||
struct drm_connector *_connector,
|
||||
bool high_tmds_clock_ratio,
|
||||
bool scrambling)
|
||||
{
|
||||
struct intel_connector *connector = to_intel_connector(_connector);
|
||||
struct intel_display *display = to_intel_display(encoder);
|
||||
struct drm_scrambling *sink_scrambling =
|
||||
&connector->display_info.hdmi.scdc.scrambling;
|
||||
&connector->base.display_info.hdmi.scdc.scrambling;
|
||||
|
||||
if (!sink_scrambling->supported)
|
||||
return true;
|
||||
|
||||
drm_dbg_kms(display->drm,
|
||||
"[CONNECTOR:%d:%s] scrambling=%s, TMDS bit clock ratio=1/%d\n",
|
||||
connector->base.id, connector->name,
|
||||
connector->base.base.id, connector->base.name,
|
||||
str_yes_no(scrambling), high_tmds_clock_ratio ? 40 : 10);
|
||||
|
||||
/* Set TMDS bit clock ratio to 1/40 or 1/10, and enable/disable scrambling */
|
||||
return drm_scdc_set_high_tmds_clock_ratio(connector, high_tmds_clock_ratio) &&
|
||||
drm_scdc_set_scrambling(connector, scrambling);
|
||||
return drm_scdc_set_high_tmds_clock_ratio(&connector->base, high_tmds_clock_ratio) &&
|
||||
drm_scdc_set_scrambling(&connector->base, scrambling);
|
||||
}
|
||||
|
||||
static u8 chv_encoder_to_ddc_pin(struct intel_encoder *encoder)
|
||||
|
||||
Reference in New Issue
Block a user