Commit db5d650f authored by Ville Syrjälä's avatar Ville Syrjälä

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: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230208015508.24824-4-ville.syrjala@linux.intel.comReviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
parent d24b3475
...@@ -2598,6 +2598,12 @@ intel_bios_encoder_supports_dsi(const struct intel_bios_encoder_data *devdata) ...@@ -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; 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) static int _intel_bios_hdmi_level_shift(const struct intel_bios_encoder_data *devdata)
{ {
if (!devdata || devdata->i915->display.vbt.version < 158) if (!devdata || devdata->i915->display.vbt.version < 158)
...@@ -2664,7 +2670,7 @@ static void print_ddi_port(const struct intel_bios_encoder_data *devdata, ...@@ -2664,7 +2670,7 @@ static void print_ddi_port(const struct intel_bios_encoder_data *devdata,
drm_dbg_kms(&i915->drm, 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 %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, 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, supports_typec_usb, supports_tbt,
devdata->dsc != NULL); devdata->dsc != NULL);
...@@ -3588,22 +3594,6 @@ intel_bios_is_port_hpd_inverted(const struct drm_i915_private *i915, ...@@ -3588,22 +3594,6 @@ intel_bios_is_port_hpd_inverted(const struct drm_i915_private *i915,
return devdata && devdata->child.hpd_invert; 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 * intel_bios_is_lane_reversal_needed - if lane reversal needed on port
* @i915: i915 device instance * @i915: i915 device instance
......
...@@ -250,8 +250,6 @@ bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *dev_priv, enum por ...@@ -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_dsi_present(struct drm_i915_private *dev_priv, enum port *port);
bool intel_bios_is_port_hpd_inverted(const struct drm_i915_private *i915, bool intel_bios_is_port_hpd_inverted(const struct drm_i915_private *i915,
enum port port); 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, bool intel_bios_is_lane_reversal_needed(const struct drm_i915_private *i915,
enum port port); enum port port);
enum aux_ch intel_bios_port_aux_ch(struct drm_i915_private *dev_priv, 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 ...@@ -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_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_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_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_dp_boost_level(const struct intel_bios_encoder_data *devdata);
int intel_bios_encoder_hdmi_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) ...@@ -4305,7 +4305,7 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
intel_bios_encoder_supports_hdmi(devdata); intel_bios_encoder_supports_hdmi(devdata);
init_dp = intel_bios_encoder_supports_dp(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 * Lspcon device needs to be driven with DP connector
* with special detection sequence. So make sure DP * with special detection sequence. So make sure DP
......
...@@ -4863,7 +4863,7 @@ intel_dp_connector_register(struct drm_connector *connector) ...@@ -4863,7 +4863,7 @@ intel_dp_connector_register(struct drm_connector *connector)
if (!ret) if (!ret)
drm_dp_cec_register_connector(&intel_dp->aux, connector); 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; return ret;
/* /*
...@@ -5158,9 +5158,12 @@ bool intel_dp_is_port_edp(struct drm_i915_private *dev_priv, enum port port) ...@@ -5158,9 +5158,12 @@ bool intel_dp_is_port_edp(struct drm_i915_private *dev_priv, enum port port)
} }
static bool 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; return false;
if (DISPLAY_VER(i915) >= 11) if (DISPLAY_VER(i915) >= 11)
...@@ -5195,14 +5198,14 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect ...@@ -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); drm_connector_attach_max_bpc_property(connector, 6, 12);
/* Register HDMI colorspace for case of lspcon */ /* 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); drm_connector_attach_content_type_property(connector);
intel_attach_hdmi_colorspace_property(connector); intel_attach_hdmi_colorspace_property(connector);
} else { } else {
intel_attach_dp_colorspace_property(connector); 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); drm_connector_attach_hdr_output_metadata_property(connector);
if (HAS_VRR(dev_priv)) if (HAS_VRR(dev_priv))
......
...@@ -2923,7 +2923,7 @@ void intel_infoframe_init(struct intel_digital_port *dig_port) ...@@ -2923,7 +2923,7 @@ void intel_infoframe_init(struct intel_digital_port *dig_port)
dig_port->set_infoframes = g4x_set_infoframes; dig_port->set_infoframes = g4x_set_infoframes;
dig_port->infoframes_enabled = g4x_infoframes_enabled; dig_port->infoframes_enabled = g4x_infoframes_enabled;
} else if (HAS_DDI(dev_priv)) { } 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->write_infoframe = lspcon_write_infoframe;
dig_port->read_infoframe = lspcon_read_infoframe; dig_port->read_infoframe = lspcon_read_infoframe;
dig_port->set_infoframes = lspcon_set_infoframes; dig_port->set_infoframes = lspcon_set_infoframes;
......
...@@ -689,7 +689,7 @@ void lspcon_resume(struct intel_digital_port *dig_port) ...@@ -689,7 +689,7 @@ void lspcon_resume(struct intel_digital_port *dig_port)
struct drm_i915_private *i915 = to_i915(dev); struct drm_i915_private *i915 = to_i915(dev);
enum drm_lspcon_mode expected_mode; 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; return;
if (!lspcon->active) { if (!lspcon->active) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment