Commit ca3cfb9d authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915/audio: name the audio sub-struct in drm_i915_private



Add name to the audio sub-struct in drm_i915_private, and remove the
tautologies and other inconsistencies in the member names.

v2: Call the mutex member mutex, not lock. (Ville)

Cc: Dave Airlie <airlied@redhat.com>
Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211104161858.21786-2-jani.nikula@intel.com
parent fe9b286b
Loading
Loading
Loading
Loading
+45 −45
Original line number Diff line number Diff line
@@ -388,7 +388,7 @@ hsw_dp_audio_config_update(struct intel_encoder *encoder,
			   const struct intel_crtc_state *crtc_state)
{
	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
	struct i915_audio_component *acomp = dev_priv->audio_component;
	struct i915_audio_component *acomp = dev_priv->audio.component;
	enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
	enum port port = encoder->port;
	const struct dp_aud_n_m *nm;
@@ -436,7 +436,7 @@ hsw_hdmi_audio_config_update(struct intel_encoder *encoder,
			     const struct intel_crtc_state *crtc_state)
{
	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
	struct i915_audio_component *acomp = dev_priv->audio_component;
	struct i915_audio_component *acomp = dev_priv->audio.component;
	enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
	enum port port = encoder->port;
	int n, rate;
@@ -494,7 +494,7 @@ static void hsw_audio_codec_disable(struct intel_encoder *encoder,
	drm_dbg_kms(&dev_priv->drm, "Disable audio codec on transcoder %s\n",
		    transcoder_name(cpu_transcoder));

	mutex_lock(&dev_priv->av_mutex);
	mutex_lock(&dev_priv->audio.mutex);

	/* Disable timestamps */
	tmp = intel_de_read(dev_priv, HSW_AUD_CFG(cpu_transcoder));
@@ -512,7 +512,7 @@ static void hsw_audio_codec_disable(struct intel_encoder *encoder,
	tmp &= ~AUDIO_OUTPUT_ENABLE(cpu_transcoder);
	intel_de_write(dev_priv, HSW_AUD_PIN_ELD_CP_VLD, tmp);

	mutex_unlock(&dev_priv->av_mutex);
	mutex_unlock(&dev_priv->audio.mutex);
}

static unsigned int calc_hblank_early_prog(struct intel_encoder *encoder,
@@ -641,7 +641,7 @@ static void hsw_audio_codec_enable(struct intel_encoder *encoder,
		    "Enable audio codec on transcoder %s, %u bytes ELD\n",
		     transcoder_name(cpu_transcoder), drm_eld_size(eld));

	mutex_lock(&dev_priv->av_mutex);
	mutex_lock(&dev_priv->audio.mutex);

	/* Enable Audio WA for 4k DSC usecases */
	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP))
@@ -679,7 +679,7 @@ static void hsw_audio_codec_enable(struct intel_encoder *encoder,
	/* Enable timestamps */
	hsw_audio_config_update(encoder, crtc_state);

	mutex_unlock(&dev_priv->av_mutex);
	mutex_unlock(&dev_priv->audio.mutex);
}

static void ilk_audio_codec_disable(struct intel_encoder *encoder,
@@ -826,7 +826,7 @@ void intel_audio_codec_enable(struct intel_encoder *encoder,
			      const struct drm_connector_state *conn_state)
{
	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
	struct i915_audio_component *acomp = dev_priv->audio_component;
	struct i915_audio_component *acomp = dev_priv->audio.component;
	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
	struct drm_connector *connector = conn_state->connector;
	const struct drm_display_mode *adjusted_mode =
@@ -848,17 +848,17 @@ void intel_audio_codec_enable(struct intel_encoder *encoder,

	connector->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;

	if (dev_priv->audio_funcs)
		dev_priv->audio_funcs->audio_codec_enable(encoder,
	if (dev_priv->audio.funcs)
		dev_priv->audio.funcs->audio_codec_enable(encoder,
							  crtc_state,
							  conn_state);

	mutex_lock(&dev_priv->av_mutex);
	mutex_lock(&dev_priv->audio.mutex);
	encoder->audio_connector = connector;

	/* referred in audio callbacks */
	dev_priv->av_enc_map[pipe] = encoder;
	mutex_unlock(&dev_priv->av_mutex);
	dev_priv->audio.encoder_map[pipe] = encoder;
	mutex_unlock(&dev_priv->audio.mutex);

	if (acomp && acomp->base.audio_ops &&
	    acomp->base.audio_ops->pin_eld_notify) {
@@ -888,20 +888,20 @@ void intel_audio_codec_disable(struct intel_encoder *encoder,
			       const struct drm_connector_state *old_conn_state)
{
	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
	struct i915_audio_component *acomp = dev_priv->audio_component;
	struct i915_audio_component *acomp = dev_priv->audio.component;
	struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->uapi.crtc);
	enum port port = encoder->port;
	enum pipe pipe = crtc->pipe;

	if (dev_priv->audio_funcs)
		dev_priv->audio_funcs->audio_codec_disable(encoder,
	if (dev_priv->audio.funcs)
		dev_priv->audio.funcs->audio_codec_disable(encoder,
							   old_crtc_state,
							   old_conn_state);

	mutex_lock(&dev_priv->av_mutex);
	mutex_lock(&dev_priv->audio.mutex);
	encoder->audio_connector = NULL;
	dev_priv->av_enc_map[pipe] = NULL;
	mutex_unlock(&dev_priv->av_mutex);
	dev_priv->audio.encoder_map[pipe] = NULL;
	mutex_unlock(&dev_priv->audio.mutex);

	if (acomp && acomp->base.audio_ops &&
	    acomp->base.audio_ops->pin_eld_notify) {
@@ -937,13 +937,13 @@ static const struct intel_audio_funcs hsw_audio_funcs = {
void intel_init_audio_hooks(struct drm_i915_private *dev_priv)
{
	if (IS_G4X(dev_priv)) {
		dev_priv->audio_funcs = &g4x_audio_funcs;
		dev_priv->audio.funcs = &g4x_audio_funcs;
	} else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
		dev_priv->audio_funcs = &ilk_audio_funcs;
		dev_priv->audio.funcs = &ilk_audio_funcs;
	} else if (IS_HASWELL(dev_priv) || DISPLAY_VER(dev_priv) >= 8) {
		dev_priv->audio_funcs = &hsw_audio_funcs;
		dev_priv->audio.funcs = &hsw_audio_funcs;
	} else if (HAS_PCH_SPLIT(dev_priv)) {
		dev_priv->audio_funcs = &ilk_audio_funcs;
		dev_priv->audio.funcs = &ilk_audio_funcs;
	}
}

@@ -1048,13 +1048,13 @@ static unsigned long i915_audio_component_get_power(struct device *kdev)

	ret = intel_display_power_get(dev_priv, POWER_DOMAIN_AUDIO_PLAYBACK);

	if (dev_priv->audio_power_refcount++ == 0) {
	if (dev_priv->audio.power_refcount++ == 0) {
		if (DISPLAY_VER(dev_priv) >= 9) {
			intel_de_write(dev_priv, AUD_FREQ_CNTRL,
				       dev_priv->audio_freq_cntrl);
				       dev_priv->audio.freq_cntrl);
			drm_dbg_kms(&dev_priv->drm,
				    "restored AUD_FREQ_CNTRL to 0x%x\n",
				    dev_priv->audio_freq_cntrl);
				    dev_priv->audio.freq_cntrl);
		}

		/* Force CDCLK to 2*BCLK as long as we need audio powered. */
@@ -1075,7 +1075,7 @@ static void i915_audio_component_put_power(struct device *kdev,
	struct drm_i915_private *dev_priv = kdev_to_i915(kdev);

	/* Stop forcing CDCLK to 2*BCLK if no need for audio to be powered. */
	if (--dev_priv->audio_power_refcount == 0)
	if (--dev_priv->audio.power_refcount == 0)
		if (IS_GEMINILAKE(dev_priv))
			glk_force_audio_cdclk(dev_priv, false);

@@ -1127,7 +1127,7 @@ static int i915_audio_component_get_cdclk_freq(struct device *kdev)
/*
 * get the intel_encoder according to the parameter port and pipe
 * intel_encoder is saved by the index of pipe
 * MST & (pipe >= 0): return the av_enc_map[pipe],
 * MST & (pipe >= 0): return the audio.encoder_map[pipe],
 *   when port is matched
 * MST & (pipe < 0): this is invalid
 * Non-MST & (pipe >= 0): only pipe = 0 (the first device entry)
@@ -1142,10 +1142,10 @@ static struct intel_encoder *get_saved_enc(struct drm_i915_private *dev_priv,
	/* MST */
	if (pipe >= 0) {
		if (drm_WARN_ON(&dev_priv->drm,
				pipe >= ARRAY_SIZE(dev_priv->av_enc_map)))
				pipe >= ARRAY_SIZE(dev_priv->audio.encoder_map)))
			return NULL;

		encoder = dev_priv->av_enc_map[pipe];
		encoder = dev_priv->audio.encoder_map[pipe];
		/*
		 * when bootup, audio driver may not know it is
		 * MST or not. So it will poll all the port & pipe
@@ -1161,7 +1161,7 @@ static struct intel_encoder *get_saved_enc(struct drm_i915_private *dev_priv,
		return NULL;

	for_each_pipe(dev_priv, pipe) {
		encoder = dev_priv->av_enc_map[pipe];
		encoder = dev_priv->audio.encoder_map[pipe];
		if (encoder == NULL)
			continue;

@@ -1179,7 +1179,7 @@ static int i915_audio_component_sync_audio_rate(struct device *kdev, int port,
						int pipe, int rate)
{
	struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
	struct i915_audio_component *acomp = dev_priv->audio_component;
	struct i915_audio_component *acomp = dev_priv->audio.component;
	struct intel_encoder *encoder;
	struct intel_crtc *crtc;
	unsigned long cookie;
@@ -1189,7 +1189,7 @@ static int i915_audio_component_sync_audio_rate(struct device *kdev, int port,
		return 0;

	cookie = i915_audio_component_get_power(kdev);
	mutex_lock(&dev_priv->av_mutex);
	mutex_lock(&dev_priv->audio.mutex);

	/* 1. get the pipe */
	encoder = get_saved_enc(dev_priv, port, pipe);
@@ -1208,7 +1208,7 @@ static int i915_audio_component_sync_audio_rate(struct device *kdev, int port,
	hsw_audio_config_update(encoder, crtc->config);

 unlock:
	mutex_unlock(&dev_priv->av_mutex);
	mutex_unlock(&dev_priv->audio.mutex);
	i915_audio_component_put_power(kdev, cookie);
	return err;
}
@@ -1222,13 +1222,13 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
	const u8 *eld;
	int ret = -EINVAL;

	mutex_lock(&dev_priv->av_mutex);
	mutex_lock(&dev_priv->audio.mutex);

	intel_encoder = get_saved_enc(dev_priv, port, pipe);
	if (!intel_encoder) {
		drm_dbg_kms(&dev_priv->drm, "Not valid for port %c\n",
			    port_name(port));
		mutex_unlock(&dev_priv->av_mutex);
		mutex_unlock(&dev_priv->audio.mutex);
		return ret;
	}

@@ -1240,7 +1240,7 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
		memcpy(buf, eld, min(max_bytes, ret));
	}

	mutex_unlock(&dev_priv->av_mutex);
	mutex_unlock(&dev_priv->audio.mutex);
	return ret;
}

@@ -1275,7 +1275,7 @@ static int i915_audio_component_bind(struct device *i915_kdev,
	BUILD_BUG_ON(MAX_PORTS != I915_MAX_PORTS);
	for (i = 0; i < ARRAY_SIZE(acomp->aud_sample_rate); i++)
		acomp->aud_sample_rate[i] = 0;
	dev_priv->audio_component = acomp;
	dev_priv->audio.component = acomp;
	drm_modeset_unlock_all(&dev_priv->drm);

	return 0;
@@ -1290,14 +1290,14 @@ static void i915_audio_component_unbind(struct device *i915_kdev,
	drm_modeset_lock_all(&dev_priv->drm);
	acomp->base.ops = NULL;
	acomp->base.dev = NULL;
	dev_priv->audio_component = NULL;
	dev_priv->audio.component = NULL;
	drm_modeset_unlock_all(&dev_priv->drm);

	device_link_remove(hda_kdev, i915_kdev);

	if (dev_priv->audio_power_refcount)
	if (dev_priv->audio.power_refcount)
		drm_err(&dev_priv->drm, "audio power refcount %d after unbind\n",
			dev_priv->audio_power_refcount);
			dev_priv->audio.power_refcount);
}

static const struct component_ops i915_audio_component_bind_ops = {
@@ -1361,13 +1361,13 @@ static void i915_audio_component_init(struct drm_i915_private *dev_priv)
		drm_dbg_kms(&dev_priv->drm, "use AUD_FREQ_CNTRL of 0x%x (init value 0x%x)\n",
			    aud_freq, aud_freq_init);

		dev_priv->audio_freq_cntrl = aud_freq;
		dev_priv->audio.freq_cntrl = aud_freq;
	}

	/* init with current cdclk */
	intel_audio_cdclk_change_post(dev_priv);

	dev_priv->audio_component_registered = true;
	dev_priv->audio.component_registered = true;
}

/**
@@ -1379,11 +1379,11 @@ static void i915_audio_component_init(struct drm_i915_private *dev_priv)
 */
static void i915_audio_component_cleanup(struct drm_i915_private *dev_priv)
{
	if (!dev_priv->audio_component_registered)
	if (!dev_priv->audio.component_registered)
		return;

	component_del(dev_priv->drm.dev, &i915_audio_component_bind_ops);
	dev_priv->audio_component_registered = false;
	dev_priv->audio.component_registered = false;
}

/**
@@ -1405,7 +1405,7 @@ void intel_audio_init(struct drm_i915_private *dev_priv)
 */
void intel_audio_deinit(struct drm_i915_private *dev_priv)
{
	if ((dev_priv)->lpe_audio.platdev != NULL)
	if ((dev_priv)->audio.lpe.platdev != NULL)
		intel_lpe_audio_teardown(dev_priv);
	else
		i915_audio_component_cleanup(dev_priv);
+21 −21
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@
#include "intel_de.h"
#include "intel_lpe_audio.h"

#define HAS_LPE_AUDIO(dev_priv) ((dev_priv)->lpe_audio.platdev != NULL)
#define HAS_LPE_AUDIO(dev_priv) ((dev_priv)->audio.lpe.platdev != NULL)

static struct platform_device *
lpe_audio_platdev_create(struct drm_i915_private *dev_priv)
@@ -96,7 +96,7 @@ lpe_audio_platdev_create(struct drm_i915_private *dev_priv)
		return ERR_PTR(-ENOMEM);
	}

	rsc[0].start    = rsc[0].end = dev_priv->lpe_audio.irq;
	rsc[0].start    = rsc[0].end = dev_priv->audio.lpe.irq;
	rsc[0].flags    = IORESOURCE_IRQ;
	rsc[0].name     = "hdmi-lpe-audio-irq";

@@ -148,7 +148,7 @@ static void lpe_audio_platdev_destroy(struct drm_i915_private *dev_priv)
	 * than us fiddle with its internals.
	 */

	platform_device_unregister(dev_priv->lpe_audio.platdev);
	platform_device_unregister(dev_priv->audio.lpe.platdev);
}

static void lpe_audio_irq_unmask(struct irq_data *d)
@@ -167,7 +167,7 @@ static struct irq_chip lpe_audio_irqchip = {

static int lpe_audio_irq_init(struct drm_i915_private *dev_priv)
{
	int irq = dev_priv->lpe_audio.irq;
	int irq = dev_priv->audio.lpe.irq;

	drm_WARN_ON(&dev_priv->drm, !intel_irqs_enabled(dev_priv));
	irq_set_chip_and_handler_name(irq,
@@ -204,15 +204,15 @@ static int lpe_audio_setup(struct drm_i915_private *dev_priv)
{
	int ret;

	dev_priv->lpe_audio.irq = irq_alloc_desc(0);
	if (dev_priv->lpe_audio.irq < 0) {
	dev_priv->audio.lpe.irq = irq_alloc_desc(0);
	if (dev_priv->audio.lpe.irq < 0) {
		drm_err(&dev_priv->drm, "Failed to allocate IRQ desc: %d\n",
			dev_priv->lpe_audio.irq);
		ret = dev_priv->lpe_audio.irq;
			dev_priv->audio.lpe.irq);
		ret = dev_priv->audio.lpe.irq;
		goto err;
	}

	drm_dbg(&dev_priv->drm, "irq = %d\n", dev_priv->lpe_audio.irq);
	drm_dbg(&dev_priv->drm, "irq = %d\n", dev_priv->audio.lpe.irq);

	ret = lpe_audio_irq_init(dev_priv);

@@ -223,10 +223,10 @@ static int lpe_audio_setup(struct drm_i915_private *dev_priv)
		goto err_free_irq;
	}

	dev_priv->lpe_audio.platdev = lpe_audio_platdev_create(dev_priv);
	dev_priv->audio.lpe.platdev = lpe_audio_platdev_create(dev_priv);

	if (IS_ERR(dev_priv->lpe_audio.platdev)) {
		ret = PTR_ERR(dev_priv->lpe_audio.platdev);
	if (IS_ERR(dev_priv->audio.lpe.platdev)) {
		ret = PTR_ERR(dev_priv->audio.lpe.platdev);
		drm_err(&dev_priv->drm,
			"Failed to create lpe audio platform device: %d\n",
			ret);
@@ -241,10 +241,10 @@ static int lpe_audio_setup(struct drm_i915_private *dev_priv)

	return 0;
err_free_irq:
	irq_free_desc(dev_priv->lpe_audio.irq);
	irq_free_desc(dev_priv->audio.lpe.irq);
err:
	dev_priv->lpe_audio.irq = -1;
	dev_priv->lpe_audio.platdev = NULL;
	dev_priv->audio.lpe.irq = -1;
	dev_priv->audio.lpe.platdev = NULL;
	return ret;
}

@@ -262,7 +262,7 @@ void intel_lpe_audio_irq_handler(struct drm_i915_private *dev_priv)
	if (!HAS_LPE_AUDIO(dev_priv))
		return;

	ret = generic_handle_irq(dev_priv->lpe_audio.irq);
	ret = generic_handle_irq(dev_priv->audio.lpe.irq);
	if (ret)
		drm_err_ratelimited(&dev_priv->drm,
				    "error handling LPE audio irq: %d\n", ret);
@@ -303,10 +303,10 @@ void intel_lpe_audio_teardown(struct drm_i915_private *dev_priv)

	lpe_audio_platdev_destroy(dev_priv);

	irq_free_desc(dev_priv->lpe_audio.irq);
	irq_free_desc(dev_priv->audio.lpe.irq);

	dev_priv->lpe_audio.irq = -1;
	dev_priv->lpe_audio.platdev = NULL;
	dev_priv->audio.lpe.irq = -1;
	dev_priv->audio.lpe.platdev = NULL;
}

/**
@@ -333,7 +333,7 @@ void intel_lpe_audio_notify(struct drm_i915_private *dev_priv,
	if (!HAS_LPE_AUDIO(dev_priv))
		return;

	pdata = dev_get_platdata(&dev_priv->lpe_audio.platdev->dev);
	pdata = dev_get_platdata(&dev_priv->audio.lpe.platdev->dev);
	ppdata = &pdata->port[port - PORT_B];

	spin_lock_irqsave(&pdata->lpe_audio_slock, irqflags);
@@ -361,7 +361,7 @@ void intel_lpe_audio_notify(struct drm_i915_private *dev_priv,
	}

	if (pdata->notify_audio_lpe)
		pdata->notify_audio_lpe(dev_priv->lpe_audio.platdev, port - PORT_B);
		pdata->notify_audio_lpe(dev_priv->audio.lpe.platdev, port - PORT_B);

	spin_unlock_irqrestore(&pdata->lpe_audio_slock, irqflags);
}
+1 −1
Original line number Diff line number Diff line
@@ -324,7 +324,7 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
	mutex_init(&dev_priv->sb_lock);
	cpu_latency_qos_add_request(&dev_priv->sb_qos, PM_QOS_DEFAULT_VALUE);

	mutex_init(&dev_priv->av_mutex);
	mutex_init(&dev_priv->audio.mutex);
	mutex_init(&dev_priv->wm.wm_mutex);
	mutex_init(&dev_priv->pps_mutex);
	mutex_init(&dev_priv->hdcp_comp_mutex);
+10 −12
Original line number Diff line number Diff line
@@ -1215,27 +1215,25 @@ struct drm_i915_private {

	struct {
		/* Display internal audio functions */
		const struct intel_audio_funcs *audio_funcs;
		const struct intel_audio_funcs *funcs;

		/* hda/i915 audio component */
		struct i915_audio_component *audio_component;
		bool audio_component_registered;
		/**
		 * av_mutex - mutex for audio/video sync
		 */
		struct mutex av_mutex;
		int audio_power_refcount;
		u32 audio_freq_cntrl;
		struct i915_audio_component *component;
		bool component_registered;
		/* mutex for audio/video sync */
		struct mutex mutex;
		int power_refcount;
		u32 freq_cntrl;

		/* Used to save the pipe-to-encoder mapping for audio */
		struct intel_encoder *av_enc_map[I915_MAX_PIPES];
		struct intel_encoder *encoder_map[I915_MAX_PIPES];

		/* necessary resource sharing with HDMI LPE audio driver. */
		struct {
			struct platform_device *platdev;
			int irq;
		} lpe_audio;
	};
		} lpe;
	} audio;

	struct i915_pmu pmu;