mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-25 13:06:19 -05:00
drm/i915: Replace intel_bios_is_lspcon_present() with intel_bios_encoder_is_lspcon()
We always have encoder->devdata available on the platforms that can have LSPCON. So let's start looking there instead of digging it out from vbt.ports[]. And let's rename the function to fit the common pattern for these things. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230208015508.24824-4-ville.syrjala@linux.intel.com Reviewed-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
@@ -2598,6 +2598,12 @@ intel_bios_encoder_supports_dsi(const struct intel_bios_encoder_data *devdata)
|
||||
return devdata->child.device_type & DEVICE_TYPE_MIPI_OUTPUT;
|
||||
}
|
||||
|
||||
bool
|
||||
intel_bios_encoder_is_lspcon(const struct intel_bios_encoder_data *devdata)
|
||||
{
|
||||
return devdata && HAS_LSPCON(devdata->i915) && devdata->child.lspcon;
|
||||
}
|
||||
|
||||
static int _intel_bios_hdmi_level_shift(const struct intel_bios_encoder_data *devdata)
|
||||
{
|
||||
if (!devdata || devdata->i915->display.vbt.version < 158)
|
||||
@@ -2664,7 +2670,7 @@ static void print_ddi_port(const struct intel_bios_encoder_data *devdata,
|
||||
drm_dbg_kms(&i915->drm,
|
||||
"Port %c VBT info: CRT:%d DVI:%d HDMI:%d DP:%d eDP:%d DSI:%d LSPCON:%d USB-Type-C:%d TBT:%d DSC:%d\n",
|
||||
port_name(port), is_crt, is_dvi, is_hdmi, is_dp, is_edp, is_dsi,
|
||||
HAS_LSPCON(i915) && child->lspcon,
|
||||
intel_bios_encoder_is_lspcon(devdata),
|
||||
supports_typec_usb, supports_tbt,
|
||||
devdata->dsc != NULL);
|
||||
|
||||
@@ -3588,22 +3594,6 @@ intel_bios_is_port_hpd_inverted(const struct drm_i915_private *i915,
|
||||
return devdata && devdata->child.hpd_invert;
|
||||
}
|
||||
|
||||
/**
|
||||
* intel_bios_is_lspcon_present - if LSPCON is attached on %port
|
||||
* @i915: i915 device instance
|
||||
* @port: port to check
|
||||
*
|
||||
* Return true if LSPCON is present on this port
|
||||
*/
|
||||
bool
|
||||
intel_bios_is_lspcon_present(const struct drm_i915_private *i915,
|
||||
enum port port)
|
||||
{
|
||||
const struct intel_bios_encoder_data *devdata = i915->display.vbt.ports[port];
|
||||
|
||||
return HAS_LSPCON(i915) && devdata && devdata->child.lspcon;
|
||||
}
|
||||
|
||||
/**
|
||||
* intel_bios_is_lane_reversal_needed - if lane reversal needed on port
|
||||
* @i915: i915 device instance
|
||||
|
||||
@@ -250,8 +250,6 @@ bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *dev_priv, enum por
|
||||
bool intel_bios_is_dsi_present(struct drm_i915_private *dev_priv, enum port *port);
|
||||
bool intel_bios_is_port_hpd_inverted(const struct drm_i915_private *i915,
|
||||
enum port port);
|
||||
bool intel_bios_is_lspcon_present(const struct drm_i915_private *i915,
|
||||
enum port port);
|
||||
bool intel_bios_is_lane_reversal_needed(const struct drm_i915_private *i915,
|
||||
enum port port);
|
||||
enum aux_ch intel_bios_port_aux_ch(struct drm_i915_private *dev_priv, enum port port);
|
||||
@@ -274,6 +272,7 @@ bool intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devd
|
||||
bool intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata);
|
||||
bool intel_bios_encoder_supports_typec_usb(const struct intel_bios_encoder_data *devdata);
|
||||
bool intel_bios_encoder_supports_tbt(const struct intel_bios_encoder_data *devdata);
|
||||
bool intel_bios_encoder_is_lspcon(const struct intel_bios_encoder_data *devdata);
|
||||
int intel_bios_encoder_dp_boost_level(const struct intel_bios_encoder_data *devdata);
|
||||
int intel_bios_encoder_hdmi_boost_level(const struct intel_bios_encoder_data *devdata);
|
||||
|
||||
|
||||
@@ -4305,7 +4305,7 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
|
||||
intel_bios_encoder_supports_hdmi(devdata);
|
||||
init_dp = intel_bios_encoder_supports_dp(devdata);
|
||||
|
||||
if (intel_bios_is_lspcon_present(dev_priv, port)) {
|
||||
if (intel_bios_encoder_is_lspcon(devdata)) {
|
||||
/*
|
||||
* Lspcon device needs to be driven with DP connector
|
||||
* with special detection sequence. So make sure DP
|
||||
|
||||
@@ -4863,7 +4863,7 @@ intel_dp_connector_register(struct drm_connector *connector)
|
||||
if (!ret)
|
||||
drm_dp_cec_register_connector(&intel_dp->aux, connector);
|
||||
|
||||
if (!intel_bios_is_lspcon_present(i915, dig_port->base.port))
|
||||
if (!intel_bios_encoder_is_lspcon(dig_port->base.devdata))
|
||||
return ret;
|
||||
|
||||
/*
|
||||
@@ -5158,9 +5158,12 @@ bool intel_dp_is_port_edp(struct drm_i915_private *dev_priv, enum port port)
|
||||
}
|
||||
|
||||
static bool
|
||||
has_gamut_metadata_dip(struct drm_i915_private *i915, enum port port)
|
||||
has_gamut_metadata_dip(struct intel_encoder *encoder)
|
||||
{
|
||||
if (intel_bios_is_lspcon_present(i915, port))
|
||||
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
|
||||
enum port port = encoder->port;
|
||||
|
||||
if (intel_bios_encoder_is_lspcon(encoder->devdata))
|
||||
return false;
|
||||
|
||||
if (DISPLAY_VER(i915) >= 11)
|
||||
@@ -5195,14 +5198,14 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect
|
||||
drm_connector_attach_max_bpc_property(connector, 6, 12);
|
||||
|
||||
/* Register HDMI colorspace for case of lspcon */
|
||||
if (intel_bios_is_lspcon_present(dev_priv, port)) {
|
||||
if (intel_bios_encoder_is_lspcon(dp_to_dig_port(intel_dp)->base.devdata)) {
|
||||
drm_connector_attach_content_type_property(connector);
|
||||
intel_attach_hdmi_colorspace_property(connector);
|
||||
} else {
|
||||
intel_attach_dp_colorspace_property(connector);
|
||||
}
|
||||
|
||||
if (has_gamut_metadata_dip(dev_priv, port))
|
||||
if (has_gamut_metadata_dip(&dp_to_dig_port(intel_dp)->base))
|
||||
drm_connector_attach_hdr_output_metadata_property(connector);
|
||||
|
||||
if (HAS_VRR(dev_priv))
|
||||
|
||||
@@ -2923,7 +2923,7 @@ void intel_infoframe_init(struct intel_digital_port *dig_port)
|
||||
dig_port->set_infoframes = g4x_set_infoframes;
|
||||
dig_port->infoframes_enabled = g4x_infoframes_enabled;
|
||||
} else if (HAS_DDI(dev_priv)) {
|
||||
if (intel_bios_is_lspcon_present(dev_priv, dig_port->base.port)) {
|
||||
if (intel_bios_encoder_is_lspcon(dig_port->base.devdata)) {
|
||||
dig_port->write_infoframe = lspcon_write_infoframe;
|
||||
dig_port->read_infoframe = lspcon_read_infoframe;
|
||||
dig_port->set_infoframes = lspcon_set_infoframes;
|
||||
|
||||
@@ -689,7 +689,7 @@ void lspcon_resume(struct intel_digital_port *dig_port)
|
||||
struct drm_i915_private *i915 = to_i915(dev);
|
||||
enum drm_lspcon_mode expected_mode;
|
||||
|
||||
if (!intel_bios_is_lspcon_present(i915, dig_port->base.port))
|
||||
if (!intel_bios_encoder_is_lspcon(dig_port->base.devdata))
|
||||
return;
|
||||
|
||||
if (!lspcon->active) {
|
||||
|
||||
Reference in New Issue
Block a user