diff mbox

ARM: DTS: am33xx: Use the new DT bindings for the eDMA3

Message ID 1449225915-28879-1-git-send-email-peter.ujfalusi@ti.com (mailing list archive)
State New, archived
Headers show

Commit Message

Peter Ujfalusi Dec. 4, 2015, 10:45 a.m. UTC
Switch to use the ti,edma3-tpcc and ti,edma3-tptc binding for the eDMA3 and
enable the DMA even crossbar with ti,am335x-edma-crossbar.
With the new bindings boards can customize and tweak the DMA channel
priority to match their needs. With the new binding the memcpy is safe
to be used since with the old binding it was not possible for a driver
to know which channel is allowed to be used as non HW triggered channel.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
---
 arch/arm/boot/dts/am335x-evm.dts    |  9 +---
 arch/arm/boot/dts/am335x-pepper.dts | 11 +----
 arch/arm/boot/dts/am33xx.dtsi       | 94 ++++++++++++++++++++++++++-----------
 3 files changed, 71 insertions(+), 43 deletions(-)

Comments

Felipe Balbi Dec. 4, 2015, 5:21 p.m. UTC | #1
Hi,

Peter Ujfalusi <peter.ujfalusi@ti.com> writes:
> @@ -174,12 +182,44 @@
>  		};
>  
>  		edma: edma@49000000 {
> -			compatible = "ti,edma3";
> -			ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
> -			reg =	<0x49000000 0x10000>,
> -				<0x44e10f90 0x40>;
> +			compatible = "ti,edma3-tpcc";
> +			ti,hwmods = "tpcc";
> +			reg =	<0x49000000 0x10000>;
> +			reg-names = "edma3_cc";
>  			interrupts = <12 13 14>;
> -			#dma-cells = <1>;
> +			interrupt-names = "edma3_ccint", "emda3_mperr",
> +					  "edma3_ccerrint";
> +			dma-requests = <64>;
> +			#dma-cells = <2>;
> +
> +			ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
> +				   <&edma_tptc2 0>;
> +
> +			ti,edma-memcpy-channels = /bits/ 16 <20 21>;

can you explain this property here ? Are you setting bits 20 and 21 on a
16-bit field ?
Tony Lindgren Dec. 4, 2015, 6:47 p.m. UTC | #2
* Felipe Balbi <balbi@ti.com> [151204 09:23]:
> 
> Hi,
> 
> Peter Ujfalusi <peter.ujfalusi@ti.com> writes:
> > @@ -174,12 +182,44 @@
> >  		};
> >  
> >  		edma: edma@49000000 {
> > -			compatible = "ti,edma3";
> > -			ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
> > -			reg =	<0x49000000 0x10000>,
> > -				<0x44e10f90 0x40>;
> > +			compatible = "ti,edma3-tpcc";
> > +			ti,hwmods = "tpcc";
> > +			reg =	<0x49000000 0x10000>;
> > +			reg-names = "edma3_cc";
> >  			interrupts = <12 13 14>;
> > -			#dma-cells = <1>;
> > +			interrupt-names = "edma3_ccint", "emda3_mperr",
> > +					  "edma3_ccerrint";
> > +			dma-requests = <64>;
> > +			#dma-cells = <2>;
> > +
> > +			ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
> > +				   <&edma_tptc2 0>;
> > +
> > +			ti,edma-memcpy-channels = /bits/ 16 <20 21>;
> 
> can you explain this property here ? Are you setting bits 20 and 21 on a
> 16-bit field ?

I think it's an arry of u16 dma channels.. But could it be just /bits/ 8
instead of /bits/ 16?

Regards,

Tony
Arnd Bergmann Dec. 4, 2015, 9:36 p.m. UTC | #3
On Friday 04 December 2015 10:47:07 Tony Lindgren wrote:
> > Peter Ujfalusi <peter.ujfalusi@ti.com> writes:
> > > @@ -174,12 +182,44 @@
> > >             };
> > >  
> > >             edma: edma@49000000 {
> > > -                   compatible = "ti,edma3";
> > > -                   ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
> > > -                   reg =   <0x49000000 0x10000>,
> > > -                           <0x44e10f90 0x40>;
> > > +                   compatible = "ti,edma3-tpcc";
> > > +                   ti,hwmods = "tpcc";
> > > +                   reg =   <0x49000000 0x10000>;
> > > +                   reg-names = "edma3_cc";
> > >                     interrupts = <12 13 14>;
> > > -                   #dma-cells = <1>;
> > > +                   interrupt-names = "edma3_ccint", "emda3_mperr",
> > > +                                     "edma3_ccerrint";
> > > +                   dma-requests = <64>;
> > > +                   #dma-cells = <2>;
> > > +
> > > +                   ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
> > > +                              <&edma_tptc2 0>;
> > > +
> > > +                   ti,edma-memcpy-channels = /bits/ 16 <20 21>;
> > 
> > can you explain this property here ? Are you setting bits 20 and 21 on a
> > 16-bit field ?
> 
> I think it's an arry of u16 dma channels.. But could it be just /bits/ 8
> instead of /bits/ 16?
> 

Please just drop the /bits/ 16 and use normal cells.

	Arnd
Tony Lindgren Dec. 4, 2015, 9:51 p.m. UTC | #4
* Arnd Bergmann <arnd@arndb.de> [151204 13:38]:
> On Friday 04 December 2015 10:47:07 Tony Lindgren wrote:
> > > Peter Ujfalusi <peter.ujfalusi@ti.com> writes:
> > > > @@ -174,12 +182,44 @@
> > > >             };
> > > >  
> > > >             edma: edma@49000000 {
> > > > -                   compatible = "ti,edma3";
> > > > -                   ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
> > > > -                   reg =   <0x49000000 0x10000>,
> > > > -                           <0x44e10f90 0x40>;
> > > > +                   compatible = "ti,edma3-tpcc";
> > > > +                   ti,hwmods = "tpcc";
> > > > +                   reg =   <0x49000000 0x10000>;
> > > > +                   reg-names = "edma3_cc";
> > > >                     interrupts = <12 13 14>;
> > > > -                   #dma-cells = <1>;
> > > > +                   interrupt-names = "edma3_ccint", "emda3_mperr",
> > > > +                                     "edma3_ccerrint";
> > > > +                   dma-requests = <64>;
> > > > +                   #dma-cells = <2>;
> > > > +
> > > > +                   ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
> > > > +                              <&edma_tptc2 0>;
> > > > +
> > > > +                   ti,edma-memcpy-channels = /bits/ 16 <20 21>;
> > > 
> > > can you explain this property here ? Are you setting bits 20 and 21 on a
> > > 16-bit field ?
> > 
> > I think it's an arry of u16 dma channels.. But could it be just /bits/ 8
> > instead of /bits/ 16?
> > 
> 
> Please just drop the /bits/ 16 and use normal cells.

Yeah agreed, makes things less confusing for sure :)

Tony
Tony Lindgren Dec. 8, 2015, 12:19 a.m. UTC | #5
* Peter Ujfalusi <peter.ujfalusi@ti.com> [151204 02:46]:
> +
> +			ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
> +				   <&edma_tptc2 0>;
> +
> +			ti,edma-memcpy-channels = /bits/ 16 <20 21>;

Is this safe to change to just ti,edma-memcpy-channels = <20 21> as
suggested by Arnd?

Regards,

Tony
Peter Ujfalusi Dec. 8, 2015, 7:42 a.m. UTC | #6
On 12/04/2015 11:51 PM, Tony Lindgren wrote:
> * Arnd Bergmann <arnd@arndb.de> [151204 13:38]:
>> On Friday 04 December 2015 10:47:07 Tony Lindgren wrote:
>>>> Peter Ujfalusi <peter.ujfalusi@ti.com> writes:
>>>>> @@ -174,12 +182,44 @@
>>>>>             };
>>>>>  
>>>>>             edma: edma@49000000 {
>>>>> -                   compatible = "ti,edma3";
>>>>> -                   ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
>>>>> -                   reg =   <0x49000000 0x10000>,
>>>>> -                           <0x44e10f90 0x40>;
>>>>> +                   compatible = "ti,edma3-tpcc";
>>>>> +                   ti,hwmods = "tpcc";
>>>>> +                   reg =   <0x49000000 0x10000>;
>>>>> +                   reg-names = "edma3_cc";
>>>>>                     interrupts = <12 13 14>;
>>>>> -                   #dma-cells = <1>;
>>>>> +                   interrupt-names = "edma3_ccint", "emda3_mperr",
>>>>> +                                     "edma3_ccerrint";
>>>>> +                   dma-requests = <64>;
>>>>> +                   #dma-cells = <2>;
>>>>> +
>>>>> +                   ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
>>>>> +                              <&edma_tptc2 0>;
>>>>> +
>>>>> +                   ti,edma-memcpy-channels = /bits/ 16 <20 21>;
>>>>
>>>> can you explain this property here ? Are you setting bits 20 and 21 on a
>>>> 16-bit field ?
>>>
>>> I think it's an arry of u16 dma channels.. But could it be just /bits/ 8
>>> instead of /bits/ 16?
>>>
>>
>> Please just drop the /bits/ 16 and use normal cells.
> 
> Yeah agreed, makes things less confusing for sure :)

4.4 will be the first kernel where we will have the new eDMA bindings. I have
chosen to use 16bit array for specifying the channels used for memcpy
(ti,edma-memcpy-channels) and for the reserving paRAM slots
(ti,edma-reserved-slot-ranges). As of now we have maximum of 64 channels and
512 paRAM slots. 16bit is more than enough to store this information and it
even gives us enough room if ever in the future these numbers are going to
increase (which  they are not).

But in order to change them to 32bit the driver needs to be changed as well.
Currently we do not have drivers (in 4.4) using the new bindings, 4.4 is not
yet out, so it might be possible to change the binding document and the driver
to use 32bit arrays. The driver internally uses 16bit type for these which I'm
not going to change, but the code parsing the DT needs to be adjusted for the
new data type.

If Vinod is willing to take update for the DT binding of eDMA for 4.4-rc, I
can cook up the patch(es) to do so.
Peter Ujfalusi Dec. 8, 2015, 7:43 a.m. UTC | #7
On 12/08/2015 02:19 AM, Tony Lindgren wrote:
> * Peter Ujfalusi <peter.ujfalusi@ti.com> [151204 02:46]:
>> +
>> +			ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
>> +				   <&edma_tptc2 0>;
>> +
>> +			ti,edma-memcpy-channels = /bits/ 16 <20 21>;
> 
> Is this safe to change to just ti,edma-memcpy-channels = <20 21> as
> suggested by Arnd?

The binding document for the eDMA and the driver also needs update to be able
to handle this change.
Arnd Bergmann Dec. 8, 2015, 9:51 a.m. UTC | #8
On Tuesday 08 December 2015 09:42:26 Peter Ujfalusi wrote:
> On 12/04/2015 11:51 PM, Tony Lindgren wrote:
> >>
> >> Please just drop the /bits/ 16 and use normal cells.
> > 
> > Yeah agreed, makes things less confusing for sure 
> 
> 4.4 will be the first kernel where we will have the new eDMA bindings. I have
> chosen to use 16bit array for specifying the channels used for memcpy
> (ti,edma-memcpy-channels) and for the reserving paRAM slots
> (ti,edma-reserved-slot-ranges). As of now we have maximum of 64 channels and
> 512 paRAM slots. 16bit is more than enough to store this information and it
> even gives us enough room if ever in the future these numbers are going to
> increase (which  they are not).
> 
> But in order to change them to 32bit the driver needs to be changed as well.
> Currently we do not have drivers (in 4.4) using the new bindings, 4.4 is not
> yet out, so it might be possible to change the binding document and the driver
> to use 32bit arrays. The driver internally uses 16bit type for these which I'm
> not going to change, but the code parsing the DT needs to be adjusted for the
> new data type.
> 
> If Vinod is willing to take update for the DT binding of eDMA for 4.4-rc, I
> can cook up the patch(es) to do so.

I hadn't realized that it was already in 4.4-rc. The change should be trivial
enough though, so I'd still do it. If Vinod would rather not change it now,
it's not overly important though.

	Arnd
Peter Ujfalusi Dec. 8, 2015, 10:22 a.m. UTC | #9
On 12/08/2015 11:51 AM, Arnd Bergmann wrote:
> On Tuesday 08 December 2015 09:42:26 Peter Ujfalusi wrote:
>> On 12/04/2015 11:51 PM, Tony Lindgren wrote:
>>>>
>>>> Please just drop the /bits/ 16 and use normal cells.
>>>
>>> Yeah agreed, makes things less confusing for sure 
>>
>> 4.4 will be the first kernel where we will have the new eDMA bindings. I have
>> chosen to use 16bit array for specifying the channels used for memcpy
>> (ti,edma-memcpy-channels) and for the reserving paRAM slots
>> (ti,edma-reserved-slot-ranges). As of now we have maximum of 64 channels and
>> 512 paRAM slots. 16bit is more than enough to store this information and it
>> even gives us enough room if ever in the future these numbers are going to
>> increase (which  they are not).
>>
>> But in order to change them to 32bit the driver needs to be changed as well.
>> Currently we do not have drivers (in 4.4) using the new bindings, 4.4 is not
>> yet out, so it might be possible to change the binding document and the driver
>> to use 32bit arrays. The driver internally uses 16bit type for these which I'm
>> not going to change, but the code parsing the DT needs to be adjusted for the
>> new data type.
>>
>> If Vinod is willing to take update for the DT binding of eDMA for 4.4-rc, I
>> can cook up the patch(es) to do so.
> 
> I hadn't realized that it was already in 4.4-rc. The change should be trivial
> enough though, so I'd still do it. If Vinod would rather not change it now,
> it's not overly important though.

But this change must be done before we have actual users of these properties,
which is the am33xx, am437x and the da850 conversion series I have sent recently.
We might want to have this changed for 4.4 since it is going to be an LTS
release...
Arnd Bergmann Dec. 8, 2015, 10:25 a.m. UTC | #10
On Tuesday 08 December 2015 12:22:09 Peter Ujfalusi wrote:
> On 12/08/2015 11:51 AM, Arnd Bergmann wrote:
> > On Tuesday 08 December 2015 09:42:26 Peter Ujfalusi wrote:
> >> On 12/04/2015 11:51 PM, Tony Lindgren wrote:
> >>>>
> >>>> Please just drop the /bits/ 16 and use normal cells.
> >>>
> >>> Yeah agreed, makes things less confusing for sure 
> >>
> >> 4.4 will be the first kernel where we will have the new eDMA bindings. I have
> >> chosen to use 16bit array for specifying the channels used for memcpy
> >> (ti,edma-memcpy-channels) and for the reserving paRAM slots
> >> (ti,edma-reserved-slot-ranges). As of now we have maximum of 64 channels and
> >> 512 paRAM slots. 16bit is more than enough to store this information and it
> >> even gives us enough room if ever in the future these numbers are going to
> >> increase (which  they are not).
> >>
> >> But in order to change them to 32bit the driver needs to be changed as well.
> >> Currently we do not have drivers (in 4.4) using the new bindings, 4.4 is not
> >> yet out, so it might be possible to change the binding document and the driver
> >> to use 32bit arrays. The driver internally uses 16bit type for these which I'm
> >> not going to change, but the code parsing the DT needs to be adjusted for the
> >> new data type.
> >>
> >> If Vinod is willing to take update for the DT binding of eDMA for 4.4-rc, I
> >> can cook up the patch(es) to do so.
> > 
> > I hadn't realized that it was already in 4.4-rc. The change should be trivial
> > enough though, so I'd still do it. If Vinod would rather not change it now,
> > it's not overly important though.
> 
> But this change must be done before we have actual users of these properties,
> which is the am33xx, am437x and the da850 conversion series I have sent recently.
> We might want to have this changed for 4.4 since it is going to be an LTS
> release...

Yes, that's what I meant: We either get the patch into 4.4 by creating a
branch for Vinod to pull with this change, and base all other changes in your
4.5 series on the same branch, or we don't change it at all.

	Arnd
Tony Lindgren Dec. 8, 2015, 3:51 p.m. UTC | #11
* Arnd Bergmann <arnd@arndb.de> [151208 02:26]:
> On Tuesday 08 December 2015 12:22:09 Peter Ujfalusi wrote:
> > On 12/08/2015 11:51 AM, Arnd Bergmann wrote:
> > > On Tuesday 08 December 2015 09:42:26 Peter Ujfalusi wrote:
> > >> On 12/04/2015 11:51 PM, Tony Lindgren wrote:
> > >>>>
> > >>>> Please just drop the /bits/ 16 and use normal cells.
> > >>>
> > >>> Yeah agreed, makes things less confusing for sure 
> > >>
> > >> 4.4 will be the first kernel where we will have the new eDMA bindings. I have
> > >> chosen to use 16bit array for specifying the channels used for memcpy
> > >> (ti,edma-memcpy-channels) and for the reserving paRAM slots
> > >> (ti,edma-reserved-slot-ranges). As of now we have maximum of 64 channels and
> > >> 512 paRAM slots. 16bit is more than enough to store this information and it
> > >> even gives us enough room if ever in the future these numbers are going to
> > >> increase (which  they are not).
> > >>
> > >> But in order to change them to 32bit the driver needs to be changed as well.
> > >> Currently we do not have drivers (in 4.4) using the new bindings, 4.4 is not
> > >> yet out, so it might be possible to change the binding document and the driver
> > >> to use 32bit arrays. The driver internally uses 16bit type for these which I'm
> > >> not going to change, but the code parsing the DT needs to be adjusted for the
> > >> new data type.
> > >>
> > >> If Vinod is willing to take update for the DT binding of eDMA for 4.4-rc, I
> > >> can cook up the patch(es) to do so.
> > > 
> > > I hadn't realized that it was already in 4.4-rc. The change should be trivial
> > > enough though, so I'd still do it. If Vinod would rather not change it now,
> > > it's not overly important though.
> > 
> > But this change must be done before we have actual users of these properties,
> > which is the am33xx, am437x and the da850 conversion series I have sent recently.
> > We might want to have this changed for 4.4 since it is going to be an LTS
> > release...
> 
> Yes, that's what I meant: We either get the patch into 4.4 by creating a
> branch for Vinod to pull with this change, and base all other changes in your
> 4.5 series on the same branch, or we don't change it at all.

Sounds good to me. If there's an immutable branch against v4.4-rc1 with just
that change in it will make our lives easier.

Regards,

Tony
diff mbox

Patch

diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
index 4caf074063fe..a55072fb6646 100644
--- a/arch/arm/boot/dts/am335x-evm.dts
+++ b/arch/arm/boot/dts/am335x-evm.dts
@@ -743,8 +743,8 @@ 
 &mmc3 {
 	/* these are on the crossbar and are outlined in the
 	   xbar-event-map element */
-	dmas = <&edma 12
-		&edma 13>;
+	dmas = <&edma_xbar 12 0 1
+		&edma_xbar 13 0 2>;
 	dma-names = "tx", "rx";
 	status = "okay";
 	vmmc-supply = <&wlan_en_reg>;
@@ -766,11 +766,6 @@ 
 	};
 };
 
-&edma {
-	ti,edma-xbar-event-map = /bits/ 16 <1 12
-					    2 13>;
-};
-
 &sham {
 	status = "okay";
 };
diff --git a/arch/arm/boot/dts/am335x-pepper.dts b/arch/arm/boot/dts/am335x-pepper.dts
index 9cb77a120319..4dd4f71498e5 100644
--- a/arch/arm/boot/dts/am335x-pepper.dts
+++ b/arch/arm/boot/dts/am335x-pepper.dts
@@ -339,13 +339,6 @@ 
 	ti,non-removable;
 };
 
-&edma {
-	/* Map eDMA MMC2 Events from Crossbar */
-	ti,edma-xbar-event-map = /bits/ 16 <1 12
-                                            2 13>;
-};
-
-
 &mmc3 {
 	/* Wifi & Bluetooth on MMC #3 */
 	status = "okay";
@@ -354,8 +347,8 @@ 
 	vmmmc-supply = <&v3v3c_reg>;
 	bus-width = <4>;
 	ti,non-removable;
-	dmas = <&edma 12
-		&edma 13>;
+	dmas = <&edma_xbar 12 0 1
+		&edma_xbar 13 0 2>;
 	dma-names = "tx", "rx";
 };
 
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index 9b8861891bf0..9d414ed31e99 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -161,6 +161,14 @@ 
 					mboxes = <&mailbox &mbox_wkupm3>;
 				};
 
+				edma_xbar: dma-router@f90 {
+					compatible = "ti,am335x-edma-crossbar";
+					reg = <0xf90 0x40>;
+					#dma-cells = <3>;
+					dma-requests = <32>;
+					dma-masters = <&edma>;
+				};
+
 				scm_clockdomains: clockdomains {
 				};
 			};
@@ -174,12 +182,44 @@ 
 		};
 
 		edma: edma@49000000 {
-			compatible = "ti,edma3";
-			ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
-			reg =	<0x49000000 0x10000>,
-				<0x44e10f90 0x40>;
+			compatible = "ti,edma3-tpcc";
+			ti,hwmods = "tpcc";
+			reg =	<0x49000000 0x10000>;
+			reg-names = "edma3_cc";
 			interrupts = <12 13 14>;
-			#dma-cells = <1>;
+			interrupt-names = "edma3_ccint", "emda3_mperr",
+					  "edma3_ccerrint";
+			dma-requests = <64>;
+			#dma-cells = <2>;
+
+			ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
+				   <&edma_tptc2 0>;
+
+			ti,edma-memcpy-channels = /bits/ 16 <20 21>;
+		};
+
+		edma_tptc0: tptc@49800000 {
+			compatible = "ti,edma3-tptc";
+			ti,hwmods = "tptc0";
+			reg =	<0x49800000 0x100000>;
+			interrupts = <112>;
+			interrupt-names = "edma3_tcerrint";
+		};
+
+		edma_tptc1: tptc@49900000 {
+			compatible = "ti,edma3-tptc";
+			ti,hwmods = "tptc1";
+			reg =	<0x49900000 0x100000>;
+			interrupts = <113>;
+			interrupt-names = "edma3_tcerrint";
+		};
+
+		edma_tptc2: tptc@49a00000 {
+			compatible = "ti,edma3-tptc";
+			ti,hwmods = "tptc2";
+			reg =	<0x49a00000 0x100000>;
+			interrupts = <114>;
+			interrupt-names = "edma3_tcerrint";
 		};
 
 		gpio0: gpio@44e07000 {
@@ -233,7 +273,7 @@ 
 			reg = <0x44e09000 0x2000>;
 			interrupts = <72>;
 			status = "disabled";
-			dmas = <&edma 26>, <&edma 27>;
+			dmas = <&edma 26 0>, <&edma 27 0>;
 			dma-names = "tx", "rx";
 		};
 
@@ -244,7 +284,7 @@ 
 			reg = <0x48022000 0x2000>;
 			interrupts = <73>;
 			status = "disabled";
-			dmas = <&edma 28>, <&edma 29>;
+			dmas = <&edma 28 0>, <&edma 29 0>;
 			dma-names = "tx", "rx";
 		};
 
@@ -255,7 +295,7 @@ 
 			reg = <0x48024000 0x2000>;
 			interrupts = <74>;
 			status = "disabled";
-			dmas = <&edma 30>, <&edma 31>;
+			dmas = <&edma 30 0>, <&edma 31 0>;
 			dma-names = "tx", "rx";
 		};
 
@@ -322,8 +362,8 @@ 
 			ti,dual-volt;
 			ti,needs-special-reset;
 			ti,needs-special-hs-handling;
-			dmas = <&edma 24
-				&edma 25>;
+			dmas = <&edma_xbar 24 0 0
+				&edma_xbar 25 0 0>;
 			dma-names = "tx", "rx";
 			interrupts = <64>;
 			interrupt-parent = <&intc>;
@@ -335,8 +375,8 @@ 
 			compatible = "ti,omap4-hsmmc";
 			ti,hwmods = "mmc2";
 			ti,needs-special-reset;
-			dmas = <&edma 2
-				&edma 3>;
+			dmas = <&edma 2 0
+				&edma 3 0>;
 			dma-names = "tx", "rx";
 			interrupts = <28>;
 			interrupt-parent = <&intc>;
@@ -474,10 +514,10 @@ 
 			interrupts = <65>;
 			ti,spi-num-cs = <2>;
 			ti,hwmods = "spi0";
-			dmas = <&edma 16
-				&edma 17
-				&edma 18
-				&edma 19>;
+			dmas = <&edma 16 0
+				&edma 17 0
+				&edma 18 0
+				&edma 19 0>;
 			dma-names = "tx0", "rx0", "tx1", "rx1";
 			status = "disabled";
 		};
@@ -490,10 +530,10 @@ 
 			interrupts = <125>;
 			ti,spi-num-cs = <2>;
 			ti,hwmods = "spi1";
-			dmas = <&edma 42
-				&edma 43
-				&edma 44
-				&edma 45>;
+			dmas = <&edma 42 0
+				&edma 43 0
+				&edma 44 0
+				&edma 45 0>;
 			dma-names = "tx0", "rx0", "tx1", "rx1";
 			status = "disabled";
 		};
@@ -833,7 +873,7 @@ 
 			ti,hwmods = "sham";
 			reg = <0x53100000 0x200>;
 			interrupts = <109>;
-			dmas = <&edma 36>;
+			dmas = <&edma 36 0>;
 			dma-names = "rx";
 		};
 
@@ -842,8 +882,8 @@ 
 			ti,hwmods = "aes";
 			reg = <0x53500000 0xa0>;
 			interrupts = <103>;
-			dmas = <&edma 6>,
-			       <&edma 5>;
+			dmas = <&edma 6 0>,
+			       <&edma 5 0>;
 			dma-names = "tx", "rx";
 		};
 
@@ -856,8 +896,8 @@ 
 			interrupts = <80>, <81>;
 			interrupt-names = "tx", "rx";
 			status = "disabled";
-			dmas = <&edma 8>,
-				<&edma 9>;
+			dmas = <&edma 8 2>,
+				<&edma 9 2>;
 			dma-names = "tx", "rx";
 		};
 
@@ -870,8 +910,8 @@ 
 			interrupts = <82>, <83>;
 			interrupt-names = "tx", "rx";
 			status = "disabled";
-			dmas = <&edma 10>,
-				<&edma 11>;
+			dmas = <&edma 10 2>,
+				<&edma 11 2>;
 			dma-names = "tx", "rx";
 		};