Unverified Commit dd7ae5b8 authored by Charles Keepax's avatar Charles Keepax Committed by Mark Brown
Browse files

ASoC: cs42l43: Shutdown jack detection on suspend



Fully power down the jack detection on system suspend since the device
will not be powered up during.

Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
Message-ID: <20250903094549.271068-5-ckeepax@opensource.cirrus.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent a69b4ba1
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -684,7 +684,7 @@ static int cs42l43_run_type_detect(struct cs42l43_codec *priv)
	}
}

static void cs42l43_clear_jack(struct cs42l43_codec *priv)
void cs42l43_clear_jack(struct cs42l43_codec *priv)
{
	struct cs42l43 *cs42l43 = priv->core;

@@ -703,8 +703,6 @@ static void cs42l43_clear_jack(struct cs42l43_codec *priv)
	regmap_update_bits(cs42l43->regmap, CS42L43_HS2,
			   CS42L43_HSDET_MODE_MASK | CS42L43_HSDET_MANUAL_MODE_MASK,
			   0x2 << CS42L43_HSDET_MODE_SHIFT);

	snd_soc_jack_report(priv->jack_hp, 0, 0xFFFF);
}

void cs42l43_tip_sense_work(struct work_struct *work)
@@ -753,6 +751,8 @@ void cs42l43_tip_sense_work(struct work_struct *work)

		cs42l43_clear_jack(priv);

		snd_soc_jack_report(priv->jack_hp, 0, 0xFFFF);

		if (cs42l43->sdw && priv->jack_present) {
			pm_runtime_put(priv->dev);
			priv->jack_present = false;
@@ -903,6 +903,8 @@ int cs42l43_jack_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *u

	cs42l43_clear_jack(priv);

	snd_soc_jack_report(priv->jack_hp, 0, 0xFFFF);

	if (!override) {
		queue_delayed_work(system_long_wq, &priv->tip_sense_work, 0);
	} else {
+2 −0
Original line number Diff line number Diff line
@@ -2422,6 +2422,8 @@ static int cs42l43_codec_suspend(struct device *dev)
	cancel_delayed_work_sync(&priv->tip_sense_work);
	cancel_delayed_work_sync(&priv->hp_ilimit_clear_work);

	cs42l43_clear_jack(priv);

	return pm_runtime_force_suspend(dev);
}

+1 −0
Original line number Diff line number Diff line
@@ -132,6 +132,7 @@ static inline int cs42l43_sdw_add_peripheral(struct snd_pcm_substream *substream
int cs42l43_set_jack(struct snd_soc_component *component,
		     struct snd_soc_jack *jack, void *d);
void cs42l43_bias_sense_timeout(struct work_struct *work);
void cs42l43_clear_jack(struct cs42l43_codec *priv);
void cs42l43_tip_sense_work(struct work_struct *work);
irqreturn_t cs42l43_bias_detect_clamp(int irq, void *data);
irqreturn_t cs42l43_button_press(int irq, void *data);