diff mbox

[v5,2/3] ARM: dts: pbab01: enable I2S audio on phyFLEX-i.MX6 boards

Message ID 1414590424-25585-3-git-send-email-d.lavnikevich@sam-solutions.com (mailing list archive)
State New, archived
Headers show

Commit Message

Dmitry Lavnikevich Oct. 29, 2014, 1:47 p.m. UTC
Audio on phyFLEX boards is presented by tlv320aic3007 codec connected
over SSI interface.

Signed-off-by: Dmitry Lavnikevich <d.lavnikevich@sam-solutions.com>
---
 arch/arm/boot/dts/imx6qdl-phytec-pbab01.dtsi | 100 ++++++++++++++++++++++++++-
 arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi |  15 ++++
 2 files changed, 113 insertions(+), 2 deletions(-)

Comments

Shawn Guo Nov. 3, 2014, 6:14 a.m. UTC | #1
On Wed, Oct 29, 2014 at 04:47:03PM +0300, Dmitry Lavnikevich wrote:
> Audio on phyFLEX boards is presented by tlv320aic3007 codec connected
> over SSI interface.
> 
> Signed-off-by: Dmitry Lavnikevich <d.lavnikevich@sam-solutions.com>
> ---
>  arch/arm/boot/dts/imx6qdl-phytec-pbab01.dtsi | 100 ++++++++++++++++++++++++++-
>  arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi |  15 ++++
>  2 files changed, 113 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/imx6qdl-phytec-pbab01.dtsi b/arch/arm/boot/dts/imx6qdl-phytec-pbab01.dtsi
> index f1bdcae5b97d..cb8f1b6ec083 100644
> --- a/arch/arm/boot/dts/imx6qdl-phytec-pbab01.dtsi
> +++ b/arch/arm/boot/dts/imx6qdl-phytec-pbab01.dtsi
> @@ -9,10 +9,73 @@
>   * http://www.gnu.org/copyleft/gpl.html
>   */
>  
> +#include <dt-bindings/sound/fsl-imx-audmux.h>
> +
>  / {
>  	chosen {
>  		linux,stdout-path = &uart4;
>  	};
> +
> +	regulators {
> +		sound_1v8: regulator@2 {
> +			compatible = "regulator-fixed";
> +			reg = <2>;
> +			regulator-name = "i2s-audio-1v8";
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <1800000>;
> +		};
> +
> +		sound_3v3: regulator@3 {
> +			compatible = "regulator-fixed";
> +			reg = <3>;
> +			regulator-name = "i2s-audio-3v3";
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +		};
> +	};
> +
> +	tlv320_mclk: oscillator {
> +		compatible = "fixed-clock";
> +		#clock-cells = <0>;
> +		clock-frequency = <19200000>;
> +		clock-output-names = "tlv320-mclk";
> +	};
> +
> +	sound {
> +		compatible = "simple-audio-card";
> +		simple-audio-card,name = "OnboardTLV320AIC3007";
> +		simple-audio-card,format = "i2s";
> +		simple-audio-card,bitclock-master = <&dailink_master>;
> +		simple-audio-card,frame-master = <&dailink_master>;
> +		simple-audio-card,widgets =
> +			"Microphone", "Mic Jack",
> +			"Line", "Line In",
> +			"Line", "Line Out",
> +			"Speaker", "Speaker",
> +			"Headphone", "Headphone Jack";
> +		simple-audio-card,routing =
> +			"Line Out", "LLOUT",
> +			"Line Out", "RLOUT",
> +			"Speaker", "SPOP",
> +			"Speaker", "SPOM",
> +			"Headphone Jack", "HPLOUT",
> +			"Headphone Jack", "HPROUT",
> +			"MIC3L", "Mic Jack",
> +			"MIC3R", "Mic Jack",
> +			"Mic Jack", "Mic Bias",
> +			"LINE1L", "Line In",
> +			"LINE1R", "Line In";
> +
> +		simple-audio-card,cpu {
> +			sound-dai = <&ssi2>;
> +		};
> +
> +		dailink_master: simple-audio-card,codec {
> +			sound-dai = <&codec>;
> +			clocks = <&tlv320_mclk>;
> +		};
> +	};
> +
>  };
>  
>  &fec {
> @@ -27,12 +90,45 @@
>  	status = "okay";
>  };
>  
> +&ssi2 {
> +	status = "okay";
> +};
> +
> +&audmux {

Please sort the nodes alphabetically in label name.

> +	status = "okay";
> +
> +	ssi2 {
> +		fsl,audmux-port = <1>;
> +		fsl,port-config = <
> +			(IMX_AUDMUX_V2_PTCR_TFSDIR |
> +			IMX_AUDMUX_V2_PTCR_TFSEL(4) |
> +			IMX_AUDMUX_V2_PTCR_TCLKDIR |
> +			IMX_AUDMUX_V2_PTCR_TCSEL(4))
> +	                IMX_AUDMUX_V2_PDCR_RXDSEL(4)
> +		>;
> +	};
> +	pins5 {

Have a new line between nodes.

> +		fsl,audmux-port = <4>;
> +		fsl,port-config = <
> +			0x00000000
> +			IMX_AUDMUX_V2_PDCR_RXDSEL(1)
> +		>;
> +	};
> +};
> +
>  &i2c2 {
>  	status = "okay";
>  
> -	tlv320@18 {
> -		compatible = "ti,tlv320aic3x";
> +	codec: tlv320@18 {
> +		compatible = "ti,tlv320aic3007";

Both compatible strings are documented in
Documentation/devicetree/bindings/sound/tlv320aic3x.txt.  But I hope
this change will not cause any DT compatible issues.

> +		#sound-dai-cells = <0>;
>  		reg = <0x18>;
> +		ai3x-micbias-vg = <2>;
> +
> +		AVDD-supply = <&sound_3v3>;
> +		IOVDD-supply = <&sound_3v3>;
> +		DRVDD-supply = <&sound_3v3>;
> +		DVDD-supply = <&sound_1v8>;
>  	};
>  
>  	stmpe@41 {
> diff --git a/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi b/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
> index aa2275671d2c..d7f34664e008 100644
> --- a/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
> +++ b/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
> @@ -58,6 +58,12 @@
>  	};
>  };
>  
> +&audmux {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_audmux>;
> +	status = "disabled";
> +};
> +
>  &ecspi3 {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&pinctrl_ecspi3>;
> @@ -319,6 +325,15 @@
>  				MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000
>  			>;
>  		};
> +
> +		pinctrl_audmux: audmuxgrp {

Please sort the pinctrl entries alphabetically.

Shawn

> +			fsl,pins = <
> +				MX6QDL_PAD_DISP0_DAT16__AUD5_TXC	0x130b0
> +				MX6QDL_PAD_DISP0_DAT18__AUD5_TXFS	0x130b0
> +				MX6QDL_PAD_DISP0_DAT17__AUD5_TXD	0x110b0
> +				MX6QDL_PAD_DISP0_DAT19__AUD5_RXD	0x130b0
> +			>;
> +		};
>  	};
>  };
>  
> -- 
> 2.1.2
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
Dmitry Lavnikevich Nov. 4, 2014, 11:40 a.m. UTC | #2
> On 3Nov, 2014, at 09:14, Shawn Guo <shawn.guo@linaro.org> wrote:
> On Wed, Oct 29, 2014 at 04:47:03PM +0300, Dmitry Lavnikevich wrote:
>> +		fsl,audmux-port = <4>;
>> +		fsl,port-config = <
>> +			0x00000000
>> +			IMX_AUDMUX_V2_PDCR_RXDSEL(1)
>> +		>;
>> +	};
>> +};
>> +
>> &i2c2 {
>> 	status = "okay";
>> 
>> -	tlv320@18 {
>> -		compatible = "ti,tlv320aic3x";
>> +	codec: tlv320@18 {
>> +		compatible = "ti,tlv320aic3007";
> 
> Both compatible strings are documented in
> Documentation/devicetree/bindings/sound/tlv320aic3x.txt.  But I hope
> this change will not cause any DT compatible issues.

This change is needed because unlike other tlv320aic3x-codecs tlv320aic3007 has D-class amplifier which is controlled by set of registers that in case of 3x-codecs control mono output.

I will correct patches according to other notes and soon will resend patchset.
diff mbox

Patch

diff --git a/arch/arm/boot/dts/imx6qdl-phytec-pbab01.dtsi b/arch/arm/boot/dts/imx6qdl-phytec-pbab01.dtsi
index f1bdcae5b97d..cb8f1b6ec083 100644
--- a/arch/arm/boot/dts/imx6qdl-phytec-pbab01.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-phytec-pbab01.dtsi
@@ -9,10 +9,73 @@ 
  * http://www.gnu.org/copyleft/gpl.html
  */
 
+#include <dt-bindings/sound/fsl-imx-audmux.h>
+
 / {
 	chosen {
 		linux,stdout-path = &uart4;
 	};
+
+	regulators {
+		sound_1v8: regulator@2 {
+			compatible = "regulator-fixed";
+			reg = <2>;
+			regulator-name = "i2s-audio-1v8";
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+		};
+
+		sound_3v3: regulator@3 {
+			compatible = "regulator-fixed";
+			reg = <3>;
+			regulator-name = "i2s-audio-3v3";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+		};
+	};
+
+	tlv320_mclk: oscillator {
+		compatible = "fixed-clock";
+		#clock-cells = <0>;
+		clock-frequency = <19200000>;
+		clock-output-names = "tlv320-mclk";
+	};
+
+	sound {
+		compatible = "simple-audio-card";
+		simple-audio-card,name = "OnboardTLV320AIC3007";
+		simple-audio-card,format = "i2s";
+		simple-audio-card,bitclock-master = <&dailink_master>;
+		simple-audio-card,frame-master = <&dailink_master>;
+		simple-audio-card,widgets =
+			"Microphone", "Mic Jack",
+			"Line", "Line In",
+			"Line", "Line Out",
+			"Speaker", "Speaker",
+			"Headphone", "Headphone Jack";
+		simple-audio-card,routing =
+			"Line Out", "LLOUT",
+			"Line Out", "RLOUT",
+			"Speaker", "SPOP",
+			"Speaker", "SPOM",
+			"Headphone Jack", "HPLOUT",
+			"Headphone Jack", "HPROUT",
+			"MIC3L", "Mic Jack",
+			"MIC3R", "Mic Jack",
+			"Mic Jack", "Mic Bias",
+			"LINE1L", "Line In",
+			"LINE1R", "Line In";
+
+		simple-audio-card,cpu {
+			sound-dai = <&ssi2>;
+		};
+
+		dailink_master: simple-audio-card,codec {
+			sound-dai = <&codec>;
+			clocks = <&tlv320_mclk>;
+		};
+	};
+
 };
 
 &fec {
@@ -27,12 +90,45 @@ 
 	status = "okay";
 };
 
+&ssi2 {
+	status = "okay";
+};
+
+&audmux {
+	status = "okay";
+
+	ssi2 {
+		fsl,audmux-port = <1>;
+		fsl,port-config = <
+			(IMX_AUDMUX_V2_PTCR_TFSDIR |
+			IMX_AUDMUX_V2_PTCR_TFSEL(4) |
+			IMX_AUDMUX_V2_PTCR_TCLKDIR |
+			IMX_AUDMUX_V2_PTCR_TCSEL(4))
+	                IMX_AUDMUX_V2_PDCR_RXDSEL(4)
+		>;
+	};
+	pins5 {
+		fsl,audmux-port = <4>;
+		fsl,port-config = <
+			0x00000000
+			IMX_AUDMUX_V2_PDCR_RXDSEL(1)
+		>;
+	};
+};
+
 &i2c2 {
 	status = "okay";
 
-	tlv320@18 {
-		compatible = "ti,tlv320aic3x";
+	codec: tlv320@18 {
+		compatible = "ti,tlv320aic3007";
+		#sound-dai-cells = <0>;
 		reg = <0x18>;
+		ai3x-micbias-vg = <2>;
+
+		AVDD-supply = <&sound_3v3>;
+		IOVDD-supply = <&sound_3v3>;
+		DRVDD-supply = <&sound_3v3>;
+		DVDD-supply = <&sound_1v8>;
 	};
 
 	stmpe@41 {
diff --git a/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi b/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
index aa2275671d2c..d7f34664e008 100644
--- a/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
@@ -58,6 +58,12 @@ 
 	};
 };
 
+&audmux {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_audmux>;
+	status = "disabled";
+};
+
 &ecspi3 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_ecspi3>;
@@ -319,6 +325,15 @@ 
 				MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000
 			>;
 		};
+
+		pinctrl_audmux: audmuxgrp {
+			fsl,pins = <
+				MX6QDL_PAD_DISP0_DAT16__AUD5_TXC	0x130b0
+				MX6QDL_PAD_DISP0_DAT18__AUD5_TXFS	0x130b0
+				MX6QDL_PAD_DISP0_DAT17__AUD5_TXD	0x110b0
+				MX6QDL_PAD_DISP0_DAT19__AUD5_RXD	0x130b0
+			>;
+		};
 	};
 };