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 <adam@xxxxxxxxxxxxx> > CC: Andy Gross <agross@xxxxxxxxxx> > CC: Mark Rutland <mark.rutland@xxxxxxx> > CC: Liam Girdwood <lgirdwood@xxxxxxxxx> > CC: Patrick Lai <plai@xxxxxxxxxxxxxx> > CC: Banajit Goswami <bgoswami@xxxxxxxxxxxxxx> > CC: Jaroslav Kysela <perex@xxxxxxxx> > CC: Takashi Iwai <tiwai@xxxxxxxx> > CC: alsa-devel@xxxxxxxxxxxxxxxx > CC: linux-arm-msm@xxxxxxxxxxxxxxx > CC: devicetree@xxxxxxxxxxxxxxx > CC: linux-kernel@xxxxxxxxxxxxxxx > --- > 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 >