2022-11-11 11:49:58

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH 00/10] ASoC: dt-bindings: Rework Qualcomm APR/GPR Sound nodes for SM8450

Adding sound support for Qualcomm SM8450 SoC (and later for SC8280XP) brought
some changes to APR/GPR services bindings. These bindings are part of
qcom,apr.yaml:

apr-or-gpr-device-node <- qcom,apr.yaml
apr-gpr-service@[0-9] <- qcom,apr.yaml
service-specific-components <- /schemas/sound/qcom,q6*.yaml

The schema for services (apr-gpr-service@[0-9]) already grows considerably and
is still quite not specific. It allows several incorrect combinations, like
adding a clock-controller to a APM device. Restricting it would complicate the
schema even more. Bringing new support for sound on Qualcomm SM8450 and
SC8280XP SoC would grow it as well.

Refactor the bindings before extending them for Qualcomm SM8450 SoC.

Best regards,
Krzysztof

Krzysztof Kozlowski (10):
ASoC: dt-bindings: qcom,apr: Add GLINK channel name for SM8450
ASoC: dt-bindings: qcom,apr: Split services to shared schema
ASoC: dt-bindings: qcom,q6afe: Split to separate schema
ASoC: dt-bindings: qcom,q6apm: Split to separate schema
ASoC: dt-bindings: qcom,q6adm: Split to separate schema
ASoC: dt-bindings: qcom,q6asm: Split to separate schema
ASoC: dt-bindings: qcom,q6prm: Split to separate schema
ASoC: dt-bindings: qcom,q6core: Split to separate schema
ASoC: dt-bindings: qcom,q6apm-lpass-dais: Split to separate schema
ASoC: dt-bindings: qcom,q6apm: Add SM8450 bedais node

.../bindings/soc/qcom/qcom,apr-services.yaml | 54 ++++++++
.../bindings/soc/qcom/qcom,apr.yaml | 119 ++----------------
.../bindings/sound/qcom,q6adm-routing.yaml | 22 +---
.../devicetree/bindings/sound/qcom,q6adm.yaml | 51 ++++++++
.../devicetree/bindings/sound/qcom,q6afe.yaml | 69 ++++++++++
.../bindings/sound/qcom,q6apm-dai.yaml | 19 +--
.../bindings/sound/qcom,q6apm-lpass-dais.yaml | 32 +++++
.../devicetree/bindings/sound/qcom,q6apm.yaml | 67 ++++++++++
.../bindings/sound/qcom,q6asm-dais.yaml | 48 +++----
.../devicetree/bindings/sound/qcom,q6asm.yaml | 68 ++++++++++
.../bindings/sound/qcom,q6core.yaml | 39 ++++++
.../sound/qcom,q6dsp-lpass-clocks.yaml | 40 +-----
.../sound/qcom,q6dsp-lpass-ports.yaml | 57 ++-------
.../devicetree/bindings/sound/qcom,q6prm.yaml | 50 ++++++++
MAINTAINERS | 2 +-
15 files changed, 477 insertions(+), 260 deletions(-)
create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,apr-services.yaml
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6adm.yaml
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6afe.yaml
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6apm-lpass-dais.yaml
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6apm.yaml
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6asm.yaml
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6core.yaml
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6prm.yaml

--
2.34.1



2022-11-11 11:52:01

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH 03/10] ASoC: dt-bindings: qcom,q6afe: Split to separate schema

The APR/GPR bindings with services got complicated so move out the Q6AFE
service to its own binding. Previously the compatible was documented in
qcom,apr.yaml. Move most of the examples from its children to this new
file.

Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
.../devicetree/bindings/sound/qcom,q6afe.yaml | 69 +++++++++++++++++++
.../sound/qcom,q6dsp-lpass-clocks.yaml | 40 +----------
.../sound/qcom,q6dsp-lpass-ports.yaml | 56 +++------------
3 files changed, 81 insertions(+), 84 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6afe.yaml

diff --git a/Documentation/devicetree/bindings/sound/qcom,q6afe.yaml b/Documentation/devicetree/bindings/sound/qcom,q6afe.yaml
new file mode 100644
index 000000000000..45ad703d70bd
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/qcom,q6afe.yaml
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/qcom,q6afe.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Audio FrontEnd (Q6AFE)
+
+maintainers:
+ - Krzysztof Kozlowski <[email protected]>
+ - Srinivas Kandagatla <[email protected]>
+
+allOf:
+ - $ref: /schemas/soc/qcom/qcom,apr-services.yaml#
+
+properties:
+ compatible:
+ enum:
+ - qcom,q6afe
+
+ clock-controller:
+ $ref: /schemas/sound/qcom,q6dsp-lpass-clocks.yaml#
+ unevaluatedProperties: false
+ description: Qualcomm DSP LPASS clock controller
+
+ dais:
+ type: object
+ $ref: /schemas/sound/qcom,q6dsp-lpass-ports.yaml#
+ unevaluatedProperties: false
+ description: Qualcomm DSP audio ports
+
+required:
+ - compatible
+ - dais
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/soc/qcom,apr.h>
+ #include <dt-bindings/sound/qcom,q6afe.h>
+ apr {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ service@4 {
+ compatible = "qcom,q6afe";
+ reg = <APR_SVC_AFE>;
+ qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+
+ clock-controller {
+ compatible = "qcom,q6afe-clocks";
+ #clock-cells = <2>;
+ };
+
+ dais {
+ compatible = "qcom,q6afe-dais";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #sound-dai-cells = <1>;
+
+ dai@22 {
+ reg = <QUATERNARY_MI2S_RX>;
+ qcom,sd-lines = <0 1 2 3>;
+ };
+ };
+
+ };
+ };
diff --git a/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-clocks.yaml b/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-clocks.yaml
index fd567d20417d..aa6c0ecba5cf 100644
--- a/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-clocks.yaml
+++ b/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-clocks.yaml
@@ -35,41 +35,7 @@ additionalProperties: false

examples:
- |
- #include <dt-bindings/soc/qcom,apr.h>
- #include <dt-bindings/sound/qcom,q6afe.h>
- apr {
- compatible = "qcom,apr-v2";
- qcom,domain = <APR_DOMAIN_ADSP>;
- #address-cells = <1>;
- #size-cells = <0>;
-
- service@4 {
- compatible = "qcom,q6afe";
- reg = <APR_SVC_AFE>;
- qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
-
- clock-controller {
- compatible = "qcom,q6afe-clocks";
- #clock-cells = <2>;
- };
- };
- };
-
- - |
- #include <dt-bindings/soc/qcom,gpr.h>
- gpr {
- compatible = "qcom,gpr";
- qcom,domain = <GPR_DOMAIN_ID_ADSP>;
- #address-cells = <1>;
- #size-cells = <0>;
-
- service@2 {
- reg = <GPR_PRM_MODULE_IID>;
- compatible = "qcom,q6prm";
-
- clock-controller {
- compatible = "qcom,q6prm-lpass-clocks";
- #clock-cells = <2>;
- };
- };
+ clock-controller {
+ compatible = "qcom,q6afe-clocks";
+ #clock-cells = <2>;
};
diff --git a/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-ports.yaml b/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-ports.yaml
index e53fc0960a14..b202692f1756 100644
--- a/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-ports.yaml
+++ b/Documentation/devicetree/bindings/sound/qcom,q6dsp-lpass-ports.yaml
@@ -150,54 +150,16 @@ additionalProperties: false

examples:
- |
- #include <dt-bindings/soc/qcom,apr.h>
- #include <dt-bindings/sound/qcom,q6afe.h>
- apr {
- compatible = "qcom,apr-v2";
- #address-cells = <1>;
- #size-cells = <0>;
- qcom,domain = <APR_DOMAIN_ADSP>;
-
- service@4 {
- compatible = "qcom,q6afe";
- reg = <APR_SVC_AFE>;
- qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
-
- dais {
- compatible = "qcom,q6afe-dais";
- #address-cells = <1>;
- #size-cells = <0>;
- #sound-dai-cells = <1>;
-
- dai@22 {
- reg = <QUATERNARY_MI2S_RX>;
- qcom,sd-lines = <0 1 2 3>;
- };
- };
- };
- };
- - |
- #include <dt-bindings/soc/qcom,gpr.h>
- gpr {
- compatible = "qcom,gpr";
+ #include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h>
+
+ dais {
+ compatible = "qcom,q6afe-dais";
#address-cells = <1>;
#size-cells = <0>;
- qcom,domain = <GPR_DOMAIN_ID_ADSP>;
-
- service@1 {
- compatible = "qcom,q6apm";
- reg = <GPR_APM_MODULE_IID>;
-
- dais {
- compatible = "qcom,q6apm-lpass-dais";
- #address-cells = <1>;
- #size-cells = <0>;
- #sound-dai-cells = <1>;
-
- dai@22 {
- reg = <QUATERNARY_MI2S_RX>;
- qcom,sd-lines = <0 1 2 3>;
- };
- };
+ #sound-dai-cells = <1>;
+
+ dai@22 {
+ reg = <QUATERNARY_MI2S_RX>;
+ qcom,sd-lines = <0 1 2 3>;
};
};
--
2.34.1


2022-11-11 12:02:35

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH 04/10] ASoC: dt-bindings: qcom,q6apm: Split to separate schema

The APR/GPR bindings with services got complicated so move out the Q6APM
service to its own binding. Previously the compatible was documented in
qcom,apr.yaml. Move most of the examples from its children to this new
file.

Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
.../bindings/sound/qcom,q6apm-dai.yaml | 19 ++-----
.../devicetree/bindings/sound/qcom,q6apm.yaml | 51 +++++++++++++++++++
2 files changed, 54 insertions(+), 16 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6apm.yaml

diff --git a/Documentation/devicetree/bindings/sound/qcom,q6apm-dai.yaml b/Documentation/devicetree/bindings/sound/qcom,q6apm-dai.yaml
index 24f7bf2bfd95..73a4afad5a74 100644
--- a/Documentation/devicetree/bindings/sound/qcom,q6apm-dai.yaml
+++ b/Documentation/devicetree/bindings/sound/qcom,q6apm-dai.yaml
@@ -27,20 +27,7 @@ additionalProperties: false

examples:
- |
- #include <dt-bindings/soc/qcom,gpr.h>
- gpr {
- compatible = "qcom,gpr";
- #address-cells = <1>;
- #size-cells = <0>;
- qcom,domain = <GPR_DOMAIN_ID_ADSP>;
-
- service@1 {
- compatible = "qcom,q6apm";
- reg = <1>;
-
- dais {
- compatible = "qcom,q6apm-dais";
- iommus = <&apps_smmu 0x1801 0x0>;
- };
- };
+ dais {
+ compatible = "qcom,q6apm-dais";
+ iommus = <&apps_smmu 0x1801 0x0>;
};
diff --git a/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml b/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml
new file mode 100644
index 000000000000..7acb832aa557
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/qcom,q6apm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Audio Process Manager (Q6APM)
+
+maintainers:
+ - Krzysztof Kozlowski <[email protected]>
+ - Srinivas Kandagatla <[email protected]>
+
+allOf:
+ - $ref: /schemas/soc/qcom/qcom,apr-services.yaml#
+
+properties:
+ compatible:
+ enum:
+ - qcom,q6apm
+
+ dais:
+ type: object
+ $ref: /schemas/sound/qcom,q6apm-dai.yaml#
+ unevaluatedProperties: false
+ description: Qualcomm DSP audio ports
+
+required:
+ - compatible
+ - dais
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/soc/qcom,gpr.h>
+
+ gpr {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ service@1 {
+ reg = <GPR_APM_MODULE_IID>;
+ compatible = "qcom,q6apm";
+ qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+
+ dais {
+ compatible = "qcom,q6apm-dais";
+ iommus = <&apps_smmu 0x1801 0x0>;
+ };
+ };
+ };
--
2.34.1


2022-11-11 12:03:28

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH 06/10] ASoC: dt-bindings: qcom,q6asm: Split to separate schema

The APR/GPR bindings with services got complicated so move out the Q6ASM
service to its own binding. Previously the compatible was documented in
qcom,apr.yaml. Move most of the examples from its children to this new
file.

Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
.../bindings/sound/qcom,q6asm-dais.yaml | 48 +++++--------
.../devicetree/bindings/sound/qcom,q6asm.yaml | 68 +++++++++++++++++++
2 files changed, 84 insertions(+), 32 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6asm.yaml

diff --git a/Documentation/devicetree/bindings/sound/qcom,q6asm-dais.yaml b/Documentation/devicetree/bindings/sound/qcom,q6asm-dais.yaml
index 8deb8ffb143b..0110b38f6de9 100644
--- a/Documentation/devicetree/bindings/sound/qcom,q6asm-dais.yaml
+++ b/Documentation/devicetree/bindings/sound/qcom,q6asm-dais.yaml
@@ -73,40 +73,24 @@ additionalProperties: false

examples:
- |
- #include <dt-bindings/soc/qcom,apr.h>
- #include <dt-bindings/sound/qcom,q6asm.h>
-
- apr {
- compatible = "qcom,apr-v2";
- qcom,domain = <APR_DOMAIN_ADSP>;
+ dais {
+ compatible = "qcom,q6asm-dais";
+ iommus = <&apps_smmu 0x1821 0x0>;
#address-cells = <1>;
#size-cells = <0>;
+ #sound-dai-cells = <1>;
+
+ dai@0 {
+ reg = <0>;
+ };
+
+ dai@1 {
+ reg = <1>;
+ };

- service@7 {
- compatible = "qcom,q6asm";
- reg = <APR_SVC_ASM>;
- qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
-
- dais {
- compatible = "qcom,q6asm-dais";
- iommus = <&apps_smmu 0x1821 0x0>;
- #address-cells = <1>;
- #size-cells = <0>;
- #sound-dai-cells = <1>;
-
- dai@0 {
- reg = <0>;
- };
-
- dai@1 {
- reg = <1>;
- };
-
- dai@2 {
- reg = <2>;
- is-compress-dai;
- direction = <1>;
- };
- };
+ dai@2 {
+ reg = <2>;
+ is-compress-dai;
+ direction = <1>;
};
};
diff --git a/Documentation/devicetree/bindings/sound/qcom,q6asm.yaml b/Documentation/devicetree/bindings/sound/qcom,q6asm.yaml
new file mode 100644
index 000000000000..cb49f9667cca
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/qcom,q6asm.yaml
@@ -0,0 +1,68 @@
+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/qcom,q6asm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Audio Stream Manager (Q6ASM)
+
+maintainers:
+ - Krzysztof Kozlowski <[email protected]>
+ - Srinivas Kandagatla <[email protected]>
+
+allOf:
+ - $ref: /schemas/soc/qcom/qcom,apr-services.yaml#
+
+properties:
+ compatible:
+ enum:
+ - qcom,q6asm
+
+ dais:
+ type: object
+ $ref: /schemas/sound/qcom,q6asm-dais.yaml#
+ unevaluatedProperties: false
+ description: Qualcomm DSP audio ports
+
+required:
+ - compatible
+ - dais
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/soc/qcom,apr.h>
+
+ apr {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ service@7 {
+ compatible = "qcom,q6asm";
+ reg = <APR_SVC_ASM>;
+ qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+
+ dais {
+ compatible = "qcom,q6asm-dais";
+ iommus = <&apps_smmu 0x1821 0x0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #sound-dai-cells = <1>;
+
+ dai@0 {
+ reg = <0>;
+ };
+
+ dai@1 {
+ reg = <1>;
+ };
+
+ dai@2 {
+ reg = <2>;
+ is-compress-dai;
+ direction = <1>;
+ };
+ };
+ };
+ };
--
2.34.1


2022-11-11 12:03:29

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH 05/10] ASoC: dt-bindings: qcom,q6adm: Split to separate schema

The APR/GPR bindings with services got complicated so move out the Q6ADM
service to its own binding. Previously the compatible was documented in
qcom,apr.yaml. Move most of the examples from its children to this new
file.

Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
.../bindings/sound/qcom,q6adm-routing.yaml | 22 ++------
.../devicetree/bindings/sound/qcom,q6adm.yaml | 51 +++++++++++++++++++
2 files changed, 54 insertions(+), 19 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6adm.yaml

diff --git a/Documentation/devicetree/bindings/sound/qcom,q6adm-routing.yaml b/Documentation/devicetree/bindings/sound/qcom,q6adm-routing.yaml
index d0f7a79e240a..b7ed2d3f21f9 100644
--- a/Documentation/devicetree/bindings/sound/qcom,q6adm-routing.yaml
+++ b/Documentation/devicetree/bindings/sound/qcom,q6adm-routing.yaml
@@ -30,23 +30,7 @@ additionalProperties: false

examples:
- |
- #include <dt-bindings/soc/qcom,apr.h>
- #include <dt-bindings/sound/qcom,q6asm.h>
-
- apr {
- compatible = "qcom,apr-v2";
- qcom,domain = <APR_DOMAIN_ADSP>;
- #address-cells = <1>;
- #size-cells = <0>;
-
- service@8 {
- compatible = "qcom,q6adm";
- reg = <APR_SVC_ADM>;
- qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
-
- routing {
- compatible = "qcom,q6adm-routing";
- #sound-dai-cells = <0>;
- };
- };
+ routing {
+ compatible = "qcom,q6adm-routing";
+ #sound-dai-cells = <0>;
};
diff --git a/Documentation/devicetree/bindings/sound/qcom,q6adm.yaml b/Documentation/devicetree/bindings/sound/qcom,q6adm.yaml
new file mode 100644
index 000000000000..fe14a97ea616
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/qcom,q6adm.yaml
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/qcom,q6adm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Audio Device Manager (Q6ADM)
+
+maintainers:
+ - Krzysztof Kozlowski <[email protected]>
+ - Srinivas Kandagatla <[email protected]>
+
+allOf:
+ - $ref: /schemas/soc/qcom/qcom,apr-services.yaml#
+
+properties:
+ compatible:
+ enum:
+ - qcom,q6adm
+
+ routing:
+ type: object
+ $ref: /schemas/sound/qcom,q6adm-routing.yaml#
+ unevaluatedProperties: false
+ description: Qualcomm DSP LPASS audio routing
+
+required:
+ - compatible
+ - routing
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/soc/qcom,apr.h>
+
+ apr {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ service@8 {
+ compatible = "qcom,q6adm";
+ reg = <APR_SVC_ADM>;
+ qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+
+ routing {
+ compatible = "qcom,q6adm-routing";
+ #sound-dai-cells = <0>;
+ };
+ };
+ };
--
2.34.1


2022-11-11 12:23:35

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 00/10] ASoC: dt-bindings: Rework Qualcomm APR/GPR Sound nodes for SM8450

On 11/11/2022 12:35, Krzysztof Kozlowski wrote:
> Adding sound support for Qualcomm SM8450 SoC (and later for SC8280XP) brought
> some changes to APR/GPR services bindings. These bindings are part of
> qcom,apr.yaml:
>
> apr-or-gpr-device-node <- qcom,apr.yaml
> apr-gpr-service@[0-9] <- qcom,apr.yaml
> service-specific-components <- /schemas/sound/qcom,q6*.yaml
>
> The schema for services (apr-gpr-service@[0-9]) already grows considerably and
> is still quite not specific. It allows several incorrect combinations, like
> adding a clock-controller to a APM device. Restricting it would complicate the
> schema even more. Bringing new support for sound on Qualcomm SM8450 and
> SC8280XP SoC would grow it as well.
>
> Refactor the bindings before extending them for Qualcomm SM8450 SoC.
>

I forgot to mention that DTS in progress is available here:
https://github.com/krzk/linux/blob/wip/sm8450/arch/arm64/boot/dts/qcom/sm8450-hdk.dts#L459
https://github.com/krzk/linux/blob/wip/sm8450/arch/arm64/boot/dts/qcom/sm8450.dtsi#L2345

Best regards,
Krzysztof


2022-11-11 16:24:24

by Srinivas Kandagatla

[permalink] [raw]
Subject: Re: [PATCH 00/10] ASoC: dt-bindings: Rework Qualcomm APR/GPR Sound nodes for SM8450



On 11/11/2022 11:35, Krzysztof Kozlowski wrote:
> Adding sound support for Qualcomm SM8450 SoC (and later for SC8280XP) brought
> some changes to APR/GPR services bindings. These bindings are part of
> qcom,apr.yaml:
>
> apr-or-gpr-device-node <- qcom,apr.yaml
> apr-gpr-service@[0-9] <- qcom,apr.yaml
> service-specific-components <- /schemas/sound/qcom,q6*.yaml
>
> The schema for services (apr-gpr-service@[0-9]) already grows considerably and
> is still quite not specific. It allows several incorrect combinations, like
> adding a clock-controller to a APM device. Restricting it would complicate the
> schema even more. Bringing new support for sound on Qualcomm SM8450 and
> SC8280XP SoC would grow it as well.

Why would this grow? All the dsp services are static and they will not
change per SoC unless there is a total firmware change in DSP.

>
> Refactor the bindings before extending them for Qualcomm SM8450 SoC.

I dont understand this bit, what is SoC audio support to do with DSP
bindings. DSP bindings should be totally independent of this.
>

--srini

> Best regards,
> Krzysztof
>
> Krzysztof Kozlowski (10):
> ASoC: dt-bindings: qcom,apr: Add GLINK channel name for SM8450
> ASoC: dt-bindings: qcom,apr: Split services to shared schema
> ASoC: dt-bindings: qcom,q6afe: Split to separate schema
> ASoC: dt-bindings: qcom,q6apm: Split to separate schema
> ASoC: dt-bindings: qcom,q6adm: Split to separate schema
> ASoC: dt-bindings: qcom,q6asm: Split to separate schema
> ASoC: dt-bindings: qcom,q6prm: Split to separate schema
> ASoC: dt-bindings: qcom,q6core: Split to separate schema
> ASoC: dt-bindings: qcom,q6apm-lpass-dais: Split to separate schema
> ASoC: dt-bindings: qcom,q6apm: Add SM8450 bedais node
>
> .../bindings/soc/qcom/qcom,apr-services.yaml | 54 ++++++++
> .../bindings/soc/qcom/qcom,apr.yaml | 119 ++----------------
> .../bindings/sound/qcom,q6adm-routing.yaml | 22 +---
> .../devicetree/bindings/sound/qcom,q6adm.yaml | 51 ++++++++
> .../devicetree/bindings/sound/qcom,q6afe.yaml | 69 ++++++++++
> .../bindings/sound/qcom,q6apm-dai.yaml | 19 +--
> .../bindings/sound/qcom,q6apm-lpass-dais.yaml | 32 +++++
> .../devicetree/bindings/sound/qcom,q6apm.yaml | 67 ++++++++++
> .../bindings/sound/qcom,q6asm-dais.yaml | 48 +++----
> .../devicetree/bindings/sound/qcom,q6asm.yaml | 68 ++++++++++
> .../bindings/sound/qcom,q6core.yaml | 39 ++++++
> .../sound/qcom,q6dsp-lpass-clocks.yaml | 40 +-----
> .../sound/qcom,q6dsp-lpass-ports.yaml | 57 ++-------
> .../devicetree/bindings/sound/qcom,q6prm.yaml | 50 ++++++++
> MAINTAINERS | 2 +-
> 15 files changed, 477 insertions(+), 260 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,apr-services.yaml
> create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6adm.yaml
> create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6afe.yaml
> create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6apm-lpass-dais.yaml
> create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6apm.yaml
> create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6asm.yaml
> create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6core.yaml
> create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6prm.yaml
>

2022-11-14 09:25:38

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 00/10] ASoC: dt-bindings: Rework Qualcomm APR/GPR Sound nodes for SM8450

On 11/11/2022 17:15, Srinivas Kandagatla wrote:
>
>
> On 11/11/2022 11:35, Krzysztof Kozlowski wrote:
>> Adding sound support for Qualcomm SM8450 SoC (and later for SC8280XP) brought
>> some changes to APR/GPR services bindings. These bindings are part of
>> qcom,apr.yaml:
>>
>> apr-or-gpr-device-node <- qcom,apr.yaml
>> apr-gpr-service@[0-9] <- qcom,apr.yaml
>> service-specific-components <- /schemas/sound/qcom,q6*.yaml
>>
>> The schema for services (apr-gpr-service@[0-9]) already grows considerably and
>> is still quite not specific. It allows several incorrect combinations, like
>> adding a clock-controller to a APM device. Restricting it would complicate the
>> schema even more. Bringing new support for sound on Qualcomm SM8450 and
>> SC8280XP SoC would grow it as well.
>
> Why would this grow? All the dsp services are static and they will not
> change per SoC unless there is a total firmware change in DSP.

They grow now with SM8450 which requires changes there. Otherwise DTS
does not pass with current bindings. The bindings before my fixing in
2022 were really incomplete. Now they are complete, but:
1. Not for SM8450 - this will bring new things,
2. Very unspecific as they allow multiple invalid configurations.

>
>>
>> Refactor the bindings before extending them for Qualcomm SM8450 SoC.
>
> I dont understand this bit, what is SoC audio support to do with DSP
> bindings. DSP bindings should be totally independent of this.

APR/GPR bindings are for SoC audio, so while adding SoC audio the first
are affected. If you went through the commits here, you would notice the
changes.

Best regards,
Krzysztof


2022-11-14 13:22:42

by Srinivas Kandagatla

[permalink] [raw]
Subject: Re: [PATCH 00/10] ASoC: dt-bindings: Rework Qualcomm APR/GPR Sound nodes for SM8450



On 14/11/2022 07:48, Krzysztof Kozlowski wrote:
> On 11/11/2022 17:15, Srinivas Kandagatla wrote:
>>
>>
>> On 11/11/2022 11:35, Krzysztof Kozlowski wrote:
>>> Adding sound support for Qualcomm SM8450 SoC (and later for SC8280XP) brought
>>> some changes to APR/GPR services bindings. These bindings are part of
>>> qcom,apr.yaml:
>>>
>>> apr-or-gpr-device-node <- qcom,apr.yaml
>>> apr-gpr-service@[0-9] <- qcom,apr.yaml
>>> service-specific-components <- /schemas/sound/qcom,q6*.yaml
>>>
>>> The schema for services (apr-gpr-service@[0-9]) already grows considerably and
>>> is still quite not specific. It allows several incorrect combinations, like
>>> adding a clock-controller to a APM device. Restricting it would complicate the
>>> schema even more. Bringing new support for sound on Qualcomm SM8450 and
>>> SC8280XP SoC would grow it as well.
>>
>> Why would this grow? All the dsp services are static and they will not
>> change per SoC unless there is a total firmware change in DSP.
>
> They grow now with SM8450 which requires changes there. Otherwise DTS
> does not pass with current bindings. The bindings before my fixing in
> 2022 were really incomplete. Now they are complete, but:
> 1. Not for SM8450 - this will bring new things,
> 2. Very unspecific as they allow multiple invalid configurations.
>
Okay, I looked at all the patches, they are fine as it is, the confusion
part is the subject and comments which are misleading and trying to say
that these are specific to SM8450 or SC8280XP. Infact this is not true,
none of these changes are specific to any SoC, they are part of AudioReach.

--srini
>>
>>>
>>> Refactor the bindings before extending them for Qualcomm SM8450 SoC.
>>
>> I dont understand this bit, what is SoC audio support to do with DSP
>> bindings. DSP bindings should be totally independent of this.
>
> APR/GPR bindings are for SoC audio, so while adding SoC audio the first
> are affected. If you went through the commits here, you would notice the
> changes.
>
> Best regards,
> Krzysztof
>

2022-11-14 14:23:57

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 00/10] ASoC: dt-bindings: Rework Qualcomm APR/GPR Sound nodes for SM8450

On 14/11/2022 12:50, Srinivas Kandagatla wrote:
>
>
> On 14/11/2022 07:48, Krzysztof Kozlowski wrote:
>> On 11/11/2022 17:15, Srinivas Kandagatla wrote:
>>>
>>>
>>> On 11/11/2022 11:35, Krzysztof Kozlowski wrote:
>>>> Adding sound support for Qualcomm SM8450 SoC (and later for SC8280XP) brought
>>>> some changes to APR/GPR services bindings. These bindings are part of
>>>> qcom,apr.yaml:
>>>>
>>>> apr-or-gpr-device-node <- qcom,apr.yaml
>>>> apr-gpr-service@[0-9] <- qcom,apr.yaml
>>>> service-specific-components <- /schemas/sound/qcom,q6*.yaml
>>>>
>>>> The schema for services (apr-gpr-service@[0-9]) already grows considerably and
>>>> is still quite not specific. It allows several incorrect combinations, like
>>>> adding a clock-controller to a APM device. Restricting it would complicate the
>>>> schema even more. Bringing new support for sound on Qualcomm SM8450 and
>>>> SC8280XP SoC would grow it as well.
>>>
>>> Why would this grow? All the dsp services are static and they will not
>>> change per SoC unless there is a total firmware change in DSP.
>>
>> They grow now with SM8450 which requires changes there. Otherwise DTS
>> does not pass with current bindings. The bindings before my fixing in
>> 2022 were really incomplete. Now they are complete, but:
>> 1. Not for SM8450 - this will bring new things,
>> 2. Very unspecific as they allow multiple invalid configurations.
>>
> Okay, I looked at all the patches, they are fine as it is, the confusion
> part is the subject and comments which are misleading and trying to say
> that these are specific to SM8450 or SC8280XP. Infact this is not true,
> none of these changes are specific to any SoC, they are part of AudioReach.

They are part of bringing audio on SM8450, at the end we all are SoC
centric... we do not bring support for AudioReach just for itself,
right? We bring it because we want to have something working on SM8450
and further...

Best regards,
Krzysztof