ALSA: hda - Add pin quirk for the headset mic jack detection on Dell laptop
diff mbox

Message ID 1437993271-12992-1-git-send-email-woodrow.shen@canonical.com
State New
Headers show

Commit Message

woodrow.shen@canonical.com July 27, 2015, 10:34 a.m. UTC
From: Woodrow Shen <woodrow.shen@canonical.com>

The new Dell laptop with codec 256 can't detect headset mic when headset was 
inserted on the machine. From alsa-info, we check init_pin_configs and need to
define the new register value for pin 0x1d & 0x1e because the original macro 
ALC256_STANDARD_PINS can't match pin definition. Also, the macro ALC256_STANDARD_PINS
is simplified by removing them. This makes headset mic works on laptop.

Codec: Realtek ALC256
Vendor Id: 0x10ec0256
Subsystem Id: 0x102806f2

BugLink: https://bugs.launchpad.net/bugs/1478497
Signed-off-by: Woodrow Shen <woodrow.shen@canonical.com>
---
 sound/pci/hda/patch_realtek.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

Comments

Takashi Iwai July 27, 2015, 10:52 a.m. UTC | #1
On Mon, 27 Jul 2015 12:34:31 +0200,
woodrow.shen@canonical.com wrote:
> 
> From: Woodrow Shen <woodrow.shen@canonical.com>
> 
> The new Dell laptop with codec 256 can't detect headset mic when headset was 
> inserted on the machine. From alsa-info, we check init_pin_configs and need to
> define the new register value for pin 0x1d & 0x1e because the original macro 
> ALC256_STANDARD_PINS can't match pin definition. Also, the macro ALC256_STANDARD_PINS
> is simplified by removing them. This makes headset mic works on laptop.
> 
> Codec: Realtek ALC256
> Vendor Id: 0x10ec0256
> Subsystem Id: 0x102806f2
> 
> BugLink: https://bugs.launchpad.net/bugs/1478497
> Signed-off-by: Woodrow Shen <woodrow.shen@canonical.com>

I applied this as is now.  But the code there is already messy, and I
wonder whether we should treat all 0x4xxxxxxx equally.  So far, all
pincfgs are regarded as a kind of fingerprint.  But, judging from the
actual values, the difference of 0x4xxxxxxx might be just a leftover
of wastes by BIOS programmers.

I don't mind any other way, but a sane cleanup would be appreciated.


thanks,

Takashi

> ---
>  sound/pci/hda/patch_realtek.c | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index d94c0e3..4ae877c 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -5398,8 +5398,6 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
>  	{0x19, 0x411111f0}, \
>  	{0x1a, 0x411111f0}, \
>  	{0x1b, 0x411111f0}, \
> -	{0x1d, 0x40700001}, \
> -	{0x1e, 0x411111f0}, \
>  	{0x21, 0x02211020}
>  
>  #define ALC282_STANDARD_PINS \
> @@ -5556,10 +5554,19 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
>  		{0x21, 0x02211030}),
>  	SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
>  		ALC256_STANDARD_PINS,
> -		{0x13, 0x40000000}),
> +		{0x13, 0x40000000},
> +		{0x1d, 0x40700001},
> +		{0x1e, 0x411111f0}),
>  	SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
>  		ALC256_STANDARD_PINS,
> -		{0x13, 0x411111f0}),
> +		{0x13, 0x411111f0},
> +		{0x1d, 0x40700001},
> +		{0x1e, 0x411111f0}),
> +	SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
> +		ALC256_STANDARD_PINS,
> +		{0x13, 0x411111f0},
> +		{0x1d, 0x4077992d},
> +		{0x1e, 0x411111ff}),
>  	SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4,
>  		{0x12, 0x90a60130},
>  		{0x13, 0x40000000},
> -- 
> 2.1.4
>

Patch
diff mbox

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index d94c0e3..4ae877c 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -5398,8 +5398,6 @@  static const struct hda_model_fixup alc269_fixup_models[] = {
 	{0x19, 0x411111f0}, \
 	{0x1a, 0x411111f0}, \
 	{0x1b, 0x411111f0}, \
-	{0x1d, 0x40700001}, \
-	{0x1e, 0x411111f0}, \
 	{0x21, 0x02211020}
 
 #define ALC282_STANDARD_PINS \
@@ -5556,10 +5554,19 @@  static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
 		{0x21, 0x02211030}),
 	SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
 		ALC256_STANDARD_PINS,
-		{0x13, 0x40000000}),
+		{0x13, 0x40000000},
+		{0x1d, 0x40700001},
+		{0x1e, 0x411111f0}),
 	SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
 		ALC256_STANDARD_PINS,
-		{0x13, 0x411111f0}),
+		{0x13, 0x411111f0},
+		{0x1d, 0x40700001},
+		{0x1e, 0x411111f0}),
+	SND_HDA_PIN_QUIRK(0x10ec0256, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
+		ALC256_STANDARD_PINS,
+		{0x13, 0x411111f0},
+		{0x1d, 0x4077992d},
+		{0x1e, 0x411111ff}),
 	SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4,
 		{0x12, 0x90a60130},
 		{0x13, 0x40000000},