Re: [PATCH 2/2] arm64: dts: ti: j721e-common-proc-board: Analog audio support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 02/07/2020 16.14, Peter Ujfalusi wrote:
> The codec is wired in multi DIN/DOUT setup (DIN1/2/3/4/DOUT1/2/3 is
> connected to McASP serializer).
> 
> To support wide range of audio features a generic sound card can not be
> used since we need to use different reference clock source for 44.1 and
> 48 KHz family of sampling rates.
> Depending on the sample size we also need to use different slot width to
> be able to support 16 and 24 bits.
> 
> There are couple of notable difference compared to DIN1/DOUT1 mode:
> the channel mapping is 'random' for first look compared to the single
> serializer setup:
>         _      _      _
>        |o|c1  |o|p1  |o|p3
>  _     | |    | |    | |
> |o|c3  |o|c2  |o|p4  |o|p2
> ------------------------
> 
> c1/2/3 - capture jacks (3rd is line)
> p1/2/3/4 - playback jacks (4th is line)
> 
> 2 channel audio (stereo):
> 0 (left):  p1/c1 left
> 1 (right): p1/c1 right
> 
> 4 channel audio:
> 0: p1/c1 left
> 1: p2/c2 left
> 2: p1/c1 right
> 3: p2/c2 right
> 
> 6 channel audio
> 0: p1/c1 left
> 1: p2/c2 left
> 2: p3/c3 left
> 3: p1/c1 right
> 4: p2/c2 right
> 5: p3/c3 right
> 
> 8 channel audio
> 0: p1/c1 left
> 1: p2/c2 left
> 2: p3/c3 left
> 3: p4 left
> 4: p1/c1 right
> 5: p2/c2 right
> 6: p3/c3 right
> 7: p4 right
> 
> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@xxxxxx>
> ---
>  .../dts/ti/k3-j721e-common-proc-board.dts     | 137 ++++++++++++++++++
>  1 file changed, 137 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
> index 1f1fee85acca..6c0f1ce6f4a6 100644
> --- a/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
> +++ b/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts
> @@ -9,6 +9,7 @@
>  #include <dt-bindings/gpio/gpio.h>
>  #include <dt-bindings/input/input.h>
>  #include <dt-bindings/net/ti-dp83867.h>
> +#include <dt-bindings/sound/ti-mcasp.h>

This include is not needed, I'll send v2 shortly.

>  
>  / {
>  	chosen {
> @@ -34,6 +35,55 @@ sw11: sw11 {
>  			gpios = <&wkup_gpio0 7 GPIO_ACTIVE_LOW>;
>  		};
>  	};
> +
> +	evm_12v0: fixedregulator-evm12v0 {
> +		/* main supply */
> +		compatible = "regulator-fixed";
> +		regulator-name = "evm_12v0";
> +		regulator-min-microvolt = <12000000>;
> +		regulator-max-microvolt = <12000000>;
> +		regulator-always-on;
> +		regulator-boot-on;
> +	};
> +
> +	vsys_3v3: fixedregulator-vsys3v3 {
> +		/* Output of LMS140 */
> +		compatible = "regulator-fixed";
> +		regulator-name = "vsys_3v3";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		vin-supply = <&evm_12v0>;
> +		regulator-always-on;
> +		regulator-boot-on;
> +	};
> +
> +	vsys_5v0: fixedregulator-vsys5v0 {
> +		/* Output of LM5140 */
> +		compatible = "regulator-fixed";
> +		regulator-name = "vsys_5v0";
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		vin-supply = <&evm_12v0>;
> +		regulator-always-on;
> +		regulator-boot-on;
> +	};
> +
> +	sound0: sound@0 {
> +		compatible = "ti,j721e-cpb-audio";
> +		model = "j721e-cpb";
> +
> +		ti,cpb-mcasp = <&mcasp10>;
> +		ti,cpb-codec = <&pcm3168a_1>;
> +
> +		clocks = <&k3_clks 184 1>,
> +			 <&k3_clks 184 2>, <&k3_clks 184 4>,
> +			 <&k3_clks 157 371>,
> +			 <&k3_clks 157 400>, <&k3_clks 157 401>;
> +		clock-names = "cpb-mcasp-auxclk",
> +			      "cpb-mcasp-auxclk-48000", "cpb-mcasp-auxclk-44100",
> +			      "cpb-codec-scki",
> +			      "cpb-codec-scki-48000", "cpb-codec-scki-44100";
> +	};
>  };
>  
>  &main_pmx0 {
> @@ -102,6 +152,26 @@ J721E_IOPAD(0x1d0, PIN_INPUT_PULLUP, 2) /* (AA3) SPI0_D1.I2C6_SCL */
>  			J721E_IOPAD(0x1e4, PIN_INPUT_PULLUP, 2) /* (Y2) SPI1_D1.I2C6_SDA */
>  		>;
>  	};
> +
> +	mcasp10_pins_default: mcasp10_pins_default {
> +		pinctrl-single,pins = <
> +			J721E_IOPAD(0x158, PIN_OUTPUT_PULLDOWN, 12) /* (U23) RGMII5_TX_CTL.MCASP10_ACLKX */
> +			J721E_IOPAD(0x15c, PIN_OUTPUT_PULLDOWN, 12) /* (U26) RGMII5_RX_CTL.MCASP10_AFSX */
> +			J721E_IOPAD(0x160, PIN_OUTPUT_PULLDOWN, 12) /* (V28) RGMII5_TD3.MCASP10_AXR0 */
> +			J721E_IOPAD(0x164, PIN_OUTPUT_PULLDOWN, 12) /* (V29) RGMII5_TD2.MCASP10_AXR1 */
> +			J721E_IOPAD(0x170, PIN_OUTPUT_PULLDOWN, 12) /* (U29) RGMII5_TXC.MCASP10_AXR2 */
> +			J721E_IOPAD(0x174, PIN_OUTPUT_PULLDOWN, 12) /* (U25) RGMII5_RXC.MCASP10_AXR3 */
> +			J721E_IOPAD(0x198, PIN_INPUT_PULLDOWN, 12) /* (V25) RGMII6_TD1.MCASP10_AXR4 */
> +			J721E_IOPAD(0x19c, PIN_INPUT_PULLDOWN, 12) /* (W27) RGMII6_TD0.MCASP10_AXR5 */
> +			J721E_IOPAD(0x1a0, PIN_INPUT_PULLDOWN, 12) /* (W29) RGMII6_TXC.MCASP10_AXR6 */
> +		>;
> +	};
> +
> +	audi_ext_refclk2_pins_default: audi_ext_refclk2_pins_default {
> +		pinctrl-single,pins = <
> +			J721E_IOPAD(0x1a4, PIN_OUTPUT, 3) /* (W26) RGMII6_RXC.AUDIO_EXT_REFCLK2 */
> +		>;
> +	};
>  };
>  
>  &wkup_pmx0 {
> @@ -401,6 +471,22 @@ exp2: gpio@22 {
>  		reg = <0x22>;
>  		gpio-controller;
>  		#gpio-cells = <2>;
> +
> +		p09 {
> +			/* P11 - MCASP/TRACE_MUX_S0 */
> +			gpio-hog;
> +			gpios = <9 GPIO_ACTIVE_HIGH>;
> +			output-low;
> +			line-name = "MCASP/TRACE_MUX_S0";
> +		};
> +
> +		p10 {
> +			/* P12 - MCASP/TRACE_MUX_S1 */
> +			gpio-hog;
> +			gpios = <10 GPIO_ACTIVE_HIGH>;
> +			output-high;
> +			line-name = "MCASP/TRACE_MUX_S1";
> +		};
>  	};
>  };
>  
> @@ -423,6 +509,12 @@ exp4: gpio@20 {
>  	};
>  };
>  
> +&k3_clks {
> +	/* Confiure AUDIO_EXT_REFCLK2 pin as output */
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&audi_ext_refclk2_pins_default>;
> +};
> +
>  &main_i2c3 {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&main_i2c3_pins_default>;
> @@ -434,6 +526,31 @@ exp3: gpio@20 {
>  		gpio-controller;
>  		#gpio-cells = <2>;
>  	};
> +
> +	pcm3168a_1: audio-codec@44 {
> +		compatible = "ti,pcm3168a";
> +		reg = <0x44>;
> +
> +		#sound-dai-cells = <1>;
> +
> +		reset-gpios = <&exp3 0 GPIO_ACTIVE_LOW>;
> +
> +		/* C_AUDIO_REFCLK2 -> RGMII6_RXC (W26) */
> +		clocks = <&k3_clks 157 371>;
> +		clock-names = "scki";
> +
> +		/* HSDIV3_16FFT_MAIN_4_HSDIVOUT2_CLK -> REFCLK2 */
> +		assigned-clocks = <&k3_clks 157 371>;
> +		assigned-clock-parents = <&k3_clks 157 400>;
> +		assigned-clock-rates = <24576000>; /* for 48KHz */
> +
> +		VDD1-supply = <&vsys_3v3>;
> +		VDD2-supply = <&vsys_3v3>;
> +		VCCAD1-supply = <&vsys_5v0>;
> +		VCCAD2-supply = <&vsys_5v0>;
> +		VCCDA1-supply = <&vsys_5v0>;
> +		VCCDA2-supply = <&vsys_5v0>;
> +	};
>  };
>  
>  &main_i2c6 {
> @@ -486,3 +603,23 @@ &dss {
>  				 <&k3_clks 152 11>,	/* PLL18_HSDIV0 */
>  				 <&k3_clks 152 18>;	/* PLL23_HSDIV0 */
>  };
> +
> +&mcasp10 {
> +	#sound-dai-cells = <0>;
> +
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&mcasp10_pins_default>;
> +
> +	op-mode = <0>;          /* MCASP_IIS_MODE */
> +	tdm-slots = <2>;
> +	auxclk-fs-ratio = <256>;
> +
> +	serial-dir = <	/* 0: INACTIVE, 1: TX, 2: RX */
> +		1 1 1 1
> +		2 2 2 0
> +	>;
> +	tx-num-evt = <0>;
> +	rx-num-evt = <0>;
> +
> +	status = "okay";
> +};
> 

- Péter

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





[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux