diff mbox

[1/2] ARM: dts: da850-lcdk: Audio support via simple-card

Message ID 20160810200853.24275-1-kbeldan@baylibre.com (mailing list archive)
State New, archived
Headers show

Commit Message

Karl Beldan Aug. 10, 2016, 8:08 p.m. UTC
The LCDK embeds a TLV320AIC3106 connected to the SoC McASP for analog
audio. This relies on the 'dummy' regulator as the codec is always on.
Quality is good with arecord -pipe- aplay on Line In/Line Out.
The MIC path doesn't seem to work yet.

Signed-off-by: Karl Beldan <kbeldan@baylibre.com>
---
 arch/arm/boot/dts/da850-lcdk.dts | 75 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 75 insertions(+)

Comments

Sekhar Nori Aug. 17, 2016, 6:49 a.m. UTC | #1
+ Peter

On Thursday 11 August 2016 01:38 AM, Karl Beldan wrote:
> The LCDK embeds a TLV320AIC3106 connected to the SoC McASP for analog
> audio. This relies on the 'dummy' regulator as the codec is always on.
> Quality is good with arecord -pipe- aplay on Line In/Line Out.
> The MIC path doesn't seem to work yet.
> 
> Signed-off-by: Karl Beldan <kbeldan@baylibre.com>
> ---
>  arch/arm/boot/dts/da850-lcdk.dts | 75 ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 75 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/da850-lcdk.dts b/arch/arm/boot/dts/da850-lcdk.dts
> index dbcca0b..35b31d9 100644
> --- a/arch/arm/boot/dts/da850-lcdk.dts
> +++ b/arch/arm/boot/dts/da850-lcdk.dts
> @@ -6,6 +6,7 @@
>  /dts-v1/;
>  #include "da850.dtsi"
>  #include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/sound/tlv320aic31xx-micbias.h>
>  
>  / {
>  	model = "DA850/AM1808/OMAP-L138 LCDK";
> @@ -23,10 +24,50 @@
>  		device_type = "memory";
>  		reg = <0xc0000000 0x08000000>;
>  	};
> +
> +	sound {
> +		compatible = "simple-audio-card";
> +		simple-audio-card,name = "DA850/OMAP-L138 LCDK";
> +		simple-audio-card,widgets =
> +			"Microphone", "Mic Jack",
> +			"Line", "Line In",
> +			"Line", "Line Out";
> +		simple-audio-card,routing =
> +			"MIC3L", "Mic Jack",
> +			"MIC3R", "Mic Jack",
> +			"Mic Jack", "Mic Bias",
> +			"LINE1L", "Line In",
> +			"LINE1R", "Line In",
> +			"Line Out", "LLOUT",
> +			"Line Out", "RLOUT";
> +		simple-audio-card,format = "dsp_b";
> +		simple-audio-card,bitclock-master = <&link0_codec>;
> +		simple-audio-card,frame-master = <&link0_codec>;
> +		simple-audio-card,bitclock-inversion;
> +
> +		simple-audio-card,cpu {
> +			sound-dai = <&mcasp0>;
> +			system-clock-frequency = <24576000>;
> +		};
> +
> +		link0_codec: simple-audio-card,codec {
> +			sound-dai = <&tlv320aic3106>;
> +			system-clock-frequency = <24576000>;
> +		};
> +	};
>  };
>  
>  &pmx_core {
>  	status = "okay";
> +
> +	mcasp0_pins: pinmux_mcasp0_pins {
> +		pinctrl-single,bits = <
> +			/* AHCLKX AFSX ACLKX */
> +			0x00 0x00101010 0x00f0f0f0
> +			/* ARX13 ARX14 */
> +			0x04 0x00000110 0x00000ff0
> +		>;
> +	};
>  };
>  
>  &serial2 {
> @@ -68,3 +109,37 @@
>  	cd-gpios = <&gpio 64 GPIO_ACTIVE_HIGH>;
>  	status = "okay";
>  };
> +
> +&i2c0 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&i2c0_pins>;
> +	clock-frequency = <100000>;
> +	status = "okay";
> +
> +	tlv320aic3106: tlv320aic3106@18 {
> +		#sound-dai-cells = <0>;
> +		compatible = "ti,tlv320aic3106";
> +		reg = <0x18>;
> +		status = "okay";
> +
> +		ai3x-micbias-vg = <MICBIAS_2_5V>;
> +	};
> +};
> +
> +&mcasp0 {
> +	#sound-dai-cells = <0>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&mcasp0_pins>;
> +	status = "okay";
> +
> +	op-mode = <0>;   /* DAVINCI_MCASP_IIS_MODE */
> +	tdm-slots = <2>;
> +	serial-dir = <   /* 0: INACTIVE, 1: TX, 2: RX */
> +		0 0 0 0
> +		0 0 0 0
> +		0 0 0 0
> +		0 1 2 0
> +	>;
> +	tx-num-evt = <32>;
> +	rx-num-evt = <32>;
> +};
>
Sekhar Nori Aug. 17, 2016, 9:54 a.m. UTC | #2
On Thursday 11 August 2016 01:38 AM, Karl Beldan wrote:
> The LCDK embeds a TLV320AIC3106 connected to the SoC McASP for analog
> audio. This relies on the 'dummy' regulator as the codec is always on.
> Quality is good with arecord -pipe- aplay on Line In/Line Out.
> The MIC path doesn't seem to work yet.

I tested the patch and I could not get the MIC to work as well. I
suggest dropping the MIC path parts till that is debugged and root caused.

> Signed-off-by: Karl Beldan <kbeldan@baylibre.com>
> ---
>  arch/arm/boot/dts/da850-lcdk.dts | 75 ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 75 insertions(+)

> +&i2c0 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&i2c0_pins>;
> +	clock-frequency = <100000>;
> +	status = "okay";
> +
> +	tlv320aic3106: tlv320aic3106@18 {
> +		#sound-dai-cells = <0>;
> +		compatible = "ti,tlv320aic3106";
> +		reg = <0x18>;
> +		status = "okay";
> +
> +		ai3x-micbias-vg = <MICBIAS_2_5V>;

It will be nice to add the codec regulators as well (and that in turn
needs the PMIC to be populated). Although I wont insist on that since
the regulators are optional properties.

Rest of the patch looks good to me.

Thanks,
Sekhar
Karl Beldan Aug. 17, 2016, 10:33 a.m. UTC | #3
On Wed, Aug 17, 2016 at 03:24:42PM +0530, Sekhar Nori wrote:
> On Thursday 11 August 2016 01:38 AM, Karl Beldan wrote:
> > The LCDK embeds a TLV320AIC3106 connected to the SoC McASP for analog
> > audio. This relies on the 'dummy' regulator as the codec is always on.
> > Quality is good with arecord -pipe- aplay on Line In/Line Out.
> > The MIC path doesn't seem to work yet.
> 
> I tested the patch and I could not get the MIC to work as well. I
> suggest dropping the MIC path parts till that is debugged and root caused.
> 

Ok.

> > Signed-off-by: Karl Beldan <kbeldan@baylibre.com>
> > ---
> >  arch/arm/boot/dts/da850-lcdk.dts | 75 ++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 75 insertions(+)
> 
> > +&i2c0 {
> > +	pinctrl-names = "default";
> > +	pinctrl-0 = <&i2c0_pins>;
> > +	clock-frequency = <100000>;
> > +	status = "okay";
> > +
> > +	tlv320aic3106: tlv320aic3106@18 {
> > +		#sound-dai-cells = <0>;
> > +		compatible = "ti,tlv320aic3106";
> > +		reg = <0x18>;
> > +		status = "okay";
> > +
> > +		ai3x-micbias-vg = <MICBIAS_2_5V>;
> 
> It will be nice to add the codec regulators as well (and that in turn
> needs the PMIC to be populated). Although I wont insist on that since
> the regulators are optional properties.
> 

In the patch comment I stated it relied on the dummy regulator as the
codec is always on but maybe I should have been more precise: it is not
out of convenience to keep things on, it is by HW design: I mentioned
it in the comment of "ARM: dts: da850: Add basic DTS for the LCDK":
 "the main PMIC, different and hard-wired on the LCDK (the LDOs and
 DCDCs are always on)" after reviewing the schematics.
I could add that in the patch comment.

Thanks for reviewing.

Rgds, 
Karl
Sekhar Nori Aug. 17, 2016, 11:32 a.m. UTC | #4
On Wednesday 17 August 2016 04:03 PM, Karl Beldan wrote:
> On Wed, Aug 17, 2016 at 03:24:42PM +0530, Sekhar Nori wrote:
>> On Thursday 11 August 2016 01:38 AM, Karl Beldan wrote:
>>> The LCDK embeds a TLV320AIC3106 connected to the SoC McASP for analog
>>> audio. This relies on the 'dummy' regulator as the codec is always on.
>>> Quality is good with arecord -pipe- aplay on Line In/Line Out.
>>> The MIC path doesn't seem to work yet.
>>
>> I tested the patch and I could not get the MIC to work as well. I
>> suggest dropping the MIC path parts till that is debugged and root caused.
>>
> 
> Ok.
> 
>>> Signed-off-by: Karl Beldan <kbeldan@baylibre.com>
>>> ---
>>>  arch/arm/boot/dts/da850-lcdk.dts | 75 ++++++++++++++++++++++++++++++++++++++++
>>>  1 file changed, 75 insertions(+)
>>
>>> +&i2c0 {
>>> +	pinctrl-names = "default";
>>> +	pinctrl-0 = <&i2c0_pins>;
>>> +	clock-frequency = <100000>;
>>> +	status = "okay";
>>> +
>>> +	tlv320aic3106: tlv320aic3106@18 {
>>> +		#sound-dai-cells = <0>;
>>> +		compatible = "ti,tlv320aic3106";
>>> +		reg = <0x18>;
>>> +		status = "okay";
>>> +
>>> +		ai3x-micbias-vg = <MICBIAS_2_5V>;
>>
>> It will be nice to add the codec regulators as well (and that in turn
>> needs the PMIC to be populated). Although I wont insist on that since
>> the regulators are optional properties.
>>
> 
> In the patch comment I stated it relied on the dummy regulator as the
> codec is always on but maybe I should have been more precise: it is not
> out of convenience to keep things on, it is by HW design: I mentioned
> it in the comment of "ARM: dts: da850: Add basic DTS for the LCDK":
>  "the main PMIC, different and hard-wired on the LCDK (the LDOs and
>  DCDCs are always on)" after reviewing the schematics.
> I could add that in the patch comment.

I see. PMIC on the LCDK is not software configurable at all. I think
what you have in the patch comment is already okay. More explanation
wont harm though :)

Regards,
Sekhar
diff mbox

Patch

diff --git a/arch/arm/boot/dts/da850-lcdk.dts b/arch/arm/boot/dts/da850-lcdk.dts
index dbcca0b..35b31d9 100644
--- a/arch/arm/boot/dts/da850-lcdk.dts
+++ b/arch/arm/boot/dts/da850-lcdk.dts
@@ -6,6 +6,7 @@ 
 /dts-v1/;
 #include "da850.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/sound/tlv320aic31xx-micbias.h>
 
 / {
 	model = "DA850/AM1808/OMAP-L138 LCDK";
@@ -23,10 +24,50 @@ 
 		device_type = "memory";
 		reg = <0xc0000000 0x08000000>;
 	};
+
+	sound {
+		compatible = "simple-audio-card";
+		simple-audio-card,name = "DA850/OMAP-L138 LCDK";
+		simple-audio-card,widgets =
+			"Microphone", "Mic Jack",
+			"Line", "Line In",
+			"Line", "Line Out";
+		simple-audio-card,routing =
+			"MIC3L", "Mic Jack",
+			"MIC3R", "Mic Jack",
+			"Mic Jack", "Mic Bias",
+			"LINE1L", "Line In",
+			"LINE1R", "Line In",
+			"Line Out", "LLOUT",
+			"Line Out", "RLOUT";
+		simple-audio-card,format = "dsp_b";
+		simple-audio-card,bitclock-master = <&link0_codec>;
+		simple-audio-card,frame-master = <&link0_codec>;
+		simple-audio-card,bitclock-inversion;
+
+		simple-audio-card,cpu {
+			sound-dai = <&mcasp0>;
+			system-clock-frequency = <24576000>;
+		};
+
+		link0_codec: simple-audio-card,codec {
+			sound-dai = <&tlv320aic3106>;
+			system-clock-frequency = <24576000>;
+		};
+	};
 };
 
 &pmx_core {
 	status = "okay";
+
+	mcasp0_pins: pinmux_mcasp0_pins {
+		pinctrl-single,bits = <
+			/* AHCLKX AFSX ACLKX */
+			0x00 0x00101010 0x00f0f0f0
+			/* ARX13 ARX14 */
+			0x04 0x00000110 0x00000ff0
+		>;
+	};
 };
 
 &serial2 {
@@ -68,3 +109,37 @@ 
 	cd-gpios = <&gpio 64 GPIO_ACTIVE_HIGH>;
 	status = "okay";
 };
+
+&i2c0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c0_pins>;
+	clock-frequency = <100000>;
+	status = "okay";
+
+	tlv320aic3106: tlv320aic3106@18 {
+		#sound-dai-cells = <0>;
+		compatible = "ti,tlv320aic3106";
+		reg = <0x18>;
+		status = "okay";
+
+		ai3x-micbias-vg = <MICBIAS_2_5V>;
+	};
+};
+
+&mcasp0 {
+	#sound-dai-cells = <0>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&mcasp0_pins>;
+	status = "okay";
+
+	op-mode = <0>;   /* DAVINCI_MCASP_IIS_MODE */
+	tdm-slots = <2>;
+	serial-dir = <   /* 0: INACTIVE, 1: TX, 2: RX */
+		0 0 0 0
+		0 0 0 0
+		0 0 0 0
+		0 1 2 0
+	>;
+	tx-num-evt = <32>;
+	rx-num-evt = <32>;
+};