On Wed, 08 Feb 2023, Ville Syrjala <ville.syrj...@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrj...@linux.intel.com>
>
> Let's make encoder->devdata (the VBT informaiton for the port)

*information

> available on g4x+ platforms as well. Much easier when you can
> just grab it there instead of trying to find it from some global
> list array based on the port.
>
> Note that (unlike DDI platforms) we don't currently require
> that each DP/HDMI port is actually declared in VBT. Perhaps
> in the future we may want to rethink that, but for now just
> stick in a debug+FIXME as a reminder.
>
> Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/g4x_dp.c   | 10 ++++++++++
>  drivers/gpu/drm/i915/display/g4x_hdmi.c | 10 ++++++++++
>  2 files changed, 20 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/g4x_dp.c 
> b/drivers/gpu/drm/i915/display/g4x_dp.c
> index fa754038d669..0cc1531a03a3 100644
> --- a/drivers/gpu/drm/i915/display/g4x_dp.c
> +++ b/drivers/gpu/drm/i915/display/g4x_dp.c
> @@ -1279,11 +1279,19 @@ static const struct drm_encoder_funcs 
> intel_dp_enc_funcs = {
>  bool g4x_dp_init(struct drm_i915_private *dev_priv,
>                i915_reg_t output_reg, enum port port)
>  {
> +     const struct intel_bios_encoder_data *devdata;
>       struct intel_digital_port *dig_port;
>       struct intel_encoder *intel_encoder;
>       struct drm_encoder *encoder;
>       struct intel_connector *intel_connector;
>  
> +     devdata = intel_bios_encoder_data_lookup(dev_priv, port);
> +
> +     /* FIXME bail? */
> +     if (!devdata)
> +             drm_dbg_kms(&dev_priv->drm, "No VBT child device for DP-%c\n",
> +                         port_name(port));
> +
>       dig_port = kzalloc(sizeof(*dig_port), GFP_KERNEL);
>       if (!dig_port)
>               return false;
> @@ -1295,6 +1303,8 @@ bool g4x_dp_init(struct drm_i915_private *dev_priv,
>       intel_encoder = &dig_port->base;
>       encoder = &intel_encoder->base;
>  
> +     intel_encoder->devdata = devdata;
> +
>       mutex_init(&dig_port->hdcp_mutex);
>  
>       if (drm_encoder_init(&dev_priv->drm, &intel_encoder->base,
> diff --git a/drivers/gpu/drm/i915/display/g4x_hdmi.c 
> b/drivers/gpu/drm/i915/display/g4x_hdmi.c
> index 64c3b3990702..e9ae4c67b8a4 100644
> --- a/drivers/gpu/drm/i915/display/g4x_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/g4x_hdmi.c
> @@ -548,10 +548,18 @@ intel_hdmi_hotplug(struct intel_encoder *encoder,
>  void g4x_hdmi_init(struct drm_i915_private *dev_priv,
>                  i915_reg_t hdmi_reg, enum port port)
>  {
> +     const struct intel_bios_encoder_data *devdata;
>       struct intel_digital_port *dig_port;
>       struct intel_encoder *intel_encoder;
>       struct intel_connector *intel_connector;
>  
> +     devdata = intel_bios_encoder_data_lookup(dev_priv, port);
> +
> +     /* FIXME bail? */
> +     if (!devdata)
> +             drm_dbg_kms(&dev_priv->drm, "No VBT child device for HDMI-%c\n",
> +                         port_name(port));
> +
>       dig_port = kzalloc(sizeof(*dig_port), GFP_KERNEL);
>       if (!dig_port)
>               return;
> @@ -564,6 +572,8 @@ void g4x_hdmi_init(struct drm_i915_private *dev_priv,
>  
>       intel_encoder = &dig_port->base;
>  
> +     intel_encoder->devdata = devdata;
> +
>       mutex_init(&dig_port->hdcp_mutex);
>  
>       drm_encoder_init(&dev_priv->drm, &intel_encoder->base,

-- 
Jani Nikula, Intel Open Source Graphics Center

Reply via email to