diff mbox series

ARM: dts: keystone-k2g-evm: add HDMI and analog audio data

Message ID 20201117101749.26187-1-peter.ujfalusi@ti.com
State Superseded
Headers show
Series ARM: dts: keystone-k2g-evm: add HDMI and analog audio data | expand

Commit Message

Peter Ujfalusi Nov. 17, 2020, 10:17 a.m. UTC
The board is using McASP2 for both analog (tlv320aic3106) and
HDMI (SiI9022) audio.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

---
 arch/arm/boot/dts/keystone-k2g-evm.dts | 112 +++++++++++++++++++++++++
 1 file changed, 112 insertions(+)

-- 
Peter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

Comments

Peter Ujfalusi Nov. 18, 2020, 7:39 a.m. UTC | #1
Hi,

On 17/11/2020 12.17, Peter Ujfalusi wrote:
> The board is using McASP2 for both analog (tlv320aic3106) and

> HDMI (SiI9022) audio.

> 

> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

> ---

>  arch/arm/boot/dts/keystone-k2g-evm.dts | 112 +++++++++++++++++++++++++

>  1 file changed, 112 insertions(+)

> 

> diff --git a/arch/arm/boot/dts/keystone-k2g-evm.dts b/arch/arm/boot/dts/keystone-k2g-evm.dts

> index 8b3d64c913d8..4d7e3514a3a7 100644

> --- a/arch/arm/boot/dts/keystone-k2g-evm.dts

> +++ b/arch/arm/boot/dts/keystone-k2g-evm.dts

> @@ -46,6 +46,14 @@ vcc1v8_ldo1_reg: fixedregulator-vcc1v8-ldo1 {

>  		regulator-always-on;

>  	};

>  

> +	vcc1v8_ldo2_reg: fixedregulator-vcc1v8-ldo2 {

> +		compatible = "regulator-fixed";

> +		regulator-name = "ldo2";

> +		regulator-min-microvolt = <1800000>;

> +		regulator-max-microvolt = <1800000>;

> +		regulator-always-on;

> +	};

> +

>  	hdmi: connector {

>  		compatible = "hdmi-connector";

>  		label = "hdmi";

> @@ -58,6 +66,57 @@ hdmi_connector_in: endpoint {

>  			};

>  		};

>  	};

> +

> +	sound0: sound@0 {

> +		compatible = "simple-audio-card";

> +		simple-audio-card,name = "K2G-EVM";

> +		simple-audio-card,widgets =

> +			"Headphone", "Headphone Jack",

> +			"Line", "Line In";

> +		simple-audio-card,routing =

> +			"Headphone Jack",	"HPLOUT",

> +			"Headphone Jack",	"HPROUT",

> +			"LINE1L",		"Line In",

> +			"LINE1R",		"Line In";

> +

> +		simple-audio-card,dai-link@0 {

> +			format = "i2s";

> +			bitclock-master = <&sound0_0_master>;

> +			frame-master = <&sound0_0_master>;

> +			sound0_0_master: cpu {

> +				sound-dai = <&mcasp2>;

> +				clocks = <&k2g_clks 0x6 1>;

> +				system-clock-direction-out;

> +			};

> +

> +			codec {

> +				sound-dai = <&tlv320aic3106>;

> +				system-clock-frequency = <12288000>;


I think it would be better to use:
				clocks = <&aud_mclk>;


> +			};

> +		};

> +

> +		simple-audio-card,dai-link@1 {

> +			format = "i2s";

> +			bitclock-master = <&sound0_1_master>;

> +			frame-master = <&sound0_1_master>;

> +			sound0_1_master: cpu {

> +				sound-dai = <&mcasp2>;

> +				clocks = <&k2g_clks 0x6 1>;

> +				system-clock-direction-out;

> +			};

> +

> +			codec {

> +				sound-dai = <&sii9022>;

> +				system-clock-frequency = <12288000>;


and here as well:
				clocks = <&aud_mclk>;


> +			};

> +		};

> +	};

> +

> +	sii9022_mclk: sii9022_mclk {


and rename the fixed clock to aud_mclk as the same clock is connected to
both aic3106 and SiI9022

> +		compatible = "fixed-clock";

> +		#clock-cells = <0>;

> +		clock-frequency = <12288000>;

> +	};

>  };

>  

>  &k2g_pinctrl {

> @@ -214,6 +273,15 @@ K2G_CORE_IOPAD(0x10e4) (BUFFER_CLASS_B | PULL_DISABLE | MUX_MODE0) /* dssde.dssd

>  			K2G_CORE_IOPAD(0x10e8) (BUFFER_CLASS_B | PULL_DISABLE | MUX_MODE0) /* dssfid.dssfid */

>  		>;

>  	};

> +

> +	mcasp2_pins: pinmux_mcasp2_pins {

> +		pinctrl-single,pins = <

> +			K2G_CORE_IOPAD(0x1234) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE4) /* pr0_pru_gpo2.mcasp2_axr2 */

> +			K2G_CORE_IOPAD(0x1238) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE4) /* pr0_pru_gpo3.mcasp2_axr3 */

> +			K2G_CORE_IOPAD(0x1254) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE4) /* pr0_pru_gpo10.mcasp2_afsx */

> +			K2G_CORE_IOPAD(0x125c) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE4) /* pr0_pru_gpo12.mcasp2_aclkx */

> +		>;

> +	};

>  };

>  

>  &uart0 {

> @@ -423,6 +491,10 @@ sii9022: sii9022@3b {

>  		compatible = "sil,sii9022";

>  		reg = <0x3b>;

>  

> +		sil,i2s-data-lanes = < 0 >;

> +		clocks = <&sii9022_mclk>;

> +		clock-names = "mclk";

> +

>  		ports {

>  			#address-cells = <1>;

>  			#size-cells = <0>;

> @@ -444,6 +516,19 @@ sii9022_out: endpoint {

>  			};

>  		};

>  	};

> +

> +	tlv320aic3106: tlv320aic3106@1b {

> +		#sound-dai-cells = <0>;

> +		compatible = "ti,tlv320aic3106";

> +		reg = <0x1b>;

> +		status = "okay";

> +

> +		/* Regulators */

> +		AVDD-supply = <&vcc3v3_dcin_reg>;

> +		IOVDD-supply = <&vcc3v3_dcin_reg>;

> +		DRVDD-supply = <&vcc3v3_dcin_reg>;

> +		DVDD-supply = <&vcc1v8_ldo2_reg>;

> +	};

>  };

>  

>  &dss {

> @@ -458,3 +543,30 @@ dpi_out: endpoint {

>  		};

>  	};

>  };

> +

> +&k2g_clks {

> +	/* on the board 22.5792MHz is connected to AUDOSC_IN */

> +	assigned-clocks = <&k2g_clks 0x4c 2>;

> +	assigned-clock-rates = <22579200>;

> +};

> +

> +&mcasp2 {

> +	#sound-dai-cells = <0>;

> +

> +	pinctrl-names = "default";

> +	pinctrl-0 = <&mcasp2_pins>;

> +

> +	assigned-clocks = <&k2g_clks 0x6 1>;

> +	assigned-clock-parents = <&k2g_clks 0x6 2>;

> +

> +	status = "okay";

> +

> +	op-mode = <0>;		/* MCASP_IIS_MODE */

> +	tdm-slots = <2>;

> +	/* 6 serializer */

> +	serial-dir = <	/* 0: INACTIVE, 1: TX, 2: RX */

> +		0 0 1 2 0 0 // AXR2: TX, AXR3: rx

> +	>;

> +	tx-num-evt = <32>;

> +	rx-num-evt = <32>;

> +};

> 


- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
Jyri Sarha Nov. 18, 2020, 8:28 a.m. UTC | #2
On 18/11/2020 09:39, Peter Ujfalusi wrote:
> Hi,

> 

Hi,
I certainly agree with your point, but you missed one place that needs
changing. sii9022-node also refers to the renamed clock node, and that
should be changed too (see bellow).

> On 17/11/2020 12.17, Peter Ujfalusi wrote:

>> The board is using McASP2 for both analog (tlv320aic3106) and

>> HDMI (SiI9022) audio.

>>

>> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

>> ---

>>  arch/arm/boot/dts/keystone-k2g-evm.dts | 112 +++++++++++++++++++++++++

>>  1 file changed, 112 insertions(+)

>>

>> diff --git a/arch/arm/boot/dts/keystone-k2g-evm.dts b/arch/arm/boot/dts/keystone-k2g-evm.dts

>> index 8b3d64c913d8..4d7e3514a3a7 100644

>> --- a/arch/arm/boot/dts/keystone-k2g-evm.dts

>> +++ b/arch/arm/boot/dts/keystone-k2g-evm.dts

>> @@ -46,6 +46,14 @@ vcc1v8_ldo1_reg: fixedregulator-vcc1v8-ldo1 {

>>  		regulator-always-on;

>>  	};

>>  

>> +	vcc1v8_ldo2_reg: fixedregulator-vcc1v8-ldo2 {

>> +		compatible = "regulator-fixed";

>> +		regulator-name = "ldo2";

>> +		regulator-min-microvolt = <1800000>;

>> +		regulator-max-microvolt = <1800000>;

>> +		regulator-always-on;

>> +	};

>> +

>>  	hdmi: connector {

>>  		compatible = "hdmi-connector";

>>  		label = "hdmi";

>> @@ -58,6 +66,57 @@ hdmi_connector_in: endpoint {

>>  			};

>>  		};

>>  	};

>> +

>> +	sound0: sound@0 {

>> +		compatible = "simple-audio-card";

>> +		simple-audio-card,name = "K2G-EVM";

>> +		simple-audio-card,widgets =

>> +			"Headphone", "Headphone Jack",

>> +			"Line", "Line In";

>> +		simple-audio-card,routing =

>> +			"Headphone Jack",	"HPLOUT",

>> +			"Headphone Jack",	"HPROUT",

>> +			"LINE1L",		"Line In",

>> +			"LINE1R",		"Line In";

>> +

>> +		simple-audio-card,dai-link@0 {

>> +			format = "i2s";

>> +			bitclock-master = <&sound0_0_master>;

>> +			frame-master = <&sound0_0_master>;

>> +			sound0_0_master: cpu {

>> +				sound-dai = <&mcasp2>;

>> +				clocks = <&k2g_clks 0x6 1>;

>> +				system-clock-direction-out;

>> +			};

>> +

>> +			codec {

>> +				sound-dai = <&tlv320aic3106>;

>> +				system-clock-frequency = <12288000>;

> 

> I think it would be better to use:

> 				clocks = <&aud_mclk>;

> 

> 

>> +			};

>> +		};

>> +

>> +		simple-audio-card,dai-link@1 {

>> +			format = "i2s";

>> +			bitclock-master = <&sound0_1_master>;

>> +			frame-master = <&sound0_1_master>;

>> +			sound0_1_master: cpu {

>> +				sound-dai = <&mcasp2>;

>> +				clocks = <&k2g_clks 0x6 1>;

>> +				system-clock-direction-out;

>> +			};

>> +

>> +			codec {

>> +				sound-dai = <&sii9022>;

>> +				system-clock-frequency = <12288000>;

> 

> and here as well:

> 				clocks = <&aud_mclk>;

> 

> 

>> +			};

>> +		};

>> +	};

>> +

>> +	sii9022_mclk: sii9022_mclk {

> 

> and rename the fixed clock to aud_mclk as the same clock is connected to

> both aic3106 and SiI9022

> 

>> +		compatible = "fixed-clock";

>> +		#clock-cells = <0>;

>> +		clock-frequency = <12288000>;

>> +	};

>>  };

>>  

>>  &k2g_pinctrl {

>> @@ -214,6 +273,15 @@ K2G_CORE_IOPAD(0x10e4) (BUFFER_CLASS_B | PULL_DISABLE | MUX_MODE0) /* dssde.dssd

>>  			K2G_CORE_IOPAD(0x10e8) (BUFFER_CLASS_B | PULL_DISABLE | MUX_MODE0) /* dssfid.dssfid */

>>  		>;

>>  	};

>> +

>> +	mcasp2_pins: pinmux_mcasp2_pins {

>> +		pinctrl-single,pins = <

>> +			K2G_CORE_IOPAD(0x1234) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE4) /* pr0_pru_gpo2.mcasp2_axr2 */

>> +			K2G_CORE_IOPAD(0x1238) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE4) /* pr0_pru_gpo3.mcasp2_axr3 */

>> +			K2G_CORE_IOPAD(0x1254) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE4) /* pr0_pru_gpo10.mcasp2_afsx */

>> +			K2G_CORE_IOPAD(0x125c) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE4) /* pr0_pru_gpo12.mcasp2_aclkx */

>> +		>;

>> +	};

>>  };

>>  

>>  &uart0 {

>> @@ -423,6 +491,10 @@ sii9022: sii9022@3b {

>>  		compatible = "sil,sii9022";

>>  		reg = <0x3b>;

>>  

>> +		sil,i2s-data-lanes = < 0 >;

>> +		clocks = <&sii9022_mclk>;


... and here:
		clocks = <&aud_mclk>;

>> +		clock-names = "mclk";

>> +

>>  		ports {

>>  			#address-cells = <1>;

>>  			#size-cells = <0>;

>> @@ -444,6 +516,19 @@ sii9022_out: endpoint {

>>  			};

>>  		};

>>  	};

>> +

>> +	tlv320aic3106: tlv320aic3106@1b {

>> +		#sound-dai-cells = <0>;

>> +		compatible = "ti,tlv320aic3106";

>> +		reg = <0x1b>;

>> +		status = "okay";

>> +

>> +		/* Regulators */

>> +		AVDD-supply = <&vcc3v3_dcin_reg>;

>> +		IOVDD-supply = <&vcc3v3_dcin_reg>;

>> +		DRVDD-supply = <&vcc3v3_dcin_reg>;

>> +		DVDD-supply = <&vcc1v8_ldo2_reg>;

>> +	};

>>  };

>>  

>>  &dss {

>> @@ -458,3 +543,30 @@ dpi_out: endpoint {

>>  		};

>>  	};

>>  };

>> +

>> +&k2g_clks {

>> +	/* on the board 22.5792MHz is connected to AUDOSC_IN */

>> +	assigned-clocks = <&k2g_clks 0x4c 2>;

>> +	assigned-clock-rates = <22579200>;

>> +};

>> +

>> +&mcasp2 {

>> +	#sound-dai-cells = <0>;

>> +

>> +	pinctrl-names = "default";

>> +	pinctrl-0 = <&mcasp2_pins>;

>> +

>> +	assigned-clocks = <&k2g_clks 0x6 1>;

>> +	assigned-clock-parents = <&k2g_clks 0x6 2>;

>> +

>> +	status = "okay";

>> +

>> +	op-mode = <0>;		/* MCASP_IIS_MODE */

>> +	tdm-slots = <2>;

>> +	/* 6 serializer */

>> +	serial-dir = <	/* 0: INACTIVE, 1: TX, 2: RX */

>> +		0 0 1 2 0 0 // AXR2: TX, AXR3: rx

>> +	>;

>> +	tx-num-evt = <32>;

>> +	rx-num-evt = <32>;

>> +};

>>

> 

> - Péter

> 

> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.

> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

> 


Best regards,
Jyri

-- 
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
diff mbox series

Patch

diff --git a/arch/arm/boot/dts/keystone-k2g-evm.dts b/arch/arm/boot/dts/keystone-k2g-evm.dts
index 8b3d64c913d8..4d7e3514a3a7 100644
--- a/arch/arm/boot/dts/keystone-k2g-evm.dts
+++ b/arch/arm/boot/dts/keystone-k2g-evm.dts
@@ -46,6 +46,14 @@  vcc1v8_ldo1_reg: fixedregulator-vcc1v8-ldo1 {
 		regulator-always-on;
 	};
 
+	vcc1v8_ldo2_reg: fixedregulator-vcc1v8-ldo2 {
+		compatible = "regulator-fixed";
+		regulator-name = "ldo2";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-always-on;
+	};
+
 	hdmi: connector {
 		compatible = "hdmi-connector";
 		label = "hdmi";
@@ -58,6 +66,57 @@  hdmi_connector_in: endpoint {
 			};
 		};
 	};
+
+	sound0: sound@0 {
+		compatible = "simple-audio-card";
+		simple-audio-card,name = "K2G-EVM";
+		simple-audio-card,widgets =
+			"Headphone", "Headphone Jack",
+			"Line", "Line In";
+		simple-audio-card,routing =
+			"Headphone Jack",	"HPLOUT",
+			"Headphone Jack",	"HPROUT",
+			"LINE1L",		"Line In",
+			"LINE1R",		"Line In";
+
+		simple-audio-card,dai-link@0 {
+			format = "i2s";
+			bitclock-master = <&sound0_0_master>;
+			frame-master = <&sound0_0_master>;
+			sound0_0_master: cpu {
+				sound-dai = <&mcasp2>;
+				clocks = <&k2g_clks 0x6 1>;
+				system-clock-direction-out;
+			};
+
+			codec {
+				sound-dai = <&tlv320aic3106>;
+				system-clock-frequency = <12288000>;
+			};
+		};
+
+		simple-audio-card,dai-link@1 {
+			format = "i2s";
+			bitclock-master = <&sound0_1_master>;
+			frame-master = <&sound0_1_master>;
+			sound0_1_master: cpu {
+				sound-dai = <&mcasp2>;
+				clocks = <&k2g_clks 0x6 1>;
+				system-clock-direction-out;
+			};
+
+			codec {
+				sound-dai = <&sii9022>;
+				system-clock-frequency = <12288000>;
+			};
+		};
+	};
+
+	sii9022_mclk: sii9022_mclk {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-frequency = <12288000>;
+	};
 };
 
 &k2g_pinctrl {
@@ -214,6 +273,15 @@  K2G_CORE_IOPAD(0x10e4) (BUFFER_CLASS_B | PULL_DISABLE | MUX_MODE0) /* dssde.dssd
 			K2G_CORE_IOPAD(0x10e8) (BUFFER_CLASS_B | PULL_DISABLE | MUX_MODE0) /* dssfid.dssfid */
 		>;
 	};
+
+	mcasp2_pins: pinmux_mcasp2_pins {
+		pinctrl-single,pins = <
+			K2G_CORE_IOPAD(0x1234) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE4) /* pr0_pru_gpo2.mcasp2_axr2 */
+			K2G_CORE_IOPAD(0x1238) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE4) /* pr0_pru_gpo3.mcasp2_axr3 */
+			K2G_CORE_IOPAD(0x1254) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE4) /* pr0_pru_gpo10.mcasp2_afsx */
+			K2G_CORE_IOPAD(0x125c) (BUFFER_CLASS_B | PIN_PULLDOWN | MUX_MODE4) /* pr0_pru_gpo12.mcasp2_aclkx */
+		>;
+	};
 };
 
 &uart0 {
@@ -423,6 +491,10 @@  sii9022: sii9022@3b {
 		compatible = "sil,sii9022";
 		reg = <0x3b>;
 
+		sil,i2s-data-lanes = < 0 >;
+		clocks = <&sii9022_mclk>;
+		clock-names = "mclk";
+
 		ports {
 			#address-cells = <1>;
 			#size-cells = <0>;
@@ -444,6 +516,19 @@  sii9022_out: endpoint {
 			};
 		};
 	};
+
+	tlv320aic3106: tlv320aic3106@1b {
+		#sound-dai-cells = <0>;
+		compatible = "ti,tlv320aic3106";
+		reg = <0x1b>;
+		status = "okay";
+
+		/* Regulators */
+		AVDD-supply = <&vcc3v3_dcin_reg>;
+		IOVDD-supply = <&vcc3v3_dcin_reg>;
+		DRVDD-supply = <&vcc3v3_dcin_reg>;
+		DVDD-supply = <&vcc1v8_ldo2_reg>;
+	};
 };
 
 &dss {
@@ -458,3 +543,30 @@  dpi_out: endpoint {
 		};
 	};
 };
+
+&k2g_clks {
+	/* on the board 22.5792MHz is connected to AUDOSC_IN */
+	assigned-clocks = <&k2g_clks 0x4c 2>;
+	assigned-clock-rates = <22579200>;
+};
+
+&mcasp2 {
+	#sound-dai-cells = <0>;
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&mcasp2_pins>;
+
+	assigned-clocks = <&k2g_clks 0x6 1>;
+	assigned-clock-parents = <&k2g_clks 0x6 2>;
+
+	status = "okay";
+
+	op-mode = <0>;		/* MCASP_IIS_MODE */
+	tdm-slots = <2>;
+	/* 6 serializer */
+	serial-dir = <	/* 0: INACTIVE, 1: TX, 2: RX */
+		0 0 1 2 0 0 // AXR2: TX, AXR3: rx
+	>;
+	tx-num-evt = <32>;
+	rx-num-evt = <32>;
+};