diff mbox series

[RFC,1/5] dt-bindings: sound: Add Apple Macs sound system

Message ID 20220331000449.41062-2-povik+lin@cutebit.org
State Changes Requested, archived
Headers show
Series Apple Macs machine-level ASoC driver | expand

Checks

Context Check Description
robh/checkpatch success
robh/patch-applied success
robh/checkpatch success
robh/patch-applied success
robh/checkpatch success
robh/patch-applied success
robh/dtbs-check success
robh/dt-meta-schema success

Commit Message

Martin Povišer March 31, 2022, 12:04 a.m. UTC
Add binding for Apple Silicon Macs' machine-level sound system.

Signed-off-by: Martin Povišer <povik+lin@cutebit.org>
---
 .../bindings/sound/apple,macaudio.yaml        | 103 ++++++++++++++++++
 1 file changed, 103 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/apple,macaudio.yaml

Comments

Krzysztof Kozlowski March 31, 2022, 6:43 a.m. UTC | #1
On 31/03/2022 02:04, Martin Povišer wrote:
> Add binding for Apple Silicon Macs' machine-level sound system.
> 
> Signed-off-by: Martin Povišer <povik+lin@cutebit.org>
> ---
>  .../bindings/sound/apple,macaudio.yaml        | 103 ++++++++++++++++++
>  1 file changed, 103 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/sound/apple,macaudio.yaml
> 

Commit title does not match subsystem.

> diff --git a/Documentation/devicetree/bindings/sound/apple,macaudio.yaml b/Documentation/devicetree/bindings/sound/apple,macaudio.yaml
> new file mode 100644
> index 000000000000..a6380e4bdd1a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/apple,macaudio.yaml
> @@ -0,0 +1,103 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/apple,macaudio.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Apple Silicon Macs integrated sound system
> +
> +maintainers:
> +  - Martin Povišer <povik+lin@cutebit.org>
> +

Add description.

> +definitions:

This does not make code more readable.

> +  dai:
> +    type: object
> +    properties:
> +      sound-dai: true
> +    required:
> +      - sound-dai
> +
> +properties:
> +  compatible:
> +    items:
> +      - enum:
> +          - apple,j274-macaudio
> +          - apple,j293-macaudio
> +          - apple,j314-macaudio
> +      - const: apple,macaudio

Open example-schema.yaml and look at formatting plus general coding
style. You miss line breaks making it unreadable.

> +  "#address-cells":
> +    const: 1
> +  "#size-cells":
> +    const: 0
> +  model:
> +    description: |
> +      Model name to use when the sound system is presented to users as a sound card.
> +    $ref: /schemas/types.yaml#/definitions/string
> +
> +patternProperties:
> +  "^dai-link(@[0-9a-f]+)?$":
> +    description: |
> +      A DAI link comprising of CPU and CODEC DAI specifiers and supplemental properties.
> +    type: object
> +    properties:
> +      reg:
> +        maxItems: 1
> +      mclk-fs:
> +        description: |
> +          Forced MCLK/samplerate factor (optional).

Optional is obvious from !required.

Description is different than existing field in simple card. Is this the
same field or not?

> +        $ref: /schemas/types.yaml#/definitions/uint32
> +      link-name:
> +        description: Name for the DAI link to present to users.
> +        $ref: /schemas/types.yaml#/definitions/string
> +      cpu:
> +        $ref: "#/definitions/dai"
> +      codec:
> +        $ref: "#/definitions/dai"

missing maxItems for DAI phandles.

> +    required:
> +      - reg
> +      - cpu
> +      - codec
> +    additionalProperties: false

This entire block is unreadable.

> +
> +required:
> +  - compatible
> +  - model
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    sound {
> +      compatible = "apple,j293-macaudio", "apple,macaudio";
> +      model = "MacBook Pro J293 integrated audio";
> +
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +
> +      dai-link@0 {
> +        reg = <0>;
> +        link-name = "Speakers";
> +        mclk-fs = <64>;
> +
> +        cpu {
> +          sound-dai = <&mca 0>, <&mca 1>;
> +        };
> +        codec {
> +          sound-dai = <&speaker_left_front>, <&speaker_right_front>,
> +            <&speaker_left_rear>, <&speaker_right_rear>;

Align the line.

> +        };
> +      };
> +
> +      dai-link@1 {
> +        reg = <1>;
> +        link-name = "Headphones Jack";
> +        mclk-fs = <64>;
> +
> +        cpu {
> +          sound-dai = <&mca 2>;
> +        };
> +        codec {
> +          sound-dai = <&jack_codec>;
> +        };
> +      };
> +    };


Best regards,
Krzysztof
Martin Povišer March 31, 2022, 6:57 a.m. UTC | #2
> On 31. 3. 2022, at 8:43, Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:
> 
> On 31/03/2022 02:04, Martin Povišer wrote:
>> Add binding for Apple Silicon Macs' machine-level sound system.
>> 
>> Signed-off-by: Martin Povišer <povik+lin@cutebit.org>
>> ---
>> .../bindings/sound/apple,macaudio.yaml        | 103 ++++++++++++++++++
>> 1 file changed, 103 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/sound/apple,macaudio.yaml
>> 
> 
> Commit title does not match subsystem.

Tell more please. I don’t see it.

> 
>> diff --git a/Documentation/devicetree/bindings/sound/apple,macaudio.yaml b/Documentation/devicetree/bindings/sound/apple,macaudio.yaml
>> new file mode 100644
>> index 000000000000..a6380e4bdd1a
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/sound/apple,macaudio.yaml
>> @@ -0,0 +1,103 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/sound/apple,macaudio.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Apple Silicon Macs integrated sound system
>> +
>> +maintainers:
>> +  - Martin Povišer <povik+lin@cutebit.org>
>> +
> 
> Add description.
> 
>> +definitions:
> 
> This does not make code more readable.

Are you sure? It prevents duplication later on for ‘codec' and ‘cpu’.

> 
>> +  dai:
>> +    type: object
>> +    properties:
>> +      sound-dai: true
>> +    required:
>> +      - sound-dai
>> +
>> +properties:
>> +  compatible:
>> +    items:
>> +      - enum:
>> +          - apple,j274-macaudio
>> +          - apple,j293-macaudio
>> +          - apple,j314-macaudio
>> +      - const: apple,macaudio
> 
> Open example-schema.yaml and look at formatting plus general coding
> style. You miss line breaks making it unreadable.
> 
>> +  "#address-cells":
>> +    const: 1
>> +  "#size-cells":
>> +    const: 0
>> +  model:
>> +    description: |
>> +      Model name to use when the sound system is presented to users as a sound card.
>> +    $ref: /schemas/types.yaml#/definitions/string
>> +
>> +patternProperties:
>> +  "^dai-link(@[0-9a-f]+)?$":
>> +    description: |
>> +      A DAI link comprising of CPU and CODEC DAI specifiers and supplemental properties.
>> +    type: object
>> +    properties:
>> +      reg:
>> +        maxItems: 1
>> +      mclk-fs:
>> +        description: |
>> +          Forced MCLK/samplerate factor (optional).
> 
> Optional is obvious from !required.
> 
> Description is different than existing field in simple card. Is this the
> same field or not?

It is the same. I didn’t want to copy the simple card text because this is optionally BSD,
simple card wasn’t.

> 
>> +        $ref: /schemas/types.yaml#/definitions/uint32
>> +      link-name:
>> +        description: Name for the DAI link to present to users.
>> +        $ref: /schemas/types.yaml#/definitions/string
>> +      cpu:
>> +        $ref: "#/definitions/dai"
>> +      codec:
>> +        $ref: "#/definitions/dai"
> 
> missing maxItems for DAI phandles.

Well there’s not a maximum.

> 
> Best regards,
> Krzysztof

Martin
Krzysztof Kozlowski March 31, 2022, 8:17 a.m. UTC | #3
On 31/03/2022 08:57, Martin Povišer wrote:
> 
>> On 31. 3. 2022, at 8:43, Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:
>>
>> On 31/03/2022 02:04, Martin Povišer wrote:
>>> Add binding for Apple Silicon Macs' machine-level sound system.
>>>
>>> Signed-off-by: Martin Povišer <povik+lin@cutebit.org>
>>> ---
>>> .../bindings/sound/apple,macaudio.yaml        | 103 ++++++++++++++++++
>>> 1 file changed, 103 insertions(+)
>>> create mode 100644 Documentation/devicetree/bindings/sound/apple,macaudio.yaml
>>>
>>
>> Commit title does not match subsystem.
> 
> Tell more please. I don’t see it.

git log --oneline  -- Documentation/devicetree/bindings/sound/


Mark expects "ASoC: dt-bindings:"

> 
>>
>>> diff --git a/Documentation/devicetree/bindings/sound/apple,macaudio.yaml b/Documentation/devicetree/bindings/sound/apple,macaudio.yaml
>>> new file mode 100644
>>> index 000000000000..a6380e4bdd1a
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/sound/apple,macaudio.yaml
>>> @@ -0,0 +1,103 @@
>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>> +%YAML 1.2
>>> +---
>>> +$id: http://devicetree.org/schemas/sound/apple,macaudio.yaml#
>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>> +
>>> +title: Apple Silicon Macs integrated sound system
>>> +
>>> +maintainers:
>>> +  - Martin Povišer <povik+lin@cutebit.org>
>>> +
>>
>> Add description.
>>
>>> +definitions:
>>
>> This does not make code more readable.
> 
> Are you sure? It prevents duplication later on for ‘codec' and ‘cpu’.

That's true, but duplication is small, unless you think this will be
extended. I guess it is a trade-off, but so far for few lines and just
two users of such definition, I would prefer to duplicate. I don't have
strong opinion, though.

> 
>>
>>> +  dai:
>>> +    type: object
>>> +    properties:
>>> +      sound-dai: true
>>> +    required:
>>> +      - sound-dai
>>> +
>>> +properties:
>>> +  compatible:
>>> +    items:
>>> +      - enum:
>>> +          - apple,j274-macaudio
>>> +          - apple,j293-macaudio
>>> +          - apple,j314-macaudio
>>> +      - const: apple,macaudio
>>
>> Open example-schema.yaml and look at formatting plus general coding
>> style. You miss line breaks making it unreadable.
>>
>>> +  "#address-cells":
>>> +    const: 1
>>> +  "#size-cells":
>>> +    const: 0
>>> +  model:
>>> +    description: |
>>> +      Model name to use when the sound system is presented to users as a sound card.
>>> +    $ref: /schemas/types.yaml#/definitions/string
>>> +
>>> +patternProperties:
>>> +  "^dai-link(@[0-9a-f]+)?$":
>>> +    description: |
>>> +      A DAI link comprising of CPU and CODEC DAI specifiers and supplemental properties.
>>> +    type: object
>>> +    properties:
>>> +      reg:
>>> +        maxItems: 1
>>> +      mclk-fs:
>>> +        description: |
>>> +          Forced MCLK/samplerate factor (optional).
>>
>> Optional is obvious from !required.
>>
>> Description is different than existing field in simple card. Is this the
>> same field or not?
> 
> It is the same. I didn’t want to copy the simple card text because this is optionally BSD,
> simple card wasn’t.

OK

> 
>>
>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>> +      link-name:
>>> +        description: Name for the DAI link to present to users.
>>> +        $ref: /schemas/types.yaml#/definitions/string
>>> +      cpu:
>>> +        $ref: "#/definitions/dai"
>>> +      codec:
>>> +        $ref: "#/definitions/dai"
>>
>> missing maxItems for DAI phandles.
> 
> Well there’s not a maximum.

There should be some maximum of supported codecs. Hardware might have
such constraints. If really unsure, choose some reasonable (small)
amount. It could be later raised, if needed.


Best regards,
Krzysztof
Martin Povišer March 31, 2022, 8:23 a.m. UTC | #4
> On 31. 3. 2022, at 10:17, Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:
> 
> On 31/03/2022 08:57, Martin Povišer wrote:
>> 
>>> On 31. 3. 2022, at 8:43, Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:
>>> 
>>> On 31/03/2022 02:04, Martin Povišer wrote:
>>>> Add binding for Apple Silicon Macs' machine-level sound system.
>>>> 
>>>> Signed-off-by: Martin Povišer <povik+lin@cutebit.org>
>>>> ---
>>>> .../bindings/sound/apple,macaudio.yaml        | 103 ++++++++++++++++++
>>>> 1 file changed, 103 insertions(+)
>>>> create mode 100644 Documentation/devicetree/bindings/sound/apple,macaudio.yaml
>>>> 
>>> 
>>> Commit title does not match subsystem.
>> 
>> Tell more please. I don’t see it.
> 
> git log --oneline  -- Documentation/devicetree/bindings/sound/
> 
> 
> Mark expects "ASoC: dt-bindings:"

Aha! Thanks.

>>>> diff --git a/Documentation/devicetree/bindings/sound/apple,macaudio.yaml b/Documentation/devicetree/bindings/sound/apple,macaudio.yaml
>>>> new file mode 100644
>>>> index 000000000000..a6380e4bdd1a
>>>> --- /dev/null
>>>> +++ b/Documentation/devicetree/bindings/sound/apple,macaudio.yaml
>>>> @@ -0,0 +1,103 @@
>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>>> +%YAML 1.2
>>>> +---
>>>> +$id: http://devicetree.org/schemas/sound/apple,macaudio.yaml#
>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>> +
>>>> +title: Apple Silicon Macs integrated sound system
>>>> +
>>>> +maintainers:
>>>> +  - Martin Povišer <povik+lin@cutebit.org>
>>>> +
>>> 
>>> Add description.
>>> 
>>>> +definitions:
>>> 
>>> This does not make code more readable.
>> 
>> Are you sure? It prevents duplication later on for ‘codec' and ‘cpu’.
> 
> That's true, but duplication is small, unless you think this will be
> extended. I guess it is a trade-off, but so far for few lines and just
> two users of such definition, I would prefer to duplicate. I don't have
> strong opinion, though.

OK

>> 
>>> 
>>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>>> +      link-name:
>>>> +        description: Name for the DAI link to present to users.
>>>> +        $ref: /schemas/types.yaml#/definitions/string
>>>> +      cpu:
>>>> +        $ref: "#/definitions/dai"
>>>> +      codec:
>>>> +        $ref: "#/definitions/dai"
>>> 
>>> missing maxItems for DAI phandles.
>> 
>> Well there’s not a maximum.
> 
> There should be some maximum of supported codecs. Hardware might have
> such constraints. If really unsure, choose some reasonable (small)
> amount. It could be later raised, if needed.

There are some constraints but technically not in the driver that binds
on this binding. I thought no limit is better than an arbitrary one, but
if the preference is to have one, I will add it, no problem.

> Best regards,
> Krzysztof

Best,
Martin
Krzysztof Kozlowski March 31, 2022, 8:26 a.m. UTC | #5
On 31/03/2022 10:23, Martin Povišer wrote:
> 
>> There should be some maximum of supported codecs. Hardware might have
>> such constraints. If really unsure, choose some reasonable (small)
>> amount. It could be later raised, if needed.
> 
> There are some constraints but technically not in the driver that binds
> on this binding. I thought no limit is better than an arbitrary one, but
> if the preference is to have one, I will add it, no problem.

Just to clarify this - bindings are not about the driver, but about the
hardware. We model here the hardware and its programming model, not the
driver implementation (although of course it's always somehow related).
Hardware has some limitations for sure. The question is whether we know
them. :)

I prefer even arbitrary limit, because then schema will check DTSes for
simple mistakes. You can also explain this in commit msg, that maxItems
are arbitrary, so whoever in the future wants to change it, will know
the background.

Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/sound/apple,macaudio.yaml b/Documentation/devicetree/bindings/sound/apple,macaudio.yaml
new file mode 100644
index 000000000000..a6380e4bdd1a
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/apple,macaudio.yaml
@@ -0,0 +1,103 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/apple,macaudio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple Silicon Macs integrated sound system
+
+maintainers:
+  - Martin Povišer <povik+lin@cutebit.org>
+
+definitions:
+  dai:
+    type: object
+    properties:
+      sound-dai: true
+    required:
+      - sound-dai
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - apple,j274-macaudio
+          - apple,j293-macaudio
+          - apple,j314-macaudio
+      - const: apple,macaudio
+  "#address-cells":
+    const: 1
+  "#size-cells":
+    const: 0
+  model:
+    description: |
+      Model name to use when the sound system is presented to users as a sound card.
+    $ref: /schemas/types.yaml#/definitions/string
+
+patternProperties:
+  "^dai-link(@[0-9a-f]+)?$":
+    description: |
+      A DAI link comprising of CPU and CODEC DAI specifiers and supplemental properties.
+    type: object
+    properties:
+      reg:
+        maxItems: 1
+      mclk-fs:
+        description: |
+          Forced MCLK/samplerate factor (optional).
+        $ref: /schemas/types.yaml#/definitions/uint32
+      link-name:
+        description: Name for the DAI link to present to users.
+        $ref: /schemas/types.yaml#/definitions/string
+      cpu:
+        $ref: "#/definitions/dai"
+      codec:
+        $ref: "#/definitions/dai"
+    required:
+      - reg
+      - cpu
+      - codec
+    additionalProperties: false
+
+required:
+  - compatible
+  - model
+
+additionalProperties: false
+
+examples:
+  - |
+    sound {
+      compatible = "apple,j293-macaudio", "apple,macaudio";
+      model = "MacBook Pro J293 integrated audio";
+
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      dai-link@0 {
+        reg = <0>;
+        link-name = "Speakers";
+        mclk-fs = <64>;
+
+        cpu {
+          sound-dai = <&mca 0>, <&mca 1>;
+        };
+        codec {
+          sound-dai = <&speaker_left_front>, <&speaker_right_front>,
+            <&speaker_left_rear>, <&speaker_right_rear>;
+        };
+      };
+
+      dai-link@1 {
+        reg = <1>;
+        link-name = "Headphones Jack";
+        mclk-fs = <64>;
+
+        cpu {
+          sound-dai = <&mca 2>;
+        };
+        codec {
+          sound-dai = <&jack_codec>;
+        };
+      };
+    };