2014-07-31 10:19:40

by Peter Ujfalusi

[permalink] [raw]
Subject: [PATCH 0/6] ARM: DT/davinci: Audio for da850-evm in DT boot

Hi,

The following series will enable audio via simple card on the board when booted
with DT.

For edma one patch is needed to have working dma:
http://marc.info/?l=linux-omap&m=140680159327749&w=2

Regards,
Peter
---
Peter Ujfalusi (6):
ARM: davinci: da8xx-dt: add OF_DEV_AUXDATA entry for mcasp0
ARM: DTS: da850: Add node for edma0
ARM: DTS: da850: Add node for McASP
ARM: DTS: da850-evm: Enable McASP via DT boot
ARM: DTS: da850-evm: Add node for tlv320aic3106 codec
ARM: DTS: da850-evm: Enable audio via simple-card

arch/arm/boot/dts/da850-evm.dts | 72 ++++++++++++++++++++++++++++++++++++++++
arch/arm/boot/dts/da850.dtsi | 19 +++++++++++
arch/arm/mach-davinci/da8xx-dt.c | 1 +
3 files changed, 92 insertions(+)

--
2.0.2


2014-07-31 10:19:38

by Peter Ujfalusi

[permalink] [raw]
Subject: [PATCH 2/6] ARM: DTS: da850: Add node for edma0

Add DT node for edma0.

Signed-off-by: Peter Ujfalusi <[email protected]>
---
arch/arm/boot/dts/da850.dtsi | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/arch/arm/boot/dts/da850.dtsi b/arch/arm/boot/dts/da850.dtsi
index b695548dbb4e..41ce4e8bf227 100644
--- a/arch/arm/boot/dts/da850.dtsi
+++ b/arch/arm/boot/dts/da850.dtsi
@@ -150,6 +150,12 @@
};

};
+ edma0: edma@01c00000 {
+ compatible = "ti,edma3";
+ reg = <0x0 0x10000>;
+ interrupts = <11 13 12>;
+ #dma-cells = <1>;
+ };
serial0: serial@1c42000 {
compatible = "ns16550a";
reg = <0x42000 0x100>;
--
2.0.2

2014-07-31 10:19:41

by Peter Ujfalusi

[permalink] [raw]
Subject: [PATCH 1/6] ARM: davinci: da8xx-dt: add OF_DEV_AUXDATA entry for mcasp0

Add OF_DEV_AUXDATA for mcasp to be able to use clocks.

Signed-off-by: Peter Ujfalusi <[email protected]>
---
arch/arm/mach-davinci/da8xx-dt.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/arm/mach-davinci/da8xx-dt.c b/arch/arm/mach-davinci/da8xx-dt.c
index ed1928740b5f..f703d82f08a8 100644
--- a/arch/arm/mach-davinci/da8xx-dt.c
+++ b/arch/arm/mach-davinci/da8xx-dt.c
@@ -46,6 +46,7 @@ static struct of_dev_auxdata da850_auxdata_lookup[] __initdata = {
OF_DEV_AUXDATA("ti,davinci_mdio", 0x01e24000, "davinci_mdio.0", NULL),
OF_DEV_AUXDATA("ti,davinci-dm6467-emac", 0x01e20000, "davinci_emac.1",
NULL),
+ OF_DEV_AUXDATA("ti,da830-mcasp-audio", 0x01d00000, "davinci-mcasp.0", NULL),
{}
};

--
2.0.2

2014-07-31 10:19:48

by Peter Ujfalusi

[permalink] [raw]
Subject: [PATCH 3/6] ARM: DTS: da850: Add node for McASP

Node for mcasp0

Signed-off-by: Peter Ujfalusi <[email protected]>
---
arch/arm/boot/dts/da850.dtsi | 13 +++++++++++++
1 file changed, 13 insertions(+)

diff --git a/arch/arm/boot/dts/da850.dtsi b/arch/arm/boot/dts/da850.dtsi
index 41ce4e8bf227..0bd98cd00816 100644
--- a/arch/arm/boot/dts/da850.dtsi
+++ b/arch/arm/boot/dts/da850.dtsi
@@ -276,6 +276,19 @@
ti,davinci-gpio-unbanked = <0>;
status = "disabled";
};
+
+ mcasp0: mcasp@01d00000 {
+ compatible = "ti,da830-mcasp-audio";
+ reg = <0x100000 0x2000>,
+ <0x102000 0x400000>;
+ reg-names = "mpu", "dat";
+ interrupts = <54>;
+ interrupt-names = "common";
+ status = "disabled";
+ dmas = <&edma0 1>,
+ <&edma0 0>;
+ dma-names = "tx", "rx";
+ };
};
nand_cs3@62000000 {
compatible = "ti,davinci-nand";
--
2.0.2

2014-07-31 10:19:56

by Peter Ujfalusi

[permalink] [raw]
Subject: [PATCH 6/6] ARM: DTS: da850-evm: Enable audio via simple-card

The audio on the board is using McASP <-> tlv320aic3106 codec and we have
LineIn and LineOut jacks.

Signed-off-by: Peter Ujfalusi <[email protected]>
---
arch/arm/boot/dts/da850-evm.dts | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
index b9ef2be0b145..031117a4a797 100644
--- a/arch/arm/boot/dts/da850-evm.dts
+++ b/arch/arm/boot/dts/da850-evm.dts
@@ -143,6 +143,33 @@
regulator-max-microvolt = <5000000>;
regulator-boot-on;
};
+
+ sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,name = "DA850/OMAP-L138 EVM";
+ simple-audio-card,widgets =
+ "Line", "Line In",
+ "Line", "Line Out";
+ simple-audio-card,routing =
+ "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>;
+ };
+ };
};

/include/ "tps6507x.dtsi"
--
2.0.2

2014-07-31 10:20:21

by Peter Ujfalusi

[permalink] [raw]
Subject: [PATCH 4/6] ARM: DTS: da850-evm: Enable McASP via DT boot

Add pinctrl nodes for the McASP0 pins and configure McASP to the desired
mode for the board.

Signed-off-by: Peter Ujfalusi <[email protected]>
---
arch/arm/boot/dts/da850-evm.dts | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
index 1e11e5a5f723..09118c72e83f 100644
--- a/arch/arm/boot/dts/da850-evm.dts
+++ b/arch/arm/boot/dts/da850-evm.dts
@@ -17,6 +17,18 @@
soc {
pmx_core: pinmux@1c14120 {
status = "okay";
+
+ mcasp0_pins: pinmux_mcasp0_pins {
+ pinctrl-single,bits = <
+ /*
+ * AHCLKX, ACLKX, AFSX, AHCLKR, ACLKR,
+ * AFSR, AMUTE
+ */
+ 0x00 0x11111111 0xffffffff
+ /* AXR11, AXR12 */
+ 0x04 0x00011000 0x000ff000
+ >;
+ };
};
serial0: serial@1c42000 {
status = "okay";
@@ -170,3 +182,22 @@
};
};
};
+
+&mcasp0 {
+ #sound-dai-cells = <0>;
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&mcasp0_pins>;
+
+ op-mode = <0>; /* MCASP_IIS_MODE */
+ tdm-slots = <2>;
+ /* 4 serializer */
+ serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
+ 0 0 0 0
+ 0 0 0 0
+ 0 0 0 1
+ 2 0 0 0
+ >;
+ tx-num-evt = <32>;
+ rx-num-evt = <32>;
+};
--
2.0.2

2014-07-31 10:20:52

by Peter Ujfalusi

[permalink] [raw]
Subject: [PATCH 5/6] ARM: DTS: da850-evm: Add node for tlv320aic3106 codec

The board uses aic3106 for audio.

Signed-off-by: Peter Ujfalusi <[email protected]>
---
arch/arm/boot/dts/da850-evm.dts | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
index 09118c72e83f..b9ef2be0b145 100644
--- a/arch/arm/boot/dts/da850-evm.dts
+++ b/arch/arm/boot/dts/da850-evm.dts
@@ -51,6 +51,20 @@
tps: tps@48 {
reg = <0x48>;
};
+ tlv320aic3106: tlv320aic3106@1b {
+ #sound-dai-cells = <0>;
+ compatible = "ti,tlv320aic3106";
+ reg = <0x18>;
+ status = "okay";
+
+ /* Regulators */
+ IOVDD-supply = <&vdcdc2_reg>;
+ /* Derived from VBAT: Baseboard 3.3V / 1.8V */
+ AVDD-supply = <&vbat>;
+ DRVDD-supply = <&vbat>;
+ DVDD-supply = <&vbat>;
+ };
+
};
wdt: wdt@1c21000 {
status = "okay";
--
2.0.2

2014-07-31 14:24:29

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH 5/6] ARM: DTS: da850-evm: Add node for tlv320aic3106 codec

Hello.

On 07/31/2014 02:18 PM, Peter Ujfalusi wrote:

> The board uses aic3106 for audio.

> Signed-off-by: Peter Ujfalusi <[email protected]>
> ---
> arch/arm/boot/dts/da850-evm.dts | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)

> diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
> index 09118c72e83f..b9ef2be0b145 100644
> --- a/arch/arm/boot/dts/da850-evm.dts
> +++ b/arch/arm/boot/dts/da850-evm.dts
> @@ -51,6 +51,20 @@
> tps: tps@48 {
> reg = <0x48>;
> };
> + tlv320aic3106: tlv320aic3106@1b {

The "reg" property is <0x18>, why the unit-address part of a name is
different? Also, the ePAPR standard [1] says:

The name of a node should be somewhat generic, reflecting the function of the
device and not its precise programming model.

> + #sound-dai-cells = <0>;
> + compatible = "ti,tlv320aic3106";
> + reg = <0x18>;
> + status = "okay";
> +
> + /* Regulators */
> + IOVDD-supply = <&vdcdc2_reg>;
> + /* Derived from VBAT: Baseboard 3.3V / 1.8V */
> + AVDD-supply = <&vbat>;
> + DRVDD-supply = <&vbat>;
> + DVDD-supply = <&vbat>;
> + };
> +

[1] http://www.power.org/resources/downloads/Power_ePAPR_APPROVED_v1.0.pdf

WBR, Sergei

2014-07-31 14:27:00

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH 2/6] ARM: DTS: da850: Add node for edma0

On 07/31/2014 02:18 PM, Peter Ujfalusi wrote:

> Add DT node for edma0.

> Signed-off-by: Peter Ujfalusi <[email protected]>
> ---
> arch/arm/boot/dts/da850.dtsi | 6 ++++++
> 1 file changed, 6 insertions(+)

> diff --git a/arch/arm/boot/dts/da850.dtsi b/arch/arm/boot/dts/da850.dtsi
> index b695548dbb4e..41ce4e8bf227 100644
> --- a/arch/arm/boot/dts/da850.dtsi
> +++ b/arch/arm/boot/dts/da850.dtsi
> @@ -150,6 +150,12 @@
> };
>
> };
> + edma0: edma@01c00000 {
> + compatible = "ti,edma3";
> + reg = <0x0 0x10000>;

Why the mismatch between the unit-address part of the node name and the
"reg" property?

> + interrupts = <11 13 12>;
> + #dma-cells = <1>;
> + };

WBR, Sergei