diff mbox series

ALSA: hda/realtek: Enable front panel headset LED on Lenovo ThinkStation P520

Message ID 20200914070231.13192-1-kai.heng.feng@canonical.com (mailing list archive)
State New, archived
Headers show
Series ALSA: hda/realtek: Enable front panel headset LED on Lenovo ThinkStation P520 | expand

Commit Message

Kai-Heng Feng Sept. 14, 2020, 7:02 a.m. UTC
On Lenovo P520, the front panel headset LED isn't lit up right now.

Realtek states that the LED needs to be enabled by ALC233's GPIO2, so
let's do it accordingly to light the LED up.

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
 sound/pci/hda/patch_realtek.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Hui Wang Sept. 14, 2020, 8:04 a.m. UTC | #1
Thanks Kaiheng, and we just had one P520 in the Beijing office and I 
also worked on this issue happenly. Does the led change according to 
jack plugging in or plugging out with your patch? I also prepared a 
patchset but my patchset has more code than yours, please take a look. :-)

Thanks.

Hui.

On 2020/9/14 下午3:02, Kai-Heng Feng wrote:
> On Lenovo P520, the front panel headset LED isn't lit up right now.
>
> Realtek states that the LED needs to be enabled by ALC233's GPIO2, so
> let's do it accordingly to light the LED up.
>
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> ---
>   sound/pci/hda/patch_realtek.c | 7 +++++++
>   1 file changed, 7 insertions(+)
>
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index c521a1f17096..ba941bd0b792 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -6017,6 +6017,7 @@ static void alc_fixup_thinkpad_acpi(struct hda_codec *codec,
>   #include "hp_x360_helper.c"
>   
>   enum {
> +	ALC269_FIXUP_GPIO2,
>   	ALC269_FIXUP_SONY_VAIO,
>   	ALC275_FIXUP_SONY_VAIO_GPIO2,
>   	ALC269_FIXUP_DELL_M101Z,
> @@ -6194,6 +6195,10 @@ enum {
>   };
>   
>   static const struct hda_fixup alc269_fixups[] = {
> +	[ALC269_FIXUP_GPIO2] = {
> +		.type = HDA_FIXUP_FUNC,
> +		.v.func = alc_fixup_gpio2,
> +	},
>   	[ALC269_FIXUP_SONY_VAIO] = {
>   		.type = HDA_FIXUP_PINCTLS,
>   		.v.pins = (const struct hda_pintbl[]) {
> @@ -7013,6 +7018,8 @@ static const struct hda_fixup alc269_fixups[] = {
>   	[ALC233_FIXUP_LENOVO_MULTI_CODECS] = {
>   		.type = HDA_FIXUP_FUNC,
>   		.v.func = alc233_alc662_fixup_lenovo_dual_codecs,
> +		.chained = true,
> +		.chain_id = ALC269_FIXUP_GPIO2
>   	},
>   	[ALC233_FIXUP_ACER_HEADSET_MIC] = {
>   		.type = HDA_FIXUP_VERBS,
Kai-Heng Feng Sept. 14, 2020, 8:07 a.m. UTC | #2
Hi Hui,

> On Sep 14, 2020, at 16:04, Hui Wang <hui.wang@canonical.com> wrote:
> 
> Thanks Kaiheng, and we just had one P520 in the Beijing office and I also worked on this issue happenly. Does the led change according to jack plugging in or plugging out with your patch?

No, the LED won't reflect the jack plugging status.

The LED is always on under Windows, so we are doing the same here.

Kai-Heng

> I also prepared a patchset but my patchset has more code than yours, please take a look. :-)
> 
> Thanks.
> 
> Hui.
> 
> On 2020/9/14 下午3:02, Kai-Heng Feng wrote:
>> On Lenovo P520, the front panel headset LED isn't lit up right now.
>> 
>> Realtek states that the LED needs to be enabled by ALC233's GPIO2, so
>> let's do it accordingly to light the LED up.
>> 
>> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
>> ---
>>  sound/pci/hda/patch_realtek.c | 7 +++++++
>>  1 file changed, 7 insertions(+)
>> 
>> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
>> index c521a1f17096..ba941bd0b792 100644
>> --- a/sound/pci/hda/patch_realtek.c
>> +++ b/sound/pci/hda/patch_realtek.c
>> @@ -6017,6 +6017,7 @@ static void alc_fixup_thinkpad_acpi(struct hda_codec *codec,
>>  #include "hp_x360_helper.c"
>>    enum {
>> +	ALC269_FIXUP_GPIO2,
>>  	ALC269_FIXUP_SONY_VAIO,
>>  	ALC275_FIXUP_SONY_VAIO_GPIO2,
>>  	ALC269_FIXUP_DELL_M101Z,
>> @@ -6194,6 +6195,10 @@ enum {
>>  };
>>    static const struct hda_fixup alc269_fixups[] = {
>> +	[ALC269_FIXUP_GPIO2] = {
>> +		.type = HDA_FIXUP_FUNC,
>> +		.v.func = alc_fixup_gpio2,
>> +	},
>>  	[ALC269_FIXUP_SONY_VAIO] = {
>>  		.type = HDA_FIXUP_PINCTLS,
>>  		.v.pins = (const struct hda_pintbl[]) {
>> @@ -7013,6 +7018,8 @@ static const struct hda_fixup alc269_fixups[] = {
>>  	[ALC233_FIXUP_LENOVO_MULTI_CODECS] = {
>>  		.type = HDA_FIXUP_FUNC,
>>  		.v.func = alc233_alc662_fixup_lenovo_dual_codecs,
>> +		.chained = true,
>> +		.chain_id = ALC269_FIXUP_GPIO2
>>  	},
>>  	[ALC233_FIXUP_ACER_HEADSET_MIC] = {
>>  		.type = HDA_FIXUP_VERBS,
Hui Wang Sept. 14, 2020, 8:21 a.m. UTC | #3
On 2020/9/14 下午4:07, Kai-Heng Feng wrote:
> Hi Hui,
>
>> On Sep 14, 2020, at 16:04, Hui Wang <hui.wang@canonical.com> wrote:
>>
>> Thanks Kaiheng, and we just had one P520 in the Beijing office and I also worked on this issue happenly. Does the led change according to jack plugging in or plugging out with your patch?
> No, the LED won't reflect the jack plugging status.
>
> The LED is always on under Windows, so we are doing the same here.

Weird, the bug's title is "The backlight for a headset connector didn't 
light up after connecting a headset" and the QA in Beijing office also 
requires the led could change according to plugging or no plugging.

>
> Kai-Heng
>
>> I also prepared a patchset but my patchset has more code than yours, please take a look. :-)
>>
>> Thanks.
>>
>> Hui.
>>
>> On 2020/9/14 下午3:02, Kai-Heng Feng wrote:
>>> On Lenovo P520, the front panel headset LED isn't lit up right now.
>>>
>>> Realtek states that the LED needs to be enabled by ALC233's GPIO2, so
>>> let's do it accordingly to light the LED up.
>>>
>>> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
>>> ---
>>>   sound/pci/hda/patch_realtek.c | 7 +++++++
>>>   1 file changed, 7 insertions(+)
>>>
>>> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
>>> index c521a1f17096..ba941bd0b792 100644
>>> --- a/sound/pci/hda/patch_realtek.c
>>> +++ b/sound/pci/hda/patch_realtek.c
>>> @@ -6017,6 +6017,7 @@ static void alc_fixup_thinkpad_acpi(struct hda_codec *codec,
>>>   #include "hp_x360_helper.c"
>>>     enum {
>>> +	ALC269_FIXUP_GPIO2,
>>>   	ALC269_FIXUP_SONY_VAIO,
>>>   	ALC275_FIXUP_SONY_VAIO_GPIO2,
>>>   	ALC269_FIXUP_DELL_M101Z,
>>> @@ -6194,6 +6195,10 @@ enum {
>>>   };
>>>     static const struct hda_fixup alc269_fixups[] = {
>>> +	[ALC269_FIXUP_GPIO2] = {
>>> +		.type = HDA_FIXUP_FUNC,
>>> +		.v.func = alc_fixup_gpio2,
>>> +	},
>>>   	[ALC269_FIXUP_SONY_VAIO] = {
>>>   		.type = HDA_FIXUP_PINCTLS,
>>>   		.v.pins = (const struct hda_pintbl[]) {
>>> @@ -7013,6 +7018,8 @@ static const struct hda_fixup alc269_fixups[] = {
>>>   	[ALC233_FIXUP_LENOVO_MULTI_CODECS] = {
>>>   		.type = HDA_FIXUP_FUNC,
>>>   		.v.func = alc233_alc662_fixup_lenovo_dual_codecs,
>>> +		.chained = true,
>>> +		.chain_id = ALC269_FIXUP_GPIO2
>>>   	},
>>>   	[ALC233_FIXUP_ACER_HEADSET_MIC] = {
>>>   		.type = HDA_FIXUP_VERBS,
Hui Wang Sept. 15, 2020, 12:33 a.m. UTC | #4
OK,  then looks fine to me.

Acked-by:Hui Wang <hui.wang@canonical.com>

On 2020/9/14 下午4:07, Kai-Heng Feng wrote:
> Hi Hui,
>
>> On Sep 14, 2020, at 16:04, Hui Wang <hui.wang@canonical.com> wrote:
>>
>> Thanks Kaiheng, and we just had one P520 in the Beijing office and I also worked on this issue happenly. Does the led change according to jack plugging in or plugging out with your patch?
> No, the LED won't reflect the jack plugging status.
>
> The LED is always on under Windows, so we are doing the same here.
>
> Kai-Heng
>
>> I also prepared a patchset but my patchset has more code than yours, please take a look. :-)
>>
>> Thanks.
>>
>> Hui.
>>
>> On 2020/9/14 下午3:02, Kai-Heng Feng wrote:
>>> On Lenovo P520, the front panel headset LED isn't lit up right now.
>>>
>>> Realtek states that the LED needs to be enabled by ALC233's GPIO2, so
>>> let's do it accordingly to light the LED up.
>>>
>>> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
>>> ---
>>>   sound/pci/hda/patch_realtek.c | 7 +++++++
>>>   1 file changed, 7 insertions(+)
>>>
>>> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
>>> index c521a1f17096..ba941bd0b792 100644
>>> --- a/sound/pci/hda/patch_realtek.c
>>> +++ b/sound/pci/hda/patch_realtek.c
>>> @@ -6017,6 +6017,7 @@ static void alc_fixup_thinkpad_acpi(struct hda_codec *codec,
>>>   #include "hp_x360_helper.c"
>>>     enum {
>>> +	ALC269_FIXUP_GPIO2,
>>>   	ALC269_FIXUP_SONY_VAIO,
>>>   	ALC275_FIXUP_SONY_VAIO_GPIO2,
>>>   	ALC269_FIXUP_DELL_M101Z,
>>> @@ -6194,6 +6195,10 @@ enum {
>>>   };
>>>     static const struct hda_fixup alc269_fixups[] = {
>>> +	[ALC269_FIXUP_GPIO2] = {
>>> +		.type = HDA_FIXUP_FUNC,
>>> +		.v.func = alc_fixup_gpio2,
>>> +	},
>>>   	[ALC269_FIXUP_SONY_VAIO] = {
>>>   		.type = HDA_FIXUP_PINCTLS,
>>>   		.v.pins = (const struct hda_pintbl[]) {
>>> @@ -7013,6 +7018,8 @@ static const struct hda_fixup alc269_fixups[] = {
>>>   	[ALC233_FIXUP_LENOVO_MULTI_CODECS] = {
>>>   		.type = HDA_FIXUP_FUNC,
>>>   		.v.func = alc233_alc662_fixup_lenovo_dual_codecs,
>>> +		.chained = true,
>>> +		.chain_id = ALC269_FIXUP_GPIO2
>>>   	},
>>>   	[ALC233_FIXUP_ACER_HEADSET_MIC] = {
>>>   		.type = HDA_FIXUP_VERBS,
Takashi Iwai Sept. 21, 2020, 8:27 a.m. UTC | #5
On Mon, 14 Sep 2020 09:02:29 +0200,
Kai-Heng Feng wrote:
> 
> On Lenovo P520, the front panel headset LED isn't lit up right now.
> 
> Realtek states that the LED needs to be enabled by ALC233's GPIO2, so
> let's do it accordingly to light the LED up.
> 
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>

Applied now with Cc to stable (and ack from Hui).


thanks,

Takashi
diff mbox series

Patch

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index c521a1f17096..ba941bd0b792 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -6017,6 +6017,7 @@  static void alc_fixup_thinkpad_acpi(struct hda_codec *codec,
 #include "hp_x360_helper.c"
 
 enum {
+	ALC269_FIXUP_GPIO2,
 	ALC269_FIXUP_SONY_VAIO,
 	ALC275_FIXUP_SONY_VAIO_GPIO2,
 	ALC269_FIXUP_DELL_M101Z,
@@ -6194,6 +6195,10 @@  enum {
 };
 
 static const struct hda_fixup alc269_fixups[] = {
+	[ALC269_FIXUP_GPIO2] = {
+		.type = HDA_FIXUP_FUNC,
+		.v.func = alc_fixup_gpio2,
+	},
 	[ALC269_FIXUP_SONY_VAIO] = {
 		.type = HDA_FIXUP_PINCTLS,
 		.v.pins = (const struct hda_pintbl[]) {
@@ -7013,6 +7018,8 @@  static const struct hda_fixup alc269_fixups[] = {
 	[ALC233_FIXUP_LENOVO_MULTI_CODECS] = {
 		.type = HDA_FIXUP_FUNC,
 		.v.func = alc233_alc662_fixup_lenovo_dual_codecs,
+		.chained = true,
+		.chain_id = ALC269_FIXUP_GPIO2
 	},
 	[ALC233_FIXUP_ACER_HEADSET_MIC] = {
 		.type = HDA_FIXUP_VERBS,