Re: [PATCH 07/10] drm/i915: Populate encoder->devdata for g4x+ DP/HDMI ports

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 08 Feb 2023, Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx> wrote:
> From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
>
> 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.syrjala@xxxxxxxxxxxxxxx>
> ---
>  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




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux