2020-02-07 21:00:09

by Adam Serbinski

[permalink] [raw]
Subject: [PATCH 7/8] dts: msm8996/db820c: enable primary pcm and quaternary i2s

This patch adds support to primary pcm and quaternary i2s ports.

Signed-off-by: Adam Serbinski <[email protected]>
CC: Andy Gross <[email protected]>
CC: Mark Rutland <[email protected]>
CC: Liam Girdwood <[email protected]>
CC: Patrick Lai <[email protected]>
CC: Banajit Goswami <[email protected]>
CC: Jaroslav Kysela <[email protected]>
CC: Takashi Iwai <[email protected]>
CC: [email protected]
CC: [email protected]
CC: [email protected]
CC: [email protected]
---
arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi | 113 +++++++++++++
arch/arm64/boot/dts/qcom/msm8996-pins.dtsi | 162 +++++++++++++++++++
2 files changed, 275 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
index dba3488492f1..4149ac4147a0 100644
--- a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
+++ b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
@@ -683,8 +683,31 @@
};
};

+/* PRI I2S on QCA6174 and QUAT I2S on LS each uses 2 I2S SD Lines for audio */
+&q6afedai {
+ pi2s@16 {
+ reg = <16>;
+ qcom,sd-lines = <1>;
+ };
+ pi2s@17 {
+ reg = <17>;
+ qcom,sd-lines = <0>;
+ };
+ qi2s@22 {
+ reg = <22>;
+ qcom,sd-lines = <0>;
+ };
+ qi2s@23 {
+ reg = <23>;
+ qcom,sd-lines = <1>;
+ };
+};
+
&sound {
compatible = "qcom,apq8096-sndcard";
+ pinctrl-0 = <&quat_mi2s_active &quat_mi2s_sd0_active &quat_mi2s_sd1_active &pri_mi2s_active &pri_mi2s_sd0_active &pri_mi2s_sd1_active>;
+ pinctrl-names = "default";
+
model = "DB820c";
audio-routing = "RX_BIAS", "MCLK";

@@ -709,6 +732,41 @@
};
};

+ mm4-dai-link {
+ link-name = "MultiMedia4";
+ cpu {
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
+ };
+ };
+
+ mm5-dai-link {
+ link-name = "MultiMedia5";
+ cpu {
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA5>;
+ };
+ };
+
+ mm6-dai-link {
+ link-name = "MultiMedia6";
+ cpu {
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA6>;
+ };
+ };
+
+ mm7-dai-link {
+ link-name = "MultiMedia7";
+ cpu {
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA7>;
+ };
+ };
+
+ mm8-dai-link {
+ link-name = "MultiMedia8";
+ cpu {
+ sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA8>;
+ };
+ };
+
hdmi-dai-link {
link-name = "HDMI";
cpu {
@@ -753,4 +811,59 @@
sound-dai = <&wcd9335 1>;
};
};
+
+ scoplay-dai-link {
+ link-name = "SCO-PCM-Playback";
+ cpu {
+ sound-dai = <&q6afedai PRIMARY_PCM_RX>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+ };
+
+ scocap-dai-link {
+ link-name = "SCO-PCM-Capture";
+ cpu {
+ sound-dai = <&q6afedai PRIMARY_PCM_TX>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+ };
+
+ mi2splay-dai-link {
+ link-name = "QUAT-MI2S-Playback";
+ cpu {
+ sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+
+// EXAMPLE: For adding real codecs
+// codec {
+// sound-dai = <&pcm5142_4c>, <&pcm5142_4d>;
+// };
+
+ };
+
+ mi2scap-dai-link {
+ link-name = "QUAT-MI2S-Capture";
+ cpu {
+ sound-dai = <&q6afedai QUATERNARY_MI2S_TX>;
+ };
+
+ platform {
+ sound-dai = <&q6routing>;
+ };
+
+// EXAMPLE: For adding real codecs
+// codec {
+// sound-dai = <&pcm1865>;
+// };
+ };
};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-pins.dtsi b/arch/arm64/boot/dts/qcom/msm8996-pins.dtsi
index ac1ede579361..e8221c4d05f7 100644
--- a/arch/arm64/boot/dts/qcom/msm8996-pins.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996-pins.dtsi
@@ -288,6 +288,168 @@
};
};

+ pri_mi2s_active: pri_mi2s_active {
+ mux {
+ pins = "gpio65", "gpio66";
+ function = "pri_mi2s";
+ };
+ config {
+ pins = "gpio65", "gpio66";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ output-high;
+ };
+ };
+
+ pri_mi2s_sleep: pri_mi2s_sleep {
+ mux {
+ pins = "gpio65", "gpio66";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio65", "gpio66";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ input-enable;
+ };
+ };
+
+ pri_mi2s_sd0_sleep: pri_mi2s_sd0_sleep {
+ mux {
+ pins = "gpio67";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio67";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ input-enable;
+ };
+ };
+
+ pri_mi2s_sd0_active: pri_mi2s_sd0_active {
+ mux {
+ pins = "gpio67";
+ function = "pri_mi2s";
+ };
+
+ config {
+ pins = "gpio67";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+
+ pri_mi2s_sd1_sleep: pri_mi2s_sd1_sleep {
+ mux {
+ pins = "gpio68";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio68";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ input-enable;
+ };
+ };
+
+ pri_mi2s_sd1_active: pri_mi2s_sd1_active {
+ mux {
+ pins = "gpio68";
+ function = "pri_mi2s";
+ };
+
+ config {
+ pins = "gpio68";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+
+ quat_mi2s_active: quat_mi2s_active {
+ mux {
+ pins = "gpio58", "gpio59";
+ function = "qua_mi2s";
+ };
+ config {
+ pins = "gpio58", "gpio59";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ output-high;
+ };
+ };
+
+ quat_mi2s_sleep: quat_mi2s_sleep {
+ mux {
+ pins = "gpio58", "gpio59";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio58", "gpio59";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ input-enable;
+ };
+ };
+
+ quat_mi2s_sd0_sleep: quat_mi2s_sd0_sleep {
+ mux {
+ pins = "gpio60";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio60";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ input-enable;
+ };
+ };
+
+ quat_mi2s_sd0_active: quat_mi2s_sd0_active {
+ mux {
+ pins = "gpio60";
+ function = "qua_mi2s";
+ };
+
+ config {
+ pins = "gpio60";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+
+ quat_mi2s_sd1_sleep: quat_mi2s_sd1_sleep {
+ mux {
+ pins = "gpio61";
+ function = "gpio";
+ };
+
+ config {
+ pins = "gpio61";
+ drive-strength = <2>; /* 2 mA */
+ bias-pull-down; /* PULL DOWN */
+ input-enable;
+ };
+ };
+
+ quat_mi2s_sd1_active: quat_mi2s_sd1_active {
+ mux {
+ pins = "gpio61";
+ function = "qua_mi2s";
+ };
+
+ config {
+ pins = "gpio61";
+ drive-strength = <8>; /* 8 mA */
+ bias-disable; /* NO PULL */
+ };
+ };
+
sdc2_clk_on: sdc2_clk_on {
config {
pins = "sdc2_clk";
--
2.21.1


2020-02-08 23:43:30

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH 7/8] dts: msm8996/db820c: enable primary pcm and quaternary i2s

On Fri 07 Feb 12:50 PST 2020, Adam Serbinski wrote:

Please make subject

"arm64: dts: qcom: db820c: Enable primary PCM and quaternary I2S"

Regards,
Bjorn

> This patch adds support to primary pcm and quaternary i2s ports.
>
> Signed-off-by: Adam Serbinski <[email protected]>
> CC: Andy Gross <[email protected]>
> CC: Mark Rutland <[email protected]>
> CC: Liam Girdwood <[email protected]>
> CC: Patrick Lai <[email protected]>
> CC: Banajit Goswami <[email protected]>
> CC: Jaroslav Kysela <[email protected]>
> CC: Takashi Iwai <[email protected]>
> CC: [email protected]
> CC: [email protected]
> CC: [email protected]
> CC: [email protected]
> ---
> arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi | 113 +++++++++++++
> arch/arm64/boot/dts/qcom/msm8996-pins.dtsi | 162 +++++++++++++++++++
> 2 files changed, 275 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
> index dba3488492f1..4149ac4147a0 100644
> --- a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
> +++ b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi
> @@ -683,8 +683,31 @@
> };
> };
>
> +/* PRI I2S on QCA6174 and QUAT I2S on LS each uses 2 I2S SD Lines for audio */
> +&q6afedai {
> + pi2s@16 {
> + reg = <16>;
> + qcom,sd-lines = <1>;
> + };
> + pi2s@17 {
> + reg = <17>;
> + qcom,sd-lines = <0>;
> + };
> + qi2s@22 {
> + reg = <22>;
> + qcom,sd-lines = <0>;
> + };
> + qi2s@23 {
> + reg = <23>;
> + qcom,sd-lines = <1>;
> + };
> +};
> +
> &sound {
> compatible = "qcom,apq8096-sndcard";
> + pinctrl-0 = <&quat_mi2s_active &quat_mi2s_sd0_active &quat_mi2s_sd1_active &pri_mi2s_active &pri_mi2s_sd0_active &pri_mi2s_sd1_active>;
> + pinctrl-names = "default";
> +
> model = "DB820c";
> audio-routing = "RX_BIAS", "MCLK";
>
> @@ -709,6 +732,41 @@
> };
> };
>
> + mm4-dai-link {
> + link-name = "MultiMedia4";
> + cpu {
> + sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
> + };
> + };
> +
> + mm5-dai-link {
> + link-name = "MultiMedia5";
> + cpu {
> + sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA5>;
> + };
> + };
> +
> + mm6-dai-link {
> + link-name = "MultiMedia6";
> + cpu {
> + sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA6>;
> + };
> + };
> +
> + mm7-dai-link {
> + link-name = "MultiMedia7";
> + cpu {
> + sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA7>;
> + };
> + };
> +
> + mm8-dai-link {
> + link-name = "MultiMedia8";
> + cpu {
> + sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA8>;
> + };
> + };
> +
> hdmi-dai-link {
> link-name = "HDMI";
> cpu {
> @@ -753,4 +811,59 @@
> sound-dai = <&wcd9335 1>;
> };
> };
> +
> + scoplay-dai-link {
> + link-name = "SCO-PCM-Playback";
> + cpu {
> + sound-dai = <&q6afedai PRIMARY_PCM_RX>;
> + };
> +
> + platform {
> + sound-dai = <&q6routing>;
> + };
> + };
> +
> + scocap-dai-link {
> + link-name = "SCO-PCM-Capture";
> + cpu {
> + sound-dai = <&q6afedai PRIMARY_PCM_TX>;
> + };
> +
> + platform {
> + sound-dai = <&q6routing>;
> + };
> + };
> +
> + mi2splay-dai-link {
> + link-name = "QUAT-MI2S-Playback";
> + cpu {
> + sound-dai = <&q6afedai QUATERNARY_MI2S_RX>;
> + };
> +
> + platform {
> + sound-dai = <&q6routing>;
> + };
> +
> +// EXAMPLE: For adding real codecs
> +// codec {
> +// sound-dai = <&pcm5142_4c>, <&pcm5142_4d>;
> +// };
> +
> + };
> +
> + mi2scap-dai-link {
> + link-name = "QUAT-MI2S-Capture";
> + cpu {
> + sound-dai = <&q6afedai QUATERNARY_MI2S_TX>;
> + };
> +
> + platform {
> + sound-dai = <&q6routing>;
> + };
> +
> +// EXAMPLE: For adding real codecs
> +// codec {
> +// sound-dai = <&pcm1865>;
> +// };
> + };
> };
> diff --git a/arch/arm64/boot/dts/qcom/msm8996-pins.dtsi b/arch/arm64/boot/dts/qcom/msm8996-pins.dtsi
> index ac1ede579361..e8221c4d05f7 100644
> --- a/arch/arm64/boot/dts/qcom/msm8996-pins.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8996-pins.dtsi
> @@ -288,6 +288,168 @@
> };
> };
>
> + pri_mi2s_active: pri_mi2s_active {
> + mux {
> + pins = "gpio65", "gpio66";
> + function = "pri_mi2s";
> + };
> + config {
> + pins = "gpio65", "gpio66";
> + drive-strength = <8>; /* 8 mA */
> + bias-disable; /* NO PULL */
> + output-high;
> + };
> + };
> +
> + pri_mi2s_sleep: pri_mi2s_sleep {
> + mux {
> + pins = "gpio65", "gpio66";
> + function = "gpio";
> + };
> +
> + config {
> + pins = "gpio65", "gpio66";
> + drive-strength = <2>; /* 2 mA */
> + bias-pull-down; /* PULL DOWN */
> + input-enable;
> + };
> + };
> +
> + pri_mi2s_sd0_sleep: pri_mi2s_sd0_sleep {
> + mux {
> + pins = "gpio67";
> + function = "gpio";
> + };
> +
> + config {
> + pins = "gpio67";
> + drive-strength = <2>; /* 2 mA */
> + bias-pull-down; /* PULL DOWN */
> + input-enable;
> + };
> + };
> +
> + pri_mi2s_sd0_active: pri_mi2s_sd0_active {
> + mux {
> + pins = "gpio67";
> + function = "pri_mi2s";
> + };
> +
> + config {
> + pins = "gpio67";
> + drive-strength = <8>; /* 8 mA */
> + bias-disable; /* NO PULL */
> + };
> + };
> +
> + pri_mi2s_sd1_sleep: pri_mi2s_sd1_sleep {
> + mux {
> + pins = "gpio68";
> + function = "gpio";
> + };
> +
> + config {
> + pins = "gpio68";
> + drive-strength = <2>; /* 2 mA */
> + bias-pull-down; /* PULL DOWN */
> + input-enable;
> + };
> + };
> +
> + pri_mi2s_sd1_active: pri_mi2s_sd1_active {
> + mux {
> + pins = "gpio68";
> + function = "pri_mi2s";
> + };
> +
> + config {
> + pins = "gpio68";
> + drive-strength = <8>; /* 8 mA */
> + bias-disable; /* NO PULL */
> + };
> + };
> +
> + quat_mi2s_active: quat_mi2s_active {
> + mux {
> + pins = "gpio58", "gpio59";
> + function = "qua_mi2s";
> + };
> + config {
> + pins = "gpio58", "gpio59";
> + drive-strength = <8>; /* 8 mA */
> + bias-disable; /* NO PULL */
> + output-high;
> + };
> + };
> +
> + quat_mi2s_sleep: quat_mi2s_sleep {
> + mux {
> + pins = "gpio58", "gpio59";
> + function = "gpio";
> + };
> +
> + config {
> + pins = "gpio58", "gpio59";
> + drive-strength = <2>; /* 2 mA */
> + bias-pull-down; /* PULL DOWN */
> + input-enable;
> + };
> + };
> +
> + quat_mi2s_sd0_sleep: quat_mi2s_sd0_sleep {
> + mux {
> + pins = "gpio60";
> + function = "gpio";
> + };
> +
> + config {
> + pins = "gpio60";
> + drive-strength = <2>; /* 2 mA */
> + bias-pull-down; /* PULL DOWN */
> + input-enable;
> + };
> + };
> +
> + quat_mi2s_sd0_active: quat_mi2s_sd0_active {
> + mux {
> + pins = "gpio60";
> + function = "qua_mi2s";
> + };
> +
> + config {
> + pins = "gpio60";
> + drive-strength = <8>; /* 8 mA */
> + bias-disable; /* NO PULL */
> + };
> + };
> +
> + quat_mi2s_sd1_sleep: quat_mi2s_sd1_sleep {
> + mux {
> + pins = "gpio61";
> + function = "gpio";
> + };
> +
> + config {
> + pins = "gpio61";
> + drive-strength = <2>; /* 2 mA */
> + bias-pull-down; /* PULL DOWN */
> + input-enable;
> + };
> + };
> +
> + quat_mi2s_sd1_active: quat_mi2s_sd1_active {
> + mux {
> + pins = "gpio61";
> + function = "qua_mi2s";
> + };
> +
> + config {
> + pins = "gpio61";
> + drive-strength = <8>; /* 8 mA */
> + bias-disable; /* NO PULL */
> + };
> + };
> +
> sdc2_clk_on: sdc2_clk_on {
> config {
> pins = "sdc2_clk";
> --
> 2.21.1
>