linux-postmarketos-qcom-sc7180: Backport sound support for Aspire 1 (MR 4648)
This commit is contained in:
parent
be110154ba
commit
7a4109ae79
13 changed files with 1495 additions and 1 deletions
|
@ -0,0 +1,36 @@
|
|||
From 720541f67f730e31c7b19b21b6c7eb92bfd9b6c2 Mon Sep 17 00:00:00 2001
|
||||
From: Konrad Dybcio <konrad.dybcio@linaro.org>
|
||||
Date: Fri, 16 Jun 2023 01:36:58 +0200
|
||||
Subject: [PATCH 06/17] media: venus: core: Set up secure memory ranges for
|
||||
SC7180
|
||||
|
||||
Not all SC7180 devices ship with ChromeOS firmware. WoA devices use
|
||||
Android-like TZ, which uses PAS for image authentication. That requires
|
||||
the predefined virtual address ranges to be passed via scm calls.
|
||||
Define them to enable Venus on non-CrOS SC7180 devices.
|
||||
|
||||
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
|
||||
Signed-off-by: Stanimir Varbanov <stanimir.k.varbanov@gmail.com>
|
||||
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
|
||||
---
|
||||
drivers/media/platform/qcom/venus/core.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
|
||||
index 990a1519f968..1d9e416e5322 100644
|
||||
--- a/drivers/media/platform/qcom/venus/core.c
|
||||
+++ b/drivers/media/platform/qcom/venus/core.c
|
||||
@@ -762,6 +762,10 @@ static const struct venus_resources sc7180_res = {
|
||||
.vmem_size = 0,
|
||||
.vmem_addr = 0,
|
||||
.dma_mask = 0xe0000000 - 1,
|
||||
+ .cp_start = 0,
|
||||
+ .cp_size = 0x70800000,
|
||||
+ .cp_nonpixel_start = 0x1000000,
|
||||
+ .cp_nonpixel_size = 0x24800000,
|
||||
.fwname = "qcom/venus-5.4/venus.mdt",
|
||||
};
|
||||
|
||||
--
|
||||
2.43.0
|
||||
|
|
@ -0,0 +1,387 @@
|
|||
From 0fed0e8058be5fdf261092e6b42f0f8ef3c37040 Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Travkin <nikita@trvn.ru>
|
||||
Date: Tue, 8 Aug 2023 15:10:13 +0500
|
||||
Subject: [PATCH 07/17] arm64: dts: qcom: sc7180: Split up TF-A related PSCI
|
||||
configuration
|
||||
|
||||
When initially submitted, the sc7180 support only targeted CROS devices
|
||||
that make use of alternative TF-A firmware and not the official Qualcomm
|
||||
firmware. The PSCI implementations in those firmwares differ however so
|
||||
devices that use qcom firmware, like WoA laptops such as aspire1 need
|
||||
different setup.
|
||||
|
||||
This commit adjusts the SoC dtsi to the OSI mode PSCI setup, common to
|
||||
the Qualcomm firmware and introduces new sc7180-firmware-tfa.dtsi that
|
||||
overrides the PSCI setup for the PC mode and uses TF-A specific
|
||||
psci-suspend-param. This dtsi is added to all boards that appear to use
|
||||
TF-A.
|
||||
|
||||
Link: https://lore.kernel.org/r/20230808-sc7180-tfa-fw-v1-1-666d5d8467e5@trvn.ru
|
||||
Signed-off-by: Nikita Travkin <nikita@trvn.ru>
|
||||
---
|
||||
.../boot/dts/qcom/sc7180-firmware-tfa.dtsi | 107 +++++++++++++++
|
||||
arch/arm64/boot/dts/qcom/sc7180-idp.dts | 1 +
|
||||
arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi | 1 +
|
||||
arch/arm64/boot/dts/qcom/sc7180.dtsi | 127 +++++++++++++-----
|
||||
4 files changed, 206 insertions(+), 30 deletions(-)
|
||||
create mode 100644 arch/arm64/boot/dts/qcom/sc7180-firmware-tfa.dtsi
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sc7180-firmware-tfa.dtsi b/arch/arm64/boot/dts/qcom/sc7180-firmware-tfa.dtsi
|
||||
new file mode 100644
|
||||
index 000000000000..ee35a454dbf6
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/qcom/sc7180-firmware-tfa.dtsi
|
||||
@@ -0,0 +1,107 @@
|
||||
+// SPDX-License-Identifier: BSD-3-Clause
|
||||
+
|
||||
+/*
|
||||
+ * Devices that use SC7180 with TrustedFirmware-A
|
||||
+ * need PSCI PC mode instead of the OSI mode provided
|
||||
+ * by Qualcomm firmware.
|
||||
+ */
|
||||
+
|
||||
+&CPU0 {
|
||||
+ /delete-property/ power-domains;
|
||||
+ /delete-property/ power-domain-names;
|
||||
+
|
||||
+ cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||
+ &LITTLE_CPU_SLEEP_1
|
||||
+ &CLUSTER_SLEEP_0>;
|
||||
+};
|
||||
+
|
||||
+&CPU1 {
|
||||
+ /delete-property/ power-domains;
|
||||
+ /delete-property/ power-domain-names;
|
||||
+
|
||||
+ cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||
+ &LITTLE_CPU_SLEEP_1
|
||||
+ &CLUSTER_SLEEP_0>;
|
||||
+};
|
||||
+
|
||||
+&CPU2 {
|
||||
+ /delete-property/ power-domains;
|
||||
+ /delete-property/ power-domain-names;
|
||||
+
|
||||
+ cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||
+ &LITTLE_CPU_SLEEP_1
|
||||
+ &CLUSTER_SLEEP_0>;
|
||||
+};
|
||||
+
|
||||
+&CPU3 {
|
||||
+ /delete-property/ power-domains;
|
||||
+ /delete-property/ power-domain-names;
|
||||
+
|
||||
+ cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||
+ &LITTLE_CPU_SLEEP_1
|
||||
+ &CLUSTER_SLEEP_0>;
|
||||
+};
|
||||
+
|
||||
+&CPU4 {
|
||||
+ /delete-property/ power-domains;
|
||||
+ /delete-property/ power-domain-names;
|
||||
+
|
||||
+ cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||
+ &LITTLE_CPU_SLEEP_1
|
||||
+ &CLUSTER_SLEEP_0>;
|
||||
+};
|
||||
+
|
||||
+&CPU5 {
|
||||
+ /delete-property/ power-domains;
|
||||
+ /delete-property/ power-domain-names;
|
||||
+
|
||||
+ cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||
+ &LITTLE_CPU_SLEEP_1
|
||||
+ &CLUSTER_SLEEP_0>;
|
||||
+};
|
||||
+
|
||||
+&CPU6 {
|
||||
+ /delete-property/ power-domains;
|
||||
+ /delete-property/ power-domain-names;
|
||||
+
|
||||
+ cpu-idle-states = <&BIG_CPU_SLEEP_0
|
||||
+ &BIG_CPU_SLEEP_1
|
||||
+ &CLUSTER_SLEEP_0>;
|
||||
+};
|
||||
+
|
||||
+&CPU7 {
|
||||
+ /delete-property/ power-domains;
|
||||
+ /delete-property/ power-domain-names;
|
||||
+
|
||||
+ cpu-idle-states = <&BIG_CPU_SLEEP_0
|
||||
+ &BIG_CPU_SLEEP_1
|
||||
+ &CLUSTER_SLEEP_0>;
|
||||
+};
|
||||
+
|
||||
+/delete-node/ &domain_idle_states;
|
||||
+
|
||||
+&idle_states {
|
||||
+ CLUSTER_SLEEP_0: cluster-sleep-0 {
|
||||
+ compatible = "arm,idle-state";
|
||||
+ idle-state-name = "cluster-power-down";
|
||||
+ arm,psci-suspend-param = <0x40003444>;
|
||||
+ entry-latency-us = <3263>;
|
||||
+ exit-latency-us = <6562>;
|
||||
+ min-residency-us = <9926>;
|
||||
+ local-timer-stop;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+/delete-node/ &CPU_PD0;
|
||||
+/delete-node/ &CPU_PD1;
|
||||
+/delete-node/ &CPU_PD2;
|
||||
+/delete-node/ &CPU_PD3;
|
||||
+/delete-node/ &CPU_PD4;
|
||||
+/delete-node/ &CPU_PD5;
|
||||
+/delete-node/ &CPU_PD6;
|
||||
+/delete-node/ &CPU_PD7;
|
||||
+/delete-node/ &CLUSTER_PD;
|
||||
+
|
||||
+&apps_rsc {
|
||||
+ /delete-property/ power-domains;
|
||||
+};
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sc7180-idp.dts b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
|
||||
index d3c4b5804a69..c224fc93f1ee 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sc7180-idp.dts
|
||||
+++ b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
|
||||
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
|
||||
#include "sc7180.dtsi"
|
||||
+#include "sc7180-firmware-tfa.dtsi"
|
||||
#include "pm6150.dtsi"
|
||||
#include "pm6150l.dtsi"
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi b/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi
|
||||
index f4db4ccf48e5..38d327fa1394 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <dt-bindings/sound/sc7180-lpass.h>
|
||||
|
||||
#include "sc7180.dtsi"
|
||||
+#include "sc7180-firmware-tfa.dtsi"
|
||||
/* PMICs depend on spmi_bus label and so must come after sc7180.dtsi */
|
||||
#include "pm6150.dtsi"
|
||||
#include "pm6150l.dtsi"
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
|
||||
index 19f39a5b3b56..64ae9f27ba80 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
|
||||
@@ -133,9 +133,8 @@ CPU0: cpu@0 {
|
||||
compatible = "qcom,kryo468";
|
||||
reg = <0x0 0x0>;
|
||||
enable-method = "psci";
|
||||
- cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||
- &LITTLE_CPU_SLEEP_1
|
||||
- &CLUSTER_SLEEP_0>;
|
||||
+ power-domains = <&CPU_PD0>;
|
||||
+ power-domain-names = "psci";
|
||||
capacity-dmips-mhz = <415>;
|
||||
dynamic-power-coefficient = <137>;
|
||||
operating-points-v2 = <&cpu0_opp_table>;
|
||||
@@ -158,9 +157,8 @@ CPU1: cpu@100 {
|
||||
compatible = "qcom,kryo468";
|
||||
reg = <0x0 0x100>;
|
||||
enable-method = "psci";
|
||||
- cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||
- &LITTLE_CPU_SLEEP_1
|
||||
- &CLUSTER_SLEEP_0>;
|
||||
+ power-domains = <&CPU_PD1>;
|
||||
+ power-domain-names = "psci";
|
||||
capacity-dmips-mhz = <415>;
|
||||
dynamic-power-coefficient = <137>;
|
||||
next-level-cache = <&L2_100>;
|
||||
@@ -180,9 +178,8 @@ CPU2: cpu@200 {
|
||||
compatible = "qcom,kryo468";
|
||||
reg = <0x0 0x200>;
|
||||
enable-method = "psci";
|
||||
- cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||
- &LITTLE_CPU_SLEEP_1
|
||||
- &CLUSTER_SLEEP_0>;
|
||||
+ power-domains = <&CPU_PD2>;
|
||||
+ power-domain-names = "psci";
|
||||
capacity-dmips-mhz = <415>;
|
||||
dynamic-power-coefficient = <137>;
|
||||
next-level-cache = <&L2_200>;
|
||||
@@ -202,9 +199,8 @@ CPU3: cpu@300 {
|
||||
compatible = "qcom,kryo468";
|
||||
reg = <0x0 0x300>;
|
||||
enable-method = "psci";
|
||||
- cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||
- &LITTLE_CPU_SLEEP_1
|
||||
- &CLUSTER_SLEEP_0>;
|
||||
+ power-domains = <&CPU_PD3>;
|
||||
+ power-domain-names = "psci";
|
||||
capacity-dmips-mhz = <415>;
|
||||
dynamic-power-coefficient = <137>;
|
||||
next-level-cache = <&L2_300>;
|
||||
@@ -224,9 +220,8 @@ CPU4: cpu@400 {
|
||||
compatible = "qcom,kryo468";
|
||||
reg = <0x0 0x400>;
|
||||
enable-method = "psci";
|
||||
- cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||
- &LITTLE_CPU_SLEEP_1
|
||||
- &CLUSTER_SLEEP_0>;
|
||||
+ power-domains = <&CPU_PD4>;
|
||||
+ power-domain-names = "psci";
|
||||
capacity-dmips-mhz = <415>;
|
||||
dynamic-power-coefficient = <137>;
|
||||
next-level-cache = <&L2_400>;
|
||||
@@ -246,9 +241,8 @@ CPU5: cpu@500 {
|
||||
compatible = "qcom,kryo468";
|
||||
reg = <0x0 0x500>;
|
||||
enable-method = "psci";
|
||||
- cpu-idle-states = <&LITTLE_CPU_SLEEP_0
|
||||
- &LITTLE_CPU_SLEEP_1
|
||||
- &CLUSTER_SLEEP_0>;
|
||||
+ power-domains = <&CPU_PD5>;
|
||||
+ power-domain-names = "psci";
|
||||
capacity-dmips-mhz = <415>;
|
||||
dynamic-power-coefficient = <137>;
|
||||
next-level-cache = <&L2_500>;
|
||||
@@ -268,9 +262,8 @@ CPU6: cpu@600 {
|
||||
compatible = "qcom,kryo468";
|
||||
reg = <0x0 0x600>;
|
||||
enable-method = "psci";
|
||||
- cpu-idle-states = <&BIG_CPU_SLEEP_0
|
||||
- &BIG_CPU_SLEEP_1
|
||||
- &CLUSTER_SLEEP_0>;
|
||||
+ power-domains = <&CPU_PD6>;
|
||||
+ power-domain-names = "psci";
|
||||
capacity-dmips-mhz = <1024>;
|
||||
dynamic-power-coefficient = <480>;
|
||||
next-level-cache = <&L2_600>;
|
||||
@@ -290,9 +283,8 @@ CPU7: cpu@700 {
|
||||
compatible = "qcom,kryo468";
|
||||
reg = <0x0 0x700>;
|
||||
enable-method = "psci";
|
||||
- cpu-idle-states = <&BIG_CPU_SLEEP_0
|
||||
- &BIG_CPU_SLEEP_1
|
||||
- &CLUSTER_SLEEP_0>;
|
||||
+ power-domains = <&CPU_PD7>;
|
||||
+ power-domain-names = "psci";
|
||||
capacity-dmips-mhz = <1024>;
|
||||
dynamic-power-coefficient = <480>;
|
||||
next-level-cache = <&L2_700>;
|
||||
@@ -343,7 +335,7 @@ core7 {
|
||||
};
|
||||
};
|
||||
|
||||
- idle-states {
|
||||
+ idle_states: idle-states {
|
||||
entry-method = "psci";
|
||||
|
||||
LITTLE_CPU_SLEEP_0: cpu-sleep-0-0 {
|
||||
@@ -385,15 +377,34 @@ BIG_CPU_SLEEP_1: cpu-sleep-1-1 {
|
||||
min-residency-us = <5555>;
|
||||
local-timer-stop;
|
||||
};
|
||||
+ };
|
||||
|
||||
- CLUSTER_SLEEP_0: cluster-sleep-0 {
|
||||
- compatible = "arm,idle-state";
|
||||
+ domain_idle_states: domain-idle-states {
|
||||
+ CLUSTER_SLEEP_PC: cluster-sleep-0 {
|
||||
+ compatible = "domain-idle-state";
|
||||
+ idle-state-name = "cluster-l3-power-collapse";
|
||||
+ arm,psci-suspend-param = <0x41000044>;
|
||||
+ entry-latency-us = <2752>;
|
||||
+ exit-latency-us = <3048>;
|
||||
+ min-residency-us = <6118>;
|
||||
+ };
|
||||
+
|
||||
+ CLUSTER_SLEEP_CX_RET: cluster-sleep-1 {
|
||||
+ compatible = "domain-idle-state";
|
||||
+ idle-state-name = "cluster-cx-retention";
|
||||
+ arm,psci-suspend-param = <0x41001244>;
|
||||
+ entry-latency-us = <3638>;
|
||||
+ exit-latency-us = <4562>;
|
||||
+ min-residency-us = <8467>;
|
||||
+ };
|
||||
+
|
||||
+ CLUSTER_AOSS_SLEEP: cluster-sleep-2 {
|
||||
+ compatible = "domain-idle-state";
|
||||
idle-state-name = "cluster-power-down";
|
||||
- arm,psci-suspend-param = <0x40003444>;
|
||||
+ arm,psci-suspend-param = <0x4100b244>;
|
||||
entry-latency-us = <3263>;
|
||||
exit-latency-us = <6562>;
|
||||
- min-residency-us = <9926>;
|
||||
- local-timer-stop;
|
||||
+ min-residency-us = <9826>;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -643,6 +654,61 @@ ipa_smp2p_in: ipa-modem-to-ap {
|
||||
psci {
|
||||
compatible = "arm,psci-1.0";
|
||||
method = "smc";
|
||||
+
|
||||
+ CPU_PD0: cpu0 {
|
||||
+ #power-domain-cells = <0>;
|
||||
+ power-domains = <&CLUSTER_PD>;
|
||||
+ domain-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
|
||||
+ };
|
||||
+
|
||||
+ CPU_PD1: cpu1 {
|
||||
+ #power-domain-cells = <0>;
|
||||
+ power-domains = <&CLUSTER_PD>;
|
||||
+ domain-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
|
||||
+ };
|
||||
+
|
||||
+ CPU_PD2: cpu2 {
|
||||
+ #power-domain-cells = <0>;
|
||||
+ power-domains = <&CLUSTER_PD>;
|
||||
+ domain-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
|
||||
+ };
|
||||
+
|
||||
+ CPU_PD3: cpu3 {
|
||||
+ #power-domain-cells = <0>;
|
||||
+ power-domains = <&CLUSTER_PD>;
|
||||
+ domain-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
|
||||
+ };
|
||||
+
|
||||
+ CPU_PD4: cpu4 {
|
||||
+ #power-domain-cells = <0>;
|
||||
+ power-domains = <&CLUSTER_PD>;
|
||||
+ domain-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
|
||||
+ };
|
||||
+
|
||||
+ CPU_PD5: cpu5 {
|
||||
+ #power-domain-cells = <0>;
|
||||
+ power-domains = <&CLUSTER_PD>;
|
||||
+ domain-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1>;
|
||||
+ };
|
||||
+
|
||||
+ CPU_PD6: cpu6 {
|
||||
+ #power-domain-cells = <0>;
|
||||
+ power-domains = <&CLUSTER_PD>;
|
||||
+ domain-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1>;
|
||||
+ };
|
||||
+
|
||||
+ CPU_PD7: cpu7 {
|
||||
+ #power-domain-cells = <0>;
|
||||
+ power-domains = <&CLUSTER_PD>;
|
||||
+ domain-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1>;
|
||||
+ };
|
||||
+
|
||||
+ CLUSTER_PD: cpu-cluster0 {
|
||||
+ #power-domain-cells = <0>;
|
||||
+ domain-idle-states = <&CLUSTER_SLEEP_PC
|
||||
+ &CLUSTER_SLEEP_CX_RET
|
||||
+ &CLUSTER_AOSS_SLEEP>;
|
||||
+ };
|
||||
};
|
||||
|
||||
soc: soc@0 {
|
||||
@@ -3452,6 +3518,7 @@ apps_rsc: rsc@18200000 {
|
||||
<SLEEP_TCS 3>,
|
||||
<WAKE_TCS 3>,
|
||||
<CONTROL_TCS 1>;
|
||||
+ power-domains = <&CLUSTER_PD>;
|
||||
|
||||
rpmhcc: clock-controller {
|
||||
compatible = "qcom,sc7180-rpmh-clk";
|
||||
--
|
||||
2.43.0
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
From d3e05226627152fff5417c441407fa4a796b707b Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Travkin <nikita@trvn.ru>
|
||||
Date: Thu, 7 Sep 2023 15:02:35 +0500
|
||||
Subject: [PATCH 08/17] remoteproc: qcom: pas: Add sc7180 adsp
|
||||
|
||||
sc7180 has a dedicated ADSP similar to the one found in sm8250.
|
||||
Add it's compatible to the driver reusing the existing config so
|
||||
the devices that use the adsp can probe it.
|
||||
|
||||
Signed-off-by: Nikita Travkin <nikita@trvn.ru>
|
||||
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
|
||||
Link: https://lore.kernel.org/r/20230907-sc7180-adsp-rproc-v3-2-6515c3fbe0a3@trvn.ru
|
||||
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
|
||||
---
|
||||
drivers/remoteproc/qcom_q6v5_pas.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
|
||||
index 6afd0941e552..92aa60d81845 100644
|
||||
--- a/drivers/remoteproc/qcom_q6v5_pas.c
|
||||
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
|
||||
@@ -956,6 +956,7 @@ static const struct of_device_id adsp_of_match[] = {
|
||||
{ .compatible = "qcom,qcs404-adsp-pas", .data = &adsp_resource_init },
|
||||
{ .compatible = "qcom,qcs404-cdsp-pas", .data = &cdsp_resource_init },
|
||||
{ .compatible = "qcom,qcs404-wcss-pas", .data = &wcss_resource_init },
|
||||
+ { .compatible = "qcom,sc7180-adsp-pas", .data = &sm8250_adsp_resource},
|
||||
{ .compatible = "qcom,sc7180-mpss-pas", .data = &mpss_resource_init},
|
||||
{ .compatible = "qcom,sc7280-mpss-pas", .data = &mpss_resource_init},
|
||||
{ .compatible = "qcom,sc8180x-adsp-pas", .data = &sm8150_adsp_resource},
|
||||
--
|
||||
2.43.0
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
From 904af70e09880a072393d4871abe16f99cdde2eb Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Travkin <nikita@trvn.ru>
|
||||
Date: Thu, 7 Sep 2023 15:02:36 +0500
|
||||
Subject: [PATCH 09/17] arm64: dts: qcom: sc7180: Add tertiary mi2s pinctrl
|
||||
|
||||
Some devices use tertiary mi2s to connect external audio codec.
|
||||
Add it near the other two i2s pinctrl definitions so the devices don't
|
||||
have to duplicate it.
|
||||
|
||||
Signed-off-by: Nikita Travkin <nikita@trvn.ru>
|
||||
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
|
||||
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20230907-sc7180-adsp-rproc-v3-3-6515c3fbe0a3@trvn.ru
|
||||
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
|
||||
---
|
||||
arch/arm64/boot/dts/qcom/sc7180.dtsi | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
|
||||
index 64ae9f27ba80..6988140a5270 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
|
||||
@@ -1957,6 +1957,11 @@ pinmux {
|
||||
function = "lpass_ext";
|
||||
};
|
||||
};
|
||||
+
|
||||
+ ter_mi2s_active: ter-mi2s-active-state {
|
||||
+ pins = "gpio63", "gpio64", "gpio65", "gpio66";
|
||||
+ function = "mi2s_2";
|
||||
+ };
|
||||
};
|
||||
|
||||
remoteproc_mpss: remoteproc@4080000 {
|
||||
--
|
||||
2.43.0
|
||||
|
|
@ -0,0 +1,162 @@
|
|||
From 73db0fa78b569523c6a5fa8e68ddfbe83a07be6c Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Travkin <nikita@trvn.ru>
|
||||
Date: Thu, 7 Sep 2023 15:02:37 +0500
|
||||
Subject: [PATCH 10/17] arm64: dts: qcom: sc7180: Add ADSP
|
||||
|
||||
sc7180 has an ADSP remoteproc that exclusively controls the audio
|
||||
hardware on devices that use Qualcomm firmware.
|
||||
|
||||
Add it along with the relevant audio services.
|
||||
|
||||
Signed-off-by: Nikita Travkin <nikita@trvn.ru>
|
||||
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
|
||||
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
|
||||
Link: https://lore.kernel.org/r/20230907-sc7180-adsp-rproc-v3-4-6515c3fbe0a3@trvn.ru
|
||||
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
|
||||
---
|
||||
arch/arm64/boot/dts/qcom/sc7180.dtsi | 122 +++++++++++++++++++++++++++
|
||||
1 file changed, 122 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
|
||||
index 6988140a5270..b9d6c95191ae 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
|
||||
@@ -19,6 +19,8 @@
|
||||
#include <dt-bindings/reset/qcom,sdm845-aoss.h>
|
||||
#include <dt-bindings/reset/qcom,sdm845-pdc.h>
|
||||
#include <dt-bindings/soc/qcom,rpmh-rsc.h>
|
||||
+#include <dt-bindings/soc/qcom,apr.h>
|
||||
+#include <dt-bindings/sound/qcom,q6afe.h>
|
||||
#include <dt-bindings/thermal/thermal.h>
|
||||
|
||||
/ {
|
||||
@@ -3635,6 +3637,126 @@ wifi: wifi@18800000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
+ remoteproc_adsp: remoteproc@62400000 {
|
||||
+ compatible = "qcom,sc7180-adsp-pas";
|
||||
+ reg = <0 0x62400000 0 0x100>;
|
||||
+
|
||||
+ interrupts-extended = <&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
|
||||
+ <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
|
||||
+ <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
|
||||
+ <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
|
||||
+ <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
|
||||
+ interrupt-names = "wdog",
|
||||
+ "fatal",
|
||||
+ "ready",
|
||||
+ "handover",
|
||||
+ "stop-ack";
|
||||
+
|
||||
+ clocks = <&rpmhcc RPMH_CXO_CLK>;
|
||||
+ clock-names = "xo";
|
||||
+
|
||||
+ power-domains = <&rpmhpd SC7180_LCX>,
|
||||
+ <&rpmhpd SC7180_LMX>;
|
||||
+ power-domain-names = "lcx", "lmx";
|
||||
+
|
||||
+ qcom,qmp = <&aoss_qmp>;
|
||||
+ qcom,smem-states = <&adsp_smp2p_out 0>;
|
||||
+ qcom,smem-state-names = "stop";
|
||||
+
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ glink-edge {
|
||||
+ interrupts = <GIC_SPI 156 IRQ_TYPE_EDGE_RISING>;
|
||||
+ label = "lpass";
|
||||
+ qcom,remote-pid = <2>;
|
||||
+ mboxes = <&apss_shared 8>;
|
||||
+
|
||||
+ apr {
|
||||
+ compatible = "qcom,apr-v2";
|
||||
+ qcom,glink-channels = "apr_audio_svc";
|
||||
+ qcom,domain = <APR_DOMAIN_ADSP>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ service@3 {
|
||||
+ compatible = "qcom,q6core";
|
||||
+ reg = <APR_SVC_ADSP_CORE>;
|
||||
+ qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
|
||||
+ };
|
||||
+
|
||||
+ q6afe: service@4 {
|
||||
+ compatible = "qcom,q6afe";
|
||||
+ reg = <APR_SVC_AFE>;
|
||||
+ qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
|
||||
+
|
||||
+ q6afedai: dais {
|
||||
+ compatible = "qcom,q6afe-dais";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ #sound-dai-cells = <1>;
|
||||
+ };
|
||||
+
|
||||
+ q6afecc: clock-controller {
|
||||
+ compatible = "qcom,q6afe-clocks";
|
||||
+ #clock-cells = <2>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ q6asm: service@7 {
|
||||
+ compatible = "qcom,q6asm";
|
||||
+ reg = <APR_SVC_ASM>;
|
||||
+ qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
|
||||
+
|
||||
+ q6asmdai: dais {
|
||||
+ compatible = "qcom,q6asm-dais";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ #sound-dai-cells = <1>;
|
||||
+ iommus = <&apps_smmu 0x1001 0x0>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ q6adm: service@8 {
|
||||
+ compatible = "qcom,q6adm";
|
||||
+ reg = <APR_SVC_ADM>;
|
||||
+ qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
|
||||
+
|
||||
+ q6routing: routing {
|
||||
+ compatible = "qcom,q6adm-routing";
|
||||
+ #sound-dai-cells = <0>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ fastrpc {
|
||||
+ compatible = "qcom,fastrpc";
|
||||
+ qcom,glink-channels = "fastrpcglink-apps-dsp";
|
||||
+ label = "adsp";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ compute-cb@3 {
|
||||
+ compatible = "qcom,fastrpc-compute-cb";
|
||||
+ reg = <3>;
|
||||
+ iommus = <&apps_smmu 0x1003 0x0>;
|
||||
+ };
|
||||
+
|
||||
+ compute-cb@4 {
|
||||
+ compatible = "qcom,fastrpc-compute-cb";
|
||||
+ reg = <4>;
|
||||
+ iommus = <&apps_smmu 0x1004 0x0>;
|
||||
+ };
|
||||
+
|
||||
+ compute-cb@5 {
|
||||
+ compatible = "qcom,fastrpc-compute-cb";
|
||||
+ reg = <5>;
|
||||
+ iommus = <&apps_smmu 0x1005 0x0>;
|
||||
+ qcom,nsessions = <5>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
lpasscc: clock-controller@62d00000 {
|
||||
compatible = "qcom,sc7180-lpasscorecc";
|
||||
reg = <0 0x62d00000 0 0x50000>,
|
||||
--
|
||||
2.43.0
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
From 8b12f09d1ba7f704e1ff0435d891556aae675b22 Mon Sep 17 00:00:00 2001
|
||||
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
Date: Wed, 2 Aug 2023 20:57:30 +0300
|
||||
Subject: [PATCH 11/17] ASoC: qcom: sc7180: Map missing jack kcontrols
|
||||
|
||||
This driver does not properly map jack pins to kcontrols that PulseAudio
|
||||
and PipeWire need to handle jack detection events. The RT5682 and
|
||||
RT5682s codecs used here can detect Headphone and Headset Mic
|
||||
connections. Expose each to userspace as a kcontrol.
|
||||
|
||||
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20230802175737.263412-21-alpernebiyasak@gmail.com
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
sound/soc/qcom/sc7180.c | 40 +++++++++++++++++++++++++++++++++-------
|
||||
1 file changed, 33 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/sound/soc/qcom/sc7180.c b/sound/soc/qcom/sc7180.c
|
||||
index f5f7c64b23a2..57c5f35dfcc5 100644
|
||||
--- a/sound/soc/qcom/sc7180.c
|
||||
+++ b/sound/soc/qcom/sc7180.c
|
||||
@@ -42,6 +42,17 @@ static void sc7180_jack_free(struct snd_jack *jack)
|
||||
snd_soc_component_set_jack(component, NULL, NULL);
|
||||
}
|
||||
|
||||
+static struct snd_soc_jack_pin sc7180_jack_pins[] = {
|
||||
+ {
|
||||
+ .pin = "Headphone Jack",
|
||||
+ .mask = SND_JACK_HEADPHONE,
|
||||
+ },
|
||||
+ {
|
||||
+ .pin = "Headset Mic",
|
||||
+ .mask = SND_JACK_MICROPHONE,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
static int sc7180_headset_init(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_soc_card *card = rtd->card;
|
||||
@@ -51,13 +62,14 @@ static int sc7180_headset_init(struct snd_soc_pcm_runtime *rtd)
|
||||
struct snd_jack *jack;
|
||||
int rval;
|
||||
|
||||
- rval = snd_soc_card_jack_new(
|
||||
- card, "Headset Jack",
|
||||
- SND_JACK_HEADSET |
|
||||
- SND_JACK_HEADPHONE |
|
||||
- SND_JACK_BTN_0 | SND_JACK_BTN_1 |
|
||||
- SND_JACK_BTN_2 | SND_JACK_BTN_3,
|
||||
- &pdata->hs_jack);
|
||||
+ rval = snd_soc_card_jack_new_pins(card, "Headset Jack",
|
||||
+ SND_JACK_HEADSET |
|
||||
+ SND_JACK_HEADPHONE |
|
||||
+ SND_JACK_BTN_0 | SND_JACK_BTN_1 |
|
||||
+ SND_JACK_BTN_2 | SND_JACK_BTN_3,
|
||||
+ &pdata->hs_jack,
|
||||
+ sc7180_jack_pins,
|
||||
+ ARRAY_SIZE(sc7180_jack_pins));
|
||||
|
||||
if (rval < 0) {
|
||||
dev_err(card->dev, "Unable to add Headset Jack\n");
|
||||
@@ -297,6 +309,11 @@ static const struct snd_soc_dapm_widget sc7180_snd_widgets[] = {
|
||||
SND_SOC_DAPM_MIC("Headset Mic", NULL),
|
||||
};
|
||||
|
||||
+static const struct snd_kcontrol_new sc7180_snd_controls[] = {
|
||||
+ SOC_DAPM_PIN_SWITCH("Headphone Jack"),
|
||||
+ SOC_DAPM_PIN_SWITCH("Headset Mic"),
|
||||
+};
|
||||
+
|
||||
static const struct snd_soc_dapm_widget sc7180_adau7002_snd_widgets[] = {
|
||||
SND_SOC_DAPM_MIC("DMIC", NULL),
|
||||
};
|
||||
@@ -320,6 +337,11 @@ static const struct snd_soc_dapm_widget sc7180_snd_dual_mic_widgets[] = {
|
||||
SND_SOC_DAPM_MUX("Dmic Mux", SND_SOC_NOPM, 0, 0, &sc7180_dmic_mux_control),
|
||||
};
|
||||
|
||||
+static const struct snd_kcontrol_new sc7180_snd_dual_mic_controls[] = {
|
||||
+ SOC_DAPM_PIN_SWITCH("Headphone Jack"),
|
||||
+ SOC_DAPM_PIN_SWITCH("Headset Mic"),
|
||||
+};
|
||||
+
|
||||
static const struct snd_soc_dapm_route sc7180_snd_dual_mic_audio_route[] = {
|
||||
{"Dmic Mux", "Front Mic", "DMIC"},
|
||||
{"Dmic Mux", "Rear Mic", "DMIC"},
|
||||
@@ -348,10 +370,14 @@ static int sc7180_snd_platform_probe(struct platform_device *pdev)
|
||||
card->dev = dev;
|
||||
card->dapm_widgets = sc7180_snd_widgets;
|
||||
card->num_dapm_widgets = ARRAY_SIZE(sc7180_snd_widgets);
|
||||
+ card->controls = sc7180_snd_controls;
|
||||
+ card->num_controls = ARRAY_SIZE(sc7180_snd_controls);
|
||||
|
||||
if (of_property_read_bool(dev->of_node, "dmic-gpios")) {
|
||||
card->dapm_widgets = sc7180_snd_dual_mic_widgets,
|
||||
card->num_dapm_widgets = ARRAY_SIZE(sc7180_snd_dual_mic_widgets),
|
||||
+ card->controls = sc7180_snd_dual_mic_controls,
|
||||
+ card->num_controls = ARRAY_SIZE(sc7180_snd_dual_mic_controls),
|
||||
card->dapm_routes = sc7180_snd_dual_mic_audio_route,
|
||||
card->num_dapm_routes = ARRAY_SIZE(sc7180_snd_dual_mic_audio_route),
|
||||
data->dmic_sel = devm_gpiod_get(&pdev->dev, "dmic", GPIOD_OUT_LOW);
|
||||
--
|
||||
2.43.0
|
||||
|
|
@ -0,0 +1,319 @@
|
|||
From 98378d3ecfeb0741b313ff607a2c883ebee26da3 Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Travkin <nikita@trvn.ru>
|
||||
Date: Thu, 19 Oct 2023 19:14:13 +0500
|
||||
Subject: [PATCH 12/17] ASoC: qcom: sc7180: Add support for qdsp6 baked sound
|
||||
|
||||
Some sc7180 devices use audio adsp to play sound. The setup for this
|
||||
adsp is similar to the dirrect lpass usage but requires the use of
|
||||
different link ids and clocks.
|
||||
|
||||
This commit adds support for the qdsp based audio, reusing the common
|
||||
parts like audio codec setup and jack creation.
|
||||
|
||||
Since the setup is mostly generic and codec specific setup is guarded
|
||||
behind a check, a generic compatible is added, similar to other
|
||||
platforms. Even though those changes target Acer Aspire 1 as the only
|
||||
user of the adsp audio on this platform present upstream at the moment
|
||||
of the commit, those changes should be either dirrectly compatible or
|
||||
trivially expandable to the other devices that will be added in the
|
||||
future.
|
||||
|
||||
Signed-off-by: Nikita Travkin <nikita@trvn.ru>
|
||||
---
|
||||
sound/soc/qcom/sc7180.c | 194 +++++++++++++++++++++++++++++++++++-----
|
||||
1 file changed, 172 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/sound/soc/qcom/sc7180.c b/sound/soc/qcom/sc7180.c
|
||||
index 57c5f35dfcc5..c4f58ecd3896 100644
|
||||
--- a/sound/soc/qcom/sc7180.c
|
||||
+++ b/sound/soc/qcom/sc7180.c
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <sound/pcm.h>
|
||||
#include <sound/soc.h>
|
||||
#include <uapi/linux/input-event-codes.h>
|
||||
+#include "qdsp6/q6afe.h"
|
||||
|
||||
#include "../codecs/rt5682.h"
|
||||
#include "../codecs/rt5682s.h"
|
||||
@@ -22,6 +23,7 @@
|
||||
#include "lpass.h"
|
||||
|
||||
#define DEFAULT_MCLK_RATE 19200000
|
||||
+#define MI2S_BCLK_RATE 1536000
|
||||
#define RT5682_PLL1_FREQ (48000 * 512)
|
||||
|
||||
#define DRIVER_NAME "SC7180"
|
||||
@@ -134,12 +136,28 @@ static int sc7180_init(struct snd_soc_pcm_runtime *rtd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int sc7180_snd_startup(struct snd_pcm_substream *substream)
|
||||
+static int sc7180_qdsp_init(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
- struct snd_soc_card *card = rtd->card;
|
||||
- struct sc7180_snd_data *data = snd_soc_card_get_drvdata(card);
|
||||
struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
|
||||
+
|
||||
+ switch (cpu_dai->id) {
|
||||
+ case PRIMARY_MI2S_RX:
|
||||
+ return sc7180_headset_init(rtd);
|
||||
+ case PRIMARY_MI2S_TX:
|
||||
+ case TERTIARY_MI2S_RX:
|
||||
+ return 0;
|
||||
+ case DISPLAY_PORT_RX:
|
||||
+ return sc7180_hdmi_init(rtd);
|
||||
+ default:
|
||||
+ dev_err(rtd->dev, "%s: invalid dai id 0x%x\n", __func__,
|
||||
+ cpu_dai->id);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int sc7180_startup_realtek_codec(struct snd_soc_pcm_runtime *rtd)
|
||||
+{
|
||||
struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
|
||||
int pll_id, pll_source, pll_in, pll_out, clk_id, ret;
|
||||
|
||||
@@ -155,8 +173,40 @@ static int sc7180_snd_startup(struct snd_pcm_substream *substream)
|
||||
clk_id = RT5682S_SCLK_S_PLL2;
|
||||
pll_out = RT5682_PLL1_FREQ;
|
||||
pll_in = DEFAULT_MCLK_RATE;
|
||||
+ } else {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ snd_soc_dai_set_fmt(codec_dai,
|
||||
+ SND_SOC_DAIFMT_BC_FC |
|
||||
+ SND_SOC_DAIFMT_NB_NF |
|
||||
+ SND_SOC_DAIFMT_I2S);
|
||||
+
|
||||
+ /* Configure PLL1 for codec */
|
||||
+ ret = snd_soc_dai_set_pll(codec_dai, pll_id, pll_source,
|
||||
+ pll_in, pll_out);
|
||||
+ if (ret) {
|
||||
+ dev_err(rtd->dev, "can't set codec pll: %d\n", ret);
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
+ /* Configure sysclk for codec */
|
||||
+ ret = snd_soc_dai_set_sysclk(codec_dai, clk_id, pll_out,
|
||||
+ SND_SOC_CLOCK_IN);
|
||||
+ if (ret)
|
||||
+ dev_err(rtd->dev, "snd_soc_dai_set_sysclk err = %d\n",
|
||||
+ ret);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int sc7180_snd_startup(struct snd_pcm_substream *substream)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_card *card = rtd->card;
|
||||
+ struct sc7180_snd_data *data = snd_soc_card_get_drvdata(card);
|
||||
+ struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
|
||||
+ int ret;
|
||||
+
|
||||
switch (cpu_dai->id) {
|
||||
case MI2S_PRIMARY:
|
||||
if (++data->pri_mi2s_clk_count == 1) {
|
||||
@@ -166,30 +216,66 @@ static int sc7180_snd_startup(struct snd_pcm_substream *substream)
|
||||
SNDRV_PCM_STREAM_PLAYBACK);
|
||||
}
|
||||
|
||||
- snd_soc_dai_set_fmt(codec_dai,
|
||||
- SND_SOC_DAIFMT_BC_FC |
|
||||
- SND_SOC_DAIFMT_NB_NF |
|
||||
- SND_SOC_DAIFMT_I2S);
|
||||
-
|
||||
- /* Configure PLL1 for codec */
|
||||
- ret = snd_soc_dai_set_pll(codec_dai, pll_id, pll_source,
|
||||
- pll_in, pll_out);
|
||||
- if (ret) {
|
||||
- dev_err(rtd->dev, "can't set codec pll: %d\n", ret);
|
||||
+ ret = sc7180_startup_realtek_codec(rtd);
|
||||
+ if (ret)
|
||||
return ret;
|
||||
+
|
||||
+ break;
|
||||
+ case MI2S_SECONDARY:
|
||||
+ break;
|
||||
+ case LPASS_DP_RX:
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(rtd->dev, "%s: invalid dai id 0x%x\n", __func__,
|
||||
+ cpu_dai->id);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int sc7180_qdsp_snd_startup(struct snd_pcm_substream *substream)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_card *card = rtd->card;
|
||||
+ struct sc7180_snd_data *data = snd_soc_card_get_drvdata(card);
|
||||
+ struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
|
||||
+ struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
|
||||
+ int ret;
|
||||
+
|
||||
+ switch (cpu_dai->id) {
|
||||
+ case PRIMARY_MI2S_RX:
|
||||
+ case PRIMARY_MI2S_TX:
|
||||
+ if (++data->pri_mi2s_clk_count == 1) {
|
||||
+ snd_soc_dai_set_sysclk(cpu_dai,
|
||||
+ Q6AFE_LPASS_CLK_ID_MCLK_1,
|
||||
+ DEFAULT_MCLK_RATE,
|
||||
+ SNDRV_PCM_STREAM_PLAYBACK);
|
||||
+ snd_soc_dai_set_sysclk(cpu_dai,
|
||||
+ Q6AFE_LPASS_CLK_ID_PRI_MI2S_IBIT,
|
||||
+ MI2S_BCLK_RATE,
|
||||
+ SNDRV_PCM_STREAM_PLAYBACK);
|
||||
}
|
||||
|
||||
- /* Configure sysclk for codec */
|
||||
- ret = snd_soc_dai_set_sysclk(codec_dai, clk_id, pll_out,
|
||||
- SND_SOC_CLOCK_IN);
|
||||
+ snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_BP_FP);
|
||||
+
|
||||
+ ret = sc7180_startup_realtek_codec(rtd);
|
||||
if (ret)
|
||||
- dev_err(rtd->dev, "snd_soc_dai_set_sysclk err = %d\n",
|
||||
- ret);
|
||||
+ return ret;
|
||||
|
||||
break;
|
||||
- case MI2S_SECONDARY:
|
||||
+ case TERTIARY_MI2S_RX:
|
||||
+ snd_soc_dai_set_sysclk(cpu_dai,
|
||||
+ Q6AFE_LPASS_CLK_ID_TER_MI2S_IBIT,
|
||||
+ MI2S_BCLK_RATE,
|
||||
+ SNDRV_PCM_STREAM_PLAYBACK);
|
||||
+
|
||||
+ snd_soc_dai_set_fmt(codec_dai,
|
||||
+ SND_SOC_DAIFMT_BC_FC |
|
||||
+ SND_SOC_DAIFMT_NB_NF |
|
||||
+ SND_SOC_DAIFMT_I2S);
|
||||
+ snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_BP_FP);
|
||||
break;
|
||||
- case LPASS_DP_RX:
|
||||
+ case DISPLAY_PORT_RX:
|
||||
break;
|
||||
default:
|
||||
dev_err(rtd->dev, "%s: invalid dai id 0x%x\n", __func__,
|
||||
@@ -247,6 +333,42 @@ static void sc7180_snd_shutdown(struct snd_pcm_substream *substream)
|
||||
}
|
||||
}
|
||||
|
||||
+static void sc7180_qdsp_snd_shutdown(struct snd_pcm_substream *substream)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct snd_soc_card *card = rtd->card;
|
||||
+ struct sc7180_snd_data *data = snd_soc_card_get_drvdata(card);
|
||||
+ struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
|
||||
+
|
||||
+ switch (cpu_dai->id) {
|
||||
+ case PRIMARY_MI2S_RX:
|
||||
+ case PRIMARY_MI2S_TX:
|
||||
+ if (--data->pri_mi2s_clk_count == 0) {
|
||||
+ snd_soc_dai_set_sysclk(cpu_dai,
|
||||
+ Q6AFE_LPASS_CLK_ID_MCLK_1,
|
||||
+ 0,
|
||||
+ SNDRV_PCM_STREAM_PLAYBACK);
|
||||
+ snd_soc_dai_set_sysclk(cpu_dai,
|
||||
+ Q6AFE_LPASS_CLK_ID_PRI_MI2S_IBIT,
|
||||
+ 0,
|
||||
+ SNDRV_PCM_STREAM_PLAYBACK);
|
||||
+ }
|
||||
+ break;
|
||||
+ case TERTIARY_MI2S_RX:
|
||||
+ snd_soc_dai_set_sysclk(cpu_dai,
|
||||
+ Q6AFE_LPASS_CLK_ID_TER_MI2S_IBIT,
|
||||
+ 0,
|
||||
+ SNDRV_PCM_STREAM_PLAYBACK);
|
||||
+ break;
|
||||
+ case DISPLAY_PORT_RX:
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(rtd->dev, "%s: invalid dai id 0x%x\n", __func__,
|
||||
+ cpu_dai->id);
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static int sc7180_adau7002_init(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
|
||||
@@ -295,11 +417,30 @@ static int sc7180_adau7002_snd_startup(struct snd_pcm_substream *substream)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int sc7180_qdsp_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
|
||||
+ struct snd_pcm_hw_params *params)
|
||||
+{
|
||||
+ struct snd_interval *rate = hw_param_interval(params,
|
||||
+ SNDRV_PCM_HW_PARAM_RATE);
|
||||
+ struct snd_interval *channels = hw_param_interval(params,
|
||||
+ SNDRV_PCM_HW_PARAM_CHANNELS);
|
||||
+
|
||||
+ rate->min = rate->max = 48000;
|
||||
+ channels->min = channels->max = 2;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static const struct snd_soc_ops sc7180_ops = {
|
||||
.startup = sc7180_snd_startup,
|
||||
.shutdown = sc7180_snd_shutdown,
|
||||
};
|
||||
|
||||
+static const struct snd_soc_ops sc7180_qdsp_ops = {
|
||||
+ .startup = sc7180_qdsp_snd_startup,
|
||||
+ .shutdown = sc7180_qdsp_snd_shutdown,
|
||||
+};
|
||||
+
|
||||
static const struct snd_soc_ops sc7180_adau7002_ops = {
|
||||
.startup = sc7180_adau7002_snd_startup,
|
||||
};
|
||||
@@ -355,7 +496,7 @@ static int sc7180_snd_platform_probe(struct platform_device *pdev)
|
||||
struct snd_soc_dai_link *link;
|
||||
int ret;
|
||||
int i;
|
||||
- bool no_headphone = false;
|
||||
+ bool qdsp = false, no_headphone = false;
|
||||
|
||||
/* Allocate the private data */
|
||||
data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
|
||||
@@ -391,6 +532,8 @@ static int sc7180_snd_platform_probe(struct platform_device *pdev)
|
||||
no_headphone = true;
|
||||
card->dapm_widgets = sc7180_adau7002_snd_widgets;
|
||||
card->num_dapm_widgets = ARRAY_SIZE(sc7180_adau7002_snd_widgets);
|
||||
+ } else if (of_device_is_compatible(dev->of_node, "qcom,sc7180-qdsp6-sndcard")) {
|
||||
+ qdsp = true;
|
||||
}
|
||||
|
||||
ret = qcom_snd_parse_of(card);
|
||||
@@ -401,6 +544,12 @@ static int sc7180_snd_platform_probe(struct platform_device *pdev)
|
||||
if (no_headphone) {
|
||||
link->ops = &sc7180_adau7002_ops;
|
||||
link->init = sc7180_adau7002_init;
|
||||
+ } else if (qdsp) {
|
||||
+ if (link->no_pcm == 1) {
|
||||
+ link->ops = &sc7180_qdsp_ops;
|
||||
+ link->be_hw_params_fixup = sc7180_qdsp_be_hw_params_fixup;
|
||||
+ link->init = sc7180_qdsp_init;
|
||||
+ }
|
||||
} else {
|
||||
link->ops = &sc7180_ops;
|
||||
link->init = sc7180_init;
|
||||
@@ -413,6 +562,7 @@ static int sc7180_snd_platform_probe(struct platform_device *pdev)
|
||||
static const struct of_device_id sc7180_snd_device_id[] = {
|
||||
{.compatible = "google,sc7180-trogdor"},
|
||||
{.compatible = "google,sc7180-coachz"},
|
||||
+ {.compatible = "qcom,sc7180-qdsp6-sndcard"},
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, sc7180_snd_device_id);
|
||||
--
|
||||
2.43.0
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
From 389f71369f7a62199ff0af56ef9a23c1c86570e1 Mon Sep 17 00:00:00 2001
|
||||
From: David Wronek <davidwronek@gmail.com>
|
||||
Date: Thu, 24 Aug 2023 11:15:05 +0200
|
||||
Subject: [PATCH 13/17] arm64: dts: qcom: pm6150: Add resin and rtc nodes
|
||||
|
||||
Add support for the RTC which is the same as on other PMICs and add the
|
||||
resin child node to the PM6150 PON device, both disabled by default.
|
||||
|
||||
Signed-off-by: David Wronek <davidwronek@gmail.com>
|
||||
Tested-by: Nikita Travkin <nikita@trvn.ru>
|
||||
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20230824091737.75813-3-davidwronek@gmail.com
|
||||
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
|
||||
---
|
||||
arch/arm64/boot/dts/qcom/pm6150.dtsi | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/pm6150.dtsi b/arch/arm64/boot/dts/qcom/pm6150.dtsi
|
||||
index 8a4972e6a24c..d1dccfdfb3cd 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/pm6150.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/pm6150.dtsi
|
||||
@@ -51,6 +51,14 @@ pm6150_pwrkey: pwrkey {
|
||||
bias-pull-up;
|
||||
linux,code = <KEY_POWER>;
|
||||
};
|
||||
+
|
||||
+ pm6150_resin: resin {
|
||||
+ compatible = "qcom,pm8941-resin";
|
||||
+ interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
|
||||
+ debounce = <15625>;
|
||||
+ bias-pull-up;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
};
|
||||
|
||||
pm6150_temp: temp-alarm@2400 {
|
||||
@@ -86,6 +94,14 @@ pm6150_adc_tm: adc-tm@3500 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
+ pm6150_rtc: rtc@6000 {
|
||||
+ compatible = "qcom,pm8941-rtc";
|
||||
+ reg = <0x6000>, <0x6100>;
|
||||
+ reg-names = "rtc", "alarm";
|
||||
+ interrupts = <0x0 0x61 0x1 IRQ_TYPE_EDGE_RISING>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
pm6150_gpio: gpios@c000 {
|
||||
compatible = "qcom,pm6150-gpio", "qcom,spmi-gpio";
|
||||
reg = <0xc000>;
|
||||
--
|
||||
2.43.0
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
From f6bbe959dd47e534f2a006561be68cfb1bbf27c4 Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Travkin <nikita@trvn.ru>
|
||||
Date: Tue, 5 Dec 2023 16:48:10 +0500
|
||||
Subject: [PATCH 14/17] arm64: dts: qcom: acer-aspire1: Enable RTC
|
||||
|
||||
pm6150 has a read-only RTC that can be used to keep the time with some
|
||||
extra userspace tools. Enable it.
|
||||
|
||||
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
|
||||
Signed-off-by: Nikita Travkin <nikita@trvn.ru>
|
||||
Link: https://lore.kernel.org/r/20231205-aspire1-sound-v2-1-443b7ac0a06f@trvn.ru
|
||||
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
|
||||
---
|
||||
arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts b/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts
|
||||
index 2a80f4090085..ab8ec7958584 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts
|
||||
+++ b/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts
|
||||
@@ -349,6 +349,10 @@ &pm6150_pon {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
+&pm6150_rtc {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&qupv3_id_0 {
|
||||
status = "okay";
|
||||
};
|
||||
--
|
||||
2.43.0
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
From 28eac7fe663108b43c15d25566b03e8ccb71466c Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Travkin <nikita@trvn.ru>
|
||||
Date: Tue, 5 Dec 2023 16:48:11 +0500
|
||||
Subject: [PATCH 15/17] arm64: dts: qcom: acer-aspire1: Correct audio codec
|
||||
definition
|
||||
|
||||
When initially added, a mistake was made in the definition of the codec.
|
||||
|
||||
Despite the fact that the DMIC line is connected on the side of the
|
||||
codec chip, and relevant passive components, including 0-ohm resistors
|
||||
connecting the dmics, are present, the dmic line is still cut in
|
||||
another place on the board, which was overlooked.
|
||||
|
||||
Correct this by replacing the dmic configuration with a comment
|
||||
describing this hardware detail.
|
||||
|
||||
While at it, also add missing regulators definitions. This is not a
|
||||
functional change as all the relevant regulators were already added via
|
||||
the other rail supplies.
|
||||
|
||||
Fixes: 4a9f8f8f2ada ("arm64: dts: qcom: Add Acer Aspire 1")
|
||||
Signed-off-by: Nikita Travkin <nikita@trvn.ru>
|
||||
Link: https://lore.kernel.org/r/20231205-aspire1-sound-v2-2-443b7ac0a06f@trvn.ru
|
||||
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
|
||||
---
|
||||
.../arm64/boot/dts/qcom/sc7180-acer-aspire1.dts | 17 +++++++++++++++--
|
||||
1 file changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts b/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts
|
||||
index ab8ec7958584..7bde69f39c8a 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts
|
||||
+++ b/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts
|
||||
@@ -224,9 +224,22 @@ alc5682: codec@1a {
|
||||
AVDD-supply = <&vreg_l15a_1p8>;
|
||||
MICVDD-supply = <®_codec_3p3>;
|
||||
VBAT-supply = <®_codec_3p3>;
|
||||
+ DBVDD-supply = <&vreg_l15a_1p8>;
|
||||
+ LDO1-IN-supply = <&vreg_l15a_1p8>;
|
||||
+
|
||||
+ /*
|
||||
+ * NOTE: The board has a path from this codec to the
|
||||
+ * DMIC microphones in the lid, however some of the option
|
||||
+ * resistors are absent and the microphones are connected
|
||||
+ * to the SoC instead.
|
||||
+ *
|
||||
+ * If the resistors were to be changed by the user to
|
||||
+ * connect the codec, the following could be used:
|
||||
+ *
|
||||
+ * realtek,dmic1-data-pin = <1>;
|
||||
+ * realtek,dmic1-clk-pin = <1>;
|
||||
+ */
|
||||
|
||||
- realtek,dmic1-data-pin = <1>;
|
||||
- realtek,dmic1-clk-pin = <1>;
|
||||
realtek,jd-src = <1>;
|
||||
};
|
||||
};
|
||||
--
|
||||
2.43.0
|
||||
|
|
@ -0,0 +1,212 @@
|
|||
From d081eaf8adc96ae9ba68ffe3f69f3057ead4bc63 Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Travkin <nikita@trvn.ru>
|
||||
Date: Tue, 5 Dec 2023 16:48:12 +0500
|
||||
Subject: [PATCH 16/17] arm64: dts: qcom: acer-aspire1: Add sound
|
||||
|
||||
This laptop has two i2s speakers; an i2s audio codec for the headset
|
||||
jack; two DMIC microphones in the lid and the displayport audio channel.
|
||||
|
||||
This commit adds the audio node that describes all of the above with the
|
||||
exception of the DMICs that require in-SoC digital codec to be brought
|
||||
up, which will be done later.
|
||||
|
||||
Note that the displayport channel is connected here for completeness,
|
||||
but the displayport can't be used yet since the HPD signal is created by
|
||||
the embedded controller, which will be added later.
|
||||
|
||||
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
|
||||
Signed-off-by: Nikita Travkin <nikita@trvn.ru>
|
||||
Link: https://lore.kernel.org/r/20231205-aspire1-sound-v2-3-443b7ac0a06f@trvn.ru
|
||||
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
|
||||
---
|
||||
.../boot/dts/qcom/sc7180-acer-aspire1.dts | 153 ++++++++++++++++++
|
||||
1 file changed, 153 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts b/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts
|
||||
index 7bde69f39c8a..58f694d8e762 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts
|
||||
+++ b/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts
|
||||
@@ -3,6 +3,7 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/sound/qcom,q6asm.h>
|
||||
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
|
||||
|
||||
#include "sc7180.dtsi"
|
||||
@@ -129,6 +130,113 @@ reg_lcm_3p3: panel-regulator {
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
+ sound: sound {
|
||||
+ compatible = "qcom,sc7180-qdsp6-sndcard";
|
||||
+ pinctrl-0 = <&pri_mi2s_active>, <&pri_mi2s_mclk_active>, <&ter_mi2s_active>;
|
||||
+ pinctrl-names = "default";
|
||||
+ model = "Acer-Aspire-1";
|
||||
+
|
||||
+ audio-routing =
|
||||
+ "Headphone Jack", "HPOL",
|
||||
+ "Headphone Jack", "HPOR";
|
||||
+
|
||||
+ multimedia1-dai-link {
|
||||
+ link-name = "MultiMedia1";
|
||||
+
|
||||
+ cpu {
|
||||
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ multimedia2-dai-link {
|
||||
+ link-name = "MultiMedia2";
|
||||
+
|
||||
+ cpu {
|
||||
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ multimedia3-dai-link {
|
||||
+ link-name = "MultiMedia3";
|
||||
+
|
||||
+ cpu {
|
||||
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ multimedia4-dai-link {
|
||||
+ link-name = "MultiMedia4";
|
||||
+
|
||||
+ cpu {
|
||||
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ primary-rx-dai-link {
|
||||
+ link-name = "Primary MI2S Playback";
|
||||
+
|
||||
+ cpu {
|
||||
+ sound-dai = <&q6afedai PRIMARY_MI2S_RX>;
|
||||
+ };
|
||||
+
|
||||
+ platform {
|
||||
+ sound-dai = <&q6routing>;
|
||||
+ };
|
||||
+
|
||||
+ codec {
|
||||
+ sound-dai = <&alc5682 0>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ primary-tx-dai-link {
|
||||
+ link-name = "Primary MI2S Capture";
|
||||
+
|
||||
+ cpu {
|
||||
+ sound-dai = <&q6afedai PRIMARY_MI2S_TX>;
|
||||
+ };
|
||||
+
|
||||
+ platform {
|
||||
+ sound-dai = <&q6routing>;
|
||||
+ };
|
||||
+
|
||||
+ codec {
|
||||
+ sound-dai = <&alc5682 0>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ tertiary-rx-dai-link {
|
||||
+ link-name = "Tertiary MI2S Playback";
|
||||
+
|
||||
+ cpu {
|
||||
+ sound-dai = <&q6afedai TERTIARY_MI2S_RX>;
|
||||
+ };
|
||||
+
|
||||
+ platform {
|
||||
+ sound-dai = <&q6routing>;
|
||||
+ };
|
||||
+
|
||||
+ codec {
|
||||
+ sound-dai = <&max98357a>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ displayport-rx-dai-link {
|
||||
+ link-name = "DisplayPort Playback";
|
||||
+
|
||||
+ cpu {
|
||||
+ sound-dai = <&q6afedai DISPLAY_PORT_RX>;
|
||||
+ };
|
||||
+
|
||||
+ platform {
|
||||
+ sound-dai = <&q6routing>;
|
||||
+ };
|
||||
+
|
||||
+ codec {
|
||||
+ sound-dai = <&mdss_dp>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
reg_tp_3p3: touchpad-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "tp_3p3";
|
||||
@@ -366,6 +474,45 @@ &pm6150_rtc {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&q6afedai {
|
||||
+ dai@16 {
|
||||
+ reg = <PRIMARY_MI2S_RX>;
|
||||
+ qcom,sd-lines = <1>;
|
||||
+ };
|
||||
+
|
||||
+ dai@17 {
|
||||
+ reg = <PRIMARY_MI2S_TX>;
|
||||
+ qcom,sd-lines = <0>;
|
||||
+ };
|
||||
+
|
||||
+ dai@20 {
|
||||
+ reg = <TERTIARY_MI2S_RX>;
|
||||
+ qcom,sd-lines = <0>;
|
||||
+ };
|
||||
+
|
||||
+ dai@104 {
|
||||
+ reg = <DISPLAY_PORT_RX>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&q6asmdai {
|
||||
+ dai@0 {
|
||||
+ reg = <0>;
|
||||
+ };
|
||||
+
|
||||
+ dai@1 {
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
+
|
||||
+ dai@2 {
|
||||
+ reg = <2>;
|
||||
+ };
|
||||
+
|
||||
+ dai@3 {
|
||||
+ reg = <3>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
&qupv3_id_0 {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -374,6 +521,12 @@ &qupv3_id_1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&remoteproc_adsp {
|
||||
+ memory-region = <&adsp_mem>;
|
||||
+ firmware-name = "qcom/sc7180/acer/aspire1/qcadsp7180.mbn";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&remoteproc_mpss {
|
||||
firmware-name = "qcom/sc7180/acer/aspire1/qcmpss7180_nm.mbn";
|
||||
status = "okay";
|
||||
--
|
||||
2.43.0
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
From a69329189d779cadf5687ae294a6b62a714f7360 Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Travkin <nikita@trvn.ru>
|
||||
Date: Wed, 20 Dec 2023 12:30:04 +0500
|
||||
Subject: [PATCH 17/17] HACK: arm64: dts: qcom: acer-aspire1: Enable
|
||||
DisplayPort block
|
||||
|
||||
Signed-off-by: Nikita Travkin <nikita@trvn.ru>
|
||||
---
|
||||
arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts b/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts
|
||||
index 58f694d8e762..bca950645a97 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts
|
||||
+++ b/arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts
|
||||
@@ -434,6 +434,15 @@ &mdss {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&mdss_dp {
|
||||
+ data-lanes = <0 1>;
|
||||
+
|
||||
+ vdda-1p2-supply = <&vreg_l3c_1p2>;
|
||||
+ vdda-0p9-supply = <&vreg_l4a_0p8>;
|
||||
+
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&pm6150_adc {
|
||||
thermistor@4e {
|
||||
reg = <ADC5_AMUX_THM2_100K_PU>;
|
||||
--
|
||||
2.43.0
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
# Maintainer: Jenneron <jenneron@protonmail.com>
|
||||
pkgname=linux-postmarketos-qcom-sc7180
|
||||
pkgver=6.1.39
|
||||
pkgrel=3
|
||||
pkgrel=4
|
||||
pkgdesc="Mainline kernel fork for Qualcomm Snapdragon 7c devices"
|
||||
arch="aarch64"
|
||||
_carch="arm64"
|
||||
|
@ -39,6 +39,18 @@ source="
|
|||
0003-arm64-dts-qcom-sc7180-Don-t-enable-lpass-clocks-by-d.patch
|
||||
0004-arm64-dts-qcom-sc7180-Drop-redundant-disable-in-mdp.patch
|
||||
0005-arm64-dts-qcom-Add-Acer-Aspire-1.patch
|
||||
0006-media-venus-core-Set-up-secure-memory-ranges-for-SC7.patch
|
||||
0007-arm64-dts-qcom-sc7180-Split-up-TF-A-related-PSCI-con.patch
|
||||
0008-remoteproc-qcom-pas-Add-sc7180-adsp.patch
|
||||
0009-arm64-dts-qcom-sc7180-Add-tertiary-mi2s-pinctrl.patch
|
||||
0010-arm64-dts-qcom-sc7180-Add-ADSP.patch
|
||||
0011-ASoC-qcom-sc7180-Map-missing-jack-kcontrols.patch
|
||||
0012-ASoC-qcom-sc7180-Add-support-for-qdsp6-baked-sound.patch
|
||||
0013-arm64-dts-qcom-pm6150-Add-resin-and-rtc-nodes.patch
|
||||
0014-arm64-dts-qcom-acer-aspire1-Enable-RTC.patch
|
||||
0015-arm64-dts-qcom-acer-aspire1-Correct-audio-codec-defi.patch
|
||||
0016-arm64-dts-qcom-acer-aspire1-Add-sound.patch
|
||||
0017-HACK-arm64-dts-qcom-acer-aspire1-Enable-DisplayPort-.patch
|
||||
$_config
|
||||
"
|
||||
builddir="$srcdir/linux-${_kernver//_/-}"
|
||||
|
@ -75,5 +87,17 @@ f1c85f9e7b2dbebba54eca7080589ee35be501854510fd54f1fb3db07b8cfb62276cb9359a40096a
|
|||
03b638baea7703227c398ba37824eeb17a96138aced4cc1e0769a265eb38788ac1fd150166a0af9e22f1364d053f20219b2b269310d01c32c4089682939021bf 0003-arm64-dts-qcom-sc7180-Don-t-enable-lpass-clocks-by-d.patch
|
||||
82761a3c53167dfb02091fb5305dca67b52872db3ecb14a42d782ba1346f046160d47a379fd88f0e3cb7ee91aa35a2eebe89304edb618df3895e2d469c9c8863 0004-arm64-dts-qcom-sc7180-Drop-redundant-disable-in-mdp.patch
|
||||
639784302e28afc562fc6d9673b12fbce49f11b5e2400ed5c460d5e157e7196092f33e1c67a1ee6bf8ad5b4dbb81f2f0263439662a1b68ea49c9201f63afe153 0005-arm64-dts-qcom-Add-Acer-Aspire-1.patch
|
||||
b09b67143e1adc26cb24954a31f3633aaf9624354ba27e69af685503a6621c6c7bad0b5b9c08535548e3e2885ccba7798542b97c4d217ab970ee504ba250595d 0006-media-venus-core-Set-up-secure-memory-ranges-for-SC7.patch
|
||||
04d746c6b5595097eec2a4bf37df06266a29080bedf7708bd54eb7b98a0b9a6d5581aef45070799b7d10ba94cd11d0ceb09486547e24bf2a597964e9e5566bc1 0007-arm64-dts-qcom-sc7180-Split-up-TF-A-related-PSCI-con.patch
|
||||
3f9c5b34f6869a9332ca8f260b385d0d7a5c4453d3fe682d864f53d44dceee9bd6bb370e75a60ce61c87b4224347f8cc8647c9d03f2bc2293d8e53ef327e2cc5 0008-remoteproc-qcom-pas-Add-sc7180-adsp.patch
|
||||
fe389611f991ba9de9e4662b2ed35a6790bbc18bb99fdc12eb281e5a4d5559ada3952a4024145007e9b8fbd3ed5fb862f56ad27f0ff36874decf24090d995f57 0009-arm64-dts-qcom-sc7180-Add-tertiary-mi2s-pinctrl.patch
|
||||
5fa7a4914ecd6e4ea47dce438cc1100f2747b082c71477859745147df801aede57ef6f1c54680a2c6ca85b61b791faa77210bd216bbe849681b2c558b6c6f152 0010-arm64-dts-qcom-sc7180-Add-ADSP.patch
|
||||
57c6f29b445ecd92f5fb1d5ca0a2783bccc1fbd3b1e51016db84370b75214fd70c832207f7c59cc00814db686d0ce03f33013138378c25aa18b8646148a296ac 0011-ASoC-qcom-sc7180-Map-missing-jack-kcontrols.patch
|
||||
08f1e646e1a387f1c5d01c954c87bdebd6fb13aa555eb3430331ffcfae0d6b61697ea4d35fb33b01bda801c92e9308f3a73ddf5b83a3074c009b2cce468f4d42 0012-ASoC-qcom-sc7180-Add-support-for-qdsp6-baked-sound.patch
|
||||
5e7dabdca52cf329b9a7fe77e6781cce07febda84592a93ea435b94e2707b6a8f3ae63a144070f5e203de4cd2608428cf9ec0c59fc2284bdd5b25bc995064264 0013-arm64-dts-qcom-pm6150-Add-resin-and-rtc-nodes.patch
|
||||
5c9d7bd7a97b704f512ea398c183778e7aba04d513f14c55dc70ba7a3677613805241f48409ec3af08f62d96c23bd197e0ead0a42c877ad91f7bc32c00b1b606 0014-arm64-dts-qcom-acer-aspire1-Enable-RTC.patch
|
||||
19441571468c89576da2087bfcfb8eaca253c67b41bd201ba123dafa33e5e6f424c9719b8fddf61cfce4d27f1b138718f200931eafc5edab5cb4da5b225ba410 0015-arm64-dts-qcom-acer-aspire1-Correct-audio-codec-defi.patch
|
||||
d6ecbd07481bf9852d330f1fbe004e0f70a45251956a37b730e4cbb3b7e3c03b34c9979749ab8857d39171382e87159cc54125fad7a0a02a33d4b502892fce9a 0016-arm64-dts-qcom-acer-aspire1-Add-sound.patch
|
||||
43cc38c2074a474a4386ab070bcc7b966527a607bc0adb345ce6d13f79b7714e46747ed2624831ae6ed48cf3b4ef387e4cc84247c3b7d13e69a7d1e64f7efe6f 0017-HACK-arm64-dts-qcom-acer-aspire1-Enable-DisplayPort-.patch
|
||||
9c664ab3d753f5ea7b65c77e026fcdb62e4f8f624941a7f64acc5960e6ef72f4616ebb7cb52dbb014884e4383ce3797dae4e2af829b80b06304158b5a7d1ea7e config-postmarketos-qcom-sc7180.aarch64
|
||||
"
|
||||
|
|
Loading…
Reference in a new issue