On Wed, Feb 20, 2013 at 02:14:20PM +0100, Takashi Iwai wrote:
At Wed, 20 Feb 2013 22:40:55 +1030, Jonathan Woithe wrote:
On Wed, Feb 20, 2013 at 11:33:54AM +0100, Takashi Iwai wrote:
> Things which don't work or are missing: > > * "Headphone Jack Mode" lacks options to enable various "mic" or "line in" > modes (all of which are possible on this system)
Yes, it is still unimplemented. So, it's expected not to be there yet. If you can hack it by yourself, let me know.
I may be able to give this a go, but from what I recall there was some debate as to how this should be implemented. Has that been resolved yet?
No, we need to try to implement something and discuss later. I think simply implementing two things would work: providing the vref setup in Headphone Jack Mode enum, and add a pin to the Input Source. User would require two setups, but it's less conflicting with giving implicit dependency with each other, IMO.
FYI, sound-unstable git tree test/hda-hp-mic branch contains the new patches. Pass model=fujitsu-jwse option, and all features will be enabled.
The patch isn't complete, but it should be somehow workable
Sounds good - I will test in the next day or so and report back.
I was able to test sound-unstable this evening (reporting a kernel version of 3.8.0-rc7+). I passed "model=fujitsu-jwse" as instructed. The "Headphone Mic" mode switch influences the headphone jack when it's configured as an input as I expect is the intent. The speaker still works and the speaker/headphone controls behave as expected. In short there appear to be no regressions in these respects.
It took me a while to work out that the headphone jack is only switched to input mode when a capture setting has it selected.
The "Mic Jack Mode" seems to affect the bias applied to the mic/line-in jack in the expected way.
Selecting the "Headphone mic" as an input source automatically switched the "Headphone mic mode" to "Mic 80pc". However, as far as I could tell switching between "Mic 80pc", "Mic 50pc" and "Line in" did not affect the bias voltage presented to the output. I will check with a multimeter and compare with earlier kernels to determine whether this is significant. Never-the-less, with "headphone mic" as an input sourse, signals were recordable via this jack.
I noticed that in this mode it was possible to switch "headphone mic mode" to "Headphone" and "Line out". Doing this flicked the jack back to output mode, and from here it was impossible to re-select and input mode until the capture source was toggled back to "headphone mic". I expect this is one of the things you eluded to when you said the patch isn't complete.
I noticed the existence of a "Line jack mode" control. I can't detect this control doing anything. /proc/asound/card0/codec#0 seems to indicate that this might be a phantom jack, so perhaps this is the expected behaviour.
The "Headphone mic" volume and mute controls don't appear to do anything.
I've included output from /proc/asound/card0/codec#0 at the end of this post in case it helps.
Both capture sources seem to operate correctly and independently as expected.
From a usability point of view, I think it would be best to have the mode of
the jack controlled solely by the "Headphone mic mode control". Having to first select this as a record source is a little counter-intuitive. It means that the headphone mic jack could be selected as a source when it's in output mode, but to me it makes more sense that the control marked "mode" had full control over the jack mode.
All in all I think this is a great start. Are you still planning on further work with this code or should I dive in and see what I can make of it? Also, is the activation via some "model=" thing intended to be permanent?
What's the most efficient way to get hold of this tree / branch given that I have the for-next branch of sound.git? Can I somehow leverage this, or do I need to do a completely separate checkout? Apologies if this is a basic question - I'm still coming to terms with git.
sound-unstable git tree always contains the sound git tree master branch, so everything is there basically. But it'd be better to merge this onto 3.8-final. Just pull Linus tree v3.8 tag on sound-unstable git tree:
% git pull \ git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux \ v3.8
It's a minor thing, but doing this from inside the directory containing a clone of sound-unstable gave this:
fatal: Couldn't find remote ref v3.8
Regards jonathan
Output from /proc/asound/card0/codec#0 under 3.8.0-rc7+ using "model=fujitsu-jmse":
Codec: Realtek ALC260 Address: 0 AFG Function Id: 0x1 (unsol 1) Vendor Id: 0x10ec0260 Subsystem Id: 0x10cf0000 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 State of AFG node 0x01: Power states: D0 D1 D2 D3 Power: setting=D0, actual=D0 GPIO: io=4, o=0, i=0, unsolicited=1, wake=0 IO[0]: enable=0, dir=0, 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=8, 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 Converter: stream=0, channel=0 Digital: Digital category: 0x0 IEC Coding Type: 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="Capture Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Control: name="Capture Switch", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Device: name="ALC260 Analog", type="Audio", device=0 Amp-In caps: ofs=0x00, nsteps=0x23, stepsize=0x03, mute=1 Amp-In vals: [0x0c 0x0c] Converter: stream=0, 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 Control: name="Capture Volume", index=1, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Control: name="Capture Switch", index=1, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Device: name="ALC260 Alt Analog", type="Audio", device=2 Amp-In caps: ofs=0x00, nsteps=0x23, stepsize=0x03, mute=1 Amp-In vals: [0x00 0x00] Converter: stream=4, 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 IEC Coding Type: 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=1, ofs=0 Control: name="Line Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=In, idx=1, 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="Headphone Mic Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=2, ofs=0 Control: name="Headphone Mic Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=In, idx=2, ofs=0 Amp-In caps: ofs=0x23, nsteps=0x41, stepsize=0x03, mute=1 Amp-In vals: [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x03 0x03] [0x80 0x80] [0x80 0x80] [0x80 0x80] Connection: 8 0x12 0x13 0x14 0x15 0x16 0x17 0x0f 0x10 Node 0x08 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out Control: name="Headphone 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: [0x27 0x27] Connection: 2 0x02 0x07 Node 0x09 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out Control: name="Speaker 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: [0x33 0x33] 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: [0x00] [0x80] Amp-Out caps: ofs=0x23, nsteps=0x41, stepsize=0x03, mute=0 Amp-Out vals: [0x23] 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: [0x80 0x80] 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: 0x20: IN Unsolicited: tag=00, enabled=0 Connection: 1 0x08 Node 0x10 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out Control: name="Speaker Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Control: name="Speaker Phantom Jack", index=0, device=0 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 0xe4011110: [Both] Line Out at Sep Right Conn = 1/8, Color = Black DefAssociation = 0x1, 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: [0x80] 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", 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 0x03a11820: [Jack] Mic at Ext Left Conn = 1/8, Color = Black DefAssociation = 0x2, Sequence = 0x0 Pin-ctls: 0x20: IN VREF_HIZ Unsolicited: tag=03, enabled=1 Connection: 1 0x0b Node 0x13 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out Control: name="Line Phantom Jack", 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 0x24811121: [Jack] Line In at Sep Right Conn = 1/8, Color = Black DefAssociation = 0x2, Sequence = 0x1 Misc = NO_PRESENCE Pin-ctls: 0x20: IN VREF_HIZ Unsolicited: tag=00, enabled=0 Connection: 1 0x0c Node 0x14 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out Control: name="Headphone Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Control: name="Headphone Mic Jack", index=0, device=0 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 0x0321101f: [Jack] HP Out at Ext Left Conn = 1/8, Color = Black DefAssociation = 0x1, Sequence = 0xf Pin-ctls: 0x24: IN VREF_80 Unsolicited: tag=01, enabled=1 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: [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: 0x20: IN VREF_HIZ Unsolicited: tag=00, enabled=0 Connection: 1 0x0e Node 0x16 [Pin Complex] wcaps 0x400001: Stereo Control: name="CD Phantom Jack", index=0, device=0 Pincap 0x00000020: IN Pin Default 0x88331122: [Fixed] CD at Ext Drive Bar Conn = ATAPI, Color = Black DefAssociation = 0x2, Sequence = 0x2 Misc = NO_PRESENCE Pin-ctls: 0x00: Node 0x17 [Pin Complex] wcaps 0x400000: Mono Pincap 0x00000020: IN Pin Default 0xb7931123: [Fixed] Aux at Oth Mobile-In Conn = ATAPI, Color = Black DefAssociation = 0x2, Sequence = 0x3 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