RFC V1 2023-09-05 14:50:14: RFC: tentative additions to fix ABE/AESS device tree entries
This is part of a bigger project to provide a modern driver for the OMAP4/5 Audio Engine (ABE/AE/AESS). The first step is to fix/add some device tree records so that this allows to do power and clock management by a driver and give the processor access to all interface registers and memory blocks.
Main RFC question is if clock setup is correct. For example there is no connection to abe_giclk_div / ocp_abe_iclk / abe_iclk.
Notes: - this may be extensible to DRA7xx - code is based on v6.5 - there is no bindings document for ti,omap4-aess
H. Nikolaus Schaller (4): ARM: DTS: omap5-l4-abe: we do not need separate target-modules for dmem, cmem, smem ARM: DTS: omap5-l4-abe: add an aess (audio DSP of OMAP4 and OMAP5) child ARM: DTS: omap4-l4-abe: add an aess (audio DSP of OMAP4 and OMAP5) child ARM: DTS: omap4-panda-common: enable aess, add phandles for aess and mcbsp1/2/3
Marek Belisko (1): ARM: DTS: omap5-board-common: enable aess, add phandles for aess and mcbsp1/2/3
Peter Ujfalusi (1): ARM: DTS: omap4-l4-abe: Add McASP configuration
arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi | 78 +++++++++++---- .../boot/dts/ti/omap/omap4-panda-common.dtsi | 22 ++++- .../boot/dts/ti/omap/omap5-board-common.dtsi | 15 +++ arch/arm/boot/dts/ti/omap/omap5-l4-abe.dtsi | 98 +++++++++++-------- 4 files changed, 149 insertions(+), 64 deletions(-)
They are part of the Audio Engine target module.
The address ranges are handled by the aess child node.
Signed-off-by: H. Nikolaus Schaller hns@goldelico.com --- arch/arm/boot/dts/ti/omap/omap5-l4-abe.dtsi | 27 --------------------- 1 file changed, 27 deletions(-)
diff --git a/arch/arm/boot/dts/ti/omap/omap5-l4-abe.dtsi b/arch/arm/boot/dts/ti/omap/omap5-l4-abe.dtsi index a03bca5a35844..7d223f938d479 100644 --- a/arch/arm/boot/dts/ti/omap/omap5-l4-abe.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap5-l4-abe.dtsi @@ -404,33 +404,6 @@ timer8: timer@0 { }; };
- target-module@80000 { /* 0x40180000, ap 26 1a.0 */ - compatible = "ti,sysc"; - status = "disabled"; - #address-cells = <1>; - #size-cells = <1>; - ranges = <0x0 0x80000 0x10000>, - <0x49080000 0x49080000 0x10000>; - }; - - target-module@a0000 { /* 0x401a0000, ap 28 1c.0 */ - compatible = "ti,sysc"; - status = "disabled"; - #address-cells = <1>; - #size-cells = <1>; - ranges = <0x0 0xa0000 0x10000>, - <0x490a0000 0x490a0000 0x10000>; - }; - - target-module@c0000 { /* 0x401c0000, ap 30 1e.0 */ - compatible = "ti,sysc"; - status = "disabled"; - #address-cells = <1>; - #size-cells = <1>; - ranges = <0x0 0xc0000 0x10000>, - <0x490c0000 0x490c0000 0x10000>; - }; - target-module@f1000 { /* 0x401f1000, ap 32 20.0 */ compatible = "ti,sysc-omap4", "ti,sysc"; reg = <0xf1000 0x4>,
make the aess module a child of the target-module.
Define ranges, register names, interrupts, dmas.
Signed-off-by: H. Nikolaus Schaller hns@goldelico.com --- arch/arm/boot/dts/ti/omap/omap5-l4-abe.dtsi | 71 +++++++++++++++++---- 1 file changed, 57 insertions(+), 14 deletions(-)
diff --git a/arch/arm/boot/dts/ti/omap/omap5-l4-abe.dtsi b/arch/arm/boot/dts/ti/omap/omap5-l4-abe.dtsi index 7d223f938d479..611c92e04fe7a 100644 --- a/arch/arm/boot/dts/ti/omap/omap5-l4-abe.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap5-l4-abe.dtsi @@ -41,12 +41,14 @@ segment@0 { /* 0x40100000 */ <0x0003d000 0x0003d000 0x001000>, /* ap 23 */ <0x0003e000 0x0003e000 0x001000>, /* ap 24 */ <0x0003f000 0x0003f000 0x001000>, /* ap 25 */ - <0x00080000 0x00080000 0x010000>, /* ap 26 */ - <0x00080000 0x00080000 0x001000>, /* ap 27 */ - <0x000a0000 0x000a0000 0x010000>, /* ap 28 */ - <0x000a0000 0x000a0000 0x001000>, /* ap 29 */ - <0x000c0000 0x000c0000 0x010000>, /* ap 30 */ - <0x000c0000 0x000c0000 0x001000>, /* ap 31 */ + <0x00080000 0x00080000 0x010000>, /* dmem */ + <0x00090000 0x00090000 0x001000>, /* dmem */ + <0x000a0000 0x000a0000 0x010000>, /* cmem */ + <0x000b0000 0x000b0000 0x001000>, /* cmem */ + <0x000c0000 0x000c0000 0x010000>, /* smem */ + <0x000d0000 0x000d0000 0x001000>, /* smem */ + <0x000e0000 0x000e0000 0x010000>, /* pmem */ + <0x000f0000 0x000f0000 0x001000>, /* pmem */ <0x000f1000 0x000f1000 0x001000>, /* ap 32 */ <0x000f2000 0x000f2000 0x001000>, /* ap 33 */
@@ -77,12 +79,14 @@ segment@0 { /* 0x40100000 */ <0x4903d000 0x4903d000 0x001000>, /* ap 23 */ <0x4903e000 0x4903e000 0x001000>, /* ap 24 */ <0x4903f000 0x4903f000 0x001000>, /* ap 25 */ - <0x49080000 0x49080000 0x010000>, /* ap 26 */ - <0x49080000 0x49080000 0x001000>, /* ap 27 */ - <0x490a0000 0x490a0000 0x010000>, /* ap 28 */ - <0x490a0000 0x490a0000 0x001000>, /* ap 29 */ - <0x490c0000 0x490c0000 0x010000>, /* ap 30 */ - <0x490c0000 0x490c0000 0x001000>, /* ap 31 */ + <0x49080000 0x49080000 0x010000>, /* dmem */ + <0x49090000 0x49090000 0x001000>, /* dmem */ + <0x490a0000 0x490a0000 0x010000>, /* cmem */ + <0x490b0000 0x490b0000 0x001000>, /* cmem */ + <0x490c0000 0x490c0000 0x010000>, /* smem */ + <0x490d0000 0x490d0000 0x001000>, /* smem */ + <0x490e0000 0x490e0000 0x010000>, /* pmem */ + <0x490f0000 0x490f0000 0x001000>, /* pmem */ <0x490f1000 0x490f1000 0x001000>, /* ap 32 */ <0x490f2000 0x490f2000 0x001000>; /* ap 33 */
@@ -421,8 +425,47 @@ target-module@f1000 { /* 0x401f1000, ap 32 20.0 */ clock-names = "fck"; #address-cells = <1>; #size-cells = <1>; - ranges = <0x0 0xf1000 0x1000>, - <0x490f1000 0x490f1000 0x1000>; + + /* CHECKME: OMAP4 and OMAP5 may differ in memory sizes, here we define more than available... */ + ranges = <0 0xf1000 0x1000>, /* MPU private access */ + <0x80000 0x80000 0x10000>, /* DMEM 64KiB - MPU */ + <0xa0000 0xa0000 0x10000>, /* CMEM 6KiB - MPU */ + <0xc0000 0xc0000 0x10000>, /* SMEM 64KiB - MPU */ + <0xe0000 0xe0000 0x10000>, /* PMEM 8KiB - MPU */ + <0x490f1000 0x490f1000 0x10000>, /* L3 Interconnect */ + <0x49080000 0x49080000 0x10000>, /* DMEM 64KiB - L3 */ + <0x490a0000 0x490a0000 0x10000>, /* CMEM 6KiB - L3 */ + <0x490ce000 0x490c0000 0x10000>, /* SMEM 64KiB - L3 */ + <0x490e0000 0x490e0000 0x10000>; /* PMEM 8KiB - L3 */ + + aess: aess { + compatible = "ti,omap4-aess"; + status = "disabled"; + reg = <0 0xfff>, /* MPU private access */ + <0x80000 0xffff>, /* DMEM - MPU */ + <0xa0000 0xffff>, /* CMEM - MPU */ + <0xc0000 0xffff>, /* SMEM - MPU */ + <0xe0000 0xffff>, /* PMEM - MPU */ + <0x490f1000 0xfff>, /* L3 Interconnect */ + <0x49080000 0xffff>, /* DMEM - L3 */ + <0x490a0000 0xffff>, /* CMEM - L3 */ + <0x490ce000 0xffff>, /* SMEM - L3 */ + <0x490e0000 0xffff>; /* PMEM - L3 */ + reg-names = "mpu", "dmem", "cmem", "smem", "pmem", + "dma", "dmem_dma", "cmem_dma", "smem_dma", + "pmem_dma"; + interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&sdma 101>, + <&sdma 102>, + <&sdma 103>, + <&sdma 104>, + <&sdma 105>, + <&sdma 106>, + <&sdma 107>, + <&sdma 108>; + dma-names = "fifo0", "fifo1", "fifo2", "fifo3", "fifo4", + "fifo5", "fifo6", "fifo7"; + }; }; }; };
From: Marek Belisko marek.belisko@open-nandra.com
and extend audio-routing.
Signed-off-by: Marek Belisko marek.belisko@open-nandra.com --- arch/arm/boot/dts/ti/omap/omap5-board-common.dtsi | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
diff --git a/arch/arm/boot/dts/ti/omap/omap5-board-common.dtsi b/arch/arm/boot/dts/ti/omap/omap5-board-common.dtsi index 6f46f1ecf1e57..49ced2f4096fb 100644 --- a/arch/arm/boot/dts/ti/omap/omap5-board-common.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap5-board-common.dtsi @@ -123,22 +123,37 @@ sound: sound { ti,mclk-freq = <19200000>;
ti,mcpdm = <&mcpdm>; + ti,mcbsp1 = <&mcbsp1>; /* bluetooth */ + ti,mcbsp2 = <&mcbsp2>; /* fm radio */ + ti,mcbsp3 = <&mcbsp3>; /* modem */
ti,twl6040 = <&twl6040>; + ti,aess = <&aess>;
/* Audio routing */ ti,audio-routing = "Headset Stereophone", "HSOL", "Headset Stereophone", "HSOR", + "Earphone Spk", "EP", "Line Out", "AUXL", "Line Out", "AUXR", + "Vibrator", "VIBRAL", + "Vibrator", "VIBRAR", "HSMIC", "Headset Mic", "Headset Mic", "Headset Mic Bias", + "MAINMIC", "Main Handset Mic", + "Main Handset Mic", "Main Mic Bias", + "SUBMIC", "Sub Handset Mic", + "Sub Handset Mic", "Main Mic Bias", "AFML", "Line In", "AFMR", "Line In"; }; };
+&aess { + status = "okay"; +}; + &gpio8 { /* TI trees use GPIO instead of msecure, see also muxing */ msecure-hog {
From: Peter Ujfalusi peter.ujfalusi@gmail.com
OMAP4 has a single McASP instance with single serializer and locked for DIT mode. To be able to enable the support the following fixes needed: - Add the DAT port ranges to the target module's ranges - SIDLE mode must be disabled as it is not working with McASP most likely module integration issue with McASP
We can already fill in the op-mode and serial-dir for McASP as it only supports this configuration, but keep the module disabled as there is no known device available where it is used.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@gmail.com --- arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi b/arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi index 7ae8b620515c5..a8d66240d17d5 100644 --- a/arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi @@ -192,8 +192,7 @@ target-module@28000 { /* 0x40128000, ap 8 08.0 */ <0x28004 0x4>; reg-names = "rev", "sysc"; ti,sysc-sidle = <SYSC_IDLE_FORCE>, - <SYSC_IDLE_NO>, - <SYSC_IDLE_SMART>; + <SYSC_IDLE_NO>; /* Domains (V, P, C): iva, abe_pwrdm, abe_clkdm */ clocks = <&abe_clkctrl OMAP4_MCASP_CLKCTRL 0>; clock-names = "fck";
* H. Nikolaus Schaller hns@goldelico.com [230905 15:58]:
From: Peter Ujfalusi peter.ujfalusi@gmail.com
OMAP4 has a single McASP instance with single serializer and locked for DIT mode. To be able to enable the support the following fixes needed:
- Add the DAT port ranges to the target module's ranges
I think the above has been already done?
- SIDLE mode must be disabled as it is not working with McASP
most likely module integration issue with McASP
Best to keep the dts entry as is and add quirk handling to ti-sysc driver instead based on mcasp revision register detection. The dts is meant to describe hardware and the register values exist.. But looking at ti-sysc we already have mcasp tagged with SYSC_QUIRK_SWSUP_SIDLE.
If this patch is still needed, maybe check the revision register value and mask in case there are multiple revisions, that's this line in ti-sysc:
SYSC_QUIRK("mcasp", 0, 0, 0x4, -ENODEV, 0x44306302, 0xffffffff, SYSC_QUIRK_SWSUP_SIDLE),
Regards,
Tony
make the aess module a child of the target-module.
Define ranges, register names, interrupts, dmas.
Signed-off-by: H. Nikolaus Schaller hns@goldelico.com --- arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi | 75 +++++++++++++++------ 1 file changed, 56 insertions(+), 19 deletions(-)
diff --git a/arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi b/arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi index a8d66240d17d5..7ca7b369b4e59 100644 --- a/arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi @@ -41,12 +41,14 @@ segment@0 { /* 0x40100000 */ <0x0003d000 0x0003d000 0x001000>, /* ap 23 */ <0x0003e000 0x0003e000 0x001000>, /* ap 24 */ <0x0003f000 0x0003f000 0x001000>, /* ap 25 */ - <0x00080000 0x00080000 0x010000>, /* ap 26 */ - <0x00080000 0x00080000 0x001000>, /* ap 27 */ - <0x000a0000 0x000a0000 0x010000>, /* ap 28 */ - <0x000a0000 0x000a0000 0x001000>, /* ap 29 */ - <0x000c0000 0x000c0000 0x010000>, /* ap 30 */ - <0x000c0000 0x000c0000 0x001000>, /* ap 31 */ + <0x00080000 0x00080000 0x010000>, /* dmem */ + <0x00090000 0x00090000 0x001000>, /* dmem */ + <0x000a0000 0x000a0000 0x010000>, /* cmem */ + <0x000b0000 0x000b0000 0x001000>, /* cmem */ + <0x000c0000 0x000c0000 0x010000>, /* smem */ + <0x000d0000 0x000d0000 0x001000>, /* smem */ + <0x000e0000 0x000e0000 0x010000>, /* pmem */ + <0x000f0000 0x000f0000 0x001000>, /* pmem */ <0x000f1000 0x000f1000 0x001000>, /* ap 32 */ <0x000f2000 0x000f2000 0x001000>, /* ap 33 */
@@ -77,12 +79,14 @@ segment@0 { /* 0x40100000 */ <0x4903d000 0x4903d000 0x001000>, /* ap 23 */ <0x4903e000 0x4903e000 0x001000>, /* ap 24 */ <0x4903f000 0x4903f000 0x001000>, /* ap 25 */ - <0x49080000 0x49080000 0x010000>, /* ap 26 */ - <0x49080000 0x49080000 0x001000>, /* ap 27 */ - <0x490a0000 0x490a0000 0x010000>, /* ap 28 */ - <0x490a0000 0x490a0000 0x001000>, /* ap 29 */ - <0x490c0000 0x490c0000 0x010000>, /* ap 30 */ - <0x490c0000 0x490c0000 0x001000>, /* ap 31 */ + <0x49080000 0x49080000 0x010000>, /* dmem */ + <0x49090000 0x49090000 0x001000>, /* dmem */ + <0x490a0000 0x490a0000 0x010000>, /* cmem */ + <0x490b0000 0x490b0000 0x001000>, /* cmem */ + <0x490c0000 0x490c0000 0x010000>, /* smem */ + <0x490d0000 0x490d0000 0x001000>, /* smem */ + <0x490e0000 0x490e0000 0x010000>, /* pmem */ + <0x490f0000 0x490f0000 0x001000>, /* pmem */ <0x490f1000 0x490f1000 0x001000>, /* ap 32 */ <0x490f2000 0x490f2000 0x001000>; /* ap 33 */
@@ -482,14 +486,47 @@ target-module@f1000 { /* 0x401f1000, ap 32 20.0 */ clock-names = "fck"; #address-cells = <1>; #size-cells = <1>; - ranges = <0x0 0xf1000 0x1000>, - <0x490f1000 0x490f1000 0x1000>;
- /* - * No child device binding or driver in mainline. - * See Android tree and related upstreaming efforts - * for the old driver. - */ + /* CHECKME: OMAP4 and OMAP5 may differ in memory sizes, here we define more than available... */ + ranges = <0 0xf1000 0x1000>, /* MPU private access */ + <0x80000 0x80000 0x10000>, /* DMEM 64KiB - MPU */ + <0xa0000 0xa0000 0x10000>, /* CMEM 6KiB - MPU */ + <0xc0000 0xc0000 0x10000>, /* SMEM 64KiB - MPU */ + <0xe0000 0xe0000 0x10000>, /* PMEM 8KiB - MPU */ + <0x490f1000 0x490f1000 0x10000>, /* L3 Interconnect */ + <0x49080000 0x49080000 0x10000>, /* DMEM 64KiB - L3 */ + <0x490a0000 0x490a0000 0x10000>, /* CMEM 6KiB - L3 */ + <0x490ce000 0x490c0000 0x10000>, /* SMEM 64KiB - L3 */ + <0x490e0000 0x490e0000 0x10000>; /* PMEM 8KiB - L3 */ + + aess: aess { + compatible = "ti,omap4-aess"; + status = "disabled"; + reg = <0 0xfff>, /* MPU private access */ + <0x80000 0xffff>, /* DMEM - MPU */ + <0xa0000 0xffff>, /* CMEM - MPU */ + <0xc0000 0xffff>, /* SMEM - MPU */ + <0xe0000 0xffff>, /* PMEM - MPU */ + <0x490f1000 0xfff>, /* L3 Interconnect */ + <0x49080000 0xffff>, /* DMEM - L3 */ + <0x490a0000 0xffff>, /* CMEM - L3 */ + <0x490ce000 0xffff>, /* SMEM - L3 */ + <0x490e0000 0xffff>; /* PMEM - L3 */ + reg-names = "mpu", "dmem", "cmem", "smem", "pmem", + "dma", "dmem_dma", "cmem_dma", "smem_dma", + "pmem_dma"; + interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&sdma 101>, + <&sdma 102>, + <&sdma 103>, + <&sdma 104>, + <&sdma 105>, + <&sdma 106>, + <&sdma 107>, + <&sdma 108>; + dma-names = "fifo0", "fifo1", "fifo2", "fifo3", "fifo4", + "fifo5", "fifo6", "fifo7"; + }; }; }; };
Hi,
* H. Nikolaus Schaller hns@goldelico.com [230905 15:58]:
make the aess module a child of the target-module.
How about something like this for the patch description:
"Move aess specific memory ranges to the aess module and remove the entries generated from the hardware ap registers. There is no need to set up separate child device nodes for aess as these are all memory ranges used only by the aess driver."
And then just combine this patch with the one removing the entries generated from ap registers.
diff --git a/arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi b/arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi index a8d66240d17d5..7ca7b369b4e59 100644 --- a/arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap4-l4-abe.dtsi @@ -41,12 +41,14 @@ segment@0 { /* 0x40100000 */ <0x0003d000 0x0003d000 0x001000>, /* ap 23 */ <0x0003e000 0x0003e000 0x001000>, /* ap 24 */ <0x0003f000 0x0003f000 0x001000>, /* ap 25 */
<0x00080000 0x00080000 0x010000>, /* ap 26 */
<0x00080000 0x00080000 0x001000>, /* ap 27 */
<0x000a0000 0x000a0000 0x010000>, /* ap 28 */
<0x000a0000 0x000a0000 0x001000>, /* ap 29 */
<0x000c0000 0x000c0000 0x010000>, /* ap 30 */
<0x000c0000 0x000c0000 0x001000>, /* ap 31 */
<0x00080000 0x00080000 0x010000>, /* dmem */
<0x00090000 0x00090000 0x001000>, /* dmem */
<0x000a0000 0x000a0000 0x010000>, /* cmem */
<0x000b0000 0x000b0000 0x001000>, /* cmem */
<0x000c0000 0x000c0000 0x010000>, /* smem */
<0x000d0000 0x000d0000 0x001000>, /* smem */
<0x000e0000 0x000e0000 0x010000>, /* pmem */
<0x000f0000 0x000f0000 0x001000>, /* pmem */ <0x000f1000 0x000f1000 0x001000>, /* ap 32 */ <0x000f2000 0x000f2000 0x001000>, /* ap 33 */
So looks like pmem has no ranges defined in the ap registers, just add the new ranges with comments like "dmem interrconnect" "pmem, not listed in ap".
Right now this change is hard to read as it's not obvious what is changing as you're adding the new ranges and changing comments for the existing ranges.
Please keep the ap entry reference for the existing ones, not sure we need comments for the existing ranges. Probably best to add comments in a separate patch to keep the range changes readable.
@@ -482,14 +486,47 @@ target-module@f1000 { /* 0x401f1000, ap 32 20.0 */ clock-names = "fck"; #address-cells = <1>; #size-cells = <1>;
ranges = <0x0 0xf1000 0x1000>,
<0x490f1000 0x490f1000 0x1000>;
/*
* No child device binding or driver in mainline.
* See Android tree and related upstreaming efforts
* for the old driver.
*/
/* CHECKME: OMAP4 and OMAP5 may differ in memory sizes, here we define more than available... */
ranges = <0 0xf1000 0x1000>, /* MPU private access */
<0x80000 0x80000 0x10000>, /* DMEM 64KiB - MPU */
<0xa0000 0xa0000 0x10000>, /* CMEM 6KiB - MPU */
<0xc0000 0xc0000 0x10000>, /* SMEM 64KiB - MPU */
<0xe0000 0xe0000 0x10000>, /* PMEM 8KiB - MPU */
<0x490f1000 0x490f1000 0x10000>, /* L3 Interconnect */
<0x49080000 0x49080000 0x10000>, /* DMEM 64KiB - L3 */
<0x490a0000 0x490a0000 0x10000>, /* CMEM 6KiB - L3 */
<0x490ce000 0x490c0000 0x10000>, /* SMEM 64KiB - L3 */
<0x490e0000 0x490e0000 0x10000>; /* PMEM 8KiB - L3 */
aess: aess {
compatible = "ti,omap4-aess";
status = "disabled";
reg = <0 0xfff>, /* MPU private access */
<0x80000 0xffff>, /* DMEM - MPU */
<0xa0000 0xffff>, /* CMEM - MPU */
<0xc0000 0xffff>, /* SMEM - MPU */
<0xe0000 0xffff>, /* PMEM - MPU */
<0x490f1000 0xfff>, /* L3 Interconnect */
<0x49080000 0xffff>, /* DMEM - L3 */
<0x490a0000 0xffff>, /* CMEM - L3 */
<0x490ce000 0xffff>, /* SMEM - L3 */
<0x490e0000 0xffff>; /* PMEM - L3 */
reg-names = "mpu", "dmem", "cmem", "smem", "pmem",
"dma", "dmem_dma", "cmem_dma", "smem_dma",
"pmem_dma";
interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&sdma 101>,
<&sdma 102>,
<&sdma 103>,
<&sdma 104>,
<&sdma 105>,
<&sdma 106>,
<&sdma 107>,
<&sdma 108>;
dma-names = "fifo0", "fifo1", "fifo2", "fifo3", "fifo4",
"fifo5", "fifo6", "fifo7";
}; };};
};
Hmm so what registers is the driver accessing in the l3 interconnect registers named dma above? If there's something sysc and syss register related it's better off done in a generic way in ti-sysc.c.
In general looks OK to me for the ti,omap4-aess child device. Yeah seems like no need to set up separate child device nodes for the memory ranges.
Regards,
Tony
and extend audio-routing.
Signed-off-by: H. Nikolaus Schaller hns@goldelico.com --- .../boot/dts/ti/omap/omap4-panda-common.dtsi | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/ti/omap/omap4-panda-common.dtsi b/arch/arm/boot/dts/ti/omap/omap4-panda-common.dtsi index f528511c2537b..3409cb693d1d5 100644 --- a/arch/arm/boot/dts/ti/omap/omap4-panda-common.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap4-panda-common.dtsi @@ -82,21 +82,31 @@ sound: sound { ti,model = "PandaBoard";
ti,mclk-freq = <38400000>; + ti,mclk-freq = <38400000>; // CHECKME: 19200000?
ti,mcpdm = <&mcpdm>; + ti,mcbsp1 = <&mcbsp1>; /* bluetooth */ + ti,mcbsp2 = <&mcbsp2>; /* fm radio */ + ti,mcbsp3 = <&mcbsp3>; /* modem */
ti,twl6040 = <&twl6040>; + ti,aess = <&aess>;
/* Audio routing */ ti,audio-routing = "Headset Stereophone", "HSOL", "Headset Stereophone", "HSOR", - "Ext Spk", "HFL", - "Ext Spk", "HFR", + "Earphone Spk", "EP", "Line Out", "AUXL", "Line Out", "AUXR", + "Vibrator", "VIBRAL", + "Vibrator", "VIBRAR", "HSMIC", "Headset Mic", "Headset Mic", "Headset Mic Bias", + "MAINMIC", "Main Handset Mic", + "Main Handset Mic", "Main Mic Bias", + "SUBMIC", "Sub Handset Mic", + "Sub Handset Mic", "Main Mic Bias", "AFML", "Line In", "AFMR", "Line In"; }; @@ -227,6 +237,10 @@ hdmi_connector_in: endpoint { }; };
+&aess { + status = "okay"; +}; + &omap4_pmx_core { pinctrl-names = "default"; pinctrl-0 = < @@ -517,6 +531,10 @@ &mcbsp1 { status = "okay"; };
+&mcbsp2 { + status = "okay"; +}; + &twl_usb_comparator { usb-supply = <&vusb>; };