Message ID | 20240612051246.41117-1-j-choudhary@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] arm64: dts: ti: k3-j722s-evm: Enable analog audio support | expand |
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(+) > [...] >
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. > +};
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 > >> +}; >
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>; + }; +};
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(+)