arch/arm64/boot/dts/ti/k3-j722s-evm.dts | 121 ++++++++++++++++++++++++ 1 file changed, 121 insertions(+)
The audio support on J722S-EVM is using TLV320AIC3106[0] codec
connected to McASP1 serializers.
- Add the nodes for sound-card, audio codec and McASP1.
- Add hog for TRC_MUX_SEL to select between McASP and TRACE signals
- Add hogs for GPIO_AUD_RSTn and MCASP1_FET_SEL which is used to
switch between HDMI audio and codec audio.
- Add pinmux for MCASP1 and AUDIO_EXT_REFCLK1.
- Add syscon node for audio_refclk1 to set the enable bit in
CTRL_MMR reg and select the parent clock for the external clock.
[0]: <https://www.ti.com/lit/gpn/TLV320AIC3106>
Signed-off-by: Jayesh Choudhary <j-choudhary@ti.com>
---
This patch depends upon the bcdma driver fix posted upstream:
<https://lore.kernel.org/all/20240607-bcdma_chan_cnt-v2-1-bf1a55529d91@ti.com/>
v1 patch:
<https://lore.kernel.org/all/20240611082820.17442-1-j-choudhary@ti.com/>
Changelog v1->v2:
- Fix dtb warning for pin-muxing
arch/arm64/boot/dts/ti/k3-j722s-evm.dts | 121 ++++++++++++++++++++++++
1 file changed, 121 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-j722s-evm.dts b/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
index bf3c246d13d1..426ae3e8a839 100644
--- a/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
+++ b/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
@@ -105,6 +105,16 @@ vdd_sd_dv: regulator-TLV71033 {
<3300000 0x1>;
};
+ vcc_3v3_aud: regulator-vcc3v3 {
+ /* Output of LM5140 */
+ compatible = "regulator-fixed";
+ regulator-name = "vcc_3v3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ regulator-boot-on;
+ };
+
vsys_io_1v8: regulator-vsys-io-1v8 {
compatible = "regulator-fixed";
regulator-name = "vsys_io_1v8";
@@ -122,6 +132,35 @@ vsys_io_1v2: regulator-vsys-io-1v2 {
regulator-always-on;
regulator-boot-on;
};
+
+ codec_audio: sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,name = "J722S-EVM";
+ simple-audio-card,widgets =
+ "Headphone", "Headphone Jack",
+ "Line", "Line In",
+ "Microphone", "Microphone Jack";
+ simple-audio-card,routing =
+ "Headphone Jack", "HPLOUT",
+ "Headphone Jack", "HPROUT",
+ "LINE1L", "Line In",
+ "LINE1R", "Line In",
+ "MIC3R", "Microphone Jack",
+ "Microphone Jack", "Mic Bias";
+ simple-audio-card,format = "dsp_b";
+ simple-audio-card,bitclock-master = <&sound_master>;
+ simple-audio-card,frame-master = <&sound_master>;
+ simple-audio-card,bitclock-inversion;
+
+ simple-audio-card,cpu {
+ sound-dai = <&mcasp1>;
+ };
+
+ sound_master: simple-audio-card,codec {
+ sound-dai = <&tlv320aic3106>;
+ clocks = <&audio_refclk1>;
+ };
+ };
};
&main_pmx0 {
@@ -202,6 +241,21 @@ J722S_IOPAD(0x0130, PIN_OUTPUT, 0) /* (AG26) RGMII1_TXC */
J722S_IOPAD(0x012c, PIN_OUTPUT, 0) /* (AF25) RGMII1_TX_CTL */
>;
};
+
+ main_mcasp1_pins_default: main-mcasp1-default-pins {
+ pinctrl-single,pins = <
+ J722S_IOPAD(0x0090, PIN_INPUT, 2) /* (U24) GPMC0_BE0n_CLE.MCASP1_ACLKX */
+ J722S_IOPAD(0x0098, PIN_INPUT, 2) /* (AA24) GPMC0_WAIT0.MCASP1_AFSX */
+ J722S_IOPAD(0x008c, PIN_OUTPUT, 2) /* (T25) GPMC0_WEn.MCASP1_AXR0 */
+ J722S_IOPAD(0x0084, PIN_INPUT, 2) /* (R25) GPMC0_ADVn_ALE.MCASP1_AXR2 */
+ >;
+ };
+
+ audio_ext_refclk1_pins_default: audio-ext-refclk1-default-pins {
+ pinctrl-single,pins = <
+ J722S_IOPAD(0x0a0, PIN_OUTPUT, 1) /* (N24) GPMC0_WPn.AUDIO_EXT_REFCLK1 */
+ >;
+ };
};
&cpsw3g {
@@ -277,6 +331,12 @@ &wkup_i2c0 {
bootph-all;
};
+&k3_clks {
+ /* Configure AUDIO_EXT_REFCLK1 pin as output */
+ pinctrl-names = "default";
+ pinctrl-0 = <&audio_ext_refclk1_pins_default>;
+};
+
&main_i2c0 {
pinctrl-names = "default";
pinctrl-0 = <&main_i2c0_pins_default>;
@@ -301,6 +361,41 @@ exp1: gpio@23 {
"PCIe0_1L_RC_RSTz", "PCIe0_1L_PRSNT#",
"ENET1_EXP_SPARE2", "ENET1_EXP_PWRDN",
"PD_I2ENET1_I2CMUX_SELC_IRQ", "ENET1_EXP_RESETZ";
+
+ p01_hog: p01-hog {
+ /* P01 - TRC_MUX_SEL */
+ gpio-hog;
+ gpios = <0 GPIO_ACTIVE_HIGH>;
+ output-low;
+ line-name = "TRC_MUX_SEL";
+ };
+
+ p02_hog: p02-hog {
+ /* P02 - MCASP1_FET_SEL */
+ gpio-hog;
+ gpios = <2 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "MCASP1_FET_SEL";
+ };
+
+ p13_hog: p13-hog {
+ /* P13 - GPIO_AUD_RSTn */
+ gpio-hog;
+ gpios = <13 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "GPIO_AUD_RSTn";
+ };
+ };
+
+ tlv320aic3106: audio-codec@1b {
+ #sound-dai-cells = <0>;
+ compatible = "ti,tlv320aic3106";
+ reg = <0x1b>;
+ ai3x-micbias-vg = <1>; /* 2.0V */
+ AVDD-supply = <&vcc_3v3_aud>;
+ IOVDD-supply = <&vcc_3v3_aud>;
+ DRVDD-supply = <&vcc_3v3_aud>;
+ DVDD-supply = <&vsys_io_1v8>;
};
};
@@ -384,3 +479,29 @@ &sdhci1 {
status = "okay";
bootph-all;
};
+
+&mcasp1 {
+ status = "okay";
+ #sound-dai-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&main_mcasp1_pins_default>;
+ op-mode = <0>; /* MCASP_IIS_MODE */
+ tdm-slots = <2>;
+ serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
+ 1 0 2 0
+ 0 0 0 0
+ 0 0 0 0
+ 0 0 0 0
+ >;
+};
+
+&main_conf {
+ audio_refclk1: clock@82e4 {
+ compatible = "ti,am62-audio-refclk";
+ reg = <0x82e4 0x4>;
+ clocks = <&k3_clks 157 18>;
+ assigned-clocks = <&k3_clks 157 18>;
+ assigned-clock-parents = <&k3_clks 157 33>;
+ #clock-cells = <0>;
+ };
+};
--
2.25.1
On 12/06/24 10:42, Jayesh Choudhary wrote:
[...]
>
> diff --git a/arch/arm64/boot/dts/ti/k3-j722s-evm.dts b/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
> index bf3c246d13d1..426ae3e8a839 100644
> --- a/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
> +++ b/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
> @@ -105,6 +105,16 @@ vdd_sd_dv: regulator-TLV71033 {
> <3300000 0x1>;
> };
>
> + vcc_3v3_aud: regulator-vcc3v3 {
> + /* Output of LM5140 */
> + compatible = "regulator-fixed";
> + regulator-name = "vcc_3v3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> vsys_io_1v8: regulator-vsys-io-1v8 {
> compatible = "regulator-fixed";
> regulator-name = "vsys_io_1v8";
> @@ -122,6 +132,35 @@ vsys_io_1v2: regulator-vsys-io-1v2 {
> regulator-always-on;
> regulator-boot-on;
> };
> +
> + codec_audio: sound {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "J722S-EVM";
> + simple-audio-card,widgets =
> + "Headphone", "Headphone Jack",
> + "Line", "Line In",
> + "Microphone", "Microphone Jack";
> + simple-audio-card,routing =
> + "Headphone Jack", "HPLOUT",
> + "Headphone Jack", "HPROUT",
> + "LINE1L", "Line In",
> + "LINE1R", "Line In",
> + "MIC3R", "Microphone Jack",
> + "Microphone Jack", "Mic Bias";
> + simple-audio-card,format = "dsp_b";
> + simple-audio-card,bitclock-master = <&sound_master>;
> + simple-audio-card,frame-master = <&sound_master>;
> + simple-audio-card,bitclock-inversion;
> +
> + simple-audio-card,cpu {
> + sound-dai = <&mcasp1>;
> + };
> +
> + sound_master: simple-audio-card,codec {
> + sound-dai = <&tlv320aic3106>;
> + clocks = <&audio_refclk1>;
> + };
> + };
> };
>
> &main_pmx0 {
[...]
> +&main_conf {
> + audio_refclk1: clock@82e4 {
> + compatible = "ti,am62-audio-refclk";
> + reg = <0x82e4 0x4>;
> + clocks = <&k3_clks 157 18>;
> + assigned-clocks = <&k3_clks 157 18>;
> + assigned-clock-parents = <&k3_clks 157 33>;
> + #clock-cells = <0>;
> + };
Shouldn't this be in a SoC level dtsi? If the clock selection is based
on board design, the only move the assigned-clocks* to board file and
keep the rest in SoC level files.
> +};
--
Regards
Vignesh
Hello Vignesh,
On 22/06/24 12:06, Vignesh Raghavendra wrote:
>
>
> On 12/06/24 10:42, Jayesh Choudhary wrote:
> [...]
>>
>> diff --git a/arch/arm64/boot/dts/ti/k3-j722s-evm.dts b/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
>> index bf3c246d13d1..426ae3e8a839 100644
>> --- a/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
>> +++ b/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
>> @@ -105,6 +105,16 @@ vdd_sd_dv: regulator-TLV71033 {
>> <3300000 0x1>;
>> };
>>
>> + vcc_3v3_aud: regulator-vcc3v3 {
>> + /* Output of LM5140 */
>> + compatible = "regulator-fixed";
>> + regulator-name = "vcc_3v3";
>> + regulator-min-microvolt = <3300000>;
>> + regulator-max-microvolt = <3300000>;
>> + regulator-always-on;
>> + regulator-boot-on;
>> + };
>> +
>> vsys_io_1v8: regulator-vsys-io-1v8 {
>> compatible = "regulator-fixed";
>> regulator-name = "vsys_io_1v8";
>> @@ -122,6 +132,35 @@ vsys_io_1v2: regulator-vsys-io-1v2 {
>> regulator-always-on;
>> regulator-boot-on;
>> };
>> +
>> + codec_audio: sound {
>> + compatible = "simple-audio-card";
>> + simple-audio-card,name = "J722S-EVM";
>> + simple-audio-card,widgets =
>> + "Headphone", "Headphone Jack",
>> + "Line", "Line In",
>> + "Microphone", "Microphone Jack";
>> + simple-audio-card,routing =
>> + "Headphone Jack", "HPLOUT",
>> + "Headphone Jack", "HPROUT",
>> + "LINE1L", "Line In",
>> + "LINE1R", "Line In",
>> + "MIC3R", "Microphone Jack",
>> + "Microphone Jack", "Mic Bias";
>> + simple-audio-card,format = "dsp_b";
>> + simple-audio-card,bitclock-master = <&sound_master>;
>> + simple-audio-card,frame-master = <&sound_master>;
>> + simple-audio-card,bitclock-inversion;
>> +
>> + simple-audio-card,cpu {
>> + sound-dai = <&mcasp1>;
>> + };
>> +
>> + sound_master: simple-audio-card,codec {
>> + sound-dai = <&tlv320aic3106>;
>> + clocks = <&audio_refclk1>;
>> + };
>> + };
>> };
>>
>> &main_pmx0 {
>
> [...]
>
>> +&main_conf {
>> + audio_refclk1: clock@82e4 {
>> + compatible = "ti,am62-audio-refclk";
>> + reg = <0x82e4 0x4>;
>> + clocks = <&k3_clks 157 18>;
>> + assigned-clocks = <&k3_clks 157 18>;
>> + assigned-clock-parents = <&k3_clks 157 33>;
>> + #clock-cells = <0>;
>> + };
>
>
> Shouldn't this be in a SoC level dtsi? If the clock selection is based
> on board design, the only move the assigned-clocks* to board file and
> keep the rest in SoC level files.
>
Ok.
I will need to rebase on top of Siddharth's patches[0] which I see are
now merged.
Will do that and roll v3.
[0]:
https://lore.kernel.org/all/20240615081600.3602462-4-s-vadapalli@ti.com/
Thanks,
Jayesh
>
>> +};
>
Hi Jayesh, Thanks for the patch. On Jun 12, 2024 at 10:42:46 +0530, Jayesh Choudhary wrote: > The audio support on J722S-EVM is using TLV320AIC3106[0] codec > connected to McASP1 serializers. > > - Add the nodes for sound-card, audio codec and McASP1. > - Add hog for TRC_MUX_SEL to select between McASP and TRACE signals > - Add hogs for GPIO_AUD_RSTn and MCASP1_FET_SEL which is used to > switch between HDMI audio and codec audio. > - Add pinmux for MCASP1 and AUDIO_EXT_REFCLK1. > - Add syscon node for audio_refclk1 to set the enable bit in > CTRL_MMR reg and select the parent clock for the external clock. > > [0]: <https://www.ti.com/lit/gpn/TLV320AIC3106> > > Signed-off-by: Jayesh Choudhary <j-choudhary@ti.com> Reviewed-By: Jai Luthra <j-luthra@ti.com> > --- > > This patch depends upon the bcdma driver fix posted upstream: > <https://lore.kernel.org/all/20240607-bcdma_chan_cnt-v2-1-bf1a55529d91@ti.com/> > > v1 patch: > <https://lore.kernel.org/all/20240611082820.17442-1-j-choudhary@ti.com/> > > Changelog v1->v2: > - Fix dtb warning for pin-muxing > > arch/arm64/boot/dts/ti/k3-j722s-evm.dts | 121 ++++++++++++++++++++++++ > 1 file changed, 121 insertions(+) > [...] > -- Thanks, Jai GPG Fingerprint: 4DE0 D818 E5D5 75E8 D45A AFC5 43DE 91F9 249A 7145
© 2016 - 2025 Red Hat, Inc.