@@ -184,7 +184,7 @@ static int cx_auto_init(struct hda_codec *codec)
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)
+ if (mic_persent&0x80000000)
snd_hda_codec_write(codec, 0x19, 0, 0x707, 0x24);
else
snd_hda_codec_write(codec, 0x19, 0, 0x707, 0x20);
@@ -212,7 +212,7 @@ static void cx_auto_free(struct hda_codec *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 val, phone_present, mic_persent, phone_tag, mic_tag;
unsigned int count=0;
switch (codec->core.vendor_id) {
@@ -236,13 +236,11 @@ static void cx_jack_unsol_event(struct hda_codec *codec, unsigned int res)
if ((phone_present&0x80000000) && (mic_persent&0x80000000)) {
/* wait headset detect done */
do {
+ msleep(20);
val = snd_hda_codec_read(codec, 0x1c,
0, 0xca0, 0x0);
- if (val&0x080)
- break;
- msleep(20);
count += 1;
- } while (count > 3);
+ } while ((count > 3) || (val&0x080));
val = snd_hda_codec_read(codec, 0x1c, 0, 0xcb0, 0x0);
if (val&0x800) {
codec_dbg(codec, "headset plugin, type is CTIA\n");
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 | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)