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
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
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
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
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
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
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
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
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