From: Francesco Dolcini <[email protected]>
Add AM62x AUDIO_REFCLKx to AM62x SoC dtsi, and after doing it, enable audio
support for Toradex Verdin AM62.
DT bindings updates, related to the audio codec used here, are already merged
in next [2][3].
For correct functionality this fix [1] is also required.
[1] https://lore.kernel.org/all/[email protected]/
[2] https://lore.kernel.org/all/[email protected]/
[3] https://lore.kernel.org/all/[email protected]/
v2:
- s/clock/clock-controller/ on audio refclk nodes name.
Francesco Dolcini (3):
arm64: dts: ti: verdin-am62: Set I2S_1 MCLK rate
arm64: dts: ti: verdin-am62: dev: add sound card
arm64: dts: ti: verdin-am62: dahlia: add sound card
Jai Luthra (1):
arm64: dts: ti: k3-am62x: Enable AUDIO_REFCLKx
arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 18 +++++++
.../boot/dts/ti/k3-am62-verdin-dahlia.dtsi | 53 +++++++++++++++++++
.../arm64/boot/dts/ti/k3-am62-verdin-dev.dtsi | 45 ++++++++++++++++
arch/arm64/boot/dts/ti/k3-am62-verdin.dtsi | 5 ++
arch/arm64/boot/dts/ti/k3-am62a-main.dtsi | 18 +++++++
5 files changed, 139 insertions(+)
--
2.25.1
From: Francesco Dolcini <[email protected]>
Set AUDIO_EXT_REFCLK1, used as I2S_1_MCLK on Verdin AM62 family, to 25MHz
(this is the only valid option according to TI [1]).
[1] https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1188051/am625-audio_ext_refclk1-clock-output---dts-support/4476322#4476322
Signed-off-by: Francesco Dolcini <[email protected]>
---
arch/arm64/boot/dts/ti/k3-am62-verdin.dtsi | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am62-verdin.dtsi b/arch/arm64/boot/dts/ti/k3-am62-verdin.dtsi
index 12dd1d64eac9..5db9ef2dc7e5 100644
--- a/arch/arm64/boot/dts/ti/k3-am62-verdin.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62-verdin.dtsi
@@ -768,6 +768,11 @@ AM62X_MCU_IOPAD(0x0028, PIN_OUTPUT, 0) /* (C5) WKUP_UART0_TXD */ /* SODIM
};
};
+/* VERDIN I2S_1_MCLK */
+&audio_refclk1 {
+ assigned-clock-rates = <25000000>;
+};
+
&cpsw3g {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_rgmii1>;
--
2.25.1
From: Jai Luthra <[email protected]>
On AM62-based SoCs the AUDIO_REFCLKx clocks can be used as an input to
external peripherals when configured through CTRL_MMR, so add the
clock nodes.
Signed-off-by: Jai Luthra <[email protected]>
Signed-off-by: Francesco Dolcini <[email protected]>
---
v2:
- s/clock/clock-controller/ on audio refclk nodes name.
---
arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 18 ++++++++++++++++++
arch/arm64/boot/dts/ti/k3-am62a-main.dtsi | 18 ++++++++++++++++++
2 files changed, 36 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am62-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62-main.dtsi
index ef90b2bc81eb..5f19ef46d44c 100644
--- a/arch/arm64/boot/dts/ti/k3-am62-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62-main.dtsi
@@ -60,6 +60,24 @@ epwm_tbclk: clock-controller@4130 {
reg = <0x4130 0x4>;
#clock-cells = <1>;
};
+
+ audio_refclk0: clock-controller@82e0 {
+ compatible = "ti,am62-audio-refclk";
+ reg = <0x82e0 0x4>;
+ clocks = <&k3_clks 157 0>;
+ assigned-clocks = <&k3_clks 157 0>;
+ assigned-clock-parents = <&k3_clks 157 8>;
+ #clock-cells = <0>;
+ };
+
+ audio_refclk1: clock-controller@82e4 {
+ compatible = "ti,am62-audio-refclk";
+ reg = <0x82e4 0x4>;
+ clocks = <&k3_clks 157 10>;
+ assigned-clocks = <&k3_clks 157 10>;
+ assigned-clock-parents = <&k3_clks 157 18>;
+ #clock-cells = <0>;
+ };
};
dmss: bus@48000000 {
diff --git a/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi
index 3198af08fb9f..75ea7202e071 100644
--- a/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi
@@ -60,6 +60,24 @@ epwm_tbclk: clock-controller@4130 {
reg = <0x4130 0x4>;
#clock-cells = <1>;
};
+
+ audio_refclk0: clock-controller@82e0 {
+ compatible = "ti,am62-audio-refclk";
+ reg = <0x82e0 0x4>;
+ clocks = <&k3_clks 157 0>;
+ assigned-clocks = <&k3_clks 157 0>;
+ assigned-clock-parents = <&k3_clks 157 8>;
+ #clock-cells = <0>;
+ };
+
+ audio_refclk1: clock-controller@82e4 {
+ compatible = "ti,am62-audio-refclk";
+ reg = <0x82e4 0x4>;
+ clocks = <&k3_clks 157 10>;
+ assigned-clocks = <&k3_clks 157 10>;
+ assigned-clock-parents = <&k3_clks 157 18>;
+ #clock-cells = <0>;
+ };
};
dmss: bus@48000000 {
--
2.25.1
From: Francesco Dolcini <[email protected]>
Add NAU8822 based analog sound card to Development carrier board.
Signed-off-by: Francesco Dolcini <[email protected]>
---
.../arm64/boot/dts/ti/k3-am62-verdin-dev.dtsi | 45 +++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am62-verdin-dev.dtsi b/arch/arm64/boot/dts/ti/k3-am62-verdin-dev.dtsi
index 8205081fda33..6701cb8974bb 100644
--- a/arch/arm64/boot/dts/ti/k3-am62-verdin-dev.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62-verdin-dev.dtsi
@@ -8,6 +8,42 @@
* https://www.toradex.com/products/carrier-board/verdin-development-board-kit
*/
+/ {
+ sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,bitclock-master = <&codec_dai>;
+ simple-audio-card,format = "i2s";
+ simple-audio-card,frame-master = <&codec_dai>;
+ simple-audio-card,name = "verdin-nau8822";
+ simple-audio-card,routing =
+ "Headphones", "LHP",
+ "Headphones", "RHP",
+ "Speaker", "LSPK",
+ "Speaker", "RSPK",
+ "Line Out", "AUXOUT1",
+ "Line Out", "AUXOUT2",
+ "LAUX", "Line In",
+ "RAUX", "Line In",
+ "LMICP", "Mic In",
+ "RMICP", "Mic In";
+ simple-audio-card,widgets =
+ "Headphones", "Headphones",
+ "Line Out", "Line Out",
+ "Speaker", "Speaker",
+ "Microphone", "Mic In",
+ "Line", "Line In";
+
+ codec_dai: simple-audio-card,codec {
+ clocks = <&audio_refclk1>;
+ sound-dai = <&nau8822_1a>;
+ };
+
+ simple-audio-card,cpu {
+ sound-dai = <&mcasp0>;
+ };
+ };
+};
+
/* Verdin ETHs */
&cpsw3g {
pinctrl-names = "default";
@@ -65,6 +101,15 @@ &main_gpio0 {
&main_i2c1 {
status = "okay";
+ /* Audio Codec */
+ nau8822_1a: audio-codec@1a {
+ compatible = "nuvoton,nau8822";
+ reg = <0x1a>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2s1_mclk>;
+ #sound-dai-cells = <0>;
+ };
+
/* IO Expander */
gpio_expander_21: gpio@21 {
compatible = "nxp,pcal6416";
--
2.25.1
On Sun, Aug 06, 2023 at 10:51:09AM +0200, Francesco Dolcini wrote:
> From: Francesco Dolcini <[email protected]>
>
> Add AM62x AUDIO_REFCLKx to AM62x SoC dtsi, and after doing it, enable audio
> support for Toradex Verdin AM62.
Whoops, all the patches had a
Reviewed-by: Jai Luthra <[email protected]>
in v1, and I forgot to add in v2 ...
Francesco
On 10:51-20230806, Francesco Dolcini wrote:
> From: Jai Luthra <[email protected]>
>
> On AM62-based SoCs the AUDIO_REFCLKx clocks can be used as an input to
> external peripherals when configured through CTRL_MMR, so add the
> clock nodes.
>
> Signed-off-by: Jai Luthra <[email protected]>
> Signed-off-by: Francesco Dolcini <[email protected]>
> ---
> v2:
> - s/clock/clock-controller/ on audio refclk nodes name.
> ---
> arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 18 ++++++++++++++++++
> arch/arm64/boot/dts/ti/k3-am62a-main.dtsi | 18 ++++++++++++++++++
> 2 files changed, 36 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am62-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62-main.dtsi
> index ef90b2bc81eb..5f19ef46d44c 100644
> --- a/arch/arm64/boot/dts/ti/k3-am62-main.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am62-main.dtsi
> @@ -60,6 +60,24 @@ epwm_tbclk: clock-controller@4130 {
> reg = <0x4130 0x4>;
> #clock-cells = <1>;
> };
> +
> + audio_refclk0: clock-controller@82e0 {
> + compatible = "ti,am62-audio-refclk";
> + reg = <0x82e0 0x4>;
> + clocks = <&k3_clks 157 0>;
> + assigned-clocks = <&k3_clks 157 0>;
> + assigned-clock-parents = <&k3_clks 157 8>;
> + #clock-cells = <0>;
> + };
> +
> + audio_refclk1: clock-controller@82e4 {
> + compatible = "ti,am62-audio-refclk";
> + reg = <0x82e4 0x4>;
> + clocks = <&k3_clks 157 10>;
> + assigned-clocks = <&k3_clks 157 10>;
> + assigned-clock-parents = <&k3_clks 157 18>;
> + #clock-cells = <0>;
> + };
> };
>
> dmss: bus@48000000 {
> diff --git a/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi
> index 3198af08fb9f..75ea7202e071 100644
> --- a/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi
> @@ -60,6 +60,24 @@ epwm_tbclk: clock-controller@4130 {
> reg = <0x4130 0x4>;
> #clock-cells = <1>;
> };
> +
> + audio_refclk0: clock-controller@82e0 {
> + compatible = "ti,am62-audio-refclk";
> + reg = <0x82e0 0x4>;
> + clocks = <&k3_clks 157 0>;
> + assigned-clocks = <&k3_clks 157 0>;
> + assigned-clock-parents = <&k3_clks 157 8>;
> + #clock-cells = <0>;
> + };
> +
> + audio_refclk1: clock-controller@82e4 {
> + compatible = "ti,am62-audio-refclk";
> + reg = <0x82e4 0x4>;
> + clocks = <&k3_clks 157 10>;
> + assigned-clocks = <&k3_clks 157 10>;
> + assigned-clock-parents = <&k3_clks 157 18>;
> + #clock-cells = <0>;
> + };
> };
>
> dmss: bus@48000000 {
> --
> 2.25.1
>
Jeez what a bit of a mess here - looks like I will have to punt this
series.
a) main_conf in arch/arm64/boot/dts/ti/k3-am62-main.dtsi is still
syscon, simple-mfd -> I had thought we have converted these already, but
apparently not.
b) we then have the yaml itself. Documentation/devicetree/bindings/mfd/ti,j721e-system-controller.yaml
it picks up clock-controller as ti,am654-ehrpwm-tbclk.yaml
but the actual binding is Documentation/devicetree/bindings/clock/ti,am62-audio-refclk.yaml
which is not enforced.
Jai: please sort this out before I can look at any of these audio
enablement patches involving refclk.
ALSO: please DONOT ignore dtbs_check warnings folks. it does show some
real issues in either bindings or dts.
--
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D
On 8/7/23 12:43 PM, Nishanth Menon wrote:
> On 10:51-20230806, Francesco Dolcini wrote:
>> From: Jai Luthra <[email protected]>
>>
>> On AM62-based SoCs the AUDIO_REFCLKx clocks can be used as an input to
>> external peripherals when configured through CTRL_MMR, so add the
>> clock nodes.
>>
>> Signed-off-by: Jai Luthra <[email protected]>
>> Signed-off-by: Francesco Dolcini <[email protected]>
>> ---
>> v2:
>> - s/clock/clock-controller/ on audio refclk nodes name.
>> ---
>> arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 18 ++++++++++++++++++
>> arch/arm64/boot/dts/ti/k3-am62a-main.dtsi | 18 ++++++++++++++++++
>> 2 files changed, 36 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/ti/k3-am62-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62-main.dtsi
>> index ef90b2bc81eb..5f19ef46d44c 100644
>> --- a/arch/arm64/boot/dts/ti/k3-am62-main.dtsi
>> +++ b/arch/arm64/boot/dts/ti/k3-am62-main.dtsi
>> @@ -60,6 +60,24 @@ epwm_tbclk: clock-controller@4130 {
>> reg = <0x4130 0x4>;
>> #clock-cells = <1>;
>> };
>> +
>> + audio_refclk0: clock-controller@82e0 {
>> + compatible = "ti,am62-audio-refclk";
>> + reg = <0x82e0 0x4>;
>> + clocks = <&k3_clks 157 0>;
>> + assigned-clocks = <&k3_clks 157 0>;
>> + assigned-clock-parents = <&k3_clks 157 8>;
>> + #clock-cells = <0>;
>> + };
>> +
>> + audio_refclk1: clock-controller@82e4 {
>> + compatible = "ti,am62-audio-refclk";
>> + reg = <0x82e4 0x4>;
>> + clocks = <&k3_clks 157 10>;
>> + assigned-clocks = <&k3_clks 157 10>;
>> + assigned-clock-parents = <&k3_clks 157 18>;
>> + #clock-cells = <0>;
>> + };
>> };
>>
>> dmss: bus@48000000 {
>> diff --git a/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi
>> index 3198af08fb9f..75ea7202e071 100644
>> --- a/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi
>> +++ b/arch/arm64/boot/dts/ti/k3-am62a-main.dtsi
>> @@ -60,6 +60,24 @@ epwm_tbclk: clock-controller@4130 {
>> reg = <0x4130 0x4>;
>> #clock-cells = <1>;
>> };
>> +
>> + audio_refclk0: clock-controller@82e0 {
>> + compatible = "ti,am62-audio-refclk";
>> + reg = <0x82e0 0x4>;
>> + clocks = <&k3_clks 157 0>;
>> + assigned-clocks = <&k3_clks 157 0>;
>> + assigned-clock-parents = <&k3_clks 157 8>;
>> + #clock-cells = <0>;
>> + };
>> +
>> + audio_refclk1: clock-controller@82e4 {
>> + compatible = "ti,am62-audio-refclk";
>> + reg = <0x82e4 0x4>;
>> + clocks = <&k3_clks 157 10>;
>> + assigned-clocks = <&k3_clks 157 10>;
>> + assigned-clock-parents = <&k3_clks 157 18>;
>> + #clock-cells = <0>;
>> + };
>> };
>>
>> dmss: bus@48000000 {
>> --
>> 2.25.1
>>
>
>
> Jeez what a bit of a mess here - looks like I will have to punt this
> series.
>
> a) main_conf in arch/arm64/boot/dts/ti/k3-am62-main.dtsi is still
> syscon, simple-mfd -> I had thought we have converted these already, but
> apparently not.
Right, we are working on it, but have been blocked as the "phy_gmii_sel"
node used to require the parent to be a "syscon" node. This was fixed
by [0] but it is still only in -next. After that we can convert more
of these nodes.
[0] https://lore.kernel.org/lkml/[email protected]/T/
Andrew
> b) we then have the yaml itself. Documentation/devicetree/bindings/mfd/ti,j721e-system-controller.yaml
> it picks up clock-controller as ti,am654-ehrpwm-tbclk.yaml
> but the actual binding is Documentation/devicetree/bindings/clock/ti,am62-audio-refclk.yaml
> which is not enforced.
>
> Jai: please sort this out before I can look at any of these audio
> enablement patches involving refclk.
>
>
> ALSO: please DONOT ignore dtbs_check warnings folks. it does show some
> real issues in either bindings or dts.
>