public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: intel-gfx@lists.freedesktop.org
Cc: alsa-devel@alsa-project.org,
	Mengdong Lin <mengdong.lin@linux.intel.com>,
	Vinod Koul <vinod.koul@intel.com>,
	David Henningsson <david.henningsson@canonical.com>,
	Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: [PATCH v2 4/9] drm/i915: Add reverse mapping between port and intel_encoder
Date: Fri, 04 Dec 2015 15:40:03 +0100	[thread overview]
Message-ID: <s5hio4ez398.wl-tiwai@suse.de> (raw)
In-Reply-To: <1448986198-3488-5-git-send-email-tiwai@suse.de>

On Tue, 01 Dec 2015 17:09:53 +0100,
Takashi Iwai wrote:
> 
> This patch adds a reverse mapping from a digital port number to
> intel_encoder object containing the corresponding intel_digital_port.
> It simplifies the query of the encoder a lot.

While this is good for a code reduction, I guess it's better to leave
away for now, as there will be more changes there for MST support.
It may put yet another loop, and the mapping implemented here might
not be the best way.  So I'm going to drop this from the next
patchset.

If anyone still thinks this is worth to include, let me know.  I'll
re-add this.


thanks,

Takashi

> 
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> ---
>  drivers/gpu/drm/i915/i915_drv.h    |  2 ++
>  drivers/gpu/drm/i915/intel_audio.c | 22 ++--------------------
>  drivers/gpu/drm/i915/intel_ddi.c   |  1 +
>  drivers/gpu/drm/i915/intel_dp.c    |  1 +
>  drivers/gpu/drm/i915/intel_hdmi.c  |  2 ++
>  5 files changed, 8 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 95bb27de774f..3483d8125eac 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1955,6 +1955,8 @@ struct drm_i915_private {
>  	/* perform PHY state sanity checks? */
>  	bool chv_phy_assert[2];
>  
> +	struct intel_encoder *dig_port_map[I915_MAX_PORTS];
> +
>  	/*
>  	 * NOTE: This is the dri1/ums dungeon, don't add stuff here. Your patch
>  	 * will be rejected. Instead look for a better place.
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index 19958bdb9bd0..67ee99f00ddd 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -630,28 +630,10 @@ static int i915_audio_component_get_cdclk_freq(struct device *dev)
>  	return ret;
>  }
>  
> -static struct intel_encoder *audio_port_to_encoder(struct drm_device *drm_dev,
> -						   int port)
> -{
> -	struct intel_encoder *intel_encoder;
> -	struct intel_digital_port *intel_dig_port;
> -
> -	for_each_intel_encoder(drm_dev, intel_encoder) {
> -		if (intel_encoder->type != INTEL_OUTPUT_HDMI &&
> -		    intel_encoder->type != INTEL_OUTPUT_DISPLAYPORT)
> -			continue;
> -		intel_dig_port = enc_to_dig_port(&intel_encoder->base);
> -		if (port == intel_dig_port->port)
> -			return intel_encoder;
> -	}
> -	return NULL;
> -}
> -
>  static int i915_audio_component_sync_audio_rate(struct device *dev,
>  						int port, int rate)
>  {
>  	struct drm_i915_private *dev_priv = dev_to_i915(dev);
> -	struct drm_device *drm_dev = dev_priv->dev;
>  	struct intel_encoder *intel_encoder;
>  	struct intel_crtc *crtc;
>  	struct drm_display_mode *mode;
> @@ -668,7 +650,7 @@ static int i915_audio_component_sync_audio_rate(struct device *dev,
>  
>  	mutex_lock(&dev_priv->av_mutex);
>  	/* 1. get the pipe */
> -	intel_encoder = audio_port_to_encoder(drm_dev, port);
> +	intel_encoder = dev_priv->dig_port_map[port];
>  	if (!intel_encoder || intel_encoder->type != INTEL_OUTPUT_HDMI) {
>  		DRM_DEBUG_KMS("no pipe for the port %c\n", port_name(port));
>  		mutex_unlock(&dev_priv->av_mutex);
> @@ -725,7 +707,7 @@ static int i915_audio_component_get_eld(struct device *dev, int port,
>  	int ret = -EINVAL;
>  
>  	drm_modeset_lock_all(drm_dev);
> -	intel_encoder = audio_port_to_encoder(drm_dev, port);
> +	intel_encoder = dev_priv->dig_port_map[port];
>  	if (intel_encoder) {
>  		ret = 0;
>  		intel_dig_port = enc_to_dig_port(&intel_encoder->base);
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index a6752a61d99f..6770110a4075 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -3285,6 +3285,7 @@ void intel_ddi_init(struct drm_device *dev, enum port port)
>  	intel_encoder->get_config = intel_ddi_get_config;
>  
>  	intel_dig_port->port = port;
> +	dev_priv->dig_port_map[port] = intel_encoder;
>  	intel_dig_port->saved_port_bits = I915_READ(DDI_BUF_CTL(port)) &
>  					  (DDI_BUF_PORT_REVERSAL |
>  					   DDI_A_4_LANES);
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 09bdd94ca3ba..1c02c6466f30 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -6201,6 +6201,7 @@ intel_dp_init(struct drm_device *dev, int output_reg, enum port port)
>  	}
>  
>  	intel_dig_port->port = port;
> +	dev_priv->dig_port_map[port] = intel_encoder;
>  	intel_dig_port->dp.output_reg = output_reg;
>  
>  	intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT;
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index 9eafa191cee2..1d9f522a6679 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -2133,6 +2133,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>  
>  void intel_hdmi_init(struct drm_device *dev, int hdmi_reg, enum port port)
>  {
> +	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_digital_port *intel_dig_port;
>  	struct intel_encoder *intel_encoder;
>  	struct intel_connector *intel_connector;
> @@ -2201,6 +2202,7 @@ void intel_hdmi_init(struct drm_device *dev, int hdmi_reg, enum port port)
>  		intel_encoder->cloneable |= 1 << INTEL_OUTPUT_HDMI;
>  
>  	intel_dig_port->port = port;
> +	dev_priv->dig_port_map[port] = intel_encoder;
>  	intel_dig_port->hdmi.hdmi_reg = hdmi_reg;
>  	intel_dig_port->dp.output_reg = 0;
>  
> -- 
> 2.6.3
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2015-12-04 14:40 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-01 16:09 [PATCH v2 0/9] Add get_eld audio component for i915/HD-audio Takashi Iwai
2015-12-01 16:09 ` [PATCH v2 1/9] drm/i915: Remove superfluous NULL check Takashi Iwai
2015-12-04 10:21   ` Daniel Vetter
2015-12-04 12:16   ` Ville Syrjälä
2015-12-04 12:54     ` Takashi Iwai
2015-12-04 13:07       ` Ville Syrjälä
2015-12-04 13:12         ` Takashi Iwai
2015-12-04 14:55           ` Daniel Vetter
2015-12-01 16:09 ` [PATCH v2 2/9] drm/i915: Add get_eld audio component Takashi Iwai
2015-12-04 10:21   ` Daniel Vetter
2015-12-04 10:49     ` Takashi Iwai
2015-12-04 12:10       ` Ville Syrjälä
2015-12-04 12:50         ` [Intel-gfx] " Takashi Iwai
2015-12-04 15:00       ` Daniel Vetter
2015-12-04 15:15         ` Takashi Iwai
2015-12-04 15:53           ` Daniel Vetter
2015-12-04 16:03             ` Takashi Iwai
2015-12-04 15:54           ` Daniel Vetter
2015-12-04 16:03             ` Takashi Iwai
2015-12-04 16:15               ` Daniel Vetter
2015-12-04 16:20                 ` Takashi Iwai
2015-12-04 16:27                   ` Takashi Iwai
2015-12-04 16:49                     ` Daniel Vetter
2015-12-04 16:52                       ` Takashi Iwai
2015-12-01 16:09 ` [PATCH v2 3/9] drm/i915: refactoring audio component functions Takashi Iwai
2015-12-01 16:09 ` [PATCH v2 4/9] drm/i915: Add reverse mapping between port and intel_encoder Takashi Iwai
2015-12-04 14:40   ` Takashi Iwai [this message]
2015-12-04 15:02     ` Daniel Vetter
2015-12-04 15:09       ` Takashi Iwai
2015-12-01 16:09 ` [PATCH v2 5/9] ALSA: hda - Split ELD update code from hdmi_present_sense() Takashi Iwai
2015-12-01 16:09 ` [PATCH v2 6/9] ALSA: hda - Use component ops for i915 HDMI/DP audio jack handling Takashi Iwai
2015-12-01 16:09 ` [PATCH v2 7/9] ALSA: hda - Do zero-clear in snd_hdmi_parse_eld() itself Takashi Iwai
2015-12-01 16:09 ` [PATCH v2 8/9] ALSA: hda - Skip ELD notification during PM process Takashi Iwai
2015-12-03 16:44   ` Takashi Iwai
2015-12-01 16:09 ` [PATCH v2 9/9] ALSA: hda - Move audio component accesses to hdac_i915.c Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=s5hio4ez398.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=daniel.vetter@intel.com \
    --cc=david.henningsson@canonical.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=mengdong.lin@linux.intel.com \
    --cc=vinod.koul@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox