Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b5da663 authored by Bard Liao's avatar Bard Liao Committed by Mark Brown
Browse files

ASoC: rt5645: read jd1_1 status for jd detection



Read the jd status after invert control. The benefit is we don't need
to invert the reading jd status when jd invert is needed.

Signed-off-by: default avatarBard Liao <bardliao@realtek.com>
Tested-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 2ea659a9
Loading
Loading
Loading
Loading
+8 −23
Original line number Diff line number Diff line
@@ -3238,24 +3238,16 @@ static void rt5645_jack_detect_work(struct work_struct *work)
		snd_soc_jack_report(rt5645->mic_jack,
				    report, SND_JACK_MICROPHONE);
		return;
	case 1: /* 2 port */
		val = snd_soc_read(rt5645->codec, RT5645_A_JD_CTRL1) & 0x0070;
		break;
	default: /* 1 port */
		val = snd_soc_read(rt5645->codec, RT5645_A_JD_CTRL1) & 0x0020;
	default: /* read rt5645 jd1_1 status */
		val = snd_soc_read(rt5645->codec, RT5645_INT_IRQ_ST) & 0x1000;
		break;

	}

	switch (val) {
	/* jack in */
	case 0x30: /* 2 port */
	case 0x0: /* 1 port or 2 port */
		if (rt5645->jack_type == 0) {
	if (!val && (rt5645->jack_type == 0)) { /* jack in */
		report = rt5645_jack_detect(rt5645->codec, 1);
	} else if (!val && rt5645->jack_type != 0) {
		/* for push button and jack out */
			break;
		}
		btn_type = 0;
		if (snd_soc_read(rt5645->codec, RT5645_INT_IRQ_ST) & 0x4) {
			/* button pressed */
@@ -3302,19 +3294,12 @@ static void rt5645_jack_detect_work(struct work_struct *work)
			mod_timer(&rt5645->btn_check_timer,
				msecs_to_jiffies(100));
		}

		break;
	} else {
		/* jack out */
	case 0x70: /* 2 port */
	case 0x10: /* 2 port */
	case 0x20: /* 1 port */
		report = 0;
		snd_soc_update_bits(rt5645->codec,
				    RT5645_INT_IRQ_ST, 0x1, 0x0);
		rt5645_jack_detect(rt5645->codec, 0);
		break;
	default:
		break;
	}

	snd_soc_jack_report(rt5645->hp_jack, report, SND_JACK_HEADPHONE);