mbox series

[v2,0/4] ASoC: simple-card-utils: create jack inputs for aux_devs

Message ID 20230120102555.1523394-1-astrid.rost@axis.com
Headers show
Series ASoC: simple-card-utils: create jack inputs for aux_devs | expand

Message

Astrid Rost Jan. 20, 2023, 10:25 a.m. UTC
Add a generic way to create jack inputs for auxiliary jack detection
drivers (e.g. via i2c, spi), which are not part of any real codec.
The simple-card can be used as combining card driver to add the jacks,
no new one is required.

Create a jack (for input-events) for jack devices in the auxiliary
device list (aux_devs). A device which returns a valid value on
get_jack_type counts as jack device; set_jack is required
to add the jack to the device.

v1 -> v2: Auxiliary jack drivers return the correct snd_jack_type with
 the function: get_jack_type.
- No devicetree changes in simple-card.
- soc-component: changed name to: get_jack_type.
- simple-jack-utils: updated algorithm to add jack devices.
   A device which returns a valid value on get_jack_type counts as jack
   device
- ts3a227e: added devicetree property jack-type, added NULL check for jack.

Astrid Rost (4):
  [PATCH v2 1/4] ASoC: soc-component: add get_jack_type
  [PATCH v2 2/4] ASoC: simple-card-utils: create jack inputs for aux_devs
  [PATCH v2 3/4] ASoC: ts3a227e: add set_jack and get_jack_type
  [PATCH v2 4/4] ASoC: dt-bindings: ti,ts3a227e.yaml: add jack-type

 .../bindings/sound/ti,ts3a227e.yaml           |  8 +++
 include/sound/simple_card_utils.h             |  3 ++
 include/sound/soc-component.h                 |  2 +
 sound/soc/codecs/ts3a227e.c                   | 29 ++++++++++-
 sound/soc/generic/simple-card-utils.c         | 49 +++++++++++++++++++
 sound/soc/generic/simple-card.c               |  4 ++
 sound/soc/soc-component.c                     | 20 ++++++++
 7 files changed, 114 insertions(+), 1 deletion(-)

Comments

Krzysztof Kozlowski Jan. 22, 2023, 2:16 p.m. UTC | #1
On 20/01/2023 11:25, Astrid Rost wrote:
> Add jack-type: Bitmap value of snd_jack_type to allow combining
> card drivers to create a jack for it.

Subject: drop "yaml". We do not filename extensions to subject prefix.
Nowhere.

> 
> Signed-off-by: Astrid Rost <astrid.rost@axis.com>
> ---
>  Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml b/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
> index 785930658029..1d949b805f98 100644
> --- a/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
> +++ b/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
> @@ -27,6 +27,14 @@ properties:
>    interrupts:
>      maxItems: 1
>  
> +  jack-type:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Bitmap value of snd_jack_type to allow combining
> +      card drivers to create a jack for it. Supported is

Why the device would once support (allow) headphone and once not? Device
either always supports them or never...


> +        1 SND_JACK_HEADPHONE
> +        2 SND_JACK_MICROPHONE

minimum and maximum

> +    default: 3
> +
>    ti,micbias:
>      $ref: /schemas/types.yaml#/definitions/uint32
>      description: Intended MICBIAS voltage (datasheet section 9.6.7).

Best regards,
Krzysztof
Krzysztof Kozlowski Jan. 23, 2023, 9:05 a.m. UTC | #2
On 23/01/2023 09:39, Astrid Rost wrote:
> Hello Krzysztof,
> 
> On 1/22/23 15:16, Krzysztof Kozlowski wrote:
>> On 20/01/2023 11:25, Astrid Rost wrote:
>>> Add jack-type: Bitmap value of snd_jack_type to allow combining
>>> card drivers to create a jack for it.
>>
>> Subject: drop "yaml". We do not filename extensions to subject prefix.
>> Nowhere.
>>
> 
> yes, true.
> 
>>>
>>> Signed-off-by: Astrid Rost <astrid.rost@axis.com>
>>> ---
>>>   Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml | 8 ++++++++
>>>   1 file changed, 8 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml b/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
>>> index 785930658029..1d949b805f98 100644
>>> --- a/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
>>> +++ b/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
>>> @@ -27,6 +27,14 @@ properties:
>>>     interrupts:
>>>       maxItems: 1
>>>   
>>> +  jack-type:
>>> +    $ref: /schemas/types.yaml#/definitions/uint32
>>> +    description: Bitmap value of snd_jack_type to allow combining
>>> +      card drivers to create a jack for it. Supported is
>>
>> Why the device would once support (allow) headphone and once not? Device
>> either always supports them or never...
>>
> 
> If a device has two connectors (pink and green), one for the microphone 
> and one for the headset. 

We talk about "ts3a227" here, which has always two connectors (pins)...
unless you refer to the case when these are e.g. grounded?


> It would be easier to see from the available 
> events, which is which. But of course it is possible to give it good names.
> My first approach was, that it returned all supported types, so no 
> devicetree change needed. But by colleges agreed that it would be nice
> to remove unused flags. I am happy to remove it and someone who requires 
> it can add it.
> 
>>> +        1 SND_JACK_HEADPHONE
>>> +        2 SND_JACK_MICROPHONE
>>
>> minimum and maximum
> 
> I do not understand this? It is a bitmap. I can put it as an
> enum:
>   - 1 # SND_JACK_HEADPHONE
>   - 2 # SND_JACK_MICROPHONE
>   - 3 # SND_JACK_HEADPHONE | SND_JACK_MICROPHONE


Then maximum is OR of them, isn't it?

Best regards,
Krzysztof
Astrid Rost Jan. 23, 2023, 9:19 a.m. UTC | #3
Hello,

On 1/23/23 10:05, Krzysztof Kozlowski wrote:
> On 23/01/2023 09:39, Astrid Rost wrote:
>> Hello Krzysztof,
>>
>> On 1/22/23 15:16, Krzysztof Kozlowski wrote:
>>> On 20/01/2023 11:25, Astrid Rost wrote:
>>>> Add jack-type: Bitmap value of snd_jack_type to allow combining
>>>> card drivers to create a jack for it.
>>>
>>> Subject: drop "yaml". We do not filename extensions to subject prefix.
>>> Nowhere.
>>>
>>
>> yes, true.
>>
>>>>
>>>> Signed-off-by: Astrid Rost <astrid.rost@axis.com>
>>>> ---
>>>>    Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml | 8 ++++++++
>>>>    1 file changed, 8 insertions(+)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml b/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
>>>> index 785930658029..1d949b805f98 100644
>>>> --- a/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
>>>> +++ b/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
>>>> @@ -27,6 +27,14 @@ properties:
>>>>      interrupts:
>>>>        maxItems: 1
>>>>    
>>>> +  jack-type:
>>>> +    $ref: /schemas/types.yaml#/definitions/uint32
>>>> +    description: Bitmap value of snd_jack_type to allow combining
>>>> +      card drivers to create a jack for it. Supported is
>>>
>>> Why the device would once support (allow) headphone and once not? Device
>>> either always supports them or never...
>>>
>>
>> If a device has two connectors (pink and green), one for the microphone
>> and one for the headset.
> 
> We talk about "ts3a227" here, which has always two connectors (pins)...
> unless you refer to the case when these are e.g. grounded?
> 

yes, that is what I meant.
I push a version, where I remove this.

> 
>> It would be easier to see from the available
>> events, which is which. But of course it is possible to give it good names.
>> My first approach was, that it returned all supported types, so no
>> devicetree change needed. But by colleges agreed that it would be nice
>> to remove unused flags. I am happy to remove it and someone who requires
>> it can add it.
>>
>>>> +        1 SND_JACK_HEADPHONE
>>>> +        2 SND_JACK_MICROPHONE
>>>
>>> minimum and maximum
>>
>> I do not understand this? It is a bitmap. I can put it as an
>> enum:
>>    - 1 # SND_JACK_HEADPHONE
>>    - 2 # SND_JACK_MICROPHONE
>>    - 3 # SND_JACK_HEADPHONE | SND_JACK_MICROPHONE
> 
> 
> Then maximum is OR of them, isn't it?

yes 1-3
> 
> Best regards,
> Krzysztof
> 

Astrid
Rob Herring Jan. 23, 2023, 10:09 p.m. UTC | #4
On Fri, Jan 20, 2023 at 11:25:54AM +0100, Astrid Rost wrote:
> Add jack-type: Bitmap value of snd_jack_type to allow combining
> card drivers to create a jack for it.
> 
> Signed-off-by: Astrid Rost <astrid.rost@axis.com>
> ---
>  Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml b/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
> index 785930658029..1d949b805f98 100644
> --- a/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
> +++ b/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
> @@ -27,6 +27,14 @@ properties:
>    interrupts:
>      maxItems: 1
>  
> +  jack-type:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description: Bitmap value of snd_jack_type to allow combining

snd_jack_type? Is that a Linux thing? Bindings are independent of Linux.

> +      card drivers to create a jack for it. Supported is
> +        1 SND_JACK_HEADPHONE
> +        2 SND_JACK_MICROPHONE
> +    default: 3

I'm pretty sure jack properties are more complicated than just headphone 
and/or microphone. There's buttons which are detected in differing ways.

Rob
Astrid Rost Jan. 24, 2023, 8:46 a.m. UTC | #5
Hello Rob,

On 1/23/23 23:09, Rob Herring wrote:
> On Fri, Jan 20, 2023 at 11:25:54AM +0100, Astrid Rost wrote:
>> Add jack-type: Bitmap value of snd_jack_type to allow combining
>> card drivers to create a jack for it.
>>
>> Signed-off-by: Astrid Rost <astrid.rost@axis.com>
>> ---
>>   Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml | 8 ++++++++
>>   1 file changed, 8 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml b/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
>> index 785930658029..1d949b805f98 100644
>> --- a/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
>> +++ b/Documentation/devicetree/bindings/sound/ti,ts3a227e.yaml
>> @@ -27,6 +27,14 @@ properties:
>>     interrupts:
>>       maxItems: 1
>>   
>> +  jack-type:
>> +    $ref: /schemas/types.yaml#/definitions/uint32
>> +    description: Bitmap value of snd_jack_type to allow combining
> 
> snd_jack_type? Is that a Linux thing? Bindings are independent of Linux.
> 
>> +      card drivers to create a jack for it. Supported is
>> +        1 SND_JACK_HEADPHONE
>> +        2 SND_JACK_MICROPHONE
>> +    default: 3
> 
> I'm pretty sure jack properties are more complicated than just headphone
> and/or microphone. There's buttons which are detected in differing ways.

Yes, you are right. On the buttons, someone would like to have an 
keymapping like KEY_VOLUMEDOWN, KEY_VOLUMEUP for the different buttons 
SND_JACK_BTN_X. This is always added to the jack by the ts3a227e driver.

I pushed yesterday a v3, which returns all supported jack types by this 
device. I am happy with this.

> 
> Rob

Best regards

Astrid