* Separate input and output jacks for one UCM device? @ 2015-03-18 19:41 Tanu Kaskinen 2015-03-19 9:15 ` Liam Girdwood 0 siblings, 1 reply; 28+ messages in thread From: Tanu Kaskinen @ 2015-03-18 19:41 UTC (permalink / raw) To: alsa-devel, Liam Girdwood; +Cc: Han Lu, Arun Raghavan Hi Liam and alsa-devel, My understanding is that a UCM device can represent a thing that has both input and output (I don't particularly like that, but it's too late to complain). How likely do you think that there are or there will be some drivers that expose separate input and output jack kcontrols for a headset jack, to differentiate between headphones/headset/microphone? My understanding is that jack kcontrols store only booleans, so there's no way to distinguish between headphones and a headset with just one kcontrol. The current UCM "spec" doesn't support specifying multiple kcontrols, since there's only one "JackControl" value. (Perhaps the "JackDev" value suffers from this problem too, but I don't know if jack input devices already support reporting the state separately for input and output.) -- Tanu ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-18 19:41 Separate input and output jacks for one UCM device? Tanu Kaskinen @ 2015-03-19 9:15 ` Liam Girdwood 2015-03-19 14:09 ` Takashi Iwai 2015-03-31 16:49 ` Tanu Kaskinen 0 siblings, 2 replies; 28+ messages in thread From: Liam Girdwood @ 2015-03-19 9:15 UTC (permalink / raw) To: Tanu Kaskinen; +Cc: alsa-devel, Takashi Iwai, Mark Brown, Arun Raghavan, Han Lu On Wed, 2015-03-18 at 21:41 +0200, Tanu Kaskinen wrote: > Hi Liam and alsa-devel, > I've added a few others on the CC that would be interested. > My understanding is that a UCM device can represent a thing that has > both input and output (I don't particularly like that, but it's too late > to complain). Yes, but it can also represent simplex devices too e.g. "Headset-Speakers" and "Headset-Mic". There are not any hard rules here, but most examples are using duplex devices as historically UCM came from the phone ecosystem use cases. > How likely do you think that there are or there will be > some drivers that expose separate input and output jack kcontrols for a > headset jack, to differentiate between headphones/headset/microphone? My > understanding is that jack kcontrols store only booleans, so there's no > way to distinguish between headphones and a headset with just one kcontrol. > This sounds like we need to extend the jack kcontrol so that we can differentiate between Headphones and Headset unless the kcontrol naming was intended to differentiate and define the jack type ? > The current UCM "spec" doesn't support specifying multiple kcontrols, > since there's only one "JackControl" value. (Perhaps the "JackDev" value > suffers from this problem too, but I don't know if jack input devices > already support reporting the state separately for input and output.) > I think in this case we could define simplex UCM devices and attach a JackControl value to each device. Btw, I'm assuming it's better for pulseaudio to map the UCM devices as simplex unidirectional devices ? Liam ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-19 9:15 ` Liam Girdwood @ 2015-03-19 14:09 ` Takashi Iwai 2015-03-19 14:19 ` Mark Brown ` (2 more replies) 2015-03-31 16:49 ` Tanu Kaskinen 1 sibling, 3 replies; 28+ messages in thread From: Takashi Iwai @ 2015-03-19 14:09 UTC (permalink / raw) To: Liam Girdwood Cc: Tanu Kaskinen, alsa-devel, Mark Brown, Arun Raghavan, Han Lu At Thu, 19 Mar 2015 09:15:59 +0000, Liam Girdwood wrote: > > On Wed, 2015-03-18 at 21:41 +0200, Tanu Kaskinen wrote: > > Hi Liam and alsa-devel, > > > > I've added a few others on the CC that would be interested. > > > My understanding is that a UCM device can represent a thing that has > > both input and output (I don't particularly like that, but it's too late > > to complain). > > Yes, but it can also represent simplex devices too e.g. > "Headset-Speakers" and "Headset-Mic". There are not any hard rules here, > but most examples are using duplex devices as historically UCM came from > the phone ecosystem use cases. > > > How likely do you think that there are or there will be > > some drivers that expose separate input and output jack kcontrols for a > > headset jack, to differentiate between headphones/headset/microphone? My > > understanding is that jack kcontrols store only booleans, so there's no > > way to distinguish between headphones and a headset with just one kcontrol. > > > > This sounds like we need to extend the jack kcontrol so that we can > differentiate between Headphones and Headset unless the kcontrol naming > was intended to differentiate and define the jack type ? Yeah, that's what we really need to face seriously now to. Keyon is working on merging input and kctl jacks, and this is the biggest problem that has to be sorted out. As far as I understand correctly, so far ASoC drivers also report headset as boolean (the bits are multiple, but reports are either zero or N bits). So, we agreed on creating boolean "Headset" kctls. One option is to provide multiple boolean kctls ("Headset Mic Jack"). Another option is to allow enum type for kctl jacks. Or, yet another alternative is to provide an enum ctl (e.g. "Headset Jack Type") in addition to a boolean kctl ("Headset Jack"). There can be other ways, too... Takashi ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-19 14:09 ` Takashi Iwai @ 2015-03-19 14:19 ` Mark Brown 2015-03-19 14:22 ` Jie, Yang 2015-03-19 14:31 ` Jie, Yang 2 siblings, 0 replies; 28+ messages in thread From: Mark Brown @ 2015-03-19 14:19 UTC (permalink / raw) To: Takashi Iwai Cc: Tanu Kaskinen, alsa-devel, Liam Girdwood, Arun Raghavan, Han Lu [-- Attachment #1.1: Type: text/plain, Size: 891 bytes --] On Thu, Mar 19, 2015 at 03:09:30PM +0100, Takashi Iwai wrote: > As far as I understand correctly, so far ASoC drivers also report > headset as boolean (the bits are multiple, but reports are either zero > or N bits). So, we agreed on creating boolean "Headset" kctls. That's right - every input our output that might appear on the port is a separate boolean flag so we can represent any combination of them. > One option is to provide multiple boolean kctls ("Headset Mic Jack"). > Another option is to allow enum type for kctl jacks. Or, yet another > alternative is to provide an enum ctl (e.g. "Headset Jack Type") in > addition to a boolean kctl ("Headset Jack"). There can be other ways, > too... I think any of those work; my guess is that the "Headset Jack Type" enum is the one that's going to be least disruptive to the ABI (in that it keeps the existing control untouched). [-- Attachment #1.2: Digital signature --] [-- Type: application/pgp-signature, Size: 473 bytes --] [-- Attachment #2: Type: text/plain, Size: 0 bytes --] ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-19 14:09 ` Takashi Iwai 2015-03-19 14:19 ` Mark Brown @ 2015-03-19 14:22 ` Jie, Yang 2015-03-19 14:34 ` Takashi Iwai 2015-03-19 14:31 ` Jie, Yang 2 siblings, 1 reply; 28+ messages in thread From: Jie, Yang @ 2015-03-19 14:22 UTC (permalink / raw) To: Takashi Iwai, Liam Girdwood Cc: Lu, Han, Tanu Kaskinen, Mark Brown, alsa-devel@alsa-project.org, Arun Raghavan > -----Original Message----- > From: Takashi Iwai [mailto:tiwai@suse.de] > Sent: Thursday, March 19, 2015 10:10 PM > To: Liam Girdwood > Cc: Tanu Kaskinen; alsa-devel@alsa-project.org; Arun Raghavan; Lu, Han; > Mark Brown; Jie, Yang > Subject: Re: Separate input and output jacks for one UCM device? > > At Thu, 19 Mar 2015 09:15:59 +0000, > Liam Girdwood wrote: > > > > On Wed, 2015-03-18 at 21:41 +0200, Tanu Kaskinen wrote: > > > Hi Liam and alsa-devel, > > > > > > > I've added a few others on the CC that would be interested. > > > > > My understanding is that a UCM device can represent a thing that has > > > both input and output (I don't particularly like that, but it's too > > > late to complain). > > > > Yes, but it can also represent simplex devices too e.g. > > "Headset-Speakers" and "Headset-Mic". There are not any hard rules > > here, but most examples are using duplex devices as historically UCM > > came from the phone ecosystem use cases. > > > > > How likely do you think that there are or there will be some drivers > > > that expose separate input and output jack kcontrols for a headset > > > jack, to differentiate between headphones/headset/microphone? My > > > understanding is that jack kcontrols store only booleans, so there's > > > no way to distinguish between headphones and a headset with just one > kcontrol. > > > > > > > This sounds like we need to extend the jack kcontrol so that we can > > differentiate between Headphones and Headset unless the kcontrol > > naming was intended to differentiate and define the jack type ? > > Yeah, that's what we really need to face seriously now to. > Keyon is working on merging input and kctl jacks, and this is the biggest > problem that has to be sorted out. > > As far as I understand correctly, so far ASoC drivers also report headset as > boolean (the bits are multiple, but reports are either zero or N bits). So, we > agreed on creating boolean "Headset" kctls. > > One option is to provide multiple boolean kctls ("Headset Mic Jack"). [Keyon] how about using "Headset Jack Mic" and "Headset Jack Speakers"? Then we can understand of that both these two kctls are belong to the Headset Jack. > Another option is to allow enum type for kctl jacks. Or, yet another > alternative is to provide an enum ctl (e.g. "Headset Jack Type") in addition to > a boolean kctl ("Headset Jack"). There can be other ways, too... > > > Takashi ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-19 14:22 ` Jie, Yang @ 2015-03-19 14:34 ` Takashi Iwai 0 siblings, 0 replies; 28+ messages in thread From: Takashi Iwai @ 2015-03-19 14:34 UTC (permalink / raw) To: Jie, Yang Cc: Tanu Kaskinen, alsa-devel@alsa-project.org, Liam Girdwood, Mark Brown, Arun Raghavan, Lu, Han At Thu, 19 Mar 2015 14:22:18 +0000, Jie, Yang wrote: > > > From: Takashi Iwai [mailto:tiwai@suse.de] > > Sent: Thursday, March 19, 2015 10:10 PM > > To: Liam Girdwood > > Cc: Tanu Kaskinen; alsa-devel@alsa-project.org; Arun Raghavan; Lu, Han; > > Mark Brown; Jie, Yang > > Subject: Re: Separate input and output jacks for one UCM device? > > > > At Thu, 19 Mar 2015 09:15:59 +0000, > > Liam Girdwood wrote: > > > > > > On Wed, 2015-03-18 at 21:41 +0200, Tanu Kaskinen wrote: > > > > Hi Liam and alsa-devel, > > > > > > > > > > I've added a few others on the CC that would be interested. > > > > > > > My understanding is that a UCM device can represent a thing that has > > > > both input and output (I don't particularly like that, but it's too > > > > late to complain). > > > > > > Yes, but it can also represent simplex devices too e.g. > > > "Headset-Speakers" and "Headset-Mic". There are not any hard rules > > > here, but most examples are using duplex devices as historically UCM > > > came from the phone ecosystem use cases. > > > > > > > How likely do you think that there are or there will be some drivers > > > > that expose separate input and output jack kcontrols for a headset > > > > jack, to differentiate between headphones/headset/microphone? My > > > > understanding is that jack kcontrols store only booleans, so there's > > > > no way to distinguish between headphones and a headset with just one > > kcontrol. > > > > > > > > > > This sounds like we need to extend the jack kcontrol so that we can > > > differentiate between Headphones and Headset unless the kcontrol > > > naming was intended to differentiate and define the jack type ? > > > > Yeah, that's what we really need to face seriously now to. > > Keyon is working on merging input and kctl jacks, and this is the biggest > > problem that has to be sorted out. > > > > As far as I understand correctly, so far ASoC drivers also report headset as > > boolean (the bits are multiple, but reports are either zero or N bits). So, we > > agreed on creating boolean "Headset" kctls. > > > > One option is to provide multiple boolean kctls ("Headset Mic Jack"). > [Keyon] how about using "Headset Jack Mic" and "Headset Jack Speakers"? > Then we can understand of that both these two kctls are belong to the > Headset Jack. This would be OK, too. BTW, an obvious drawback of splitting boolean kctls is that you'll receive multiple events. For example, when triggering a headset, both headset mic and headset speaker ctls will get an event. Takashi ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-19 14:09 ` Takashi Iwai 2015-03-19 14:19 ` Mark Brown 2015-03-19 14:22 ` Jie, Yang @ 2015-03-19 14:31 ` Jie, Yang 2015-03-19 14:37 ` Takashi Iwai 2 siblings, 1 reply; 28+ messages in thread From: Jie, Yang @ 2015-03-19 14:31 UTC (permalink / raw) To: Takashi Iwai, Liam Girdwood Cc: Lu, Han, Tanu Kaskinen, Mark Brown, alsa-devel@alsa-project.org, Arun Raghavan > -----Original Message----- > From: Takashi Iwai [mailto:tiwai@suse.de] > Sent: Thursday, March 19, 2015 10:10 PM > To: Liam Girdwood > Cc: Tanu Kaskinen; alsa-devel@alsa-project.org; Arun Raghavan; Lu, Han; > Mark Brown; Jie, Yang > Subject: Re: Separate input and output jacks for one UCM device? > > At Thu, 19 Mar 2015 09:15:59 +0000, > Liam Girdwood wrote: > > > > On Wed, 2015-03-18 at 21:41 +0200, Tanu Kaskinen wrote: > > > Hi Liam and alsa-devel, > > > > > > > I've added a few others on the CC that would be interested. > > > > > My understanding is that a UCM device can represent a thing that has > > > both input and output (I don't particularly like that, but it's too > > > late to complain). > > > > Yes, but it can also represent simplex devices too e.g. > > "Headset-Speakers" and "Headset-Mic". There are not any hard rules > > here, but most examples are using duplex devices as historically UCM > > came from the phone ecosystem use cases. > > > > > How likely do you think that there are or there will be some drivers > > > that expose separate input and output jack kcontrols for a headset > > > jack, to differentiate between headphones/headset/microphone? My > > > understanding is that jack kcontrols store only booleans, so there's > > > no way to distinguish between headphones and a headset with just one > kcontrol. > > > > > > > This sounds like we need to extend the jack kcontrol so that we can > > differentiate between Headphones and Headset unless the kcontrol > > naming was intended to differentiate and define the jack type ? > > Yeah, that's what we really need to face seriously now to. > Keyon is working on merging input and kctl jacks, and this is the biggest > problem that has to be sorted out. > > As far as I understand correctly, so far ASoC drivers also report headset as > boolean (the bits are multiple, but reports are either zero or N bits). So, we > agreed on creating boolean "Headset" kctls. > > One option is to provide multiple boolean kctls ("Headset Mic Jack"). > Another option is to allow enum type for kctl jacks. Or, yet another > alternative is to provide an enum ctl (e.g. "Headset Jack Type") in addition to > a boolean kctl ("Headset Jack"). There can be other ways, too... [Keyon] I have another concern, should app(e.g. pulseaudio) also need be able to handle different index with same "Headset Jack" kctl name? or we should register them as "Headset Jack N Mic" (n=0, 1, 2, ...)? > > > Takashi ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-19 14:31 ` Jie, Yang @ 2015-03-19 14:37 ` Takashi Iwai 2015-03-19 14:42 ` Mark Brown 0 siblings, 1 reply; 28+ messages in thread From: Takashi Iwai @ 2015-03-19 14:37 UTC (permalink / raw) To: Jie, Yang Cc: Tanu Kaskinen, alsa-devel@alsa-project.org, Liam Girdwood, Mark Brown, Arun Raghavan, Lu, Han At Thu, 19 Mar 2015 14:31:58 +0000, Jie, Yang wrote: > > > -----Original Message----- > > From: Takashi Iwai [mailto:tiwai@suse.de] > > Sent: Thursday, March 19, 2015 10:10 PM > > To: Liam Girdwood > > Cc: Tanu Kaskinen; alsa-devel@alsa-project.org; Arun Raghavan; Lu, Han; > > Mark Brown; Jie, Yang > > Subject: Re: Separate input and output jacks for one UCM device? > > > > At Thu, 19 Mar 2015 09:15:59 +0000, > > Liam Girdwood wrote: > > > > > > On Wed, 2015-03-18 at 21:41 +0200, Tanu Kaskinen wrote: > > > > Hi Liam and alsa-devel, > > > > > > > > > > I've added a few others on the CC that would be interested. > > > > > > > My understanding is that a UCM device can represent a thing that has > > > > both input and output (I don't particularly like that, but it's too > > > > late to complain). > > > > > > Yes, but it can also represent simplex devices too e.g. > > > "Headset-Speakers" and "Headset-Mic". There are not any hard rules > > > here, but most examples are using duplex devices as historically UCM > > > came from the phone ecosystem use cases. > > > > > > > How likely do you think that there are or there will be some drivers > > > > that expose separate input and output jack kcontrols for a headset > > > > jack, to differentiate between headphones/headset/microphone? My > > > > understanding is that jack kcontrols store only booleans, so there's > > > > no way to distinguish between headphones and a headset with just one > > kcontrol. > > > > > > > > > > This sounds like we need to extend the jack kcontrol so that we can > > > differentiate between Headphones and Headset unless the kcontrol > > > naming was intended to differentiate and define the jack type ? > > > > Yeah, that's what we really need to face seriously now to. > > Keyon is working on merging input and kctl jacks, and this is the biggest > > problem that has to be sorted out. > > > > As far as I understand correctly, so far ASoC drivers also report headset as > > boolean (the bits are multiple, but reports are either zero or N bits). So, we > > agreed on creating boolean "Headset" kctls. > > > > One option is to provide multiple boolean kctls ("Headset Mic Jack"). > > Another option is to allow enum type for kctl jacks. Or, yet another > > alternative is to provide an enum ctl (e.g. "Headset Jack Type") in addition to > > a boolean kctl ("Headset Jack"). There can be other ways, too... > [Keyon] I have another concern, should app(e.g. pulseaudio) also need be > able to handle different index with same "Headset Jack" kctl name? or we > should register them as "Headset Jack N Mic" (n=0, 1, 2, ...)? The uniqueness of item name is also needed for input jack. There is no check as of now, and input drivers allow multiple items with the very same name string, but user-space can't distinguish them. Takashi ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-19 14:37 ` Takashi Iwai @ 2015-03-19 14:42 ` Mark Brown 2015-03-19 14:51 ` Takashi Iwai 0 siblings, 1 reply; 28+ messages in thread From: Mark Brown @ 2015-03-19 14:42 UTC (permalink / raw) To: Takashi Iwai Cc: Tanu Kaskinen, alsa-devel@alsa-project.org, Liam Girdwood, Arun Raghavan, Lu, Han [-- Attachment #1.1: Type: text/plain, Size: 558 bytes --] On Thu, Mar 19, 2015 at 03:37:12PM +0100, Takashi Iwai wrote: > The uniqueness of item name is also needed for input jack. There is > no check as of now, and input drivers allow multiple items with the > very same name string, but user-space can't distinguish them. The theory is that this is handled by the fact that the userspace ABI includes a reference to the struct device and therefore a chain showing where the thing is attached; anything registering two different jacks with the same name attached to the same device probably qualifies as broken. [-- Attachment #1.2: Digital signature --] [-- Type: application/pgp-signature, Size: 473 bytes --] [-- Attachment #2: Type: text/plain, Size: 0 bytes --] ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-19 14:42 ` Mark Brown @ 2015-03-19 14:51 ` Takashi Iwai 2015-03-19 15:18 ` Mark Brown 0 siblings, 1 reply; 28+ messages in thread From: Takashi Iwai @ 2015-03-19 14:51 UTC (permalink / raw) To: Mark Brown Cc: Tanu Kaskinen, alsa-devel@alsa-project.org, Liam Girdwood, Arun Raghavan, Lu, Han At Thu, 19 Mar 2015 14:42:40 +0000, Mark Brown wrote: > > On Thu, Mar 19, 2015 at 03:37:12PM +0100, Takashi Iwai wrote: > > > The uniqueness of item name is also needed for input jack. There is > > no check as of now, and input drivers allow multiple items with the > > very same name string, but user-space can't distinguish them. > > The theory is that this is handled by the fact that the userspace ABI > includes a reference to the struct device and therefore a chain showing > where the thing is attached; anything registering two different jacks > with the same name attached to the same device probably qualifies as > broken. So this implicitly assumes the name uniqueness. For HD-audio, this was a problem because we need to generate jack names dynamically; for example, there are laptops with two headphones, and we assigned indices in such a case. Takashi ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-19 14:51 ` Takashi Iwai @ 2015-03-19 15:18 ` Mark Brown 2015-03-19 15:28 ` Takashi Iwai 0 siblings, 1 reply; 28+ messages in thread From: Mark Brown @ 2015-03-19 15:18 UTC (permalink / raw) To: Takashi Iwai Cc: Tanu Kaskinen, alsa-devel@alsa-project.org, Liam Girdwood, Arun Raghavan, Lu, Han [-- Attachment #1.1: Type: text/plain, Size: 805 bytes --] On Thu, Mar 19, 2015 at 03:51:06PM +0100, Takashi Iwai wrote: > Mark Brown wrote: > > The theory is that this is handled by the fact that the userspace ABI > > includes a reference to the struct device and therefore a chain showing > > where the thing is attached; anything registering two different jacks > > with the same name attached to the same device probably qualifies as > > broken. > So this implicitly assumes the name uniqueness. For HD-audio, this > was a problem because we need to generate jack names dynamically; for > example, there are laptops with two headphones, and we assigned > indices in such a case. That's on the same card, though? I'd expect a device creating two input jacks to do the same (putting the number in the name, or some other identifer like "front" and "back"). [-- Attachment #1.2: Digital signature --] [-- Type: application/pgp-signature, Size: 473 bytes --] [-- Attachment #2: Type: text/plain, Size: 0 bytes --] ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-19 15:18 ` Mark Brown @ 2015-03-19 15:28 ` Takashi Iwai 2015-03-19 15:45 ` Mark Brown 2015-03-20 4:03 ` Raymond Yau 0 siblings, 2 replies; 28+ messages in thread From: Takashi Iwai @ 2015-03-19 15:28 UTC (permalink / raw) To: Mark Brown Cc: Tanu Kaskinen, alsa-devel@alsa-project.org, Liam Girdwood, Arun Raghavan, Lu, Han At Thu, 19 Mar 2015 15:18:51 +0000, Mark Brown wrote: > > On Thu, Mar 19, 2015 at 03:51:06PM +0100, Takashi Iwai wrote: > > Mark Brown wrote: > > > > The theory is that this is handled by the fact that the userspace ABI > > > includes a reference to the struct device and therefore a chain showing > > > where the thing is attached; anything registering two different jacks > > > with the same name attached to the same device probably qualifies as > > > broken. > > > So this implicitly assumes the name uniqueness. For HD-audio, this > > was a problem because we need to generate jack names dynamically; for > > example, there are laptops with two headphones, and we assigned > > indices in such a case. > > That's on the same card, though? Yeah, on the same laptop, even both on the front. The designer must have smoked, or just looked for a partner sitting at next to listen to music together :) > I'd expect a device creating two input > jacks to do the same (putting the number in the name, or some other > identifer like "front" and "back"). Yes, stringifying the index number would work. Takashi ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-19 15:28 ` Takashi Iwai @ 2015-03-19 15:45 ` Mark Brown 2015-03-20 4:03 ` Raymond Yau 1 sibling, 0 replies; 28+ messages in thread From: Mark Brown @ 2015-03-19 15:45 UTC (permalink / raw) To: Takashi Iwai Cc: Tanu Kaskinen, alsa-devel@alsa-project.org, Liam Girdwood, Arun Raghavan, Lu, Han [-- Attachment #1.1: Type: text/plain, Size: 382 bytes --] On Thu, Mar 19, 2015 at 04:28:40PM +0100, Takashi Iwai wrote: > Mark Brown wrote: > > That's on the same card, though? > Yeah, on the same laptop, even both on the front. The designer must > have smoked, or just looked for a partner sitting at next to listen to > music together :) Our hardware engineering colleagues are innovative and creative people who keep us in work! :P [-- Attachment #1.2: Digital signature --] [-- Type: application/pgp-signature, Size: 473 bytes --] [-- Attachment #2: Type: text/plain, Size: 0 bytes --] ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-19 15:28 ` Takashi Iwai 2015-03-19 15:45 ` Mark Brown @ 2015-03-20 4:03 ` Raymond Yau 1 sibling, 0 replies; 28+ messages in thread From: Raymond Yau @ 2015-03-20 4:03 UTC (permalink / raw) To: Takashi Iwai Cc: ALSA Development Mailing List, Tanu Kaskinen, Liam Girdwood, Mark Brown, Arun Raghavan, Lu, Han > > > > > > The theory is that this is handled by the fact that the userspace ABI > > > > includes a reference to the struct device and therefore a chain showing > > > > where the thing is attached; anything registering two different jacks > > > > with the same name attached to the same device probably qualifies as > > > > broken. > > > > > So this implicitly assumes the name uniqueness. For HD-audio, this > > > was a problem because we need to generate jack names dynamically; for > > > example, there are laptops with two headphones, and we assigned > > > indices in such a case. > > > > That's on the same card, though? > > Yeah, on the same laptop, even both on the front. The designer must > have smoked, or just looked for a partner sitting at next to listen to > music together :) http://en.community.dell.com/support-forums/laptop/f/3517/t/19440542 One of the headphone jack is actually headphone/SPDIF combo jack and the two headphone jacks and mic jack can support surround 5.1 ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-19 9:15 ` Liam Girdwood 2015-03-19 14:09 ` Takashi Iwai @ 2015-03-31 16:49 ` Tanu Kaskinen 2015-04-01 12:27 ` Liam Girdwood 1 sibling, 1 reply; 28+ messages in thread From: Tanu Kaskinen @ 2015-03-31 16:49 UTC (permalink / raw) To: Liam Girdwood; +Cc: Takashi Iwai, Han Lu, alsa-devel, Mark Brown, Arun Raghavan Reviving this thread... On Thu, 2015-03-19 at 09:15 +0000, Liam Girdwood wrote: > On Wed, 2015-03-18 at 21:41 +0200, Tanu Kaskinen wrote: > > Hi Liam and alsa-devel, > > > > I've added a few others on the CC that would be interested. > > > My understanding is that a UCM device can represent a thing that has > > both input and output (I don't particularly like that, but it's too late > > to complain). > > Yes, but it can also represent simplex devices too e.g. > "Headset-Speakers" and "Headset-Mic". There are not any hard rules here, > but most examples are using duplex devices as historically UCM came from > the phone ecosystem use cases. > > > How likely do you think that there are or there will be > > some drivers that expose separate input and output jack kcontrols for a > > headset jack, to differentiate between headphones/headset/microphone? My > > understanding is that jack kcontrols store only booleans, so there's no > > way to distinguish between headphones and a headset with just one kcontrol. > > > > This sounds like we need to extend the jack kcontrol so that we can > differentiate between Headphones and Headset unless the kcontrol naming > was intended to differentiate and define the jack type ? I guess it's now clear that all jack kcontrols will be booleans, and headset jacks will require two jack kcontrols. > > The current UCM "spec" doesn't support specifying multiple kcontrols, > > since there's only one "JackControl" value. (Perhaps the "JackDev" value > > suffers from this problem too, but I don't know if jack input devices > > already support reporting the state separately for input and output.) > > > > I think in this case we could define simplex UCM devices and attach a > JackControl value to each device. So is your preference that UCM configuration authors are forced to define simplex devices to deal with headset jacks, rather than using duplex devices and defining "PlaybackJackControl" and "CaptureJackControl" separately? (I don't personally mind either way.) -- Tanu ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-03-31 16:49 ` Tanu Kaskinen @ 2015-04-01 12:27 ` Liam Girdwood 2015-04-01 16:56 ` Tanu Kaskinen ` (2 more replies) 0 siblings, 3 replies; 28+ messages in thread From: Liam Girdwood @ 2015-04-01 12:27 UTC (permalink / raw) To: Tanu Kaskinen; +Cc: Takashi Iwai, Han Lu, alsa-devel, Mark Brown, Arun Raghavan On Tue, 2015-03-31 at 19:49 +0300, Tanu Kaskinen wrote: > Reviving this thread... > > On Thu, 2015-03-19 at 09:15 +0000, Liam Girdwood wrote: > > On Wed, 2015-03-18 at 21:41 +0200, Tanu Kaskinen wrote: > > > Hi Liam and alsa-devel, > > > > > > > I've added a few others on the CC that would be interested. > > > > > My understanding is that a UCM device can represent a thing that has > > > both input and output (I don't particularly like that, but it's too late > > > to complain). > > > > Yes, but it can also represent simplex devices too e.g. > > "Headset-Speakers" and "Headset-Mic". There are not any hard rules here, > > but most examples are using duplex devices as historically UCM came from > > the phone ecosystem use cases. > > > > > How likely do you think that there are or there will be > > > some drivers that expose separate input and output jack kcontrols for a > > > headset jack, to differentiate between headphones/headset/microphone? My > > > understanding is that jack kcontrols store only booleans, so there's no > > > way to distinguish between headphones and a headset with just one kcontrol. > > > > > > > This sounds like we need to extend the jack kcontrol so that we can > > differentiate between Headphones and Headset unless the kcontrol naming > > was intended to differentiate and define the jack type ? > > I guess it's now clear that all jack kcontrols will be booleans, and > headset jacks will require two jack kcontrols. > > > > The current UCM "spec" doesn't support specifying multiple kcontrols, > > > since there's only one "JackControl" value. (Perhaps the "JackDev" value > > > suffers from this problem too, but I don't know if jack input devices > > > already support reporting the state separately for input and output.) > > > > > > > I think in this case we could define simplex UCM devices and attach a > > JackControl value to each device. > > So is your preference that UCM configuration authors are forced to > define simplex devices to deal with headset jacks, rather than using > duplex devices and defining "PlaybackJackControl" and > "CaptureJackControl" separately? (I don't personally mind either way.) I don't really mind either, but what's easier for audio servers like pulseaudio that will be the main UCM clients ? I guess that pulseaudio, CRAS, and other audio servers probably deal with simplex PCM streams internally so mapping to simplex jacks/devices might be better ? Liam ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-04-01 12:27 ` Liam Girdwood @ 2015-04-01 16:56 ` Tanu Kaskinen 2015-04-01 23:24 ` Raymond Yau 2015-04-02 15:28 ` Dylan Reid 2 siblings, 0 replies; 28+ messages in thread From: Tanu Kaskinen @ 2015-04-01 16:56 UTC (permalink / raw) To: Liam Girdwood; +Cc: Takashi Iwai, Han Lu, alsa-devel, Mark Brown, Arun Raghavan On Wed, 2015-04-01 at 13:27 +0100, Liam Girdwood wrote: > On Tue, 2015-03-31 at 19:49 +0300, Tanu Kaskinen wrote: > > So is your preference that UCM configuration authors are forced to > > define simplex devices to deal with headset jacks, rather than using > > duplex devices and defining "PlaybackJackControl" and > > "CaptureJackControl" separately? (I don't personally mind either way.) > > I don't really mind either, but what's easier for audio servers like > pulseaudio that will be the main UCM clients ? I guess that pulseaudio, > CRAS, and other audio servers probably deal with simplex PCM streams > internally so mapping to simplex jacks/devices might be better ? Yes, the native device representation in PulseAudio uses the simplex model. However, the code for handling duplex UCM devices already exists, so it shouldn't take a big effort to support duplex devices with separate "PlaybackJackControl" and "CaptureJackControl" values. -- Tanu ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-04-01 12:27 ` Liam Girdwood 2015-04-01 16:56 ` Tanu Kaskinen @ 2015-04-01 23:24 ` Raymond Yau 2015-04-02 6:39 ` Liam Girdwood 2015-04-02 15:28 ` Dylan Reid 2 siblings, 1 reply; 28+ messages in thread From: Raymond Yau @ 2015-04-01 23:24 UTC (permalink / raw) To: Liam Girdwood Cc: alsa-devel, Takashi Iwai, Tanu Kaskinen, Mark Brown, Arun Raghavan, Han Lu > > > > > > > > > > I've added a few others on the CC that would be interested. > > > > > > > My understanding is that a UCM device can represent a thing that has > > > > both input and output (I don't particularly like that, but it's too late > > > > to complain). > > > > > > Yes, but it can also represent simplex devices too e.g. > > > "Headset-Speakers" and "Headset-Mic". There are not any hard rules here, > > > but most examples are using duplex devices as historically UCM came from > > > the phone ecosystem use cases. On some mobile phones which have FM radio , how do UCM handle FM radio since it need to use the headphone as antenna ? > > > > > > > How likely do you think that there are or there will be > > > > some drivers that expose separate input and output jack kcontrols for a > > > > headset jack, to differentiate between headphones/headset/microphone? My > > > > understanding is that jack kcontrols store only booleans, so there's no > > > > way to distinguish between headphones and a headset with just one kcontrol. > > > > > > > > > > This sounds like we need to extend the jack kcontrol so that we can > > > differentiate between Headphones and Headset unless the kcontrol naming > > > was intended to differentiate and define the jack type ? > > > > I guess it's now clear that all jack kcontrols will be booleans, and > > headset jacks will require two jack kcontrols. > > > > > > The current UCM "spec" doesn't support specifying multiple kcontrols, > > > > since there's only one "JackControl" value. (Perhaps the "JackDev" value > > > > suffers from this problem too, but I don't know if jack input devices > > > > already support reporting the state separately for input and output.) > > > > > > > > > > I think in this case we could define simplex UCM devices and attach a > > > JackControl value to each device. > > > > So is your preference that UCM configuration authors are forced to > > define simplex devices to deal with headset jacks, rather than using > > duplex devices and defining "PlaybackJackControl" and > > "CaptureJackControl" separately? (I don't personally mind either way.) > > I don't really mind either, but what's easier for audio servers like > pulseaudio that will be the main UCM clients ? I guess that pulseaudio, > CRAS, and other audio servers probably deal with simplex PCM streams > internally so mapping to simplex jacks/devices might be better ? > > Liam > > _______________________________________________ > Alsa-devel mailing list > Alsa-devel@alsa-project.org > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-04-01 23:24 ` Raymond Yau @ 2015-04-02 6:39 ` Liam Girdwood 0 siblings, 0 replies; 28+ messages in thread From: Liam Girdwood @ 2015-04-02 6:39 UTC (permalink / raw) To: Raymond Yau Cc: alsa-devel, Takashi Iwai, Tanu Kaskinen, Mark Brown, Arun Raghavan, Han Lu On Thu, 2015-04-02 at 07:24 +0800, Raymond Yau wrote: > > > > > > > > > > > > > I've added a few others on the CC that would be interested. > > > > > > > > > My understanding is that a UCM device can represent a thing > that has > > > > > both input and output (I don't particularly like that, but > it's too late > > > > > to complain). > > > > > > > > Yes, but it can also represent simplex devices too e.g. > > > > "Headset-Speakers" and "Headset-Mic". There are not any hard > rules here, > > > > but most examples are using duplex devices as historically UCM > came from > > > > the phone ecosystem use cases. > > On some mobile phones which have FM radio , how do UCM handle FM radio > since it need to use the headphone as antenna ? This use case is just treated like any other where we have to set the proper kcontrols and devices in the UCM config. This would include the headphone if required for audio playback or antenna. Liam ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-04-01 12:27 ` Liam Girdwood 2015-04-01 16:56 ` Tanu Kaskinen 2015-04-01 23:24 ` Raymond Yau @ 2015-04-02 15:28 ` Dylan Reid 2015-04-04 5:39 ` Raymond Yau 2015-04-07 20:37 ` Tanu Kaskinen 2 siblings, 2 replies; 28+ messages in thread From: Dylan Reid @ 2015-04-02 15:28 UTC (permalink / raw) To: Liam Girdwood Cc: Tanu Kaskinen, Takashi Iwai, alsa-devel@alsa-project.org, Mark Brown, Arun Raghavan, Han Lu On Wed, Apr 1, 2015 at 5:27 AM, Liam Girdwood <liam.r.girdwood@linux.intel.com> wrote: > On Tue, 2015-03-31 at 19:49 +0300, Tanu Kaskinen wrote: >> Reviving this thread... >> >> On Thu, 2015-03-19 at 09:15 +0000, Liam Girdwood wrote: >> > On Wed, 2015-03-18 at 21:41 +0200, Tanu Kaskinen wrote: >> > > Hi Liam and alsa-devel, >> > > >> > >> > I've added a few others on the CC that would be interested. >> > >> > > My understanding is that a UCM device can represent a thing that has >> > > both input and output (I don't particularly like that, but it's too late >> > > to complain). >> > >> > Yes, but it can also represent simplex devices too e.g. >> > "Headset-Speakers" and "Headset-Mic". There are not any hard rules here, >> > but most examples are using duplex devices as historically UCM came from >> > the phone ecosystem use cases. >> > >> > > How likely do you think that there are or there will be >> > > some drivers that expose separate input and output jack kcontrols for a >> > > headset jack, to differentiate between headphones/headset/microphone? My >> > > understanding is that jack kcontrols store only booleans, so there's no >> > > way to distinguish between headphones and a headset with just one kcontrol. >> > > >> > >> > This sounds like we need to extend the jack kcontrol so that we can >> > differentiate between Headphones and Headset unless the kcontrol naming >> > was intended to differentiate and define the jack type ? >> >> I guess it's now clear that all jack kcontrols will be booleans, and >> headset jacks will require two jack kcontrols. >> >> > > The current UCM "spec" doesn't support specifying multiple kcontrols, >> > > since there's only one "JackControl" value. (Perhaps the "JackDev" value >> > > suffers from this problem too, but I don't know if jack input devices >> > > already support reporting the state separately for input and output.) >> > > >> > >> > I think in this case we could define simplex UCM devices and attach a >> > JackControl value to each device. >> >> So is your preference that UCM configuration authors are forced to >> define simplex devices to deal with headset jacks, rather than using >> duplex devices and defining "PlaybackJackControl" and >> "CaptureJackControl" separately? (I don't personally mind either way.) > > I don't really mind either, but what's easier for audio servers like > pulseaudio that will be the main UCM clients ? I guess that pulseaudio, > CRAS, and other audio servers probably deal with simplex PCM streams > internally so mapping to simplex jacks/devices might be better ? There is an advantage to having a separate device for the headphone and mic even if they are connected to the same jack. The user can enable one and not the other, most commonly to use the headphones but record from the built-in mic, ignoring the headset mic. Because of this we require all ChromeOS devices to support separate reporting and selection of headphone/mic on the headset jack. There is always one UCM device and one user-visible i/o node per jack. > > Liam > > _______________________________________________ > Alsa-devel mailing list > Alsa-devel@alsa-project.org > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-04-02 15:28 ` Dylan Reid @ 2015-04-04 5:39 ` Raymond Yau 2015-04-06 9:26 ` Liam Girdwood 2015-04-07 20:37 ` Tanu Kaskinen 1 sibling, 1 reply; 28+ messages in thread From: Raymond Yau @ 2015-04-04 5:39 UTC (permalink / raw) To: Dylan Reid Cc: ALSA Development Mailing List, Takashi Iwai, Tanu Kaskinen, Liam Girdwood, Mark Brown, Arun Raghavan, Han Lu > >> > > >> > I've added a few others on the CC that would be interested. > >> > > >> > > My understanding is that a UCM device can represent a thing that has > >> > > both input and output (I don't particularly like that, but it's too late > >> > > to complain). > >> > > >> > Yes, but it can also represent simplex devices too e.g. > >> > "Headset-Speakers" and "Headset-Mic". There are not any hard rules here, > >> > but most examples are using duplex devices as historically UCM came from > >> > the phone ecosystem use cases. > >> > > >> > > How likely do you think that there are or there will be > >> > > some drivers that expose separate input and output jack kcontrols for a > >> > > headset jack, to differentiate between headphones/headset/microphone? My > >> > > understanding is that jack kcontrols store only booleans, so there's no > >> > > way to distinguish between headphones and a headset with just one kcontrol. > >> > > > >> > > >> > This sounds like we need to extend the jack kcontrol so that we can > >> > differentiate between Headphones and Headset unless the kcontrol naming > >> > was intended to differentiate and define the jack type ? > >> > >> I guess it's now clear that all jack kcontrols will be booleans, and > >> headset jacks will require two jack kcontrols. > >> > >> > > The current UCM "spec" doesn't support specifying multiple kcontrols, > >> > > since there's only one "JackControl" value. (Perhaps the "JackDev" value > >> > > suffers from this problem too, but I don't know if jack input devices > >> > > already support reporting the state separately for input and output.) > >> > > > >> > > >> > I think in this case we could define simplex UCM devices and attach a > >> > JackControl value to each device. > >> > >> So is your preference that UCM configuration authors are forced to > >> define simplex devices to deal with headset jacks, rather than using > >> duplex devices and defining "PlaybackJackControl" and > >> "CaptureJackControl" separately? (I don't personally mind either way.) > > > > I don't really mind either, but what's easier for audio servers like > > pulseaudio that will be the main UCM clients ? I guess that pulseaudio, > > CRAS, and other audio servers probably deal with simplex PCM streams > > internally so mapping to simplex jacks/devices might be better ? > > There is an advantage to having a separate device for the headphone and mic > even if they are connected to the same jack. The user can enable one and not > the other, most commonly to use the headphones but record from the built-in mic, > ignoring the headset mic. Because of this we require all ChromeOS devices to > support separate reporting and selection of headphone/mic on the headset jack. > There is always one UCM device and one user-visible i/o node per jack. > > > How do these kind of jack handle by UCM ? http://www.dell.com/support/home/us/en/19/product-support/product/inspiron-15-3537/manuals 6 Headset port Connect a headphone, a microphone, or a headphone and microphone combo (headset). https://launchpadlibrarian.net/193669943/AlsaInfo.txt Seem there are three pin complexes for this combo jack Node 0x0b [Audio Mixer] wcaps 0x20010b: Stereo Amp-In Control: name="Headset Mic Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=1, ofs=0 Control: name="Headset Mic Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=In, idx=1, 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=0x17, nsteps=0x1f, stepsize=0x05, mute=1 Amp-In vals: [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] Connection: 5 0x18 0x19 0x1a 0x1b 0x1d Node 0x12 [Pin Complex] wcaps 0x40040b: Stereo Amp-In Control: name="Internal Mic Boost Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Control: name="Internal Mic Phantom Jack", index=0, device=0 Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0 Amp-In vals: [0x03 0x03] Pincap 0x00000020: IN Pin Default 0x90a60130: [Fixed] Mic at Int N/A Conn = Digital, Color = Unknown DefAssociation = 0x3, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x20: IN Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Node 0x14 [Pin Complex] wcaps 0x40058d: 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 0x00010014: OUT EAPD Detect EAPD 0x2: EAPD Pin Default 0x90170110: [Fixed] Speaker at Int N/A Conn = Analog, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x40: OUT Unsolicited: tag=00, enabled=0 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 1 0x0c Node 0x19 [Pin Complex] wcaps 0x40048b: Stereo Amp-In Control: name="Headset Mic Boost Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Control: name="Headset Mic Phantom Jack", index=0, device=0 Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0 Amp-In vals: [0x03 0x03] Pincap 0x00003724: IN Detect Vref caps: HIZ 50 GRD 80 100 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 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Node 0x21 [Pin Complex] wcaps 0x40058d: 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 0x0001001c: OUT HP EAPD Detect EAPD 0x2: EAPD Pin Default 0x0321101f: [Jack] HP Out at Ext Left Conn = 1/8, Color = Black DefAssociation = 0x1, Sequence = 0xf Pin-ctls: 0xc0: OUT HP Unsolicited: tag=01, enabled=1 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 2 0x0c 0x0d* sys/class/sound/hwC0D0/init_verbs: /sys/class/sound/hwC1D0/init_pin_configs: 0x12 0x90a60130 0x14 0x90170110 0x17 0x40020008 0x18 0x411111f0 0x19 0x411111f0 0x1a 0x411111f0 0x1b 0x411111f0 0x1d 0x40e00001 0x1e 0x411111f0 0x21 0x0321101f /sys/class/sound/hwC1D0/driver_pin_configs: 0x19 0x01a1913c 0x1a 0x01a1913d ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-04-04 5:39 ` Raymond Yau @ 2015-04-06 9:26 ` Liam Girdwood 2015-04-07 3:00 ` Raymond Yau 2015-04-08 1:29 ` Raymond Yau 0 siblings, 2 replies; 28+ messages in thread From: Liam Girdwood @ 2015-04-06 9:26 UTC (permalink / raw) To: Raymond Yau Cc: Tanu Kaskinen, Takashi Iwai, ALSA Development Mailing List, Mark Brown, Arun Raghavan, Han Lu, Dylan Reid On Sat, 2015-04-04 at 13:39 +0800, Raymond Yau wrote: > > >> > > > >> > I've added a few others on the CC that would be interested. > > >> > > > >> > > My understanding is that a UCM device can represent a thing > that has > > >> > > both input and output (I don't particularly like that, but > it's too late > > >> > > to complain). > > >> > > > >> > Yes, but it can also represent simplex devices too e.g. > > >> > "Headset-Speakers" and "Headset-Mic". There are not any hard > rules here, > > >> > but most examples are using duplex devices as historically UCM > came from > > >> > the phone ecosystem use cases. > > >> > > > >> > > How likely do you think that there are or there will be > > >> > > some drivers that expose separate input and output jack > kcontrols for a > > >> > > headset jack, to differentiate between > headphones/headset/microphone? My > > >> > > understanding is that jack kcontrols store only booleans, so > there's no > > >> > > way to distinguish between headphones and a headset with just > one kcontrol. > > >> > > > > >> > > > >> > This sounds like we need to extend the jack kcontrol so that we > can > > >> > differentiate between Headphones and Headset unless the > kcontrol naming > > >> > was intended to differentiate and define the jack type ? > > >> > > >> I guess it's now clear that all jack kcontrols will be booleans, > and > > >> headset jacks will require two jack kcontrols. > > >> > > >> > > The current UCM "spec" doesn't support specifying multiple > kcontrols, > > >> > > since there's only one "JackControl" value. (Perhaps the > "JackDev" value > > >> > > suffers from this problem too, but I don't know if jack input > devices > > >> > > already support reporting the state separately for input and > output.) > > >> > > > > >> > > > >> > I think in this case we could define simplex UCM devices and > attach a > > >> > JackControl value to each device. > > >> > > >> So is your preference that UCM configuration authors are forced > to > > >> define simplex devices to deal with headset jacks, rather than > using > > >> duplex devices and defining "PlaybackJackControl" and > > >> "CaptureJackControl" separately? (I don't personally mind either > way.) > > > > > > I don't really mind either, but what's easier for audio servers > like > > > pulseaudio that will be the main UCM clients ? I guess that > pulseaudio, > > > CRAS, and other audio servers probably deal with simplex PCM > streams > > > internally so mapping to simplex jacks/devices might be better ? > > > > There is an advantage to having a separate device for the headphone > and mic > > even if they are connected to the same jack. The user can enable > one and not > > the other, most commonly to use the headphones but record from the > built-in mic, > > ignoring the headset mic. Because of this we require all ChromeOS > devices to > > support separate reporting and selection of headphone/mic on the > headset jack. > > There is always one UCM device and one user-visible i/o node per > jack. > > > > > > > How do these kind of jack handle by UCM ? > > http://www.dell.com/support/home/us/en/19/product-support/product/inspiron-15-3537/manuals > > 6 Headset port Connect a headphone, a microphone, or a headphone and > microphone combo (headset). > UCM is not really needed for this device as Pulseaudio handles the standardised HDA jacks and routing (there is nothing stopping a UCM config being defined though). So for each input/output endpoint above you would list it's jack kcontrol in the endpoint device section. e.g. sound server reads jack input and type, checks UCM config and matches the device before setting routing according to UCM device. UCM is mainly needed for non HDA devices that have different jack pins, volume controls and routing controls. Sound servers have no way of guessing the correct mixers and volume controls to use for non HDA devices as they are all very different HW. Liam ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-04-06 9:26 ` Liam Girdwood @ 2015-04-07 3:00 ` Raymond Yau 2015-04-08 1:29 ` Raymond Yau 1 sibling, 0 replies; 28+ messages in thread From: Raymond Yau @ 2015-04-07 3:00 UTC (permalink / raw) To: Liam Girdwood Cc: Tanu Kaskinen, Takashi Iwai, ALSA Development Mailing List, Mark Brown, Arun Raghavan, Han Lu, Dylan Reid > > > > How do these kind of jack handle by UCM ? > > > > http://www.dell.com/support/home/us/en/19/product-support/product/inspiron-15-3537/manuals > > > > 6 Headset port Connect a headphone, a microphone, or a headphone and > > microphone combo (headset). > > > > UCM is not really needed for this device as Pulseaudio handles the > standardised HDA jacks and routing (there is nothing stopping a UCM > config being defined though). So for each input/output endpoint above > you would list it's jack kcontrol in the endpoint device section. e.g. > sound server reads jack input and type, checks UCM config and matches > the device before setting routing according to UCM device. #ifdef CONFIG_SND_HDA_INPUT_JACK if (!phantom_jack) { jack->type = get_input_jack_type(codec, nid); err = snd_jack_new(codec->card, name, jack->type, &jack->jack); if (err < 0) return err; jack->jack->private_data = jack; jack->jack->private_free = hda_free_jack_priv; snd_jack_report(jack->jack, state ? jack->type : 0); } #endif Current implementation only create input jack when CONFIG_SND_HDA_INPUT_JACK is defined but those input jacks are always created by the proposed change Node 0x19 [Pin Complex] wcaps 0x40048b: Stereo Amp-In Control: name="Headset Mic Boost Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Control: name="Headset Mic Phantom Jack", index=0, device=0 Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0 Amp-In vals: [0x03 0x03] Pincap 0x00003724: IN Detect Vref caps: HIZ 50 GRD 80 100 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 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Node 0x1a [Pin Complex] wcaps 0x40048b: Stereo Amp-In Control: name="Headphone Mic Boost Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0 Amp-In vals: [0x00 0x00] Pincap 0x00003724: IN Detect Vref caps: HIZ 50 GRD 80 100 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 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Node 0x21 [Pin Complex] wcaps 0x40058d: 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 0x0001001c: OUT HP EAPD Detect EAPD 0x2: EAPD Pin Default 0x0321101f: [Jack] HP Out at Ext Left Conn = 1/8, Color = Black DefAssociation = 0x1, Sequence = 0xf Pin-ctls: 0xc0: OUT HP Unsolicited: tag=01, enabled=1 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 2 0x0c 0x0d* This mean that those application which want to use kctl must ask the user to select the type of the jack whenever the user plugged the jack if the hatdware cannot distinguish headset, headphone or mic jack What will happen when the user already plugged the jack before boot or restart pulseaudio server ? http://bazaar.launchpad.net/~unity-settings-daemon-team/unity-settings-daemon/trunk/view/head:/plugins/media-keys/what-did-you-plug-in/pa-backend.c In PulseAudio ports will show up with the following names: Headphones - analog-output-headphones Headset mic - analog-input-microphone-headset Jack in mic-in mode - analog-input-microphone However, since regular mics also show up as analog-input-microphone, we need to check for certain controls on alsa mixer level too, to know if we deal with a separate mic jack, or a multi-function jack with a mic-in mode (also called "headphone mic"). We check for the following names: Headphone Mic Jack - indicates headphone and mic-in mode share the same jack, i e, not two separate jacks. Hardware cannot distinguish between a headphone and a mic. Headset Mic Phantom Jack - indicates headset jack where hardware can not distinguish between headphones and headsets Headset Mic Jack - indicates headset jack where hardware can distinguish between headphones and headsets. There is no use popping up a dialog in this case, unless we already need to do this for the mic-in mode. > > UCM is mainly needed for non HDA devices that have different jack pins, > volume controls and routing controls. Sound servers have no way of > guessing the correct mixers and volume controls to use for non HDA > devices as they are all very different HW. > Do this mean that for those notebook which have three physical jacks : headset, headphone and mic jack should create headset jack headset mic jack, headphone jack and mic jack kctls ? http://www.dell.com/support/home/us/en/19/product-support/product/alienware-14/manuals 17. Headphones and microphone combo port 18. Headphones/Speakers port 19. Microphone port https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1302090 https://launchpadlibrarian.net/171704958/alsa-info.txt.ReoE61oqo9 Node 0x15 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out Control: name="Headphone Playback Switch", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Control: name="Headphone Front Jack", index=0, device=0 Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x0001001c: OUT HP EAPD Detect EAPD 0x2: EAPD Pin Default 0x0321101f: [Jack] HP Out at Ext Left Conn = 1/8, Color = Black DefAssociation = 0x1, Sequence = 0xf Pin-ctls: 0xc0: OUT HP Unsolicited: tag=01, enabled=1 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 3 0x0c* 0x0d 0x0e Node 0x16 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out Control: name="Headphone Playback Switch", index=1, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Control: name="Headphone Surround Jack", index=0, device=0 Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x0000001c: OUT HP Detect Pin Default 0x03211020: [Jack] HP Out at Ext Left Conn = 1/8, Color = Black DefAssociation = 0x2, Sequence = 0x0 Pin-ctls: 0xc0: OUT HP Unsolicited: tag=02, enabled=1 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 3 0x0c 0x0d* 0x0e Node 0x19 [Pin Complex] wcaps 0x40058f: Stereo Amp-In Amp-Out Control: name="Mic Boost Volume", index=0, device=0 ControlAmp: chs=3, dir=In, idx=0, ofs=0 Control: name="Mic Jack", index=0, device=0 Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-In vals: [0x00 0x00] Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x0000373c: IN OUT HP Detect Vref caps: HIZ 50 GRD 80 100 Pin Default 0x03a11030: [Jack] Mic at Ext Left Conn = 1/8, Color = Black DefAssociation = 0x3, Sequence = 0x0 Pin-ctls: 0x24: IN VREF_80 Unsolicited: tag=03, enabled=1 Power states: D0 D1 D2 D3 EPSS Power: setting=D0, actual=D0 Connection: 3 0x0c* 0x0d 0x0e ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-04-06 9:26 ` Liam Girdwood 2015-04-07 3:00 ` Raymond Yau @ 2015-04-08 1:29 ` Raymond Yau 1 sibling, 0 replies; 28+ messages in thread From: Raymond Yau @ 2015-04-08 1:29 UTC (permalink / raw) To: Liam Girdwood, 1406355 Cc: Tanu Kaskinen, Takashi Iwai, ALSA Development Mailing List, Mark Brown, Arun Raghavan, Han Lu, Dylan Reid > > > > > > > > How do these kind of jack handle by UCM ? > > > > http://www.dell.com/support/home/us/en/19/product-support/product/inspiron-15-3537/manuals > > > > 6 Headset port Connect a headphone, a microphone, or a headphone and > > microphone combo (headset). > > > > UCM is not really needed for this device as Pulseaudio handles the > standardised HDA jacks and routing (there is nothing stopping a UCM > config being defined though). So for each input/output endpoint above > you would list it's jack kcontrol in the endpoint device section. e.g. > sound server reads jack input and type, checks UCM config and matches > the device before setting routing according to UCM device. > When using hda emu and latest alsa driver with https://launchpadlibrarian.net/193669943/AlsaInfo.txt The driver create capture source control which allow user to select internal mic, headset mic and headphone mic , this control change the function of the combo jack to headphone, headset and mic If this logic is also applied to those notebook with three physical jack: headset, headphone and mic jack The user need to select the headset mic , mic and internal mic using capture source control when not using pulseaudio ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-04-02 15:28 ` Dylan Reid 2015-04-04 5:39 ` Raymond Yau @ 2015-04-07 20:37 ` Tanu Kaskinen 2015-04-15 15:39 ` Tanu Kaskinen 1 sibling, 1 reply; 28+ messages in thread From: Tanu Kaskinen @ 2015-04-07 20:37 UTC (permalink / raw) To: Dylan Reid Cc: alsa-devel@alsa-project.org, Takashi Iwai, Liam Girdwood, Mark Brown, Arun Raghavan, Han Lu On Thu, 2015-04-02 at 08:28 -0700, Dylan Reid wrote: > On Wed, Apr 1, 2015 at 5:27 AM, Liam Girdwood > <liam.r.girdwood@linux.intel.com> wrote: > > On Tue, 2015-03-31 at 19:49 +0300, Tanu Kaskinen wrote: > >> So is your preference that UCM configuration authors are forced to > >> define simplex devices to deal with headset jacks, rather than using > >> duplex devices and defining "PlaybackJackControl" and > >> "CaptureJackControl" separately? (I don't personally mind either way.) > > > > I don't really mind either, but what's easier for audio servers like > > pulseaudio that will be the main UCM clients ? I guess that pulseaudio, > > CRAS, and other audio servers probably deal with simplex PCM streams > > internally so mapping to simplex jacks/devices might be better ? > > There is an advantage to having a separate device for the headphone and mic > even if they are connected to the same jack. The user can enable one and not > the other, most commonly to use the headphones but record from the built-in mic, > ignoring the headset mic. Because of this we require all ChromeOS devices to > support separate reporting and selection of headphone/mic on the headset jack. > There is always one UCM device and one user-visible i/o node per jack. I'm not sure what you mean... "There is always one UCM device [...] per jack" sounds like you want there to be only one device representing headset, but on the other hand you talk about it being advantageous to have a separate device for the headphone and mic... Can you clarify the number of UCM devices per physical headset jack? -- Tanu ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-04-07 20:37 ` Tanu Kaskinen @ 2015-04-15 15:39 ` Tanu Kaskinen 2015-04-15 16:10 ` Dylan Reid 0 siblings, 1 reply; 28+ messages in thread From: Tanu Kaskinen @ 2015-04-15 15:39 UTC (permalink / raw) To: Dylan Reid Cc: alsa-devel@alsa-project.org, Takashi Iwai, Liam Girdwood, Mark Brown, Arun Raghavan, Han Lu On Tue, 2015-04-07 at 23:37 +0300, Tanu Kaskinen wrote: > On Thu, 2015-04-02 at 08:28 -0700, Dylan Reid wrote: > > On Wed, Apr 1, 2015 at 5:27 AM, Liam Girdwood > > <liam.r.girdwood@linux.intel.com> wrote: > > > On Tue, 2015-03-31 at 19:49 +0300, Tanu Kaskinen wrote: > > >> So is your preference that UCM configuration authors are forced to > > >> define simplex devices to deal with headset jacks, rather than using > > >> duplex devices and defining "PlaybackJackControl" and > > >> "CaptureJackControl" separately? (I don't personally mind either way.) > > > > > > I don't really mind either, but what's easier for audio servers like > > > pulseaudio that will be the main UCM clients ? I guess that pulseaudio, > > > CRAS, and other audio servers probably deal with simplex PCM streams > > > internally so mapping to simplex jacks/devices might be better ? > > > > There is an advantage to having a separate device for the headphone and mic > > even if they are connected to the same jack. The user can enable one and not > > the other, most commonly to use the headphones but record from the built-in mic, > > ignoring the headset mic. Because of this we require all ChromeOS devices to > > support separate reporting and selection of headphone/mic on the headset jack. > > There is always one UCM device and one user-visible i/o node per jack. > > I'm not sure what you mean... "There is always one UCM device [...] per > jack" sounds like you want there to be only one device representing > headset, but on the other hand you talk about it being advantageous to > have a separate device for the headphone and mic... Can you clarify the > number of UCM devices per physical headset jack? Ping? I'd like to get this clarified, because depending on what CRAS does, we may or may not have to change the use-case.h documentation (and PulseAudio code). -- Tanu ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-04-15 15:39 ` Tanu Kaskinen @ 2015-04-15 16:10 ` Dylan Reid 2015-04-16 8:31 ` Tanu Kaskinen 0 siblings, 1 reply; 28+ messages in thread From: Dylan Reid @ 2015-04-15 16:10 UTC (permalink / raw) To: Tanu Kaskinen Cc: alsa-devel@alsa-project.org, Takashi Iwai, Liam Girdwood, Mark Brown, Arun Raghavan, Han Lu On Wed, Apr 15, 2015 at 8:39 AM, Tanu Kaskinen <tanu.kaskinen@linux.intel.com> wrote: > On Tue, 2015-04-07 at 23:37 +0300, Tanu Kaskinen wrote: >> On Thu, 2015-04-02 at 08:28 -0700, Dylan Reid wrote: >> > On Wed, Apr 1, 2015 at 5:27 AM, Liam Girdwood >> > <liam.r.girdwood@linux.intel.com> wrote: >> > > On Tue, 2015-03-31 at 19:49 +0300, Tanu Kaskinen wrote: >> > >> So is your preference that UCM configuration authors are forced to >> > >> define simplex devices to deal with headset jacks, rather than using >> > >> duplex devices and defining "PlaybackJackControl" and >> > >> "CaptureJackControl" separately? (I don't personally mind either way.) >> > > >> > > I don't really mind either, but what's easier for audio servers like >> > > pulseaudio that will be the main UCM clients ? I guess that pulseaudio, >> > > CRAS, and other audio servers probably deal with simplex PCM streams >> > > internally so mapping to simplex jacks/devices might be better ? >> > >> > There is an advantage to having a separate device for the headphone and mic >> > even if they are connected to the same jack. The user can enable one and not >> > the other, most commonly to use the headphones but record from the built-in mic, >> > ignoring the headset mic. Because of this we require all ChromeOS devices to >> > support separate reporting and selection of headphone/mic on the headset jack. >> > There is always one UCM device and one user-visible i/o node per jack. >> >> I'm not sure what you mean... "There is always one UCM device [...] per >> jack" sounds like you want there to be only one device representing >> headset, but on the other hand you talk about it being advantageous to >> have a separate device for the headphone and mic... Can you clarify the >> number of UCM devices per physical headset jack? > > Ping? I'd like to get this clarified, because depending on what CRAS > does, we may or may not have to change the use-case.h documentation (and > PulseAudio code). Sorry I missed this. CRAS handles separate UCM devices for the headphone and mic of a combo jack. However there is no support for handling a "Headset Jack" kcontrol or input event. We have ensured all our platforms are capable of detecting if a mic is present and that they report the headphone and mic as separate jacks. > > -- > Tanu > ^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Separate input and output jacks for one UCM device? 2015-04-15 16:10 ` Dylan Reid @ 2015-04-16 8:31 ` Tanu Kaskinen 0 siblings, 0 replies; 28+ messages in thread From: Tanu Kaskinen @ 2015-04-16 8:31 UTC (permalink / raw) To: Dylan Reid Cc: alsa-devel@alsa-project.org, Takashi Iwai, Liam Girdwood, Mark Brown, Arun Raghavan, Han Lu On Wed, 2015-04-15 at 09:10 -0700, Dylan Reid wrote: > On Wed, Apr 15, 2015 at 8:39 AM, Tanu Kaskinen > <tanu.kaskinen@linux.intel.com> wrote: > > On Tue, 2015-04-07 at 23:37 +0300, Tanu Kaskinen wrote: > >> I'm not sure what you mean... "There is always one UCM device [...] per > >> jack" sounds like you want there to be only one device representing > >> headset, but on the other hand you talk about it being advantageous to > >> have a separate device for the headphone and mic... Can you clarify the > >> number of UCM devices per physical headset jack? > > > > Ping? I'd like to get this clarified, because depending on what CRAS > > does, we may or may not have to change the use-case.h documentation (and > > PulseAudio code). > > Sorry I missed this. CRAS handles separate UCM devices for the > headphone and mic of a combo jack. However there is no support for > handling a "Headset Jack" kcontrol or input event. We have ensured > all our platforms are capable of detecting if a mic is present and > that they report the headphone and mic as separate jacks. Thanks, no need to change anything then! (At least for now.) -- Tanu ^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2015-04-16 8:31 UTC | newest] Thread overview: 28+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-03-18 19:41 Separate input and output jacks for one UCM device? Tanu Kaskinen 2015-03-19 9:15 ` Liam Girdwood 2015-03-19 14:09 ` Takashi Iwai 2015-03-19 14:19 ` Mark Brown 2015-03-19 14:22 ` Jie, Yang 2015-03-19 14:34 ` Takashi Iwai 2015-03-19 14:31 ` Jie, Yang 2015-03-19 14:37 ` Takashi Iwai 2015-03-19 14:42 ` Mark Brown 2015-03-19 14:51 ` Takashi Iwai 2015-03-19 15:18 ` Mark Brown 2015-03-19 15:28 ` Takashi Iwai 2015-03-19 15:45 ` Mark Brown 2015-03-20 4:03 ` Raymond Yau 2015-03-31 16:49 ` Tanu Kaskinen 2015-04-01 12:27 ` Liam Girdwood 2015-04-01 16:56 ` Tanu Kaskinen 2015-04-01 23:24 ` Raymond Yau 2015-04-02 6:39 ` Liam Girdwood 2015-04-02 15:28 ` Dylan Reid 2015-04-04 5:39 ` Raymond Yau 2015-04-06 9:26 ` Liam Girdwood 2015-04-07 3:00 ` Raymond Yau 2015-04-08 1:29 ` Raymond Yau 2015-04-07 20:37 ` Tanu Kaskinen 2015-04-15 15:39 ` Tanu Kaskinen 2015-04-15 16:10 ` Dylan Reid 2015-04-16 8:31 ` Tanu Kaskinen
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.