Due to returning the email and resending it//答复: [PATCH 1/3] Fix headset auto detect fail in cx8070 and SN6140
Message ID | 009d01da3939$a1517440$e3f45cc0$@senarytech.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel+bounces-12766-ouuuleilei=gmail.com@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:6f82:b0:100:9c79:88ff with SMTP id tb2csp2074694dyb; Thu, 28 Dec 2023 07:54:28 -0800 (PST) X-Google-Smtp-Source: AGHT+IF7s977q2ckowfcc/Vdm7c6sChIrT0cu3jn81hvbiq/wcSMmfFrOVwW6MGLMElXTGzflcX6 X-Received: by 2002:a17:906:6bc9:b0:a26:8c28:1b6b with SMTP id t9-20020a1709066bc900b00a268c281b6bmr5175863ejs.152.1703778868540; Thu, 28 Dec 2023 07:54:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703778868; cv=none; d=google.com; s=arc-20160816; b=eB2zdwimMCytQCssFNA4pFmYN7aAU/eBMjbohgSIJMiEHOcXUVgnDuwOHkwA2t32ev FeZor0+maAz8yGihrN42XW9+Cnat3Qyre+EEOmP48irrxZvWZry84S4IVuErWO+O03bJ CI1UIx15BpUty7VRUn8/Z6Fahmt/kVx9HTlfiRKzUshPMPR9JpMdZZUrssg3TtY8Tf5l hc7r3o2Xo21oWv4lbaTZBy1DBEFH35bDRkrA2ZQKi7t9oMr4HxN/2Em7cehohDsfuivB fU/7PM31XWQvJcLWQoDzpQwR+fw35G6DNVUci3otwp/gjqD1Dgf5sAmN6hoC4v2hK57Q uUhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-language:thread-index:content-transfer-encoding :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :message-id:date:subject:cc:to:from; bh=1y8VwdvQvOgQ4D0Sdr+j8rWyjb66OvomY1mbYzmLWkA=; fh=whamaF9263oa7R3PlEAOrKbF4ASyuaRB7rQ5ZhqNQbw=; b=M+mQBtiTY2tTi9K1YzshUDn8frrlMfj7cqnx0TGhQFr17wpaz8kw8kAAwy62kxOdHD 7VktzAvYpW+4GnDCQLwTa1cfs93XNXSiBWqLqNV5QSgRjpNpNxC6HPRtFpRyqBu1wamW 5/DAz5cejO6dZaT9DlGVllmfr2K6HYQrs/jLnud26mcbuDTl3u/MuJ8kB5RDH94Ggs1d bzUk2P978TLXmHpmFzpbEiySY2ZOJ1hULX7hITF8aWLo7B6A4anNIDrAH/072T2WP9yh rgdsWc3LDpTIwo0XkOZ4hVtA8PD3d0EplyOi3g+9gbJpFDKRTNqoQukHbbeUnT0qYmW9 G4BA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-12766-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12766-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=senarytech.com Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id g19-20020a1709067c5300b00a1ce98016c7si7337258ejp.533.2023.12.28.07.54.28 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Dec 2023 07:54:28 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-12766-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-12766-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12766-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=senarytech.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 2AEEE1F228D0 for <ouuuleilei@gmail.com>; Thu, 28 Dec 2023 15:54:28 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C2B52F9C5; Thu, 28 Dec 2023 15:54:12 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from mail-m12773.qiye.163.com (mail-m12773.qiye.163.com [115.236.127.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79FFAF4E3; Thu, 28 Dec 2023 15:54:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=senarytech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=senarytech.com Received: from liubo (unknown [61.183.143.78]) by mail-m12756.qiye.163.com (Hmail) with ESMTPA id B98DCDC035B; Thu, 28 Dec 2023 10:57:43 +0800 (CST) From: =?utf-8?b?5YiY5Y2a?= <bo.liu@senarytech.com> To: <perex@perex.cz>, <tiwai@suse.com> Cc: <linux-sound@vger.kernel.org>, <linux-kernel@vger.kernel.org> Subject: =?utf-8?q?Due_to_returning_the_email_and_resending_it//=E7=AD=94?= =?utf-8?q?=E5=A4=8D=3A_=5BPATCH_1/3=5D_Fix_headset_auto_detect_fail_in_cx80?= =?utf-8?q?70_and_SN6140?= Date: Thu, 28 Dec 2023 10:57:43 +0800 Message-ID: <009d01da3939$a1517440$e3f45cc0$@senarytech.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Outlook 16.0 Thread-Index: Ado5OZT0IQYjxbjwTr6PBszvuPulOQ== Content-Language: zh-cn X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFITzdXWS1ZQUlXWQ8JGhUIEh9ZQVkaSx9JVh0ZHhkfH0IZTE0dHlUTARMWGhIXJBQOD1 lXWRgSC1lBWU1KVUpDSFVKT0hVTENZV1kWGg8SFR0UWUFZT0tIVUpNT0lOSFVKS0tVSkJLS1kG X-HM-Tid: 0a8cae5b3ba8b223kuuub98dcdc035b X-HM-MType: 1 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6NUk6Vio5Kjw6CQ8SCC4tPxEL KAMKCy5VSlVKTEtITEhJSU1PTkpOVTMWGhIXVRkUVRcSDjsIHhUaCQIPHhgTVRgUFkVZV1kSC1lB WU1KVUpDSFVKT0hVTENZV1kIAVlBTU5OSjcG X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1786541630712990268 X-GMAIL-MSGID: 1786541630712990268 |
Series |
Due to returning the email and resending it//答复: [PATCH 1/3] Fix headset auto detect fail in cx8070 and SN6140
|
|
Commit Message
bo liu
Dec. 28, 2023, 2:57 a.m. UTC
FYI
Best Regards
Bo Liu (刘博)
Cell#: +86-18986160629
Email: bo.liu@senarytech.com
深圳前海深蕾半导体有限公司
湖北省武汉市东湖高新技术开发区关山大道355号铭丰大厦
16楼1601-1603室
Room 1601-1603,mTower, No. 355 Guanshan Avenue,
East Lake High-tech Development Zone, Wuhan, Hubei Province.
-----邮件原件-----
发件人: bo liu <bo.liu@senarytech.com>
发送时间: 2023年12月27日 15:10
收件人: perex@perex.cz; tiwai@suse.com
抄送: linux-sound@vger.kernel.org; linux-kernel@vger.kernel.org; bo liu <bo.liu@senarytech.com>
主题: [PATCH 1/3] Fix headset auto detect fail in cx8070 and SN6140
CX8070 and SN6140 will get wrong headset type when use OMTP headset, then the headset mic will not work.
Signed-off-by: bo liu <bo.liu@senarytech.com>
---
sound/pci/hda/patch_conexant.c | 75 +++++++++++++++++++++++++++++++++-
1 file changed, 74 insertions(+), 1 deletion(-)
cxt_init_gpio_led(codec);
snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_INIT);
+ switch (codec->core.vendor_id) {
+ case 0x14f11f86:
+ case 0x14f11f87:
+ /* fix some headset recognize fail issue */
+ snd_hda_codec_write(codec, 0x1c, 0, 0x320, 0x010);
+ snd_hda_codec_write(codec, 0x1c, 0, 0x3b0, 0xe10);
+ snd_hda_codec_write(codec, 0x1c, 0, 0x4f0, 0x0eb);
+ /* fix reboot headset recognize fail issue */
+ mic_persent = snd_hda_codec_read(codec, 0x19, 0, 0xf09, 0x0);
+ if (mic_persent&0x80000000) {
+ snd_hda_codec_write(codec, 0x19, 0, 0x707, 0x24);
+ } else {
+ snd_hda_codec_write(codec, 0x19, 0, 0x707, 0x20);
+ }
+ break;
+ }
+
return 0;
}
@@ -191,6 +209,60 @@ static void cx_auto_free(struct hda_codec *codec)
cx_auto_shutdown(codec);
snd_hda_gen_free(codec);
}
+
+static int headset_present_flag;
+static void cx_jack_unsol_event(struct hda_codec *codec, unsigned int
+res) {
+ unsigned int val,phone_present,mic_persent,phone_tag,mic_tag;
+ unsigned int count=0;
+
+ switch (codec->core.vendor_id) {
+ case 0x14f11f86:
+ case 0x14f11f87:
+ /* check hp&mic tag to process headset pulgin&plugout */
+ phone_tag = snd_hda_codec_read(codec, 0x16, 0, 0xf08, 0x0);
+ mic_tag = snd_hda_codec_read(codec, 0x19, 0, 0xf08, 0x0);
+ if((phone_tag&(res>>26)) || (mic_tag&(res>>26))) {
+ //msleep(600);
+ phone_present = snd_hda_codec_read(codec, 0x16, 0, 0xf09, 0x0);
+ if(!(phone_present&0x80000000)) {/* headphone plugout */
+ headset_present_flag = 0;
+ snd_hda_codec_write(codec, 0x19, 0, 0x707, 0x20);
+ break;
+ }
+ if (headset_present_flag == 0) {
+ headset_present_flag = 1;
+ } else if(headset_present_flag == 1) {
+ mic_persent = snd_hda_codec_read(codec, 0x19, 0, 0xf09, 0x0);
+ if ((phone_present&0x80000000)&&(mic_persent&0x80000000)) {/* headset is present */
+ /* wait headset detect done */
+ do {
+ val = snd_hda_codec_read(codec, 0x1c, 0, 0xca0, 0x0);
+ if(val&0x080) {
+ break;
+ }
+ msleep(10);
+ count += 1;
+ } while(count > 5);
+ val = snd_hda_codec_read(codec, 0x1c, 0, 0xcb0, 0x0);
+ if(val&0x800) {
+ codec_dbg(codec, "headset plugin, type is CTIA\n");
+ snd_hda_codec_write(codec, 0x19, 0, 0x707, 0x24);
+ } else if(val&0x400) {
+ codec_dbg(codec, "headset plugin, type is OMTP\n");
+ snd_hda_codec_write(codec, 0x19, 0, 0x707, 0x24);
+ } else {
+ codec_dbg(codec, "headphone plugin\n");
+ }
+ headset_present_flag = 2;
+ }
+ }
+ }
+ break;
+ }
+
+ snd_hda_jack_unsol_event(codec, res);
+}
#ifdef CONFIG_PM
static int cx_auto_suspend(struct hda_codec *codec) @@ -205,7 +277,7 @@ static const struct hda_codec_ops cx_auto_patch_ops = {
.build_pcms = snd_hda_gen_build_pcms,
.init = cx_auto_init,
.free = cx_auto_free,
- .unsol_event = snd_hda_jack_unsol_event,
+ .unsol_event = cx_jack_unsol_event,
#ifdef CONFIG_PM
.suspend = cx_auto_suspend,
.check_power_status = snd_hda_gen_check_power_status, @@ -1042,6 +1114,7 @@ static int patch_conexant_auto(struct hda_codec *codec)
codec->spec = spec;
codec->patch_ops = cx_auto_patch_ops;
+ headset_present_flag = 0;
cx_auto_parse_eapd(codec);
spec->gen.own_eapd_ctl = 1;
--
2.34.1
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index a889cccdd607..2d58595bfbdd 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c @@ -166,6 +166,7 @@ static void cxt_init_gpio_led(struct hda_codec *codec) static int cx_auto_init(struct hda_codec *codec) { + unsigned int mic_persent; struct conexant_spec *spec = codec->spec; snd_hda_gen_init(codec); if (!spec->dynamic_eapd) @@ -174,6 +175,23 @@ static int cx_auto_init(struct hda_codec *codec)