With the existing setup the firmware file is looked up in a fixed location
based on soundcard name, however this is not really scalable and not inline
with where linux-firmware stores board specific firmwares.
This patchset adds a new binding to q6apm to allow board specific Device Tree
to pass firmware-name, this also makes it inline with how other firmwares are
specified in qcom boards.
Srinivas Kandagatla (3):
ASoC: dt-bindings: q6apm: add firmware-name bindings
ASoC: qcom: q6apm: add support for reading firmware name from DT
arm64: dts: qcom: sc8280xp-x13s: Add audio topology firmware path
.../devicetree/bindings/sound/qcom,q6apm.yaml | 5 +++++
.../dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 5 +++++
sound/soc/qcom/qdsp6/topology.c | 14 ++++++--------
3 files changed, 16 insertions(+), 8 deletions(-)
--
2.21.0
Add bindings to get firmare-name from DT, this will provide more flexibility
to specify platform specific firmware file name and location. Also this brings
tplg firmware name inline with other board specific firmware locations.
Signed-off-by: Srinivas Kandagatla <[email protected]>
---
Documentation/devicetree/bindings/sound/qcom,q6apm.yaml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml b/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml
index ef1965aca254..c783451145ef 100644
--- a/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml
+++ b/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml
@@ -31,6 +31,10 @@ properties:
unevaluatedProperties: false
description: Qualcomm DSP audio ports
+ firmware-name:
+ $ref: /schemas/types.yaml#/definitions/string
+ description: Audio Topology Firmware name
+
'#sound-dai-cells':
const: 0
@@ -38,6 +42,7 @@ required:
- compatible
- bedais
- dais
+ - firmware-name
unevaluatedProperties: false
--
2.21.0
Add audio topology firmware name and path in dt so that we can
specify full path for it.
Signed-off-by: Srinivas Kandagatla <[email protected]>
---
arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
index 7cc3028440b6..0160b8e7d64f 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
@@ -924,6 +924,11 @@
};
};
+
+&q6apm {
+ firmware-name = "qcom/sc8280xp/LENOVO/21BX/audioreach-tplg.bin";
+};
+
&qup0 {
status = "okay";
};
--
2.21.0
On Wed, 28 Jun 2023 11:26:19 +0100, Srinivas Kandagatla wrote:
> Add bindings to get firmare-name from DT, this will provide more flexibility
> to specify platform specific firmware file name and location. Also this brings
> tplg firmware name inline with other board specific firmware locations.
>
> Signed-off-by: Srinivas Kandagatla <[email protected]>
> ---
> Documentation/devicetree/bindings/sound/qcom,q6apm.yaml | 5 +++++
> 1 file changed, 5 insertions(+)
>
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:
Documentation/devicetree/bindings/clock/milbeaut-clock.example.dtb: /example-2/serial@1e700010: failed to match any schema with compatible: ['socionext,milbeaut-usio-uart']
Documentation/devicetree/bindings/clock/sprd,sc9863a-clk.example.dtb: /example-1/syscon@20e00000: failed to match any schema with compatible: ['sprd,sc9863a-glbregs', 'syscon', 'simple-mfd']
Documentation/devicetree/bindings/leds/common.example.dtb: /example-2/i2c/led-controller@30: failed to match any schema with compatible: ['panasonic,an30259a']
Documentation/devicetree/bindings/sound/audio-graph-card2.example.dtb: /example-0/cpu: failed to match any schema with compatible: ['cpu-driver']
Documentation/devicetree/bindings/sound/audio-graph-card2.example.dtb: /example-0/codec: failed to match any schema with compatible: ['codec-driver']
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/sound/qcom,q6apm.example.dtb: service@1: 'firmware-name' is a required property
from schema $id: http://devicetree.org/schemas/sound/qcom,q6apm.yaml#
Documentation/devicetree/bindings/thermal/brcm,avs-ro-thermal.example.dtb: /example-0/avs-monitor@7d5d2000: failed to match any schema with compatible: ['brcm,bcm2711-avs-monitor', 'syscon', 'simple-mfd']
Documentation/devicetree/bindings/thermal/imx-thermal.example.dtb: /example-0/anatop@20c8000: failed to match any schema with compatible: ['fsl,imx6q-anatop', 'syscon', 'simple-mfd']
Documentation/devicetree/bindings/i2c/qcom,i2c-cci.example.dtb: /example-0/cci@ac4a000/i2c-bus@1/camera@60: failed to match any schema with compatible: ['ovti,ov7251']
Documentation/devicetree/bindings/iio/adc/ti,palmas-gpadc.example.dtb: /example-0/pmic: failed to match any schema with compatible: ['ti,twl6035-pmic', 'ti,palmas-pmic']
Documentation/devicetree/bindings/iio/adc/ti,palmas-gpadc.example.dtb: /example-0/pmic: failed to match any schema with compatible: ['ti,twl6035-pmic', 'ti,palmas-pmic']
Documentation/devicetree/bindings/input/mediatek,pmic-keys.example.dtb: /example-0/pmic: failed to match any schema with compatible: ['mediatek,mt6397']
Documentation/devicetree/bindings/input/sprd,sc27xx-vibrator.example.dtb: /example-0/pmic@0: failed to match any schema with compatible: ['sprd,sc2731']
Documentation/devicetree/bindings/dma/dma-controller.example.dtb: /example-0/dma-controller@48000000: failed to match any schema with compatible: ['ti,omap-sdma']
Documentation/devicetree/bindings/dma/dma-router.example.dtb: /example-0/dma-router@4a002b78: failed to match any schema with compatible: ['ti,dra7-dma-crossbar']
Documentation/devicetree/bindings/memory-controllers/ingenic,nemc.example.dtb: /example-0/memory-controller@13410000/ethernet@6: failed to match any schema with compatible: ['davicom,dm9000']
Documentation/devicetree/bindings/arm/hisilicon/controller/cpuctrl.example.dtb: /example-0/cpuctrl@a22000/clock@0: failed to match any schema with compatible: ['hisilicon,hix5hd2-clock']
Documentation/devicetree/bindings/arm/hisilicon/controller/hi3798cv200-perictrl.example.dtb: /example-0/peripheral-controller@8a20000/phy@850: failed to match any schema with compatible: ['hisilicon,hi3798cv200-combphy']
Documentation/devicetree/bindings/arm/hisilicon/controller/sysctrl.example.dtb: /example-0/system-controller@802000/clock@0: failed to match any schema with compatible: ['hisilicon,hi3620-clock']
Documentation/devicetree/bindings/media/rockchip-isp1.example.dtb: /example-0/parent/i2c/camera@36: failed to match any schema with compatible: ['ovti,ov5695']
Documentation/devicetree/bindings/net/marvell,mvusb.example.dtb: /example-0/usb/mdio@1/switch@0: failed to match any schema with compatible: ['marvell,mv88e6190']
Documentation/devicetree/bindings/net/qca,ar71xx.example.dtb: /example-0/ethernet@1a000000/mdio/switch@10: failed to match any schema with compatible: ['qca,ar9331-switch']
Documentation/devicetree/bindings/reset/hisilicon,hi3660-reset.example.dtb: /example-0/iomcu@ffd7e000: failed to match any schema with compatible: ['hisilicon,hi3660-iomcu', 'syscon']
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/soc/qcom/qcom,apr.example.dtb: service@1: 'firmware-name' is a required property
from schema $id: http://devicetree.org/schemas/sound/qcom,q6apm.yaml#
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/[email protected]
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
On Wed, Jun 28, 2023 at 11:26:19AM +0100, Srinivas Kandagatla wrote:
> Add bindings to get firmare-name from DT, this will provide more flexibility
> to specify platform specific firmware file name and location. Also this brings
> tplg firmware name inline with other board specific firmware locations.
tplg?
>
> Signed-off-by: Srinivas Kandagatla <[email protected]>
> ---
> Documentation/devicetree/bindings/sound/qcom,q6apm.yaml | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml b/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml
> index ef1965aca254..c783451145ef 100644
> --- a/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml
> +++ b/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml
> @@ -31,6 +31,10 @@ properties:
> unevaluatedProperties: false
> description: Qualcomm DSP audio ports
>
> + firmware-name:
> + $ref: /schemas/types.yaml#/definitions/string
Already has a type, so you can drop.
No default? Or pattern it should match?
> + description: Audio Topology Firmware name
> +
> '#sound-dai-cells':
> const: 0
>
> @@ -38,6 +42,7 @@ required:
> - compatible
> - bedais
> - dais
> + - firmware-name
Causes warnings. Test you bindings.
>
> unevaluatedProperties: false
>
> --
> 2.21.0
>
On 28/06/2023 16:54, Rob Herring wrote:
> On Wed, Jun 28, 2023 at 11:26:19AM +0100, Srinivas Kandagatla wrote:
>> Add bindings to get firmare-name from DT, this will provide more flexibility
>> to specify platform specific firmware file name and location. Also this brings
>> tplg firmware name inline with other board specific firmware locations.
>
> tplg?
Topology, will update this in next version.
>
>>
>> Signed-off-by: Srinivas Kandagatla <[email protected]>
>> ---
>> Documentation/devicetree/bindings/sound/qcom,q6apm.yaml | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml b/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml
>> index ef1965aca254..c783451145ef 100644
>> --- a/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml
>> +++ b/Documentation/devicetree/bindings/sound/qcom,q6apm.yaml
>> @@ -31,6 +31,10 @@ properties:
>> unevaluatedProperties: false
>> description: Qualcomm DSP audio ports
>>
>> + firmware-name:
>> + $ref: /schemas/types.yaml#/definitions/string
>
> Already has a type, so you can drop.
thankyou removed this now, but all the existing yaml still have this.
>
> No default? Or pattern it should match?
no, its going to be hard to come up with a pattern to match file name or
path for firmware.
>
>> + description: Audio Topology Firmware name
>> +
>> '#sound-dai-cells':
>> const: 0
>>
>> @@ -38,6 +42,7 @@ required:
>> - compatible
>> - bedais
>> - dais
>> + - firmware-name
>
> Causes warnings. Test you bindings.
yes, examples need updating, will do that in next spin.
--srini
>
>>
>> unevaluatedProperties: false
>>
>> --
>> 2.21.0
>>