* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
[not found] <4F35C191.9080401@gmail.com>
@ 2012-02-11 2:05 ` Jonathan Woithe
2012-02-15 0:50 ` Raymond Yau
0 siblings, 1 reply; 23+ messages in thread
From: Jonathan Woithe @ 2012-02-11 2:05 UTC (permalink / raw)
To: joey.jiaojg, alsa-devel; +Cc: tiwai, pshou, kailang, jwoithe
Hi Joey
For future reference, please email reports like this to the alsa-devel list.
The relevant developers are far more likely to respond to messages on the
list than they are to messages sent privately.
I have copied this to the list to maximise its distribution.
On Sat, Feb 11, 2012 at 09:17:05AM +0800, joey.jiaojg wrote:
> I'm reporting a bug related to ALSA and ALC260, which perhaps only
> you can solve. Appreciate if you can check.
> We got a lot of users using HP COMPAQ B1900 series which using ATI
> SB450 and ALC260 for linux systems like Debian, Ubuntu and etc. The
> problem is that there is no sound from speaker while enable
> model=will can hear from earphone. The problem and alsa-info.txt is
> reported here https://answers.launchpad.net/ubuntu/+source/alsa-driver/+question/186698,
> which thought be a bug of ALC260 driver bug.
> Hope you can check what we can do to solve it.
>From the above I am not entirely sure what the problem is. You seem to be
talking about two separate conditions. In the first (where I presume the
module is loaded without any parameters you say there's no sound from the
speaker. Do other aspects of the card work correctly in this case?
The second situation is where "model=will" is specified as a module
parameter. Here you say you can get audio from the headphone, but again
what about other aspects of the soundcard - do they work normally?
At a rough guess, it sounds like there are two underlying issues. The first
is that this system requires some model-specific handing in order to map
chip outputs correctly. The second is that if such model-specific details
are required then the driver preferrably would activate these automatically
without the need to specify "model=will".
Another possibility is that there is something about this laptop system
which is confusing the auto-probing of the alc260 codec code.
I'm not sure what is the best way of proceeding here. I suspect other more
active developers will have a streamlined approach to help rectify the
trouble. In the first instance I would tend to load the module with
"model=test" and experiment with the resulting alsamixer controls to
determine what chip outputs are connected to which pins. However, this is
quite "old school" now - while it's the approach I used when getting my
system working, my impression is that its use has been mostly deprecated by
the automatic parser which is now present.
In the above-referenced launchpad report the question is asked about the
ALC260 datasheet. This is readily available on the net. I doubt it is all
that necessary now since I think the base infrastructure is pretty solid,
but if you do need it and have difficulty finding it please contact me
off-list.
Regards
jonathan
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-11 2:05 ` Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series Jonathan Woithe
@ 2012-02-15 0:50 ` Raymond Yau
[not found] ` <CAKOmCvoS+tgvyPZJey4gfFFq=Uz01pnZY7YvGbxgQPpAzQ7KCA@mail.gmail.com>
0 siblings, 1 reply; 23+ messages in thread
From: Raymond Yau @ 2012-02-15 0:50 UTC (permalink / raw)
To: ALSA Development Mailing List; +Cc: tiwai, pshou, kailang, joey.jiaojg
2012/2/11, Jonathan Woithe <jwoithe@just42.net>:
> Hi Joey
>
> For future reference, please email reports like this to the alsa-devel list.
> The relevant developers are far more likely to respond to messages on the
> list than they are to messages sent privately.
>
> I have copied this to the list to maximise its distribution.
>
> On Sat, Feb 11, 2012 at 09:17:05AM +0800, joey.jiaojg wrote:
>> I'm reporting a bug related to ALSA and ALC260, which perhaps only
>> you can solve. Appreciate if you can check.
>> We got a lot of users using HP COMPAQ B1900 series which using ATI
>> SB450 and ALC260 for linux systems like Debian, Ubuntu and etc. The
>> problem is that there is no sound from speaker while enable
>> model=will can hear from earphone. The problem and alsa-info.txt is
>> reported here
>> https://answers.launchpad.net/ubuntu/+source/alsa-driver/+question/186698,
>> which thought be a bug of ALC260 driver bug.
>> Hope you can check what we can do to solve it.
>
> From the above I am not entirely sure what the problem is. You seem to be
> talking about two separate conditions. In the first (where I presume the
> module is loaded without any parameters you say there's no sound from the
> speaker. Do other aspects of the card work correctly in this case?
>
> The second situation is where "model=will" is specified as a module
> parameter. Here you say you can get audio from the headphone, but again
> what about other aspects of the soundcard - do they work normally?
>
> At a rough guess, it sounds like there are two underlying issues. The first
> is that this system requires some model-specific handing in order to map
> chip outputs correctly. The second is that if such model-specific details
> are required then the driver preferrably would activate these automatically
> without the need to specify "model=will".
>
> Another possibility is that there is something about this laptop system
> which is confusing the auto-probing of the alc260 codec code.
>
> I'm not sure what is the best way of proceeding here. I suspect other more
> active developers will have a streamlined approach to help rectify the
> trouble. In the first instance I would tend to load the module with
> "model=test" and experiment with the resulting alsamixer controls to
> determine what chip outputs are connected to which pins. However, this is
> quite "old school" now - while it's the approach I used when getting my
> system working, my impression is that its use has been mostly deprecated by
> the automatic parser which is now present.
>
> In the above-referenced launchpad report the question is asked about the
> ALC260 datasheet. This is readily available on the net. I doubt it is all
> that necessary now since I think the base infrastructure is pretty solid,
> but if you do need it and have difficulty finding it please contact me
> off-list.
>
The auto-parser require correct pin default
Refer to alc260 General Description
Realtek's proprietary impedance sensing and jack detect techniques
allow device loads on inputs and outputs to be auto-detected. All
analog IOs are input and output capable. Headphone amplifiers are also
integrated at each analog output. All analog IOs can be re-tasked
according to user's definitions, or automatically switched to suit the
connecting device (Universal Audio Jack®).
Reserve analog mixer architecture is backwards compatible with AC'97
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
[not found] ` <CAKOmCvoS+tgvyPZJey4gfFFq=Uz01pnZY7YvGbxgQPpAzQ7KCA@mail.gmail.com>
@ 2012-02-15 1:29 ` Joey Jiao
2012-02-15 2:49 ` Raymond Yau
0 siblings, 1 reply; 23+ messages in thread
From: Joey Jiao @ 2012-02-15 1:29 UTC (permalink / raw)
To: Raymond Yau; +Cc: tiwai, pshou, ALSA Development Mailing List, kailang
Btw, for the code modification, I modified model will in
patch_realtek.c which works same as the hda-verb command.
From:
static const struct hda_verb alc260_will_verbs[] = {
{0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
{0x0b, AC_VERB_SET_CONNECT_SEL, 0x00},
{0x0d, AC_VERB_SET_CONNECT_SEL, 0x00},
{0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
{0x1a, AC_VERB_SET_COEF_INDEX, 0x07},
{0x1a, AC_VERB_SET_PROC_COEF, 0x3040},
{}
};
To:
static const struct hda_verb alc260_will_verbs[] = {
{0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
{0x0b, AC_VERB_SET_CONNECT_SEL, 0x00},
{0x0d, AC_VERB_SET_CONNECT_SEL, 0x00},
{0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
{0x1a, AC_VERB_SET_COEF_INDEX, 0x07},
{0x1a, AC_VERB_SET_PROC_COEF, 0x3040},
{0x01, AC_VERB_SET_GPIO_MASK, 0x01},
{0x01, AC_VERB_SET_GPIO_DIRECTION, 0x01},
{}
};
在 2012年2月15日 上午9:18,Joey Jiao <joey.jiaojg@gmail.com> 写道:
> Hi all,
> I solved the speaker problem of B1900, and I have you can fix the
> driver in next alsa release.
> I use hda-verb tool to enable sound from speaker.
> Commands as below:
> sudo hda-verb /dev/snd/hwC0D0 0x01 0x716 0x01
> sudo hda-verb /dev/snd/hwC0D0 0x01 0x717 0x01
>
> Perhaps you need to add a new model besides will. Meanwhile, auto
> detect of headphone inserting is not function, so speaker and
> headphone don't switch automatically.
>
>
> 在 2012年2月15日 上午8:50,Raymond Yau <superquad.vortex2@gmail.com> 写道:
>> 2012/2/11, Jonathan Woithe <jwoithe@just42.net>:
>>> Hi Joey
>>>
>>> For future reference, please email reports like this to the alsa-devel list.
>>> The relevant developers are far more likely to respond to messages on the
>>> list than they are to messages sent privately.
>>>
>>> I have copied this to the list to maximise its distribution.
>>>
>>> On Sat, Feb 11, 2012 at 09:17:05AM +0800, joey.jiaojg wrote:
>>>> I'm reporting a bug related to ALSA and ALC260, which perhaps only
>>>> you can solve. Appreciate if you can check.
>>>> We got a lot of users using HP COMPAQ B1900 series which using ATI
>>>> SB450 and ALC260 for linux systems like Debian, Ubuntu and etc. The
>>>> problem is that there is no sound from speaker while enable
>>>> model=will can hear from earphone. The problem and alsa-info.txt is
>>>> reported here
>>>> https://answers.launchpad.net/ubuntu/+source/alsa-driver/+question/186698,
>>>> which thought be a bug of ALC260 driver bug.
>>>> Hope you can check what we can do to solve it.
>>>
>>> From the above I am not entirely sure what the problem is. You seem to be
>>> talking about two separate conditions. In the first (where I presume the
>>> module is loaded without any parameters you say there's no sound from the
>>> speaker. Do other aspects of the card work correctly in this case?
>>>
>>> The second situation is where "model=will" is specified as a module
>>> parameter. Here you say you can get audio from the headphone, but again
>>> what about other aspects of the soundcard - do they work normally?
>>>
>>> At a rough guess, it sounds like there are two underlying issues. The first
>>> is that this system requires some model-specific handing in order to map
>>> chip outputs correctly. The second is that if such model-specific details
>>> are required then the driver preferrably would activate these automatically
>>> without the need to specify "model=will".
>>>
>>> Another possibility is that there is something about this laptop system
>>> which is confusing the auto-probing of the alc260 codec code.
>>>
>>> I'm not sure what is the best way of proceeding here. I suspect other more
>>> active developers will have a streamlined approach to help rectify the
>>> trouble. In the first instance I would tend to load the module with
>>> "model=test" and experiment with the resulting alsamixer controls to
>>> determine what chip outputs are connected to which pins. However, this is
>>> quite "old school" now - while it's the approach I used when getting my
>>> system working, my impression is that its use has been mostly deprecated by
>>> the automatic parser which is now present.
>>>
>>> In the above-referenced launchpad report the question is asked about the
>>> ALC260 datasheet. This is readily available on the net. I doubt it is all
>>> that necessary now since I think the base infrastructure is pretty solid,
>>> but if you do need it and have difficulty finding it please contact me
>>> off-list.
>>>
>>
>> The auto-parser require correct pin default
>>
>> Refer to alc260 General Description
>>
>> Realtek's proprietary impedance sensing and jack detect techniques
>> allow device loads on inputs and outputs to be auto-detected. All
>> analog IOs are input and output capable. Headphone amplifiers are also
>> integrated at each analog output. All analog IOs can be re-tasked
>> according to user's definitions, or automatically switched to suit the
>> connecting device (Universal Audio Jack®).
>>
>> Reserve analog mixer architecture is backwards compatible with AC'97
>
>
>
> --
> -Joey Jiao
--
-Joey Jiao
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-15 1:29 ` Joey Jiao
@ 2012-02-15 2:49 ` Raymond Yau
[not found] ` <4F3B761D.4060306@gmail.com>
0 siblings, 1 reply; 23+ messages in thread
From: Raymond Yau @ 2012-02-15 2:49 UTC (permalink / raw)
To: Joey Jiao; +Cc: tiwai, pshou, ALSA Development Mailing List, kailang
2012/2/15, Joey Jiao <joey.jiaojg@gmail.com>:
> Btw, for the code modification, I modified model will in
> patch_realtek.c which works same as the hda-verb command.
> From:
> static const struct hda_verb alc260_will_verbs[] = {
> {0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
> {0x0b, AC_VERB_SET_CONNECT_SEL, 0x00},
> {0x0d, AC_VERB_SET_CONNECT_SEL, 0x00},
> {0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
> {0x1a, AC_VERB_SET_COEF_INDEX, 0x07},
> {0x1a, AC_VERB_SET_PROC_COEF, 0x3040},
> {}
> };
> To:
> static const struct hda_verb alc260_will_verbs[] = {
> {0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
> {0x0b, AC_VERB_SET_CONNECT_SEL, 0x00},
> {0x0d, AC_VERB_SET_CONNECT_SEL, 0x00},
> {0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
> {0x1a, AC_VERB_SET_COEF_INDEX, 0x07},
> {0x1a, AC_VERB_SET_PROC_COEF, 0x3040},
> {0x01, AC_VERB_SET_GPIO_MASK, 0x01},
> {0x01, AC_VERB_SET_GPIO_DIRECTION, 0x01},
> {}
> };
>
>
> 在 2012年2月15日 上午9:18,Joey Jiao <joey.jiaojg@gmail.com> 写道:
>> Hi all,
>> I solved the speaker problem of B1900, and I have you can fix the
>> driver in next alsa release.
>> I use hda-verb tool to enable sound from speaker.
>> Commands as below:
>> sudo hda-verb /dev/snd/hwC0D0 0x01 0x716 0x01
>> sudo hda-verb /dev/snd/hwC0D0 0x01 0x717 0x01
>>
>> Perhaps you need to add a new model besides will. Meanwhile, auto
>> detect of headphone inserting is not function, so speaker and
>> headphone don't switch automatically.
>>
>>
>> 在 2012年2月15日 上午8:50,Raymond Yau <superquad.vortex2@gmail.com> 写道:
>>>
>>> The auto-parser require correct pin default
>>>
>>> Refer to alc260 General Description
>>>
>>> Realtek's proprietary impedance sensing and jack detect techniques
>>> allow device loads on inputs and outputs to be auto-detected. All
>>> analog IOs are input and output capable. Headphone amplifiers are also
>>> integrated at each analog output. All analog IOs can be re-tasked
>>> according to user's definitions, or automatically switched to suit the
>>> connecting device (Universal Audio Jack®).
>>>
>>> Reserve analog mixer architecture is backwards compatible with AC'97
>>
>>
the function is_jack_detectable() has been changed to check
AC_DEFCFG_MISC_NO_PRESENCE
http://thread.gmane.org/gmane.linux.alsa.devel/90911/focus=91215
I guess Takashi Iwai expect you to provide a pin fixup patch which
provide the pin location of the speaker , internal mic, headphone and
external mic jack for the auto parser
Refer to #25
>> Adding micphone detect:
>> $ sudo hda-verb /dev/snd/hwC0D0 0x12 0xF09 0x0
>> nid = 0x12, verb = 0xf09, param = 0x0
>>value = 0x800000c8
does impedence sense require some delay to get the accurate reading ?
it seem the microphone has a much higher impedenance than your result
0xc8
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
[not found] ` <4F3B761D.4060306@gmail.com>
@ 2012-02-15 9:22 ` Takashi Iwai
2012-02-15 9:31 ` joey.jiaojg
0 siblings, 1 reply; 23+ messages in thread
From: Takashi Iwai @ 2012-02-15 9:22 UTC (permalink / raw)
To: joey.jiaojg; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
At Wed, 15 Feb 2012 17:08:45 +0800,
joey.jiaojg wrote:
>
> Well, now I have fully fixed the speaker/headphone issue for HP COMPAQ
> B1900 by adding a new model=b1900 into patch_realtek.c which also can
> automute by detect HP state.
That's great.
> As I cannot compile alsa-driver-1.0.25 on my ubuntu 11.10, so I modified
> based on kernel-3.0.13 (alsa version 1.0.24) from ubuntu src.
> Attached with stocked source and my updated one, please consider adding
> into next alsa-driver.
Could you simply give a patch file (with "diff -up")?
Then I can check your changes more easily.
thanks,
Takashi
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-15 9:22 ` Takashi Iwai
@ 2012-02-15 9:31 ` joey.jiaojg
2012-02-15 9:40 ` Takashi Iwai
0 siblings, 1 reply; 23+ messages in thread
From: joey.jiaojg @ 2012-02-15 9:31 UTC (permalink / raw)
To: Takashi Iwai; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
[-- Attachment #1: Type: text/plain, Size: 720 bytes --]
Here is the diff file.
On 2012年02月15日 17:22, Takashi Iwai wrote:
> At Wed, 15 Feb 2012 17:08:45 +0800,
> joey.jiaojg wrote:
>> Well, now I have fully fixed the speaker/headphone issue for HP COMPAQ
>> B1900 by adding a new model=b1900 into patch_realtek.c which also can
>> automute by detect HP state.
> That's great.
>
>> As I cannot compile alsa-driver-1.0.25 on my ubuntu 11.10, so I modified
>> based on kernel-3.0.13 (alsa version 1.0.24) from ubuntu src.
>> Attached with stocked source and my updated one, please consider adding
>> into next alsa-driver.
> Could you simply give a patch file (with "diff -up")?
> Then I can check your changes more easily.
>
>
> thanks,
>
> Takashi
[-- Attachment #2: patch_realtek_diff.c --]
[-- Type: text/x-csrc, Size: 3752 bytes --]
--- patch_realtek.c.bk 2012-02-15 17:29:44.851620661 +0800
+++ patch_realtek.c 2012-02-15 17:29:40.887601285 +0800
@@ -80,6 +80,7 @@ enum {
ALC260_WILL,
ALC260_REPLACER_672V,
ALC260_FAVORIT100,
+ ALC260_B1900,
#ifdef CONFIG_SND_DEBUG
ALC260_TEST,
#endif
@@ -1323,6 +1324,34 @@ static void alc_inithook(struct hda_code
alc_mic_automute(codec);
}
+/* toggle speaker-output according to the hp-jack state */
+static void alc260_b1900_automute(struct hda_codec *codec)
+{
+ unsigned int present;
+
+ present = snd_hda_jack_detect(codec, 0x0f);
+ if (present) {
+ snd_hda_codec_write_cache(codec, 0x01, 0,
+ AC_VERB_SET_GPIO_MASK, 0);
+ snd_hda_codec_write_cache(codec, 0x01, 0,
+ AC_VERB_SET_GPIO_DIRECTION,
+ 0);
+ snd_hda_codec_write_cache(codec, 0x0f, 0,
+ AC_VERB_SET_PIN_WIDGET_CONTROL,
+ PIN_HP);
+ } else {
+ snd_hda_codec_write_cache(codec, 0x01, 0,
+ AC_VERB_SET_GPIO_MASK, 1);
+ snd_hda_codec_write_cache(codec, 0x01, 0,
+ AC_VERB_SET_GPIO_DIRECTION,
+ 1);
+ snd_hda_codec_write_cache(codec, 0x0f, 0,
+ AC_VERB_SET_PIN_WIDGET_CONTROL,
+ PIN_OUT);
+ }
+}
+
+
/* additional initialization for ALC888 variants */
static void alc888_coef_init(struct hda_codec *codec)
{
@@ -6899,6 +6928,18 @@ static const struct hda_verb alc260_will
{}
};
+static const struct hda_verb alc260_b1900_verbs[] = {
+ {0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
+ {0x0b, AC_VERB_SET_CONNECT_SEL, 0x00},
+ {0x0d, AC_VERB_SET_CONNECT_SEL, 0x00},
+ {0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
+ {0x1a, AC_VERB_SET_COEF_INDEX, 0x07},
+ {0x1a, AC_VERB_SET_PROC_COEF, 0x3040},
+ {0x0f, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT},
+ {}
+};
+
+
static const struct hda_verb alc260_replacer_672v_verbs[] = {
{0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
{0x1a, AC_VERB_SET_COEF_INDEX, 0x07},
@@ -6941,6 +6982,12 @@ static void alc260_replacer_672v_unsol_e
alc260_replacer_672v_automute(codec);
}
+static void alc260_b1900_unsol_event(struct hda_codec *codec,
+ unsigned int res)
+{
+ if ((res >> 26) == ALC880_HP_EVENT)
+ alc260_b1900_automute(codec);
+}
static const struct hda_verb alc260_hp_dc7600_verbs[] = {
{0x05, AC_VERB_SET_CONNECT_SEL, 0x01},
{0x15, AC_VERB_SET_CONNECT_SEL, 0x01},
@@ -7431,6 +7478,7 @@ static const char * const alc260_models[
[ALC260_WILL] = "will",
[ALC260_REPLACER_672V] = "replacer",
[ALC260_FAVORIT100] = "favorit100",
+ [ALC260_B1900] = "b1900",
#ifdef CONFIG_SND_DEBUG
[ALC260_TEST] = "test",
#endif
@@ -7458,6 +7506,7 @@ static const struct snd_pci_quirk alc260
SND_PCI_QUIRK(0x152d, 0x0729, "CTL U553W", ALC260_BASIC),
SND_PCI_QUIRK(0x161f, 0x2057, "Replacer 672V", ALC260_REPLACER_672V),
SND_PCI_QUIRK(0x1631, 0xc017, "PB V7900", ALC260_WILL),
+ SND_PCI_QUIRK(0x103c, 0x007f, "HP COMPAQ", ALC260_B1900),
{}
};
@@ -7570,6 +7619,20 @@ static const struct alc_config_preset al
.channel_mode = alc260_modes,
.input_mux = &alc260_capture_source,
},
+ [ALC260_B1900] = {
+ .mixers = { alc260_will_mixer },
+ .init_verbs = { alc260_init_verbs, alc260_b1900_verbs },
+ .num_dacs = ARRAY_SIZE(alc260_dac_nids),
+ .dac_nids = alc260_dac_nids,
+ .num_adc_nids = ARRAY_SIZE(alc260_adc_nids),
+ .adc_nids = alc260_adc_nids,
+ .dig_out_nid = ALC260_DIGOUT_NID,
+ .num_channel_mode = ARRAY_SIZE(alc260_modes),
+ .channel_mode = alc260_modes,
+ .input_mux = &alc260_capture_source,
+ .unsol_event = alc260_b1900_unsol_event,
+ .init_hook = alc260_b1900_automute,
+ },
[ALC260_REPLACER_672V] = {
.mixers = { alc260_replacer_672v_mixer },
.init_verbs = { alc260_init_verbs, alc260_replacer_672v_verbs },
[-- Attachment #3: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-15 9:31 ` joey.jiaojg
@ 2012-02-15 9:40 ` Takashi Iwai
2012-02-15 9:45 ` joey.jiaojg
0 siblings, 1 reply; 23+ messages in thread
From: Takashi Iwai @ 2012-02-15 9:40 UTC (permalink / raw)
To: joey.jiaojg; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
At Wed, 15 Feb 2012 17:31:44 +0800,
joey.jiaojg wrote:
>
> Here is the diff file.
Thanks.
> +/* toggle speaker-output according to the hp-jack state */
> +static void alc260_b1900_automute(struct hda_codec *codec)
> +{
> + unsigned int present;
> +
> + present = snd_hda_jack_detect(codec, 0x0f);
> + if (present) {
> + snd_hda_codec_write_cache(codec, 0x01, 0,
> + AC_VERB_SET_GPIO_MASK, 0);
> + snd_hda_codec_write_cache(codec, 0x01, 0,
> + AC_VERB_SET_GPIO_DIRECTION,
> + 0);
What actually this GPIO bit does on your device?
To mute/unmute the speaker?
If so, doesn't the speaker toggle work with just changing the
pin-control of the corresponding pin?
Takashi
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-15 9:40 ` Takashi Iwai
@ 2012-02-15 9:45 ` joey.jiaojg
2012-02-15 9:58 ` Takashi Iwai
0 siblings, 1 reply; 23+ messages in thread
From: joey.jiaojg @ 2012-02-15 9:45 UTC (permalink / raw)
To: Takashi Iwai; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
I have tried to enable each one of them separately, and the speaker
doesn't work.
I have to use these 3 write_cache to make switch and auto-detect work
smoothly.
On 2012年02月15日 17:40, Takashi Iwai wrote:
> At Wed, 15 Feb 2012 17:31:44 +0800,
> joey.jiaojg wrote:
>> Here is the diff file.
> Thanks.
>
>> +/* toggle speaker-output according to the hp-jack state */
>> +static void alc260_b1900_automute(struct hda_codec *codec)
>> +{
>> + unsigned int present;
>> +
>> + present = snd_hda_jack_detect(codec, 0x0f);
>> + if (present) {
>> + snd_hda_codec_write_cache(codec, 0x01, 0,
>> + AC_VERB_SET_GPIO_MASK, 0);
>> + snd_hda_codec_write_cache(codec, 0x01, 0,
>> + AC_VERB_SET_GPIO_DIRECTION,
>> + 0);
> What actually this GPIO bit does on your device?
> To mute/unmute the speaker?
>
> If so, doesn't the speaker toggle work with just changing the
> pin-control of the corresponding pin?
>
>
> Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-15 9:45 ` joey.jiaojg
@ 2012-02-15 9:58 ` Takashi Iwai
2012-02-15 10:06 ` joey.jiaojg
0 siblings, 1 reply; 23+ messages in thread
From: Takashi Iwai @ 2012-02-15 9:58 UTC (permalink / raw)
To: joey.jiaojg; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
At Wed, 15 Feb 2012 17:45:37 +0800,
joey.jiaojg wrote:
>
> I have tried to enable each one of them separately, and the speaker
> doesn't work.
Sorry, it's not clear what you meant. Each of what separately?
And what does GPIO do exactly?
> I have to use these 3 write_cache to make switch and auto-detect work
> smoothly.
We need to know the reason why these must be needed.
Takashi
> On 2012年02月15日 17:40, Takashi Iwai wrote:
> > At Wed, 15 Feb 2012 17:31:44 +0800,
> > joey.jiaojg wrote:
> >> Here is the diff file.
> > Thanks.
> >
> >> +/* toggle speaker-output according to the hp-jack state */
> >> +static void alc260_b1900_automute(struct hda_codec *codec)
> >> +{
> >> + unsigned int present;
> >> +
> >> + present = snd_hda_jack_detect(codec, 0x0f);
> >> + if (present) {
> >> + snd_hda_codec_write_cache(codec, 0x01, 0,
> >> + AC_VERB_SET_GPIO_MASK, 0);
> >> + snd_hda_codec_write_cache(codec, 0x01, 0,
> >> + AC_VERB_SET_GPIO_DIRECTION,
> >> + 0);
> > What actually this GPIO bit does on your device?
> > To mute/unmute the speaker?
> >
> > If so, doesn't the speaker toggle work with just changing the
> > pin-control of the corresponding pin?
> >
> >
> > Takashi
>
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-15 9:58 ` Takashi Iwai
@ 2012-02-15 10:06 ` joey.jiaojg
2012-02-15 10:11 ` Takashi Iwai
0 siblings, 1 reply; 23+ messages in thread
From: joey.jiaojg @ 2012-02-15 10:06 UTC (permalink / raw)
To: Takashi Iwai; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
OK, the situation is 0x01 is to control GPIO0:
1. if I write (codec,0x01,0,AC_VERB_SET_GPIO_MASK,1) only; the result is
speaker not work.
2. if I write (codec,0x01,0,AC_VERB_SET_GPIO_DIRECTION,1) only; the
result is speaker not work.
3. If I write step 1 & 2 together, speaker works when I reboot.
4. Then If I plugged in the headphone, the headphone doesn't work. It
only works when I write
(codec,0x0F,0,AC_VERB_SET_PIN_WIDGET_CONTROL,PIN_HP).
5. From step 3 & 4, it's similar for cases that I reboot with headphone
plugged in. That is, if I remove headphone, speaker doesn't work
automatically. If I write
(codec,0x0F,0,AC_VERB_SET_PIN_WIDGET_CONTROL,PIN_OUT), the
auto-detection function works well can switch speaker/headphone
automatically.
I don't know why it's this case, and from alsa document, it seems only
enable GPIO0 will work but actually not.
On 2012年02月15日 17:58, Takashi Iwai wrote:
> At Wed, 15 Feb 2012 17:45:37 +0800,
> joey.jiaojg wrote:
>> I have tried to enable each one of them separately, and the speaker
>> doesn't work.
> Sorry, it's not clear what you meant. Each of what separately?
> And what does GPIO do exactly?
>
>> I have to use these 3 write_cache to make switch and auto-detect work
>> smoothly.
> We need to know the reason why these must be needed.
>
>
> Takashi
>
>
>> On 2012年02月15日 17:40, Takashi Iwai wrote:
>>> At Wed, 15 Feb 2012 17:31:44 +0800,
>>> joey.jiaojg wrote:
>>>> Here is the diff file.
>>> Thanks.
>>>
>>>> +/* toggle speaker-output according to the hp-jack state */
>>>> +static void alc260_b1900_automute(struct hda_codec *codec)
>>>> +{
>>>> + unsigned int present;
>>>> +
>>>> + present = snd_hda_jack_detect(codec, 0x0f);
>>>> + if (present) {
>>>> + snd_hda_codec_write_cache(codec, 0x01, 0,
>>>> + AC_VERB_SET_GPIO_MASK, 0);
>>>> + snd_hda_codec_write_cache(codec, 0x01, 0,
>>>> + AC_VERB_SET_GPIO_DIRECTION,
>>>> + 0);
>>> What actually this GPIO bit does on your device?
>>> To mute/unmute the speaker?
>>>
>>> If so, doesn't the speaker toggle work with just changing the
>>> pin-control of the corresponding pin?
>>>
>>>
>>> Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-15 10:06 ` joey.jiaojg
@ 2012-02-15 10:11 ` Takashi Iwai
2012-02-15 13:14 ` joey.jiaojg
0 siblings, 1 reply; 23+ messages in thread
From: Takashi Iwai @ 2012-02-15 10:11 UTC (permalink / raw)
To: joey.jiaojg; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
At Wed, 15 Feb 2012 18:06:39 +0800,
joey.jiaojg wrote:
>
> OK, the situation is 0x01 is to control GPIO0:
> 1. if I write (codec,0x01,0,AC_VERB_SET_GPIO_MASK,1) only; the result is
> speaker not work.
>
> 2. if I write (codec,0x01,0,AC_VERB_SET_GPIO_DIRECTION,1) only; the
> result is speaker not work.
>
Sure, GPIO must be always set mask, direction and data all together.
The question is, when you set GPIO mask/dir/data, the speaker starts
playing, and if set to zero (e.g. only data), the speaker is muted?
> 3. If I write step 1 & 2 together, speaker works when I reboot.
Then GPIO is likely an external amp control.
> 4. Then If I plugged in the headphone, the headphone doesn't work. It
> only works when I write
> (codec,0x0F,0,AC_VERB_SET_PIN_WIDGET_CONTROL,PIN_HP).
This is normal.
> 5. From step 3 & 4, it's similar for cases that I reboot with headphone
> plugged in. That is, if I remove headphone, speaker doesn't work
> automatically. If I write
> (codec,0x0F,0,AC_VERB_SET_PIN_WIDGET_CONTROL,PIN_OUT), the
> auto-detection function works well can switch speaker/headphone
> automatically.
That's odd. If you don't change from PIN_HP, doesn't the unsolicited
event work?
Another question is, when you set PIN_WIDGET_CONTROL on the speaker
pin (not sure which one is) to 0x00, does it mute the speaker, too?
Takashi
> I don't know why it's this case, and from alsa document, it seems only
> enable GPIO0 will work but actually not.
>
>
> On 2012年02月15日 17:58, Takashi Iwai wrote:
> > At Wed, 15 Feb 2012 17:45:37 +0800,
> > joey.jiaojg wrote:
> >> I have tried to enable each one of them separately, and the speaker
> >> doesn't work.
> > Sorry, it's not clear what you meant. Each of what separately?
> > And what does GPIO do exactly?
> >
> >> I have to use these 3 write_cache to make switch and auto-detect work
> >> smoothly.
> > We need to know the reason why these must be needed.
> >
> >
> > Takashi
> >
> >
> >> On 2012年02月15日 17:40, Takashi Iwai wrote:
> >>> At Wed, 15 Feb 2012 17:31:44 +0800,
> >>> joey.jiaojg wrote:
> >>>> Here is the diff file.
> >>> Thanks.
> >>>
> >>>> +/* toggle speaker-output according to the hp-jack state */
> >>>> +static void alc260_b1900_automute(struct hda_codec *codec)
> >>>> +{
> >>>> + unsigned int present;
> >>>> +
> >>>> + present = snd_hda_jack_detect(codec, 0x0f);
> >>>> + if (present) {
> >>>> + snd_hda_codec_write_cache(codec, 0x01, 0,
> >>>> + AC_VERB_SET_GPIO_MASK, 0);
> >>>> + snd_hda_codec_write_cache(codec, 0x01, 0,
> >>>> + AC_VERB_SET_GPIO_DIRECTION,
> >>>> + 0);
> >>> What actually this GPIO bit does on your device?
> >>> To mute/unmute the speaker?
> >>>
> >>> If so, doesn't the speaker toggle work with just changing the
> >>> pin-control of the corresponding pin?
> >>>
> >>>
> >>> Takashi
>
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-15 10:11 ` Takashi Iwai
@ 2012-02-15 13:14 ` joey.jiaojg
2012-02-15 13:21 ` Takashi Iwai
0 siblings, 1 reply; 23+ messages in thread
From: joey.jiaojg @ 2012-02-15 13:14 UTC (permalink / raw)
To: Takashi Iwai; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
Please check my reply below.
On 2012年02月15日 18:11, Takashi Iwai wrote:
> At Wed, 15 Feb 2012 18:06:39 +0800,
> joey.jiaojg wrote:
>> OK, the situation is 0x01 is to control GPIO0:
>> 1. if I write (codec,0x01,0,AC_VERB_SET_GPIO_MASK,1) only; the result is
>> speaker not work.
>>
>> 2. if I write (codec,0x01,0,AC_VERB_SET_GPIO_DIRECTION,1) only; the
>> result is speaker not work.
>>
> Sure, GPIO must be always set mask, direction and data all together.
> The question is, when you set GPIO mask/dir/data, the speaker starts
> playing, and if set to zero (e.g. only data), the speaker is muted?
JOEY: I tried set data to 0 or 1 doesn't influence. when I set mask &
dir to 1, speaker starts to work and to 0 speaker muted while headphone
works if headphone plugged in.
>
>> 3. If I write step 1& 2 together, speaker works when I reboot.
> Then GPIO is likely an external amp control.
JOEY: YES.
>
>> 4. Then If I plugged in the headphone, the headphone doesn't work. It
>> only works when I write
>> (codec,0x0F,0,AC_VERB_SET_PIN_WIDGET_CONTROL,PIN_HP).
> This is normal.
JOEY: If I don't modify model=will. And headphone can play even without
set AC_VERB_SET_PIN_WIDGET_CONTROL to PIN_HP. Of course, automute
doesn't work as there is function implemented.
>
>> 5. From step 3& 4, it's similar for cases that I reboot with headphone
>> plugged in. That is, if I remove headphone, speaker doesn't work
>> automatically. If I write
>> (codec,0x0F,0,AC_VERB_SET_PIN_WIDGET_CONTROL,PIN_OUT), the
>> auto-detection function works well can switch speaker/headphone
>> automatically.
> That's odd. If you don't change from PIN_HP, doesn't the unsolicited
> event work?
JOEY: the unsolicited works from the register I read also from the
printk I previous added. But the audio path doesn't switch between
speaker and headphone. I don't know why. It can works manually if I send
any hda-verb command to codec, like hda-verb /dev/snd/hwC0D0 0x0F 0xF09
0x0; I think perhaps there needs to be some delay. But I wait seconds
and it doesn't switch. Then if I run any hda-verb command, it will then
switch.
Then after I change from PIN_HP or from PIN_OUT, the automute (actually
audio path switch) works.
> Another question is, when you set PIN_WIDGET_CONTROL on the speaker
> pin (not sure which one is) to 0x00, does it mute the speaker, too?
JOEY: No, it doesn't mute the speaker. To mute the speaker, I just need
to set 0 to dir or mask. Then audio path is to headphone.
>
> Takashi
>
>
>> I don't know why it's this case, and from alsa document, it seems only
>> enable GPIO0 will work but actually not.
>>
>>
>> On 2012年02月15日 17:58, Takashi Iwai wrote:
>>> At Wed, 15 Feb 2012 17:45:37 +0800,
>>> joey.jiaojg wrote:
>>>> I have tried to enable each one of them separately, and the speaker
>>>> doesn't work.
>>> Sorry, it's not clear what you meant. Each of what separately?
>>> And what does GPIO do exactly?
>>>
>>>> I have to use these 3 write_cache to make switch and auto-detect work
>>>> smoothly.
>>> We need to know the reason why these must be needed.
>>>
>>>
>>> Takashi
>>>
>>>
>>>> On 2012年02月15日 17:40, Takashi Iwai wrote:
>>>>> At Wed, 15 Feb 2012 17:31:44 +0800,
>>>>> joey.jiaojg wrote:
>>>>>> Here is the diff file.
>>>>> Thanks.
>>>>>
>>>>>> +/* toggle speaker-output according to the hp-jack state */
>>>>>> +static void alc260_b1900_automute(struct hda_codec *codec)
>>>>>> +{
>>>>>> + unsigned int present;
>>>>>> +
>>>>>> + present = snd_hda_jack_detect(codec, 0x0f);
>>>>>> + if (present) {
>>>>>> + snd_hda_codec_write_cache(codec, 0x01, 0,
>>>>>> + AC_VERB_SET_GPIO_MASK, 0);
>>>>>> + snd_hda_codec_write_cache(codec, 0x01, 0,
>>>>>> + AC_VERB_SET_GPIO_DIRECTION,
>>>>>> + 0);
>>>>> What actually this GPIO bit does on your device?
>>>>> To mute/unmute the speaker?
>>>>>
>>>>> If so, doesn't the speaker toggle work with just changing the
>>>>> pin-control of the corresponding pin?
>>>>>
>>>>>
>>>>> Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-15 13:14 ` joey.jiaojg
@ 2012-02-15 13:21 ` Takashi Iwai
2012-02-15 14:45 ` joey.jiaojg
0 siblings, 1 reply; 23+ messages in thread
From: Takashi Iwai @ 2012-02-15 13:21 UTC (permalink / raw)
To: joey.jiaojg; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
At Wed, 15 Feb 2012 21:14:48 +0800,
joey.jiaojg wrote:
>
> Please check my reply below.
>
> On 2012年02月15日 18:11, Takashi Iwai wrote:
> > At Wed, 15 Feb 2012 18:06:39 +0800,
> > joey.jiaojg wrote:
> >> OK, the situation is 0x01 is to control GPIO0:
> >> 1. if I write (codec,0x01,0,AC_VERB_SET_GPIO_MASK,1) only; the result is
> >> speaker not work.
> >>
> >> 2. if I write (codec,0x01,0,AC_VERB_SET_GPIO_DIRECTION,1) only; the
> >> result is speaker not work.
> >>
> > Sure, GPIO must be always set mask, direction and data all together.
> > The question is, when you set GPIO mask/dir/data, the speaker starts
> > playing, and if set to zero (e.g. only data), the speaker is muted?
> JOEY: I tried set data to 0 or 1 doesn't influence. when I set mask &
> dir to 1, speaker starts to work and to 0 speaker muted while headphone
> works if headphone plugged in.
There is something wrong in tests. The direction bit controls only
the direction, so yes, it must match with the value the hardware
expected. Otherwise it won't work, thus it's turned off.
> >> 3. If I write step 1& 2 together, speaker works when I reboot.
> > Then GPIO is likely an external amp control.
> JOEY: YES.
> >
> >> 4. Then If I plugged in the headphone, the headphone doesn't work. It
> >> only works when I write
> >> (codec,0x0F,0,AC_VERB_SET_PIN_WIDGET_CONTROL,PIN_HP).
> > This is normal.
> JOEY: If I don't modify model=will. And headphone can play even without
> set AC_VERB_SET_PIN_WIDGET_CONTROL to PIN_HP. Of course, automute
> doesn't work as there is function implemented.
OK, this is because of model=will strange things.
> >> 5. From step 3& 4, it's similar for cases that I reboot with headphone
> >> plugged in. That is, if I remove headphone, speaker doesn't work
> >> automatically. If I write
> >> (codec,0x0F,0,AC_VERB_SET_PIN_WIDGET_CONTROL,PIN_OUT), the
> >> auto-detection function works well can switch speaker/headphone
> >> automatically.
> > That's odd. If you don't change from PIN_HP, doesn't the unsolicited
> > event work?
> JOEY: the unsolicited works from the register I read also from the
> printk I previous added. But the audio path doesn't switch between
> speaker and headphone. I don't know why. It can works manually if I send
> any hda-verb command to codec, like hda-verb /dev/snd/hwC0D0 0x0F 0xF09
> 0x0; I think perhaps there needs to be some delay. But I wait seconds
> and it doesn't switch. Then if I run any hda-verb command, it will then
> switch.
> Then after I change from PIN_HP or from PIN_OUT, the automute (actually
> audio path switch) works.
Is the effect only with this pin? In other words, if you change the
pin control value of other pin, no similar effect?
> > Another question is, when you set PIN_WIDGET_CONTROL on the speaker
> > pin (not sure which one is) to 0x00, does it mute the speaker, too?
> JOEY: No, it doesn't mute the speaker. To mute the speaker, I just need
> to set 0 to dir or mask. Then audio path is to headphone.
And you are sure that it's the right pin? Which pin did you test?
The pin-control doesn't always turn off the output in some cases.
But, we'd need to be sure whether we are looking at the right one.
thanks,
Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-15 13:21 ` Takashi Iwai
@ 2012-02-15 14:45 ` joey.jiaojg
2012-02-15 15:04 ` Takashi Iwai
0 siblings, 1 reply; 23+ messages in thread
From: joey.jiaojg @ 2012-02-15 14:45 UTC (permalink / raw)
To: Takashi Iwai; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
I think the only question below is about the automute, right?
Then I did another test by modifying like below (so the result is same
as sending any hda-verb cmd) -- The result is the auto-mute works too:
if (present) {
snd_hda_codec_write_cache(codec, 0x01, 0,
AC_VERB_SET_GPIO_MASK, 0);
snd_hda_codec_write_cache(codec, 0x01, 0,
AC_VERB_SET_GPIO_DIRECTION,
0);
/*snd_hda_codec_write_cache(codec, 0x0f, 0,
AC_VERB_SET_PIN_WIDGET_CONTROL,
PIN_HP);*/
snd_hda_codec_read(codec, 0x01, 0,
AC_VERB_GET_GPIO_MASK,
0);
} else {
snd_hda_codec_write_cache(codec, 0x01, 0,
AC_VERB_SET_GPIO_MASK, 1);
snd_hda_codec_write_cache(codec, 0x01, 0,
AC_VERB_SET_GPIO_DIRECTION,
1);
/*snd_hda_codec_write_cache(codec, 0x0f, 0,
AC_VERB_SET_PIN_WIDGET_CONTROL,
PIN_OUT);*/
snd_hda_codec_read(codec, 0x01, 0,
AC_VERB_GET_GPIO_MASK,
0);
}
On 2012年02月15日 21:21, Takashi Iwai wrote:
> At Wed, 15 Feb 2012 21:14:48 +0800,
> joey.jiaojg wrote:
>> Please check my reply below.
>>
>> On 2012年02月15日 18:11, Takashi Iwai wrote:
>>> At Wed, 15 Feb 2012 18:06:39 +0800,
>>> joey.jiaojg wrote:
>>>> OK, the situation is 0x01 is to control GPIO0:
>>>> 1. if I write (codec,0x01,0,AC_VERB_SET_GPIO_MASK,1) only; the result is
>>>> speaker not work.
>>>>
>>>> 2. if I write (codec,0x01,0,AC_VERB_SET_GPIO_DIRECTION,1) only; the
>>>> result is speaker not work.
>>>>
>>> Sure, GPIO must be always set mask, direction and data all together.
>>> The question is, when you set GPIO mask/dir/data, the speaker starts
>>> playing, and if set to zero (e.g. only data), the speaker is muted?
>> JOEY: I tried set data to 0 or 1 doesn't influence. when I set mask&
>> dir to 1, speaker starts to work and to 0 speaker muted while headphone
>> works if headphone plugged in.
> There is something wrong in tests. The direction bit controls only
> the direction, so yes, it must match with the value the hardware
> expected. Otherwise it won't work, thus it's turned off.
>
>>>> 3. If I write step 1& 2 together, speaker works when I reboot.
>>> Then GPIO is likely an external amp control.
>> JOEY: YES.
>>>> 4. Then If I plugged in the headphone, the headphone doesn't work. It
>>>> only works when I write
>>>> (codec,0x0F,0,AC_VERB_SET_PIN_WIDGET_CONTROL,PIN_HP).
>>> This is normal.
>> JOEY: If I don't modify model=will. And headphone can play even without
>> set AC_VERB_SET_PIN_WIDGET_CONTROL to PIN_HP. Of course, automute
>> doesn't work as there is function implemented.
> OK, this is because of model=will strange things.
>
>>>> 5. From step 3& 4, it's similar for cases that I reboot with headphone
>>>> plugged in. That is, if I remove headphone, speaker doesn't work
>>>> automatically. If I write
>>>> (codec,0x0F,0,AC_VERB_SET_PIN_WIDGET_CONTROL,PIN_OUT), the
>>>> auto-detection function works well can switch speaker/headphone
>>>> automatically.
>>> That's odd. If you don't change from PIN_HP, doesn't the unsolicited
>>> event work?
>> JOEY: the unsolicited works from the register I read also from the
>> printk I previous added. But the audio path doesn't switch between
>> speaker and headphone. I don't know why. It can works manually if I send
>> any hda-verb command to codec, like hda-verb /dev/snd/hwC0D0 0x0F 0xF09
>> 0x0; I think perhaps there needs to be some delay. But I wait seconds
>> and it doesn't switch. Then if I run any hda-verb command, it will then
>> switch.
>> Then after I change from PIN_HP or from PIN_OUT, the automute (actually
>> audio path switch) works.
> Is the effect only with this pin? In other words, if you change the
> pin control value of other pin, no similar effect?
>
>>> Another question is, when you set PIN_WIDGET_CONTROL on the speaker
>>> pin (not sure which one is) to 0x00, does it mute the speaker, too?
>> JOEY: No, it doesn't mute the speaker. To mute the speaker, I just need
>> to set 0 to dir or mask. Then audio path is to headphone.
> And you are sure that it's the right pin? Which pin did you test?
>
> The pin-control doesn't always turn off the output in some cases.
> But, we'd need to be sure whether we are looking at the right one.
>
>
> thanks,
>
> Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-15 14:45 ` joey.jiaojg
@ 2012-02-15 15:04 ` Takashi Iwai
2012-02-16 2:04 ` Joey Jiao
0 siblings, 1 reply; 23+ messages in thread
From: Takashi Iwai @ 2012-02-15 15:04 UTC (permalink / raw)
To: joey.jiaojg; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
At Wed, 15 Feb 2012 22:45:27 +0800,
joey.jiaojg wrote:
>
> I think the only question below is about the automute, right?
Not really. The most important thing is to understand what's doing
what. Since your code can't be applied any longer at all to the
latest code tree because of the fundamental code rewrite, we need to
do it right.
So, please check the following:
1. Does any pin correspond to the speaker output? Try to change the
pin control of each pin between 0x10 and 0x19 via hda-verb while
the speaker output is active. Does any pin change the speaker
output?
2. Plug your headphone. Now the speaker is muted with your patch.
What happens when you run like below?
hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_MASK 1
hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DIR 1
hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 1
Does the speaker starts playing again? Then, what happens now
with:
hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 0
??
Takashi
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-15 15:04 ` Takashi Iwai
@ 2012-02-16 2:04 ` Joey Jiao
2012-02-16 3:41 ` joey.jiaojg
2012-02-16 9:35 ` Takashi Iwai
0 siblings, 2 replies; 23+ messages in thread
From: Joey Jiao @ 2012-02-16 2:04 UTC (permalink / raw)
To: Takashi Iwai; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
1. I changed to model=will to test without headphone
hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0xC0 [NID=0x0F, 0x10~0x19, 0x1B]
Result: for sure not work as GPIO not open
2. I changed to model=b1900 to test without headphone
hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0xC0
Result: speaker still works. It's for sure.
3. Then same condition as step 2 but change 0xC0 to 0x0
hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0x0
Result: speaker doesn't work only when NID=0x0F; then I tried
param=0x40 and 0x80, when param=0x40, speaker works while param=0x80,
speaker doesn't work.
4. Then I plugged in headphone.
Now the param =0x40 for NID=0x0F.
Result: Headphone works while speaker muted.
Then I changed param=0x80. (same result when param=0xC0)
Result: Headphone still works while speaker muted.
5. Then I reboot with headphone plugged in to test your step 2.
YES, now the speaker muted while headphone works.
Then I do your cmds:
hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 1
Result: headphone works, speaker muted
hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 1
Result: headphone muted, speaker works
hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 1
Result: headphone works, speaker muted
hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0
Result: headphone muted, speaker works.
Please noted the last two cmds, it's strange but it's true.
Any additional tests?
在 2012年2月15日 下午11:04,Takashi Iwai <tiwai@suse.de> 写道:
> At Wed, 15 Feb 2012 22:45:27 +0800,
> joey.jiaojg wrote:
>>
>> I think the only question below is about the automute, right?
>
> Not really. The most important thing is to understand what's doing
> what. Since your code can't be applied any longer at all to the
> latest code tree because of the fundamental code rewrite, we need to
> do it right.
>
> So, please check the following:
>
> 1. Does any pin correspond to the speaker output? Try to change the
> pin control of each pin between 0x10 and 0x19 via hda-verb while
> the speaker output is active. Does any pin change the speaker
> output?
>
> 2. Plug your headphone. Now the speaker is muted with your patch.
> What happens when you run like below?
>
> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_MASK 1
> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DIR 1
> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 1
>
> Does the speaker starts playing again? Then, what happens now
> with:
>
> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 0
>
> ??
>
>
> Takashi
--
-Joey Jiao
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-16 2:04 ` Joey Jiao
@ 2012-02-16 3:41 ` joey.jiaojg
2012-02-16 9:36 ` Takashi Iwai
2012-02-16 9:35 ` Takashi Iwai
1 sibling, 1 reply; 23+ messages in thread
From: joey.jiaojg @ 2012-02-16 3:41 UTC (permalink / raw)
To: Takashi Iwai; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
And now this code works:
/* toggle speaker-output according to the hp-jack state */
static void alc260_b1900_automute(struct hda_codec *codec)
{
unsigned int present;
present = snd_hda_jack_detect(codec, 0x0f);
if (present) {
snd_hda_codec_write_cache(codec, 0x01, 0,
AC_VERB_SET_GPIO_MASK, 0);
snd_hda_codec_write_cache(codec, 0x01, 0,
AC_VERB_SET_GPIO_DIRECTION,
0);
snd_hda_codec_write_cache(codec, 0x01, 0,
AC_VERB_SET_GPIO_DATA,
1);
} else {
snd_hda_codec_write_cache(codec, 0x01, 0,
AC_VERB_SET_GPIO_MASK, 1);
snd_hda_codec_write_cache(codec, 0x01, 0,
AC_VERB_SET_GPIO_DIRECTION,
1);
snd_hda_codec_write_cache(codec, 0x01, 0,
AC_VERB_SET_GPIO_DATA,
0);
}
}
On 2012年02月16日 10:04, Joey Jiao wrote:
> 1. I changed to model=will to test without headphone
> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0xC0 [NID=0x0F, 0x10~0x19, 0x1B]
> Result: for sure not work as GPIO not open
> 2. I changed to model=b1900 to test without headphone
> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0xC0
> Result: speaker still works. It's for sure.
> 3. Then same condition as step 2 but change 0xC0 to 0x0
> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0x0
> Result: speaker doesn't work only when NID=0x0F; then I tried
> param=0x40 and 0x80, when param=0x40, speaker works while param=0x80,
> speaker doesn't work.
> 4. Then I plugged in headphone.
> Now the param =0x40 for NID=0x0F.
> Result: Headphone works while speaker muted.
> Then I changed param=0x80. (same result when param=0xC0)
> Result: Headphone still works while speaker muted.
> 5. Then I reboot with headphone plugged in to test your step 2.
> YES, now the speaker muted while headphone works.
> Then I do your cmds:
> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 1
> Result: headphone works, speaker muted
> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 1
> Result: headphone muted, speaker works
> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 1
> Result: headphone works, speaker muted
> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0
> Result: headphone muted, speaker works.
> Please noted the last two cmds, it's strange but it's true.
>
> Any additional tests?
>
> 在 2012年2月15日 下午11:04,Takashi Iwai<tiwai@suse.de> 写道:
>> At Wed, 15 Feb 2012 22:45:27 +0800,
>> joey.jiaojg wrote:
>>> I think the only question below is about the automute, right?
>> Not really. The most important thing is to understand what's doing
>> what. Since your code can't be applied any longer at all to the
>> latest code tree because of the fundamental code rewrite, we need to
>> do it right.
>>
>> So, please check the following:
>>
>> 1. Does any pin correspond to the speaker output? Try to change the
>> pin control of each pin between 0x10 and 0x19 via hda-verb while
>> the speaker output is active. Does any pin change the speaker
>> output?
>>
>> 2. Plug your headphone. Now the speaker is muted with your patch.
>> What happens when you run like below?
>>
>> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_MASK 1
>> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DIR 1
>> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 1
>>
>> Does the speaker starts playing again? Then, what happens now
>> with:
>>
>> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 0
>>
>> ??
>>
>>
>> Takashi
>
>
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-16 2:04 ` Joey Jiao
2012-02-16 3:41 ` joey.jiaojg
@ 2012-02-16 9:35 ` Takashi Iwai
2012-02-16 9:38 ` joey.jiaojg
1 sibling, 1 reply; 23+ messages in thread
From: Takashi Iwai @ 2012-02-16 9:35 UTC (permalink / raw)
To: Joey Jiao; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
At Thu, 16 Feb 2012 10:04:09 +0800,
Joey Jiao wrote:
>
> 1. I changed to model=will to test without headphone
> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0xC0 [NID=0x0F, 0x10~0x19, 0x1B]
> Result: for sure not work as GPIO not open
> 2. I changed to model=b1900 to test without headphone
> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0xC0
> Result: speaker still works. It's for sure.
> 3. Then same condition as step 2 but change 0xC0 to 0x0
> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0x0
> Result: speaker doesn't work only when NID=0x0F; then I tried
> param=0x40 and 0x80, when param=0x40, speaker works while param=0x80,
> speaker doesn't work.
> 4. Then I plugged in headphone.
> Now the param =0x40 for NID=0x0F.
> Result: Headphone works while speaker muted.
> Then I changed param=0x80. (same result when param=0xC0)
> Result: Headphone still works while speaker muted.
> 5. Then I reboot with headphone plugged in to test your step 2.
> YES, now the speaker muted while headphone works.
> Then I do your cmds:
> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 1
> Result: headphone works, speaker muted
> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 1
> Result: headphone muted, speaker works
> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 1
> Result: headphone works, speaker muted
> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0
> Result: headphone muted, speaker works.
And, if you run again
hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 1
I guess the speaker will be muted and the headphone start working
again, right?
> Please noted the last two cmds, it's strange but it's true.
If my guess is correct, it's not strange at all. Your machine shares
the same pin for both the headphone and the speaker outputs, but
switches between them just by GPIO-out bit 0. It's _not_ the master
amp.
In addition, the HP-amp bit (0x80) of 0x0f seems controlling the
speaker amp.
Takashi
>
> Any additional tests?
>
> 在 2012年2月15日 下午11:04,Takashi Iwai <tiwai@suse.de> 写道:
> > At Wed, 15 Feb 2012 22:45:27 +0800,
> > joey.jiaojg wrote:
> >>
> >> I think the only question below is about the automute, right?
> >
> > Not really. The most important thing is to understand what's doing
> > what. Since your code can't be applied any longer at all to the
> > latest code tree because of the fundamental code rewrite, we need to
> > do it right.
> >
> > So, please check the following:
> >
> > 1. Does any pin correspond to the speaker output? Try to change the
> > pin control of each pin between 0x10 and 0x19 via hda-verb while
> > the speaker output is active. Does any pin change the speaker
> > output?
> >
> > 2. Plug your headphone. Now the speaker is muted with your patch.
> > What happens when you run like below?
> >
> > hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_MASK 1
> > hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DIR 1
> > hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 1
> >
> > Does the speaker starts playing again? Then, what happens now
> > with:
> >
> > hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 0
> >
> > ??
> >
> >
> > Takashi
>
>
>
> --
> -Joey Jiao
>
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-16 3:41 ` joey.jiaojg
@ 2012-02-16 9:36 ` Takashi Iwai
0 siblings, 0 replies; 23+ messages in thread
From: Takashi Iwai @ 2012-02-16 9:36 UTC (permalink / raw)
To: joey.jiaojg; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
At Thu, 16 Feb 2012 11:41:10 +0800,
joey.jiaojg wrote:
>
> And now this code works:
> /* toggle speaker-output according to the hp-jack state */
> static void alc260_b1900_automute(struct hda_codec *codec)
> {
> unsigned int present;
>
> present = snd_hda_jack_detect(codec, 0x0f);
> if (present) {
> snd_hda_codec_write_cache(codec, 0x01, 0,
> AC_VERB_SET_GPIO_MASK, 0);
> snd_hda_codec_write_cache(codec, 0x01, 0,
> AC_VERB_SET_GPIO_DIRECTION,
> 0);
> snd_hda_codec_write_cache(codec, 0x01, 0,
> AC_VERB_SET_GPIO_DATA,
> 1);
> } else {
> snd_hda_codec_write_cache(codec, 0x01, 0,
> AC_VERB_SET_GPIO_MASK, 1);
> snd_hda_codec_write_cache(codec, 0x01, 0,
> AC_VERB_SET_GPIO_DIRECTION,
> 1);
> snd_hda_codec_write_cache(codec, 0x01, 0,
> AC_VERB_SET_GPIO_DATA,
> 0);
> }
> }
The GPIO_MASK and GPIO_DIRECTION need to be set only once in the init
verbs, both to 1. Then you just need to flip GPIO_DATA between 0 and
1 in the unsol event handler.
Takashi
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-16 9:35 ` Takashi Iwai
@ 2012-02-16 9:38 ` joey.jiaojg
2012-02-16 9:41 ` Takashi Iwai
0 siblings, 1 reply; 23+ messages in thread
From: joey.jiaojg @ 2012-02-16 9:38 UTC (permalink / raw)
To: Takashi Iwai; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
YES, you are right on the assumption. I tried again many times of
SET_GPIO_DATA between 0/1, speaker/headphone switches.
So is possible to merge into next ALSA release?
On 2012年02月16日 17:35, Takashi Iwai wrote:
> At Thu, 16 Feb 2012 10:04:09 +0800,
> Joey Jiao wrote:
>> 1. I changed to model=will to test without headphone
>> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0xC0 [NID=0x0F, 0x10~0x19, 0x1B]
>> Result: for sure not work as GPIO not open
>> 2. I changed to model=b1900 to test without headphone
>> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0xC0
>> Result: speaker still works. It's for sure.
>> 3. Then same condition as step 2 but change 0xC0 to 0x0
>> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0x0
>> Result: speaker doesn't work only when NID=0x0F; then I tried
>> param=0x40 and 0x80, when param=0x40, speaker works while param=0x80,
>> speaker doesn't work.
>> 4. Then I plugged in headphone.
>> Now the param =0x40 for NID=0x0F.
>> Result: Headphone works while speaker muted.
>> Then I changed param=0x80. (same result when param=0xC0)
>> Result: Headphone still works while speaker muted.
>> 5. Then I reboot with headphone plugged in to test your step 2.
>> YES, now the speaker muted while headphone works.
>> Then I do your cmds:
>> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 1
>> Result: headphone works, speaker muted
>> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 1
>> Result: headphone muted, speaker works
>> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 1
>> Result: headphone works, speaker muted
>> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0
>> Result: headphone muted, speaker works.
> And, if you run again
> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 1
> I guess the speaker will be muted and the headphone start working
> again, right?
>
>> Please noted the last two cmds, it's strange but it's true.
> If my guess is correct, it's not strange at all. Your machine shares
> the same pin for both the headphone and the speaker outputs, but
> switches between them just by GPIO-out bit 0. It's _not_ the master
> amp.
>
> In addition, the HP-amp bit (0x80) of 0x0f seems controlling the
> speaker amp.
>
>
> Takashi
>
>> Any additional tests?
>>
>> 在 2012年2月15日 下午11:04,Takashi Iwai<tiwai@suse.de> 写道:
>>> At Wed, 15 Feb 2012 22:45:27 +0800,
>>> joey.jiaojg wrote:
>>>> I think the only question below is about the automute, right?
>>> Not really. The most important thing is to understand what's doing
>>> what. Since your code can't be applied any longer at all to the
>>> latest code tree because of the fundamental code rewrite, we need to
>>> do it right.
>>>
>>> So, please check the following:
>>>
>>> 1. Does any pin correspond to the speaker output? Try to change the
>>> pin control of each pin between 0x10 and 0x19 via hda-verb while
>>> the speaker output is active. Does any pin change the speaker
>>> output?
>>>
>>> 2. Plug your headphone. Now the speaker is muted with your patch.
>>> What happens when you run like below?
>>>
>>> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_MASK 1
>>> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DIR 1
>>> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 1
>>>
>>> Does the speaker starts playing again? Then, what happens now
>>> with:
>>>
>>> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 0
>>>
>>> ??
>>>
>>>
>>> Takashi
>>
>>
>> --
>> -Joey Jiao
>>
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-16 9:38 ` joey.jiaojg
@ 2012-02-16 9:41 ` Takashi Iwai
2012-02-16 9:42 ` Takashi Iwai
0 siblings, 1 reply; 23+ messages in thread
From: Takashi Iwai @ 2012-02-16 9:41 UTC (permalink / raw)
To: joey.jiaojg; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
At Thu, 16 Feb 2012 17:38:33 +0800,
joey.jiaojg wrote:
>
> YES, you are right on the assumption. I tried again many times of
> SET_GPIO_DATA between 0/1, speaker/headphone switches.
> So is possible to merge into next ALSA release?
Not ready for "merge". As mentioned, your patch can't be applied to
the latest tree.
I'll work on the better implementation of a quirk for the auto-parser
later.
Takashi
> On 2012年02月16日 17:35, Takashi Iwai wrote:
>
> > At Thu, 16 Feb 2012 10:04:09 +0800,
> > Joey Jiao wrote:
> >> 1. I changed to model=will to test without headphone
> >> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0xC0 [NID=0x0F, 0x10~0x19, 0x1B]
> >> Result: for sure not work as GPIO not open
> >> 2. I changed to model=b1900 to test without headphone
> >> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0xC0
> >> Result: speaker still works. It's for sure.
> >> 3. Then same condition as step 2 but change 0xC0 to 0x0
> >> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0x0
> >> Result: speaker doesn't work only when NID=0x0F; then I tried
> >> param=0x40 and 0x80, when param=0x40, speaker works while param=0x80,
> >> speaker doesn't work.
> >> 4. Then I plugged in headphone.
> >> Now the param =0x40 for NID=0x0F.
> >> Result: Headphone works while speaker muted.
> >> Then I changed param=0x80. (same result when param=0xC0)
> >> Result: Headphone still works while speaker muted.
> >> 5. Then I reboot with headphone plugged in to test your step 2.
> >> YES, now the speaker muted while headphone works.
> >> Then I do your cmds:
> >> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 1
> >> Result: headphone works, speaker muted
> >> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 1
> >> Result: headphone muted, speaker works
> >> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 1
> >> Result: headphone works, speaker muted
> >> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0
> >> Result: headphone muted, speaker works.
> > And, if you run again
> > hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 1
> > I guess the speaker will be muted and the headphone start working
> > again, right?
> >
> >> Please noted the last two cmds, it's strange but it's true.
> > If my guess is correct, it's not strange at all. Your machine shares
> > the same pin for both the headphone and the speaker outputs, but
> > switches between them just by GPIO-out bit 0. It's _not_ the master
> > amp.
> >
> > In addition, the HP-amp bit (0x80) of 0x0f seems controlling the
> > speaker amp.
> >
> >
> > Takashi
> >
> >> Any additional tests?
> >>
> >> 在 2012年2月15日 下午11:04,Takashi Iwai<tiwai@suse.de> 写道:
> >>> At Wed, 15 Feb 2012 22:45:27 +0800,
> >>> joey.jiaojg wrote:
> >>>> I think the only question below is about the automute, right?
> >>> Not really. The most important thing is to understand what's doing
> >>> what. Since your code can't be applied any longer at all to the
> >>> latest code tree because of the fundamental code rewrite, we need to
> >>> do it right.
> >>>
> >>> So, please check the following:
> >>>
> >>> 1. Does any pin correspond to the speaker output? Try to change the
> >>> pin control of each pin between 0x10 and 0x19 via hda-verb while
> >>> the speaker output is active. Does any pin change the speaker
> >>> output?
> >>>
> >>> 2. Plug your headphone. Now the speaker is muted with your patch.
> >>> What happens when you run like below?
> >>>
> >>> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_MASK 1
> >>> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DIR 1
> >>> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 1
> >>>
> >>> Does the speaker starts playing again? Then, what happens now
> >>> with:
> >>>
> >>> hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 0
> >>>
> >>> ??
> >>>
> >>>
> >>> Takashi
> >>
> >>
> >> --
> >> -Joey Jiao
> >>
>
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-16 9:41 ` Takashi Iwai
@ 2012-02-16 9:42 ` Takashi Iwai
2012-02-16 9:52 ` joey.jiaojg
0 siblings, 1 reply; 23+ messages in thread
From: Takashi Iwai @ 2012-02-16 9:42 UTC (permalink / raw)
To: joey.jiaojg; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
At Thu, 16 Feb 2012 10:41:32 +0100,
Takashi Iwai wrote:
>
> At Thu, 16 Feb 2012 17:38:33 +0800,
> joey.jiaojg wrote:
> >
> > YES, you are right on the assumption. I tried again many times of
> > SET_GPIO_DATA between 0/1, speaker/headphone switches.
> > So is possible to merge into next ALSA release?
>
> Not ready for "merge". As mentioned, your patch can't be applied to
> the latest tree.
>
> I'll work on the better implementation of a quirk for the auto-parser
> later.
Oh, for that, could you give alsa-info.sh output?
Attach the output file (don't paste) obtained with --no-upload
option.
thanks,
Takashi
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
2012-02-16 9:42 ` Takashi Iwai
@ 2012-02-16 9:52 ` joey.jiaojg
0 siblings, 0 replies; 23+ messages in thread
From: joey.jiaojg @ 2012-02-16 9:52 UTC (permalink / raw)
To: Takashi Iwai; +Cc: Raymond Yau, pshou, ALSA Development Mailing List, kailang
[-- Attachment #1: Type: text/plain, Size: 1741 bytes --]
Good news, anyway.
Attached alsa-info.txt with model=b1900.
And I followed to use only data for automute while set_gpio inside
init_verb; which works. Below is the code (attached diff):
/* toggle speaker-output according to the hp-jack state */
static void alc260_b1900_automute(struct hda_codec *codec)
{
unsigned int present;
present = snd_hda_jack_detect(codec, 0x0f);
if (present) {
snd_hda_codec_write_cache(codec, 0x01, 0,
AC_VERB_SET_GPIO_DATA,
1);
} else {
snd_hda_codec_write_cache(codec, 0x01, 0,
AC_VERB_SET_GPIO_DATA,
0);
}
}
static const struct hda_verb alc260_b1900_verbs[] = {
{0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
{0x0b, AC_VERB_SET_CONNECT_SEL, 0x00},
{0x0d, AC_VERB_SET_CONNECT_SEL, 0x00},
{0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
{0x1a, AC_VERB_SET_COEF_INDEX, 0x07},
{0x1a, AC_VERB_SET_PROC_COEF, 0x3040},
{0x01, AC_VERB_SET_GPIO_MASK, 0x01},
{0x01, AC_VERB_SET_GPIO_DIRECTION, 0x01},
{0x0f, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT},
{}
};
On 2012年02月16日 17:42, Takashi Iwai wrote:
> At Thu, 16 Feb 2012 10:41:32 +0100,
> Takashi Iwai wrote:
>> At Thu, 16 Feb 2012 17:38:33 +0800,
>> joey.jiaojg wrote:
>>> YES, you are right on the assumption. I tried again many times of
>>> SET_GPIO_DATA between 0/1, speaker/headphone switches.
>>> So is possible to merge into next ALSA release?
>> Not ready for "merge". As mentioned, your patch can't be applied to
>> the latest tree.
>>
>> I'll work on the better implementation of a quirk for the auto-parser
>> later.
> Oh, for that, could you give alsa-info.sh output?
> Attach the output file (don't paste) obtained with --no-upload
> option.
>
>
> thanks,
>
> Takashi
[-- Attachment #2: alsa-info.txt.43zkD2qbEy --]
[-- Type: text/plain, Size: 24251 bytes --]
upload=true&script=true&cardinfo=
!!################################
!!ALSA Information Script v 0.4.60
!!################################
!!Script ran on: Thu Feb 16 09:48:25 UTC 2012
!!Linux Distribution
!!------------------
Ubuntu 11.10 \n \l DISTRIB_ID=Ubuntu DISTRIB_DESCRIPTION="Ubuntu 11.10"
!!DMI Information
!!---------------
Manufacturer: Hewlett-Packard
Product Name: Presario B1900 (RR178PA#AB2)
Product Version: F.0A
!!Kernel Information
!!------------------
Kernel release: 3.0.13tiny
Operating System: GNU/Linux
Architecture: i686
Processor: i686
SMP Enabled: Yes
!!ALSA Version
!!------------
Driver version: 1.0.24
Library version: 1.0.25
Utilities version: 1.0.24.2
!!Loaded ALSA modules
!!-------------------
snd_hda_intel
!!Sound Servers on this system
!!----------------------------
Pulseaudio:
Installed - Yes (/usr/bin/pulseaudio)
Running - Yes
ESound Daemon:
Installed - Yes (/usr/bin/esd)
Running - No
!!Soundcards recognised by ALSA
!!-----------------------------
0 [SB ]: HDA-Intel - HDA ATI SB
HDA ATI SB at 0xc0500000 irq 42
!!PCI Soundcards installed in the system
!!--------------------------------------
00:14.2 Audio device: ATI Technologies Inc IXP SB4x0 High Definition Audio Controller (rev 01)
!!Advanced information - PCI Vendor/Device/Subsystem ID's
!!--------------------------------------------------------
00:14.2 0403: 1002:437b (rev 01)
Subsystem: 103c:30ba
!!Modprobe options (Sound related)
!!--------------------------------
snd-atiixp-modem: index=-2
snd-intel8x0m: index=-2
snd-via82xx-modem: index=-2
snd-usb-audio: index=-2
snd-usb-caiaq: index=-2
snd-usb-ua101: index=-2
snd-usb-us122l: index=-2
snd-usb-usx2y: index=-2
snd-cmipci: mpu_port=0x330 fm_port=0x388
snd-pcsp: index=-2
snd-usb-audio: index=-2
snd-hda-intel: model=b1900
!!Loaded sound module options
!!--------------------------
!!Module: snd_hda_intel
bdl_pos_adj : 32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
beep_mode : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
enable : Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y
enable_msi : -1
id : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null)
index : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
model : b1900,(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null)
patch : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null)
position_fix : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
power_save : 0
power_save_controller : Y
probe_mask : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
probe_only : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
single_cmd : N
!!HDA-Intel Codec information
!!---------------------------
--startcollapse--
Codec: Realtek ALC260
Address: 0
AFG Function Id: 0x1 (unsol 1)
Vendor Id: 0x10ec0260
Subsystem Id: 0x103c0000
Revision Id: 0x100400
No Modem Function Group found
Default PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0xe]: 16 20 24
formats [0x1]: PCM
Default Amp-In caps: N/A
Default Amp-Out caps: N/A
GPIO: io=4, o=0, i=0, unsolicited=1, wake=0
IO[0]: enable=1, dir=1, wake=0, sticky=0, data=0, unsol=0
IO[1]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
IO[2]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
IO[3]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
Node 0x02 [Audio Output] wcaps 0x11: Stereo
Device: name="ALC260 Analog", type="Audio", device=0
Converter: stream=5, channel=0
PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0xe]: 16 20 24
formats [0x1]: PCM
Node 0x03 [Audio Output] wcaps 0x211: Stereo Digital
Control: name="IEC958 Playback Con Mask", index=0, device=0
Control: name="IEC958 Playback Pro Mask", index=0, device=0
Control: name="IEC958 Playback Default", index=0, device=0
Control: name="IEC958 Playback Switch", index=0, device=0
Control: name="IEC958 Default PCM Playback Switch", index=0, device=0
Device: name="ALC260 Digital", type="SPDIF", device=1
Converter: stream=8, channel=0
Digital: Enabled
Digital category: 0x0
PCM:
rates [0x560]: 44100 48000 96000 192000
bits [0x1e]: 16 20 24 32
formats [0x1]: PCM
Node 0x04 [Audio Input] wcaps 0x10011b: Stereo Amp-In
Control: name="Input Source", index=0, device=0
Control: name="Capture Switch", index=0, device=0
Control: name="Capture Volume", index=0, device=0
Device: name="ALC260 Analog", type="Audio", device=0
Amp-In caps: ofs=0x00, nsteps=0x23, stepsize=0x03, mute=1
Amp-In vals: [0x17 0x17] [0x17 0x17] [0x17 0x17] [0x17 0x17] [0x17 0x17] [0x17 0x17] [0x17 0x17]
Converter: stream=1, channel=0
SDI-Select: 0
PCM:
rates [0x160]: 44100 48000 96000
bits [0x6]: 16 20
formats [0x1]: PCM
Connection: 7
0x12 0x13 0x14* 0x15 0x16 0x0f 0x10
Node 0x05 [Audio Input] wcaps 0x10011b: Stereo Amp-In
Amp-In caps: ofs=0x00, nsteps=0x23, stepsize=0x03, mute=1
Amp-In vals: [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
Converter: stream=0, channel=0
SDI-Select: 0
PCM:
rates [0x160]: 44100 48000 96000
bits [0x6]: 16 20
formats [0x1]: PCM
Connection: 8
0x12 0x13 0x14* 0x15 0x16 0x07 0x0f 0x10
Node 0x06 [Audio Input] wcaps 0x100391: Stereo Digital
Converter: stream=0, channel=0
SDI-Select: 0
Digital:
Digital category: 0x0
PCM:
rates [0x160]: 44100 48000 96000
bits [0x1e]: 16 20 24 32
formats [0x1]: PCM
Unsolicited: tag=00, enabled=0
Connection: 1
0x19
Node 0x07 [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
Control: name="Mic Playback Volume", index=0, device=0
ControlAmp: chs=3, dir=In, idx=0, ofs=0
Control: name="Mic Playback Switch", index=0, device=0
ControlAmp: chs=3, dir=In, idx=0, ofs=0
Control: name="Line Playback Volume", index=0, device=0
ControlAmp: chs=3, dir=In, idx=2, ofs=0
Control: name="Line Playback Switch", index=0, device=0
ControlAmp: chs=3, dir=In, idx=2, ofs=0
Control: name="CD Playback Volume", index=0, device=0
ControlAmp: chs=3, dir=In, idx=4, ofs=0
Control: name="CD Playback Switch", index=0, device=0
ControlAmp: chs=3, dir=In, idx=4, ofs=0
Control: name="Beep Playback Volume", index=0, device=0
ControlAmp: chs=3, dir=In, idx=5, ofs=0
Control: name="Beep Playback Switch", index=0, device=0
ControlAmp: chs=3, dir=In, idx=5, ofs=0
Amp-In caps: ofs=0x23, nsteps=0x41, stepsize=0x03, mute=1
Amp-In vals: [0x33 0x33] [0x80 0x80] [0x3b 0x3b] [0x80 0x80] [0x33 0x33] [0x00 0x00] [0xa3 0xa3] [0xa3 0xa3]
Connection: 8
0x12 0x13 0x14 0x15 0x16 0x17 0x0f 0x10
Node 0x08 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
Control: name="Master Playback Volume", index=0, device=0
ControlAmp: chs=3, dir=Out, idx=0, ofs=0
Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-In vals: [0x00 0x00] [0x00 0x00]
Amp-Out caps: ofs=0x40, nsteps=0x40, stepsize=0x03, mute=0
Amp-Out vals: [0x2f 0x2f]
Connection: 2
0x02 0x07
Node 0x09 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-In vals: [0x80 0x80] [0x80 0x80]
Amp-Out caps: ofs=0x40, nsteps=0x40, stepsize=0x03, mute=0
Amp-Out vals: [0x00 0x00]
Connection: 2
0x02 0x07
Node 0x0a [Audio Mixer] wcaps 0x20010e: Mono Amp-In Amp-Out
Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-In vals: [0x80] [0x80]
Amp-Out caps: ofs=0x23, nsteps=0x41, stepsize=0x03, mute=0
Amp-Out vals: [0x00]
Connection: 2
0x02 0x07
Node 0x0b [Audio Selector] wcaps 0x300101: Stereo
Connection: 2
0x08* 0x09
Node 0x0c [Audio Selector] wcaps 0x300101: Stereo
Connection: 2
0x08* 0x09
Node 0x0d [Audio Selector] wcaps 0x300101: Stereo
Connection: 2
0x08* 0x09
Node 0x0e [Audio Selector] wcaps 0x300101: Stereo
Connection: 2
0x08* 0x09
Node 0x0f [Pin Complex] wcaps 0x40018d: Stereo Amp-Out
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x00 0x00]
Pincap 0x0001003f: IN OUT HP EAPD Detect Trigger ImpSense
EAPD 0x2: EAPD
Pin Default 0x01014110: [Jack] Line Out at Ext Rear
Conn = 1/8, Color = Green
DefAssociation = 0x1, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0xc0: OUT HP
Unsolicited: tag=04, enabled=1
Connection: 1
0x08
Node 0x10 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x00 0x00]
Pincap 0x0001003f: IN OUT HP EAPD Detect Trigger ImpSense
EAPD 0x2: EAPD
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0xc0: OUT HP
Unsolicited: tag=00, enabled=0
Connection: 1
0x09
Node 0x11 [Pin Complex] wcaps 0x40010c: Mono Amp-Out
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x00]
Pincap 0x00000010: OUT
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x40: OUT
Connection: 1
0x0a
Node 0x12 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out
Control: name="Mic Jack Mode", index=0, device=0
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x80 0x80]
Pincap 0x0000133f: IN OUT HP Detect Trigger ImpSense
Vref caps: HIZ 50 80
Pin Default 0x01a19c30: [Jack] Mic at Ext Rear
Conn = 1/8, Color = Pink
DefAssociation = 0x3, Sequence = 0x0
Pin-ctls: 0x21: IN VREF_50
Unsolicited: tag=00, enabled=0
Connection: 1
0x0b
Node 0x13 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x80 0x80]
Pincap 0x0000133f: IN OUT HP Detect Trigger ImpSense
Vref caps: HIZ 50 80
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x24: IN VREF_80
Unsolicited: tag=00, enabled=0
Connection: 1
0x0c
Node 0x14 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out
Control: name="Line Jack Mode", index=0, device=0
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x80 0x80]
Pincap 0x0000133f: IN OUT HP Detect Trigger ImpSense
Vref caps: HIZ 50 80
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x21: IN VREF_50
Unsolicited: tag=00, enabled=0
Connection: 1
0x0d
Node 0x15 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x00 0x00]
Pincap 0x0000133f: IN OUT HP Detect Trigger ImpSense
Vref caps: HIZ 50 80
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x40: OUT VREF_HIZ
Unsolicited: tag=00, enabled=0
Connection: 1
0x0e
Node 0x16 [Pin Complex] wcaps 0x400001: Stereo
Pincap 0x00000020: IN
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x00:
Node 0x17 [Pin Complex] wcaps 0x400000: Mono
Pincap 0x00000020: IN
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x00:
Node 0x18 [Pin Complex] wcaps 0x400380: Mono Digital
Pincap 0x00000014: OUT Detect
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x00:
Unsolicited: tag=00, enabled=0
Connection: 1
0x03
Node 0x19 [Pin Complex] wcaps 0x400280: Mono Digital
Pincap 0x00000024: IN Detect
Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x00:
Unsolicited: tag=00, enabled=0
Node 0x1a [Vendor Defined Widget] wcaps 0xf00040: Mono
Processing caps: benign=0, ncoeff=13
Node 0x1b [Volume Knob Widget] wcaps 0x600080: Mono
Volume-Knob: delta=0, steps=64, direct=0, val=0
Unsolicited: tag=00, enabled=0
Connection: 0
Codec: Conexant ID 2bfa
Address: 1
MFG Function Id: 0x2 (unsol 1)
Vendor Id: 0x14f12bfa
Subsystem Id: 0x103c30ba
Revision Id: 0x90000
Modem Function Group: 0x2
--endcollapse--
!!ALSA Device nodes
!!-----------------
crw-rw----+ 1 root audio 116, 7 Feb 16 17:46 /dev/snd/controlC0
crw-rw----+ 1 root audio 116, 6 Feb 16 17:46 /dev/snd/hwC0D0
crw-rw----+ 1 root audio 116, 5 Feb 16 17:46 /dev/snd/hwC0D1
crw-rw----+ 1 root audio 116, 4 Feb 16 17:46 /dev/snd/pcmC0D0c
crw-rw----+ 1 root audio 116, 3 Feb 16 17:48 /dev/snd/pcmC0D0p
crw-rw----+ 1 root audio 116, 2 Feb 16 17:46 /dev/snd/pcmC0D1p
crw-rw----+ 1 root audio 116, 1 Feb 16 17:46 /dev/snd/seq
crw-rw----+ 1 root audio 116, 33 Feb 16 17:46 /dev/snd/timer
/dev/snd/by-path:
total 0
drwxr-xr-x 2 root root 60 Feb 16 17:46 .
drwxr-xr-x 3 root root 220 Feb 16 17:46 ..
lrwxrwxrwx 1 root root 12 Feb 16 17:46 pci-0000:00:14.2 -> ../controlC0
!!Aplay/Arecord output
!!------------
APLAY
**** List of PLAYBACK Hardware Devices ****
card 0: SB [HDA ATI SB], device 0: ALC260 Analog [ALC260 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: SB [HDA ATI SB], device 1: ALC260 Digital [ALC260 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
ARECORD
**** List of CAPTURE Hardware Devices ****
card 0: SB [HDA ATI SB], device 0: ALC260 Analog [ALC260 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
!!Amixer output
!!-------------
!!-------Mixer controls for card 0 [SB]
Card hw:0 'SB'/'HDA ATI SB at 0xc0500000 irq 42'
Mixer name : 'Realtek ALC260'
Components : 'HDA:10ec0260,103c0000,00100400 HDA:14f12bfa,103c30ba,00090000'
Controls : 22
Simple ctrls : 13
Simple mixer control 'Master',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 64
Mono:
Front Left: Playback 47 [73%] [-17.00dB] [on]
Front Right: Playback 47 [73%] [-17.00dB] [on]
Simple mixer control 'PCM',0
Capabilities: pvolume penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 255
Mono:
Front Left: Playback 255 [100%] [0.00dB]
Front Right: Playback 255 [100%] [0.00dB]
Simple mixer control 'Line',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 65
Mono:
Front Left: Playback 59 [91%] [24.00dB] [on]
Front Right: Playback 59 [91%] [24.00dB] [on]
Simple mixer control 'Line Jack Mode',0
Capabilities: enum
Items: 'Mic 50pc bias' 'Mic 80pc bias' 'Line in' 'Line out' 'Headphone out'
Item0: 'Mic 50pc bias'
Simple mixer control 'CD',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 65
Mono:
Front Left: Playback 51 [78%] [16.00dB] [on]
Front Right: Playback 51 [78%] [16.00dB] [on]
Simple mixer control 'Mic',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 65
Mono:
Front Left: Playback 51 [78%] [16.00dB] [on]
Front Right: Playback 51 [78%] [16.00dB] [on]
Simple mixer control 'Mic Jack Mode',0
Capabilities: enum
Items: 'Mic 50pc bias' 'Mic 80pc bias' 'Line in'
Item0: 'Mic 50pc bias'
Simple mixer control 'IEC958',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [on]
Simple mixer control 'IEC958 Default PCM',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [on]
Simple mixer control 'Beep',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 65
Mono:
Front Left: Playback 0 [0%] [-35.00dB] [on]
Front Right: Playback 0 [0%] [-35.00dB] [on]
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch penum
Capture channels: Front Left - Front Right
Limits: Capture 0 - 35
Front Left: Capture 23 [66%] [23.00dB] [on]
Front Right: Capture 23 [66%] [23.00dB] [on]
Simple mixer control 'Digital',0
Capabilities: cvolume penum
Capture channels: Front Left - Front Right
Limits: Capture 0 - 120
Front Left: Capture 60 [50%] [0.00dB]
Front Right: Capture 60 [50%] [0.00dB]
Simple mixer control 'Input Source',0
Capabilities: cenum
Items: 'Mic' 'Front Mic' 'Line' 'CD'
Item0: 'Mic'
!!Alsactl output
!!-------------
--startcollapse--
state.SB {
control.1 {
iface MIXER
name 'Master Playback Volume'
value.0 47
value.1 47
comment {
access 'read write'
type INTEGER
count 2
range '0 - 64'
dbmin -6400
dbmax 0
dbvalue.0 -1700
dbvalue.1 -1700
}
}
control.2 {
iface MIXER
name 'Master Playback Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.3 {
iface MIXER
name 'Mic Playback Volume'
value.0 51
value.1 51
comment {
access 'read write'
type INTEGER
count 2
range '0 - 65'
dbmin -3500
dbmax 3000
dbvalue.0 1600
dbvalue.1 1600
}
}
control.4 {
iface MIXER
name 'Mic Playback Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.5 {
iface MIXER
name 'Mic Jack Mode'
value 'Mic 50pc bias'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'Mic 50pc bias'
item.1 'Mic 80pc bias'
item.2 'Line in'
}
}
control.6 {
iface MIXER
name 'Line Playback Volume'
value.0 59
value.1 59
comment {
access 'read write'
type INTEGER
count 2
range '0 - 65'
dbmin -3500
dbmax 3000
dbvalue.0 2400
dbvalue.1 2400
}
}
control.7 {
iface MIXER
name 'Line Playback Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.8 {
iface MIXER
name 'Line Jack Mode'
value 'Mic 50pc bias'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'Mic 50pc bias'
item.1 'Mic 80pc bias'
item.2 'Line in'
item.3 'Line out'
item.4 'Headphone out'
}
}
control.9 {
iface MIXER
name 'CD Playback Volume'
value.0 51
value.1 51
comment {
access 'read write'
type INTEGER
count 2
range '0 - 65'
dbmin -3500
dbmax 3000
dbvalue.0 1600
dbvalue.1 1600
}
}
control.10 {
iface MIXER
name 'CD Playback Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.11 {
iface MIXER
name 'Capture Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.12 {
iface MIXER
name 'Capture Volume'
value.0 23
value.1 23
comment {
access 'read write'
type INTEGER
count 2
range '0 - 35'
dbmin 0
dbmax 3500
dbvalue.0 2300
dbvalue.1 2300
}
}
control.13 {
iface MIXER
name 'Input Source'
value Mic
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Mic
item.1 'Front Mic'
item.2 Line
item.3 CD
}
}
control.14 {
iface MIXER
name 'IEC958 Playback Con Mask'
value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.15 {
iface MIXER
name 'IEC958 Playback Pro Mask'
value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.16 {
iface MIXER
name 'IEC958 Playback Default'
value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access 'read write'
type IEC958
count 1
}
}
control.17 {
iface MIXER
name 'IEC958 Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.18 {
iface MIXER
name 'IEC958 Default PCM Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.19 {
iface MIXER
name 'Beep Playback Volume'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 65'
dbmin -3500
dbmax 3000
dbvalue.0 -3500
dbvalue.1 -3500
}
}
control.20 {
iface MIXER
name 'Beep Playback Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.21 {
iface MIXER
name 'PCM Playback Volume'
value.0 255
value.1 255
comment {
access 'read write user'
type INTEGER
count 2
range '0 - 255'
tlv '0000000100000008ffffec1400000014'
dbmin -5100
dbmax 0
dbvalue.0 0
dbvalue.1 0
}
}
control.22 {
iface MIXER
name 'Digital Capture Volume'
value.0 60
value.1 60
comment {
access 'read write user'
type INTEGER
count 2
range '0 - 120'
tlv '0000000100000008fffff44800000032'
dbmin -3000
dbmax 3000
dbvalue.0 0
dbvalue.1 0
}
}
}
--endcollapse--
!!All Loaded Modules
!!------------------
Module
rfcomm
bnep
pci_stub
vboxpci
vboxnetadp
vboxnetflt
vboxdrv
parport_pc
ppdev
binfmt_misc
snd_hda_codec_realtek
snd_hda_intel
snd_hda_codec
snd_hwdep
snd_pcm
arc4
snd_seq_midi
joydev
snd_rawmidi
b43
snd_seq_midi_event
radeon
ttm
drm_kms_helper
snd_seq
btusb
mac80211
drm
cfg80211
bluetooth
snd_timer
snd_seq_device
snd
video
i2c_algo_bit
r592
memstick
psmouse
serio_raw
soundcore
snd_page_alloc
shpchp
i2c_piix4
ssb
ati_agp
lp
parport
hid_a4tech
usbhid
firewire_ohci
sdhci_pci
8139too
firewire_core
hid
sdhci
8139cp
crc_itu_t
sata_sil
pata_atiixp
!!Sysfs Files
!!-----------
/sys/class/sound/hwC0D0/init_pin_configs:
0x0f 0x01014110
0x10 0x411111f0
0x11 0x411111f0
0x12 0x01a19c30
0x13 0x411111f0
0x14 0x411111f0
0x15 0x411111f0
0x16 0x411111f0
0x17 0x411111f0
0x18 0x411111f0
0x19 0x411111f0
/sys/class/sound/hwC0D0/driver_pin_configs:
/sys/class/sound/hwC0D0/user_pin_configs:
/sys/class/sound/hwC0D0/init_verbs:
/sys/class/sound/hwC0D1/init_pin_configs:
0x73 0x016a0000
/sys/class/sound/hwC0D1/driver_pin_configs:
/sys/class/sound/hwC0D1/user_pin_configs:
/sys/class/sound/hwC0D1/init_verbs:
!!ALSA/HDA dmesg
!!------------------
[ 18.903636] [drm] Initialized radeon 2.10.0 20080528 for 0000:01:05.0 on minor 0
[ 19.178879] HDA Intel 0000:00:14.2: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 19.179002] HDA Intel 0000:00:14.2: irq 42 for MSI/MSI-X
[ 19.706997] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
[-- Attachment #3: diff.txt --]
[-- Type: text/plain, Size: 3518 bytes --]
--- /usr/src/linux/sound/pci/hda/patch_realtek.c.bk 2012-02-14 22:04:36.351729299 +0800
+++ /usr/src/linux/sound/pci/hda/patch_realtek.c 2012-02-16 17:41:59.022196749 +0800
@@ -80,6 +80,7 @@ enum {
ALC260_WILL,
ALC260_REPLACER_672V,
ALC260_FAVORIT100,
+ ALC260_B1900,
#ifdef CONFIG_SND_DEBUG
ALC260_TEST,
#endif
@@ -1323,6 +1324,24 @@ static void alc_inithook(struct hda_code
alc_mic_automute(codec);
}
+/* toggle speaker-output according to the hp-jack state */
+static void alc260_b1900_automute(struct hda_codec *codec)
+{
+ unsigned int present;
+
+ present = snd_hda_jack_detect(codec, 0x0f);
+ if (present) {
+ snd_hda_codec_write_cache(codec, 0x01, 0,
+ AC_VERB_SET_GPIO_DATA,
+ 1);
+ } else {
+ snd_hda_codec_write_cache(codec, 0x01, 0,
+ AC_VERB_SET_GPIO_DATA,
+ 0);
+ }
+}
+
+
/* additional initialization for ALC888 variants */
static void alc888_coef_init(struct hda_codec *codec)
{
@@ -6899,6 +6918,20 @@ static const struct hda_verb alc260_will
{}
};
+static const struct hda_verb alc260_b1900_verbs[] = {
+ {0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
+ {0x0b, AC_VERB_SET_CONNECT_SEL, 0x00},
+ {0x0d, AC_VERB_SET_CONNECT_SEL, 0x00},
+ {0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
+ {0x1a, AC_VERB_SET_COEF_INDEX, 0x07},
+ {0x1a, AC_VERB_SET_PROC_COEF, 0x3040},
+ {0x01, AC_VERB_SET_GPIO_MASK, 0x01},
+ {0x01, AC_VERB_SET_GPIO_DIRECTION, 0x01},
+ {0x0f, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT},
+ {}
+};
+
+
static const struct hda_verb alc260_replacer_672v_verbs[] = {
{0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
{0x1a, AC_VERB_SET_COEF_INDEX, 0x07},
@@ -6941,6 +6974,12 @@ static void alc260_replacer_672v_unsol_e
alc260_replacer_672v_automute(codec);
}
+static void alc260_b1900_unsol_event(struct hda_codec *codec,
+ unsigned int res)
+{
+ if ((res >> 26) == ALC880_HP_EVENT)
+ alc260_b1900_automute(codec);
+}
static const struct hda_verb alc260_hp_dc7600_verbs[] = {
{0x05, AC_VERB_SET_CONNECT_SEL, 0x01},
{0x15, AC_VERB_SET_CONNECT_SEL, 0x01},
@@ -7431,6 +7470,7 @@ static const char * const alc260_models[
[ALC260_WILL] = "will",
[ALC260_REPLACER_672V] = "replacer",
[ALC260_FAVORIT100] = "favorit100",
+ [ALC260_B1900] = "b1900",
#ifdef CONFIG_SND_DEBUG
[ALC260_TEST] = "test",
#endif
@@ -7458,6 +7498,7 @@ static const struct snd_pci_quirk alc260
SND_PCI_QUIRK(0x152d, 0x0729, "CTL U553W", ALC260_BASIC),
SND_PCI_QUIRK(0x161f, 0x2057, "Replacer 672V", ALC260_REPLACER_672V),
SND_PCI_QUIRK(0x1631, 0xc017, "PB V7900", ALC260_WILL),
+ SND_PCI_QUIRK(0x103c, 0x007f, "HP COMPAQ", ALC260_B1900),
{}
};
@@ -7570,6 +7611,20 @@ static const struct alc_config_preset al
.channel_mode = alc260_modes,
.input_mux = &alc260_capture_source,
},
+ [ALC260_B1900] = {
+ .mixers = { alc260_will_mixer },
+ .init_verbs = { alc260_init_verbs, alc260_b1900_verbs },
+ .num_dacs = ARRAY_SIZE(alc260_dac_nids),
+ .dac_nids = alc260_dac_nids,
+ .num_adc_nids = ARRAY_SIZE(alc260_adc_nids),
+ .adc_nids = alc260_adc_nids,
+ .dig_out_nid = ALC260_DIGOUT_NID,
+ .num_channel_mode = ARRAY_SIZE(alc260_modes),
+ .channel_mode = alc260_modes,
+ .input_mux = &alc260_capture_source,
+ .unsol_event = alc260_b1900_unsol_event,
+ .init_hook = alc260_b1900_automute,
+ },
[ALC260_REPLACER_672V] = {
.mixers = { alc260_replacer_672v_mixer },
.init_verbs = { alc260_init_verbs, alc260_replacer_672v_verbs },
[-- Attachment #4: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2012-02-16 9:52 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <4F35C191.9080401@gmail.com>
2012-02-11 2:05 ` Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series Jonathan Woithe
2012-02-15 0:50 ` Raymond Yau
[not found] ` <CAKOmCvoS+tgvyPZJey4gfFFq=Uz01pnZY7YvGbxgQPpAzQ7KCA@mail.gmail.com>
2012-02-15 1:29 ` Joey Jiao
2012-02-15 2:49 ` Raymond Yau
[not found] ` <4F3B761D.4060306@gmail.com>
2012-02-15 9:22 ` Takashi Iwai
2012-02-15 9:31 ` joey.jiaojg
2012-02-15 9:40 ` Takashi Iwai
2012-02-15 9:45 ` joey.jiaojg
2012-02-15 9:58 ` Takashi Iwai
2012-02-15 10:06 ` joey.jiaojg
2012-02-15 10:11 ` Takashi Iwai
2012-02-15 13:14 ` joey.jiaojg
2012-02-15 13:21 ` Takashi Iwai
2012-02-15 14:45 ` joey.jiaojg
2012-02-15 15:04 ` Takashi Iwai
2012-02-16 2:04 ` Joey Jiao
2012-02-16 3:41 ` joey.jiaojg
2012-02-16 9:36 ` Takashi Iwai
2012-02-16 9:35 ` Takashi Iwai
2012-02-16 9:38 ` joey.jiaojg
2012-02-16 9:41 ` Takashi Iwai
2012-02-16 9:42 ` Takashi Iwai
2012-02-16 9:52 ` joey.jiaojg
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.