[PATCH 0/3] Add DisplayPort sound support for Fairphone 5 smartphone
Add the necessary sound card bits and some dts additions to enable sound over DisplayPort-over-USB-C, e.g. to a connected TV or monitor.
The UCM files can be found here: https://gitlab.com/postmarketOS/pmaports/-/tree/master/device/testing/device...
Two extra notes:
1. I don't quite understand whether the sound driver should have SoC-specific compatible or device-specific compatible. Some earlier patches by another author for a QCM6490 board and a QCS6490 board use device-specific compatible - but from what I can tell this is not how it's generally done for other sound drivers?
2. Unfortunately DisplayPort enablement itself for Fairphone 5 is not upstream yet. This is blocked by DSI display bringup upstream which is blocked by DSC 1:1:1 not being supported upstream yet and just working with a hacky patch. Nevertheless, DisplayPort audio was validated working with no additional sound-related changes so once DisplayPort gets enabled, sound should also just work upstream.
Signed-off-by: Luca Weiss luca.weiss@fairphone.com --- Luca Weiss (3): ASoC: dt-bindings: qcom,sm8250: Add generic QCM6490 sound card ASoC: qcom: sc8280xp: Add support for generic QCM6490 arm64: dts: qcom: qcm6490-fairphone-fp5: Add DisplayPort sound support
.../devicetree/bindings/sound/qcom,sm8250.yaml | 1 + arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts | 37 ++++++++++++++++++++++ sound/soc/qcom/sc8280xp.c | 1 + 3 files changed, 39 insertions(+) --- base-commit: 6cdb38a56eaf615abc60fbeec0e4ccbdf93468e3 change-id: 20240809-fp5-dp-sound-b3768f3019bd
Best regards,
Document the bindings for the Qualcomm QCM6490 sound card.
Signed-off-by: Luca Weiss luca.weiss@fairphone.com --- Documentation/devicetree/bindings/sound/qcom,sm8250.yaml | 1 + 1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml b/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml index c9076dcd44c1..0a31be6d917f 100644 --- a/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml +++ b/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml @@ -31,6 +31,7 @@ properties: - qcom,apq8096-sndcard - qcom,msm8916-qdsp6-sndcard - qcom,qcm6490-idp-sndcard + - qcom,qcm6490-sndcard - qcom,qcs6490-rb3gen2-sndcard - qcom,qrb5165-rb5-sndcard - qcom,sc7180-qdsp6-sndcard
On 09/08/2024 10:33, Luca Weiss wrote:
Document the bindings for the Qualcomm QCM6490 sound card.
Signed-off-by: Luca Weiss luca.weiss@fairphone.com
Documentation/devicetree/bindings/sound/qcom,sm8250.yaml | 1 + 1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml b/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml index c9076dcd44c1..0a31be6d917f 100644 --- a/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml +++ b/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml @@ -31,6 +31,7 @@ properties: - qcom,apq8096-sndcard - qcom,msm8916-qdsp6-sndcard - qcom,qcm6490-idp-sndcard
- qcom,qcm6490-sndcard
I think it would be better to make it a board-compatible and also followed by qcom,qcm6490-idp-sndcard fallback, thus no need for driver changes.
Best regards, Krzysztof
On Fri Aug 9, 2024 at 11:09 AM CEST, Krzysztof Kozlowski wrote:
On 09/08/2024 10:33, Luca Weiss wrote:
Document the bindings for the Qualcomm QCM6490 sound card.
Signed-off-by: Luca Weiss luca.weiss@fairphone.com
Documentation/devicetree/bindings/sound/qcom,sm8250.yaml | 1 + 1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml b/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml index c9076dcd44c1..0a31be6d917f 100644 --- a/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml +++ b/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml @@ -31,6 +31,7 @@ properties: - qcom,apq8096-sndcard - qcom,msm8916-qdsp6-sndcard - qcom,qcm6490-idp-sndcard
- qcom,qcm6490-sndcard
I think it would be better to make it a board-compatible and also followed by qcom,qcm6490-idp-sndcard fallback, thus no need for driver changes.
Hi Krzysztof,
So that we get "fairphone,fp5-sndcard", "qcom,qcm6490-idp-sndcard"?
I can change it to that in v2.
Regards Luca
Best regards, Krzysztof
On 09/08/2024 11:12, Luca Weiss wrote:
On Fri Aug 9, 2024 at 11:09 AM CEST, Krzysztof Kozlowski wrote:
On 09/08/2024 10:33, Luca Weiss wrote:
Document the bindings for the Qualcomm QCM6490 sound card.
Signed-off-by: Luca Weiss luca.weiss@fairphone.com
Documentation/devicetree/bindings/sound/qcom,sm8250.yaml | 1 + 1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml b/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml index c9076dcd44c1..0a31be6d917f 100644 --- a/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml +++ b/Documentation/devicetree/bindings/sound/qcom,sm8250.yaml @@ -31,6 +31,7 @@ properties: - qcom,apq8096-sndcard - qcom,msm8916-qdsp6-sndcard - qcom,qcm6490-idp-sndcard
- qcom,qcm6490-sndcard
I think it would be better to make it a board-compatible and also followed by qcom,qcm6490-idp-sndcard fallback, thus no need for driver changes.
Hi Krzysztof,
So that we get "fairphone,fp5-sndcard", "qcom,qcm6490-idp-sndcard"?
Yes.
Best regards, Krzysztof
Add compatibles for sound card on Qualcomm QCM6490 boards, e.g. Fairphone 5 smartphone.
Signed-off-by: Luca Weiss luca.weiss@fairphone.com --- sound/soc/qcom/sc8280xp.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/soc/qcom/sc8280xp.c b/sound/soc/qcom/sc8280xp.c index 922ecada1cd8..385e902944b3 100644 --- a/sound/soc/qcom/sc8280xp.c +++ b/sound/soc/qcom/sc8280xp.c @@ -185,6 +185,7 @@ static int sc8280xp_platform_probe(struct platform_device *pdev)
static const struct of_device_id snd_sc8280xp_dt_match[] = { {.compatible = "qcom,qcm6490-idp-sndcard", "qcm6490"}, + {.compatible = "qcom,qcm6490-sndcard", "qcm6490"}, {.compatible = "qcom,qcs6490-rb3gen2-sndcard", "qcs6490"}, {.compatible = "qcom,sc8280xp-sndcard", "sc8280xp"}, {.compatible = "qcom,sm8450-sndcard", "sm8450"},
Add the required nodes for sound playback via a connected external display (DisplayPort over USB-C).
In user space just the following route needs to be set (e.g. using ALSA UCM):
amixer -c0 cset name='DISPLAY_PORT_RX Audio Mixer MultiMedia1' 1
Afterwards one can play audio on the MultiMedia1 sound device, e.g.:
aplay -D plughw:0,0 test.wav
Signed-off-by: Luca Weiss luca.weiss@fairphone.com --- (from cover letter) Unfortunately DisplayPort enablement itself for Fairphone 5 is not upstream yet. This is blocked by DSI display bringup upstream which is blocked by DSC 1:1:1 not being supported upstream yet and just working with a hacky patch. Nevertheless, DisplayPort audio was validated working with no additional sound-related changes so once DisplayPort gets enabled, sound should also just work upstream. --- arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts b/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts index 8ab30c01712e..45d4512546fe 100644 --- a/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts +++ b/arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts @@ -14,6 +14,8 @@ #include <dt-bindings/leds/common.h> #include <dt-bindings/pinctrl/qcom,pmic-gpio.h> #include <dt-bindings/regulator/qcom,rpmh-regulator.h> +#include <dt-bindings/sound/qcom,q6afe.h> +#include <dt-bindings/sound/qcom,q6asm.h> #include "sc7280.dtsi" #include "pm7250b.dtsi" #include "pm7325.dtsi" @@ -841,6 +843,12 @@ &pon_resin { status = "okay"; };
+&q6afedai { + dai@104 { + reg = <DISPLAY_PORT_RX>; + }; +}; + &qup_spi13_cs { drive-strength = <6>; bias-disable; @@ -914,6 +922,35 @@ &sdhc_2 { status = "okay"; };
+&sound { + compatible = "qcom,qcm6490-sndcard"; + model = "Fairphone 5"; + + mm1-dai-link { + link-name = "MultiMedia1"; + + cpu { + sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>; + }; + }; + + displayport-rx-dai-link { + link-name = "DisplayPort Playback"; + + cpu { + sound-dai = <&q6afedai DISPLAY_PORT_RX>; + }; + + platform { + sound-dai = <&q6routing>; + }; + + codec { + sound-dai = <&mdss_dp>; + }; + }; +}; + &spi13 { status = "okay";
On 09/08/2024 10:33, Luca Weiss wrote:
Add the necessary sound card bits and some dts additions to enable sound over DisplayPort-over-USB-C, e.g. to a connected TV or monitor.
The UCM files can be found here: https://gitlab.com/postmarketOS/pmaports/-/tree/master/device/testing/device...
Two extra notes:
- I don't quite understand whether the sound driver should have SoC-specific compatible or device-specific compatible. Some earlier patches by another author for a QCM6490 board and a QCS6490 board use device-specific compatible - but from what I can tell this is not how it's generally done for other sound drivers?
We (including me) were/are a bit inconsistent here, but last statement was that these should be board-specific compatibles.
Last discussion I recall: https://lore.kernel.org/all/baa6543c-5e2e-4f28-a95b-a086b32d1f2d@linaro.org/
Best regards, Krzysztof
On 9.08.2024 10:33 AM, Luca Weiss wrote:
Add the necessary sound card bits and some dts additions to enable sound over DisplayPort-over-USB-C, e.g. to a connected TV or monitor.
The UCM files can be found here: https://gitlab.com/postmarketOS/pmaports/-/tree/master/device/testing/device...
Two extra notes:
I don't quite understand whether the sound driver should have SoC-specific compatible or device-specific compatible. Some earlier patches by another author for a QCM6490 board and a QCS6490 board use device-specific compatible - but from what I can tell this is not how it's generally done for other sound drivers?
Unfortunately DisplayPort enablement itself for Fairphone 5 is not upstream yet. This is blocked by DSI display bringup upstream which is blocked by DSC 1:1:1 not being supported upstream yet and just working with a hacky patch. Nevertheless, DisplayPort audio was validated working with no additional sound-related changes so once DisplayPort gets enabled, sound should also just work upstream.
You can enable DP and keep DSI disabled for the time being
Konrad
On Samstag, 10. August 2024 14:35:00 MESZ Konrad Dybcio wrote:
On 9.08.2024 10:33 AM, Luca Weiss wrote:
Add the necessary sound card bits and some dts additions to enable sound over DisplayPort-over-USB-C, e.g. to a connected TV or monitor.
The UCM files can be found here: https://gitlab.com/postmarketOS/pmaports/-/tree/master/device/testing/
device-fairphone-fp5/ucm
Two extra notes:
I don't quite understand whether the sound driver should have SoC-specific compatible or device-specific compatible. Some earlier patches by another author for a QCM6490 board and a QCS6490 board use device-specific compatible - but from what I can tell this is not how it's generally done for other sound drivers?
Unfortunately DisplayPort enablement itself for Fairphone 5 is not upstream yet. This is blocked by DSI display bringup upstream which is blocked by DSC 1:1:1 not being supported upstream yet and just working with a hacky patch. Nevertheless, DisplayPort audio was validated working with no additional sound-related changes so once DisplayPort gets enabled, sound should also just work upstream.
You can enable DP and keep DSI disabled for the time being
I need to enable dispcc for DP which breaks simple-fb from my testing?
Maybe I can figure out the correct clocks and power domains to put into the simple-fb node? Do you think that would work and be sufficient to make both simple-fb and DP work?
Konrad
participants (4)
-
Konrad Dybcio
-
Krzysztof Kozlowski
-
Luca Weiss
-
Luca Weiss