* Re: [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-10-25 21:06 Bruno Herrera [not found] ` <CAF3+Tqd2MGmz+8XhLXhaZiEc78QOwHSpVrQA65-p1AcfT+_xgg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 0 siblings, 1 reply; 32+ messages in thread From: Bruno Herrera @ 2016-10-25 21:06 UTC (permalink / raw) To: alexandre.torgue-qxv4g6HH51o Cc: Maxime Coquelin, arnd-r2nGTMty4D4, >, mark.rutland-5wv7dgnIgG8, linux-I+IVW8TIWO2tmTQ+vhA3Yw, >, lee.jones-QSEj5FYQhm4dnm+yROfE0A, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree-u79uwXL29TY76Z2rM5mHXA Hi Alexandre, > > stm32f469-disco and stm32f429-eval boards use SDRAM start address remapping > (to @0) to boost performances. A DMA translation through "dma-ranges" > property was needed for other masters than the M4 CPU. > stm32f429-disco doesn't use remapping so doesn't need this DMA translation. > This patches moves this DMA translation definition from stm32f429 soc file > to board files. > > Signed-off-by: Alexandre TORGUE <alexandre.torgue-qxv4g6HH51o@public.gmane.org> > > diff --git a/arch/arm/boot/dts/stm32429i-eval.dts b/arch/arm/boot/dts/stm32429i-eval.dts > index 13c7cd2..a763c15 100644 > --- a/arch/arm/boot/dts/stm32429i-eval.dts > +++ b/arch/arm/boot/dts/stm32429i-eval.dts > @@ -82,6 +82,10 @@ > }; > }; > > + soc { > + dma-ranges = <0xc0000000 0x0 0x10000000>; > + }; > + > usbotg_hs_phy: usbphy { > #phy-cells = <0>; > compatible = "usb-nop-xceiv"; Shouldn't also the peripheral dma-ranges property move to board specific too? I had this patch for while but I didn't had the time to submit: Author: Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Date: Sun Oct 16 14:50:00 2016 -0200 ARM: DT: STM32: Use dma-ranges property per board not at dtsi file diff --git a/arch/arm/boot/dts/stm32429i-eval.dts b/arch/arm/boot/dts/stm32429i-eval.dts index 6bfc595..2a22a82 100644 --- a/arch/arm/boot/dts/stm32429i-eval.dts +++ b/arch/arm/boot/dts/stm32429i-eval.dts @@ -52,6 +52,10 @@ model = "STMicroelectronics STM32429i-EVAL board"; compatible = "st,stm32429i-eval", "st,stm32f429"; + soc { + dma-ranges = <0xC0000000 0x0 0x10000000>; + }; + chosen { bootargs = "root=/dev/ram rdinit=/linuxrc"; stdout-path = "serial0:115200n8"; @@ -96,6 +100,7 @@ ðernet0 { status = "okay"; + dma-ranges; pinctrl-0 = <ðernet0_mii>; pinctrl-names = "default"; phy-mode = "mii-id"; @@ -116,6 +121,7 @@ }; &usbotg_hs { + dma-ranges; dr_mode = "host"; phys = <&usbotg_hs_phy>; phy-names = "usb2-phy"; diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi index 7d624a2..697a133 100644 --- a/arch/arm/boot/dts/stm32f429.dtsi +++ b/arch/arm/boot/dts/stm32f429.dtsi @@ -59,7 +59,6 @@ }; soc { - dma-ranges = <0xc0000000 0x0 0x10000000>; timer2: timer@40000000 { compatible = "st,stm32-timer"; @@ -472,13 +471,11 @@ st,syscon = <&syscfg 0x4>; snps,pbl = <8>; snps,mixed-burst; - dma-ranges; status = "disabled"; }; usbotg_hs: usb@40040000 { compatible = "snps,dwc2"; - dma-ranges; reg = <0x40040000 0x40000>; interrupts = <77>; clocks = <&rcc 0 29>; > diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi > index 0596d60..3a1cfdd 100644 > --- a/arch/arm/boot/dts/stm32f429.dtsi > +++ b/arch/arm/boot/dts/stm32f429.dtsi > @@ -59,8 +59,6 @@ > }; > > soc { > - dma-ranges = <0xc0000000 0x0 0x10000000>; > - > timer2: timer@40000000 { > compatible = "st,stm32-timer"; > reg = <0x40000000 0x400>; > diff --git a/arch/arm/boot/dts/stm32f469-disco.dts b/arch/arm/boot/dts/stm32f469-disco.dts > index 9e73656..c2213c0 100644 > --- a/arch/arm/boot/dts/stm32f469-disco.dts > +++ b/arch/arm/boot/dts/stm32f469-disco.dts > @@ -64,6 +64,10 @@ > aliases { > serial0 = &usart3; > }; > + > + soc { > + dma-ranges = <0xc0000000 0x0 0x10000000>; > + }; > }; > > &clk_hse { > -- Br., Bruno -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 32+ messages in thread
[parent not found: <CAF3+Tqd2MGmz+8XhLXhaZiEc78QOwHSpVrQA65-p1AcfT+_xgg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-10-25 21:06 [PATCH] ARM: DT: stm32: move dma translation to board files Bruno Herrera @ 2016-10-26 9:09 ` Alexandre Torgue 0 siblings, 0 replies; 32+ messages in thread From: Alexandre Torgue @ 2016-10-26 9:09 UTC (permalink / raw) To: Bruno Herrera Cc: Maxime Coquelin, arnd-r2nGTMty4D4, >, mark.rutland-5wv7dgnIgG8, linux-I+IVW8TIWO2tmTQ+vhA3Yw, >, lee.jones-QSEj5FYQhm4dnm+yROfE0A, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree-u79uwXL29TY76Z2rM5mHXA Hi Bruno, On 10/25/2016 11:06 PM, Bruno Herrera wrote: > Hi Alexandre, > >> >> stm32f469-disco and stm32f429-eval boards use SDRAM start address remapping >> (to @0) to boost performances. A DMA translation through "dma-ranges" >> property was needed for other masters than the M4 CPU. >> stm32f429-disco doesn't use remapping so doesn't need this DMA translation. >> This patches moves this DMA translation definition from stm32f429 soc file >> to board files. >> >> Signed-off-by: Alexandre TORGUE <alexandre.torgue-qxv4g6HH51o@public.gmane.org> >> >> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts b/arch/arm/boot/dts/stm32429i-eval.dts >> index 13c7cd2..a763c15 100644 >> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> @@ -82,6 +82,10 @@ >> }; >> }; >> >> + soc { >> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> + }; >> + >> usbotg_hs_phy: usbphy { >> #phy-cells = <0>; >> compatible = "usb-nop-xceiv"; > > Shouldn't also the peripheral dma-ranges property move to board specific too? > I had this patch for while but I didn't had the time to submit: Well spot I forgot it. Actually, discussing with Arnd ysterday on IIRC, empty dma-ranges is not needed. Can you test on your side by removing dma-ranges in usb node please ? I will push a v2 by removing empty dma-ranges if tests are ok in your side. Thanks in advance Alex > > Author: Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > Date: Sun Oct 16 14:50:00 2016 -0200 > > ARM: DT: STM32: Use dma-ranges property per board not at dtsi file > > diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > b/arch/arm/boot/dts/stm32429i-eval.dts > index 6bfc595..2a22a82 100644 > --- a/arch/arm/boot/dts/stm32429i-eval.dts > +++ b/arch/arm/boot/dts/stm32429i-eval.dts > @@ -52,6 +52,10 @@ > model = "STMicroelectronics STM32429i-EVAL board"; > compatible = "st,stm32429i-eval", "st,stm32f429"; > > + soc { > + dma-ranges = <0xC0000000 0x0 0x10000000>; > + }; > + > chosen { > bootargs = "root=/dev/ram rdinit=/linuxrc"; > stdout-path = "serial0:115200n8"; > @@ -96,6 +100,7 @@ > > ðernet0 { > status = "okay"; > + dma-ranges; > pinctrl-0 = <ðernet0_mii>; > pinctrl-names = "default"; > phy-mode = "mii-id"; > @@ -116,6 +121,7 @@ > }; > > &usbotg_hs { > + dma-ranges; > dr_mode = "host"; > phys = <&usbotg_hs_phy>; > phy-names = "usb2-phy"; > diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi > index 7d624a2..697a133 100644 > --- a/arch/arm/boot/dts/stm32f429.dtsi > +++ b/arch/arm/boot/dts/stm32f429.dtsi > @@ -59,7 +59,6 @@ > }; > > soc { > - dma-ranges = <0xc0000000 0x0 0x10000000>; > > timer2: timer@40000000 { > compatible = "st,stm32-timer"; > @@ -472,13 +471,11 @@ > st,syscon = <&syscfg 0x4>; > snps,pbl = <8>; > snps,mixed-burst; > - dma-ranges; > status = "disabled"; > }; > > usbotg_hs: usb@40040000 { > compatible = "snps,dwc2"; > - dma-ranges; > reg = <0x40040000 0x40000>; > interrupts = <77>; > clocks = <&rcc 0 29>; > > >> diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi >> index 0596d60..3a1cfdd 100644 >> --- a/arch/arm/boot/dts/stm32f429.dtsi >> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> @@ -59,8 +59,6 @@ >> }; >> >> soc { >> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> - >> timer2: timer@40000000 { >> compatible = "st,stm32-timer"; >> reg = <0x40000000 0x400>; >> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts b/arch/arm/boot/dts/stm32f469-disco.dts >> index 9e73656..c2213c0 100644 >> --- a/arch/arm/boot/dts/stm32f469-disco.dts >> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >> @@ -64,6 +64,10 @@ >> aliases { >> serial0 = &usart3; >> }; >> + >> + soc { >> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> + }; >> }; >> >> &clk_hse { >> -- > > > Br., > Bruno > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-10-26 9:09 ` Alexandre Torgue 0 siblings, 0 replies; 32+ messages in thread From: Alexandre Torgue @ 2016-10-26 9:09 UTC (permalink / raw) To: linux-arm-kernel Hi Bruno, On 10/25/2016 11:06 PM, Bruno Herrera wrote: > Hi Alexandre, > >> >> stm32f469-disco and stm32f429-eval boards use SDRAM start address remapping >> (to @0) to boost performances. A DMA translation through "dma-ranges" >> property was needed for other masters than the M4 CPU. >> stm32f429-disco doesn't use remapping so doesn't need this DMA translation. >> This patches moves this DMA translation definition from stm32f429 soc file >> to board files. >> >> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> >> >> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts b/arch/arm/boot/dts/stm32429i-eval.dts >> index 13c7cd2..a763c15 100644 >> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> @@ -82,6 +82,10 @@ >> }; >> }; >> >> + soc { >> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> + }; >> + >> usbotg_hs_phy: usbphy { >> #phy-cells = <0>; >> compatible = "usb-nop-xceiv"; > > Shouldn't also the peripheral dma-ranges property move to board specific too? > I had this patch for while but I didn't had the time to submit: Well spot I forgot it. Actually, discussing with Arnd ysterday on IIRC, empty dma-ranges is not needed. Can you test on your side by removing dma-ranges in usb node please ? I will push a v2 by removing empty dma-ranges if tests are ok in your side. Thanks in advance Alex > > Author: Bruno Herrera <bruherrera@gmail.com> > Date: Sun Oct 16 14:50:00 2016 -0200 > > ARM: DT: STM32: Use dma-ranges property per board not at dtsi file > > diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > b/arch/arm/boot/dts/stm32429i-eval.dts > index 6bfc595..2a22a82 100644 > --- a/arch/arm/boot/dts/stm32429i-eval.dts > +++ b/arch/arm/boot/dts/stm32429i-eval.dts > @@ -52,6 +52,10 @@ > model = "STMicroelectronics STM32429i-EVAL board"; > compatible = "st,stm32429i-eval", "st,stm32f429"; > > + soc { > + dma-ranges = <0xC0000000 0x0 0x10000000>; > + }; > + > chosen { > bootargs = "root=/dev/ram rdinit=/linuxrc"; > stdout-path = "serial0:115200n8"; > @@ -96,6 +100,7 @@ > > ðernet0 { > status = "okay"; > + dma-ranges; > pinctrl-0 = <ðernet0_mii>; > pinctrl-names = "default"; > phy-mode = "mii-id"; > @@ -116,6 +121,7 @@ > }; > > &usbotg_hs { > + dma-ranges; > dr_mode = "host"; > phys = <&usbotg_hs_phy>; > phy-names = "usb2-phy"; > diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi > index 7d624a2..697a133 100644 > --- a/arch/arm/boot/dts/stm32f429.dtsi > +++ b/arch/arm/boot/dts/stm32f429.dtsi > @@ -59,7 +59,6 @@ > }; > > soc { > - dma-ranges = <0xc0000000 0x0 0x10000000>; > > timer2: timer at 40000000 { > compatible = "st,stm32-timer"; > @@ -472,13 +471,11 @@ > st,syscon = <&syscfg 0x4>; > snps,pbl = <8>; > snps,mixed-burst; > - dma-ranges; > status = "disabled"; > }; > > usbotg_hs: usb at 40040000 { > compatible = "snps,dwc2"; > - dma-ranges; > reg = <0x40040000 0x40000>; > interrupts = <77>; > clocks = <&rcc 0 29>; > > >> diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi >> index 0596d60..3a1cfdd 100644 >> --- a/arch/arm/boot/dts/stm32f429.dtsi >> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> @@ -59,8 +59,6 @@ >> }; >> >> soc { >> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> - >> timer2: timer at 40000000 { >> compatible = "st,stm32-timer"; >> reg = <0x40000000 0x400>; >> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts b/arch/arm/boot/dts/stm32f469-disco.dts >> index 9e73656..c2213c0 100644 >> --- a/arch/arm/boot/dts/stm32f469-disco.dts >> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >> @@ -64,6 +64,10 @@ >> aliases { >> serial0 = &usart3; >> }; >> + >> + soc { >> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> + }; >> }; >> >> &clk_hse { >> -- > > > Br., > Bruno > ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-10-26 9:09 ` Alexandre Torgue @ 2016-10-27 10:43 ` Bruno Herrera -1 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-10-27 10:43 UTC (permalink / raw) To: Alexandre Torgue Cc: mark.rutland, devicetree, Arnd Bergmann, linux, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel Hi Alex, On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue <alexandre.torgue@st.com> wrote: > Hi Bruno, > > On 10/25/2016 11:06 PM, Bruno Herrera wrote: >> >> Hi Alexandre, >> >>> >>> stm32f469-disco and stm32f429-eval boards use SDRAM start address >>> remapping >>> (to @0) to boost performances. A DMA translation through "dma-ranges" >>> property was needed for other masters than the M4 CPU. >>> stm32f429-disco doesn't use remapping so doesn't need this DMA >>> translation. >>> This patches moves this DMA translation definition from stm32f429 soc >>> file >>> to board files. >>> >>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> >>> >>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>> b/arch/arm/boot/dts/stm32429i-eval.dts >>> index 13c7cd2..a763c15 100644 >>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>> @@ -82,6 +82,10 @@ >>> }; >>> }; >>> >>> + soc { >>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>> + }; >>> + >>> usbotg_hs_phy: usbphy { >>> #phy-cells = <0>; >>> compatible = "usb-nop-xceiv"; >> >> >> Shouldn't also the peripheral dma-ranges property move to board specific >> too? >> I had this patch for while but I didn't had the time to submit: > > > Well spot I forgot it. Actually, discussing with Arnd ysterday on IIRC, > empty dma-ranges is not needed. Can you test on your side by removing > dma-ranges in usb node please ? Unfortunately will take a time for me to set up this environment on the STM32F4-EVAL board. And on the discovery boards we dont have this scenario. That was the main reason I did not submit the patch right away. My conclusion and I might be wrong but is based on the my tests with SDIO device at STM32F469I-DISCO board. I started this issue as discussion at ST Forum but Maxime gave me the hint. https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 > I will push a v2 by removing empty dma-ranges if tests are ok in your side. >From my understating/conclusion is: when empty property(dma-ranges) is the device node, the mapping will be taken in consideration when using DMA otherwise the mapping is ignored. And in the SDIO case it is needed for DEV->MEM(SDRAM) and MEM(SDRAM)->DEV. If it is not the case for the devices in question so I suppose it can work without the property. > > Thanks in advance > Alex > > >> >> Author: Bruno Herrera <bruherrera@gmail.com> >> Date: Sun Oct 16 14:50:00 2016 -0200 >> >> ARM: DT: STM32: Use dma-ranges property per board not at dtsi file >> >> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> b/arch/arm/boot/dts/stm32429i-eval.dts >> index 6bfc595..2a22a82 100644 >> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> @@ -52,6 +52,10 @@ >> model = "STMicroelectronics STM32429i-EVAL board"; >> compatible = "st,stm32429i-eval", "st,stm32f429"; >> >> + soc { >> + dma-ranges = <0xC0000000 0x0 0x10000000>; >> + }; >> + >> chosen { >> bootargs = "root=/dev/ram rdinit=/linuxrc"; >> stdout-path = "serial0:115200n8"; >> @@ -96,6 +100,7 @@ >> >> ðernet0 { >> status = "okay"; >> + dma-ranges; >> pinctrl-0 = <ðernet0_mii>; >> pinctrl-names = "default"; >> phy-mode = "mii-id"; >> @@ -116,6 +121,7 @@ >> }; >> >> &usbotg_hs { >> + dma-ranges; >> dr_mode = "host"; >> phys = <&usbotg_hs_phy>; >> phy-names = "usb2-phy"; >> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> b/arch/arm/boot/dts/stm32f429.dtsi >> index 7d624a2..697a133 100644 >> --- a/arch/arm/boot/dts/stm32f429.dtsi >> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> @@ -59,7 +59,6 @@ >> }; >> >> soc { >> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> timer2: timer@40000000 { >> compatible = "st,stm32-timer"; >> @@ -472,13 +471,11 @@ >> st,syscon = <&syscfg 0x4>; >> snps,pbl = <8>; >> snps,mixed-burst; >> - dma-ranges; >> status = "disabled"; >> }; >> >> usbotg_hs: usb@40040000 { >> compatible = "snps,dwc2"; >> - dma-ranges; >> reg = <0x40040000 0x40000>; >> interrupts = <77>; >> clocks = <&rcc 0 29>; >> >> >>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>> b/arch/arm/boot/dts/stm32f429.dtsi >>> index 0596d60..3a1cfdd 100644 >>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>> @@ -59,8 +59,6 @@ >>> }; >>> >>> soc { >>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>> - >>> timer2: timer@40000000 { >>> compatible = "st,stm32-timer"; >>> reg = <0x40000000 0x400>; >>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >>> b/arch/arm/boot/dts/stm32f469-disco.dts >>> index 9e73656..c2213c0 100644 >>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >>> @@ -64,6 +64,10 @@ >>> aliases { >>> serial0 = &usart3; >>> }; >>> + >>> + soc { >>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>> + }; >>> }; >>> >>> &clk_hse { >>> -- >> >> >> >> Br., >> Bruno >> > ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-10-27 10:43 ` Bruno Herrera 0 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-10-27 10:43 UTC (permalink / raw) To: linux-arm-kernel Hi Alex, On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue <alexandre.torgue@st.com> wrote: > Hi Bruno, > > On 10/25/2016 11:06 PM, Bruno Herrera wrote: >> >> Hi Alexandre, >> >>> >>> stm32f469-disco and stm32f429-eval boards use SDRAM start address >>> remapping >>> (to @0) to boost performances. A DMA translation through "dma-ranges" >>> property was needed for other masters than the M4 CPU. >>> stm32f429-disco doesn't use remapping so doesn't need this DMA >>> translation. >>> This patches moves this DMA translation definition from stm32f429 soc >>> file >>> to board files. >>> >>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> >>> >>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>> b/arch/arm/boot/dts/stm32429i-eval.dts >>> index 13c7cd2..a763c15 100644 >>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>> @@ -82,6 +82,10 @@ >>> }; >>> }; >>> >>> + soc { >>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>> + }; >>> + >>> usbotg_hs_phy: usbphy { >>> #phy-cells = <0>; >>> compatible = "usb-nop-xceiv"; >> >> >> Shouldn't also the peripheral dma-ranges property move to board specific >> too? >> I had this patch for while but I didn't had the time to submit: > > > Well spot I forgot it. Actually, discussing with Arnd ysterday on IIRC, > empty dma-ranges is not needed. Can you test on your side by removing > dma-ranges in usb node please ? Unfortunately will take a time for me to set up this environment on the STM32F4-EVAL board. And on the discovery boards we dont have this scenario. That was the main reason I did not submit the patch right away. My conclusion and I might be wrong but is based on the my tests with SDIO device at STM32F469I-DISCO board. I started this issue as discussion at ST Forum but Maxime gave me the hint. https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 > I will push a v2 by removing empty dma-ranges if tests are ok in your side. >From my understating/conclusion is: when empty property(dma-ranges) is the device node, the mapping will be taken in consideration when using DMA otherwise the mapping is ignored. And in the SDIO case it is needed for DEV->MEM(SDRAM) and MEM(SDRAM)->DEV. If it is not the case for the devices in question so I suppose it can work without the property. > > Thanks in advance > Alex > > >> >> Author: Bruno Herrera <bruherrera@gmail.com> >> Date: Sun Oct 16 14:50:00 2016 -0200 >> >> ARM: DT: STM32: Use dma-ranges property per board not at dtsi file >> >> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> b/arch/arm/boot/dts/stm32429i-eval.dts >> index 6bfc595..2a22a82 100644 >> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> @@ -52,6 +52,10 @@ >> model = "STMicroelectronics STM32429i-EVAL board"; >> compatible = "st,stm32429i-eval", "st,stm32f429"; >> >> + soc { >> + dma-ranges = <0xC0000000 0x0 0x10000000>; >> + }; >> + >> chosen { >> bootargs = "root=/dev/ram rdinit=/linuxrc"; >> stdout-path = "serial0:115200n8"; >> @@ -96,6 +100,7 @@ >> >> ðernet0 { >> status = "okay"; >> + dma-ranges; >> pinctrl-0 = <ðernet0_mii>; >> pinctrl-names = "default"; >> phy-mode = "mii-id"; >> @@ -116,6 +121,7 @@ >> }; >> >> &usbotg_hs { >> + dma-ranges; >> dr_mode = "host"; >> phys = <&usbotg_hs_phy>; >> phy-names = "usb2-phy"; >> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> b/arch/arm/boot/dts/stm32f429.dtsi >> index 7d624a2..697a133 100644 >> --- a/arch/arm/boot/dts/stm32f429.dtsi >> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> @@ -59,7 +59,6 @@ >> }; >> >> soc { >> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> timer2: timer at 40000000 { >> compatible = "st,stm32-timer"; >> @@ -472,13 +471,11 @@ >> st,syscon = <&syscfg 0x4>; >> snps,pbl = <8>; >> snps,mixed-burst; >> - dma-ranges; >> status = "disabled"; >> }; >> >> usbotg_hs: usb at 40040000 { >> compatible = "snps,dwc2"; >> - dma-ranges; >> reg = <0x40040000 0x40000>; >> interrupts = <77>; >> clocks = <&rcc 0 29>; >> >> >>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>> b/arch/arm/boot/dts/stm32f429.dtsi >>> index 0596d60..3a1cfdd 100644 >>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>> @@ -59,8 +59,6 @@ >>> }; >>> >>> soc { >>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>> - >>> timer2: timer at 40000000 { >>> compatible = "st,stm32-timer"; >>> reg = <0x40000000 0x400>; >>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >>> b/arch/arm/boot/dts/stm32f469-disco.dts >>> index 9e73656..c2213c0 100644 >>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >>> @@ -64,6 +64,10 @@ >>> aliases { >>> serial0 = &usart3; >>> }; >>> + >>> + soc { >>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>> + }; >>> }; >>> >>> &clk_hse { >>> -- >> >> >> >> Br., >> Bruno >> > ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-10-27 10:43 ` Bruno Herrera @ 2016-10-27 12:21 ` Alexandre Torgue -1 siblings, 0 replies; 32+ messages in thread From: Alexandre Torgue @ 2016-10-27 12:21 UTC (permalink / raw) To: Bruno Herrera Cc: mark.rutland, devicetree, Arnd Bergmann, linux, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel Hi Bruno, On 10/27/2016 12:43 PM, Bruno Herrera wrote: > Hi Alex, > > On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue > <alexandre.torgue@st.com> wrote: >> Hi Bruno, >> >> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >>> >>> Hi Alexandre, >>> >>>> >>>> stm32f469-disco and stm32f429-eval boards use SDRAM start address >>>> remapping >>>> (to @0) to boost performances. A DMA translation through "dma-ranges" >>>> property was needed for other masters than the M4 CPU. >>>> stm32f429-disco doesn't use remapping so doesn't need this DMA >>>> translation. >>>> This patches moves this DMA translation definition from stm32f429 soc >>>> file >>>> to board files. >>>> >>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> >>>> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>> index 13c7cd2..a763c15 100644 >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>> @@ -82,6 +82,10 @@ >>>> }; >>>> }; >>>> >>>> + soc { >>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>>> + }; >>>> + >>>> usbotg_hs_phy: usbphy { >>>> #phy-cells = <0>; >>>> compatible = "usb-nop-xceiv"; >>> >>> >>> Shouldn't also the peripheral dma-ranges property move to board specific >>> too? >>> I had this patch for while but I didn't had the time to submit: >> >> >> Well spot I forgot it. Actually, discussing with Arnd ysterday on IIRC, >> empty dma-ranges is not needed. Can you test on your side by removing >> dma-ranges in usb node please ? > Unfortunately will take a time for me to set up this environment on > the STM32F4-EVAL board. > And on the discovery boards we dont have this scenario. That was the > main reason I did not submit the patch right away. > My conclusion and I might be wrong but is based on the my tests with > SDIO device at STM32F469I-DISCO board. > > I started this issue as discussion at ST Forum but Maxime gave me the hint. > > https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 > >> I will push a v2 by removing empty dma-ranges if tests are ok in your side. > > From my understating/conclusion is: when empty property(dma-ranges) is > the device node, the mapping will be taken in consideration when using > DMA otherwise the mapping is ignored. > And in the SDIO case it is needed for DEV->MEM(SDRAM) and > MEM(SDRAM)->DEV. If it is not the case for the devices in question so > I suppose it can work without the property. For sure translation has to be done but I'm not sure that an empty "dma-ranges" is needed in device node to activate it. For Ethernet empty "dma-ranges" is not needed. I will try with usb. alex > >> >> Thanks in advance >> Alex >> >> >>> >>> Author: Bruno Herrera <bruherrera@gmail.com> >>> Date: Sun Oct 16 14:50:00 2016 -0200 >>> >>> ARM: DT: STM32: Use dma-ranges property per board not at dtsi file >>> >>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>> b/arch/arm/boot/dts/stm32429i-eval.dts >>> index 6bfc595..2a22a82 100644 >>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>> @@ -52,6 +52,10 @@ >>> model = "STMicroelectronics STM32429i-EVAL board"; >>> compatible = "st,stm32429i-eval", "st,stm32f429"; >>> >>> + soc { >>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >>> + }; >>> + >>> chosen { >>> bootargs = "root=/dev/ram rdinit=/linuxrc"; >>> stdout-path = "serial0:115200n8"; >>> @@ -96,6 +100,7 @@ >>> >>> ðernet0 { >>> status = "okay"; >>> + dma-ranges; >>> pinctrl-0 = <ðernet0_mii>; >>> pinctrl-names = "default"; >>> phy-mode = "mii-id"; >>> @@ -116,6 +121,7 @@ >>> }; >>> >>> &usbotg_hs { >>> + dma-ranges; >>> dr_mode = "host"; >>> phys = <&usbotg_hs_phy>; >>> phy-names = "usb2-phy"; >>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>> b/arch/arm/boot/dts/stm32f429.dtsi >>> index 7d624a2..697a133 100644 >>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>> @@ -59,7 +59,6 @@ >>> }; >>> >>> soc { >>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>> >>> timer2: timer@40000000 { >>> compatible = "st,stm32-timer"; >>> @@ -472,13 +471,11 @@ >>> st,syscon = <&syscfg 0x4>; >>> snps,pbl = <8>; >>> snps,mixed-burst; >>> - dma-ranges; >>> status = "disabled"; >>> }; >>> >>> usbotg_hs: usb@40040000 { >>> compatible = "snps,dwc2"; >>> - dma-ranges; >>> reg = <0x40040000 0x40000>; >>> interrupts = <77>; >>> clocks = <&rcc 0 29>; >>> >>> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>> index 0596d60..3a1cfdd 100644 >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>> @@ -59,8 +59,6 @@ >>>> }; >>>> >>>> soc { >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>>> - >>>> timer2: timer@40000000 { >>>> compatible = "st,stm32-timer"; >>>> reg = <0x40000000 0x400>; >>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >>>> b/arch/arm/boot/dts/stm32f469-disco.dts >>>> index 9e73656..c2213c0 100644 >>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >>>> @@ -64,6 +64,10 @@ >>>> aliases { >>>> serial0 = &usart3; >>>> }; >>>> + >>>> + soc { >>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>>> + }; >>>> }; >>>> >>>> &clk_hse { >>>> -- >>> >>> >>> >>> Br., >>> Bruno >>> >> ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-10-27 12:21 ` Alexandre Torgue 0 siblings, 0 replies; 32+ messages in thread From: Alexandre Torgue @ 2016-10-27 12:21 UTC (permalink / raw) To: linux-arm-kernel Hi Bruno, On 10/27/2016 12:43 PM, Bruno Herrera wrote: > Hi Alex, > > On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue > <alexandre.torgue@st.com> wrote: >> Hi Bruno, >> >> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >>> >>> Hi Alexandre, >>> >>>> >>>> stm32f469-disco and stm32f429-eval boards use SDRAM start address >>>> remapping >>>> (to @0) to boost performances. A DMA translation through "dma-ranges" >>>> property was needed for other masters than the M4 CPU. >>>> stm32f429-disco doesn't use remapping so doesn't need this DMA >>>> translation. >>>> This patches moves this DMA translation definition from stm32f429 soc >>>> file >>>> to board files. >>>> >>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> >>>> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>> index 13c7cd2..a763c15 100644 >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>> @@ -82,6 +82,10 @@ >>>> }; >>>> }; >>>> >>>> + soc { >>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>>> + }; >>>> + >>>> usbotg_hs_phy: usbphy { >>>> #phy-cells = <0>; >>>> compatible = "usb-nop-xceiv"; >>> >>> >>> Shouldn't also the peripheral dma-ranges property move to board specific >>> too? >>> I had this patch for while but I didn't had the time to submit: >> >> >> Well spot I forgot it. Actually, discussing with Arnd ysterday on IIRC, >> empty dma-ranges is not needed. Can you test on your side by removing >> dma-ranges in usb node please ? > Unfortunately will take a time for me to set up this environment on > the STM32F4-EVAL board. > And on the discovery boards we dont have this scenario. That was the > main reason I did not submit the patch right away. > My conclusion and I might be wrong but is based on the my tests with > SDIO device at STM32F469I-DISCO board. > > I started this issue as discussion at ST Forum but Maxime gave me the hint. > > https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 > >> I will push a v2 by removing empty dma-ranges if tests are ok in your side. > > From my understating/conclusion is: when empty property(dma-ranges) is > the device node, the mapping will be taken in consideration when using > DMA otherwise the mapping is ignored. > And in the SDIO case it is needed for DEV->MEM(SDRAM) and > MEM(SDRAM)->DEV. If it is not the case for the devices in question so > I suppose it can work without the property. For sure translation has to be done but I'm not sure that an empty "dma-ranges" is needed in device node to activate it. For Ethernet empty "dma-ranges" is not needed. I will try with usb. alex > >> >> Thanks in advance >> Alex >> >> >>> >>> Author: Bruno Herrera <bruherrera@gmail.com> >>> Date: Sun Oct 16 14:50:00 2016 -0200 >>> >>> ARM: DT: STM32: Use dma-ranges property per board not at dtsi file >>> >>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>> b/arch/arm/boot/dts/stm32429i-eval.dts >>> index 6bfc595..2a22a82 100644 >>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>> @@ -52,6 +52,10 @@ >>> model = "STMicroelectronics STM32429i-EVAL board"; >>> compatible = "st,stm32429i-eval", "st,stm32f429"; >>> >>> + soc { >>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >>> + }; >>> + >>> chosen { >>> bootargs = "root=/dev/ram rdinit=/linuxrc"; >>> stdout-path = "serial0:115200n8"; >>> @@ -96,6 +100,7 @@ >>> >>> ðernet0 { >>> status = "okay"; >>> + dma-ranges; >>> pinctrl-0 = <ðernet0_mii>; >>> pinctrl-names = "default"; >>> phy-mode = "mii-id"; >>> @@ -116,6 +121,7 @@ >>> }; >>> >>> &usbotg_hs { >>> + dma-ranges; >>> dr_mode = "host"; >>> phys = <&usbotg_hs_phy>; >>> phy-names = "usb2-phy"; >>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>> b/arch/arm/boot/dts/stm32f429.dtsi >>> index 7d624a2..697a133 100644 >>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>> @@ -59,7 +59,6 @@ >>> }; >>> >>> soc { >>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>> >>> timer2: timer at 40000000 { >>> compatible = "st,stm32-timer"; >>> @@ -472,13 +471,11 @@ >>> st,syscon = <&syscfg 0x4>; >>> snps,pbl = <8>; >>> snps,mixed-burst; >>> - dma-ranges; >>> status = "disabled"; >>> }; >>> >>> usbotg_hs: usb at 40040000 { >>> compatible = "snps,dwc2"; >>> - dma-ranges; >>> reg = <0x40040000 0x40000>; >>> interrupts = <77>; >>> clocks = <&rcc 0 29>; >>> >>> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>> index 0596d60..3a1cfdd 100644 >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>> @@ -59,8 +59,6 @@ >>>> }; >>>> >>>> soc { >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>>> - >>>> timer2: timer at 40000000 { >>>> compatible = "st,stm32-timer"; >>>> reg = <0x40000000 0x400>; >>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >>>> b/arch/arm/boot/dts/stm32f469-disco.dts >>>> index 9e73656..c2213c0 100644 >>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >>>> @@ -64,6 +64,10 @@ >>>> aliases { >>>> serial0 = &usart3; >>>> }; >>>> + >>>> + soc { >>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>>> + }; >>>> }; >>>> >>>> &clk_hse { >>>> -- >>> >>> >>> >>> Br., >>> Bruno >>> >> ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-10-27 12:21 ` Alexandre Torgue @ 2016-10-27 12:57 ` Bruno Herrera -1 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-10-27 12:57 UTC (permalink / raw) To: Alexandre Torgue Cc: mark.rutland, devicetree, Arnd Bergmann, linux, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel Hi Alex, On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue <alexandre.torgue@st.com> wrote: > Hi Bruno, > > > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >> >> Hi Alex, >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >> <alexandre.torgue@st.com> wrote: >>> >>> Hi Bruno, >>> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >>>> >>>> >>>> Hi Alexandre, >>>> >>>>> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM start address >>>>> remapping >>>>> (to @0) to boost performances. A DMA translation through "dma-ranges" >>>>> property was needed for other masters than the M4 CPU. >>>>> stm32f429-disco doesn't use remapping so doesn't need this DMA >>>>> translation. >>>>> This patches moves this DMA translation definition from stm32f429 soc >>>>> file >>>>> to board files. >>>>> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> >>>>> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>>> index 13c7cd2..a763c15 100644 >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>>> @@ -82,6 +82,10 @@ >>>>> }; >>>>> }; >>>>> >>>>> + soc { >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>>>> + }; >>>>> + >>>>> usbotg_hs_phy: usbphy { >>>>> #phy-cells = <0>; >>>>> compatible = "usb-nop-xceiv"; >>>> >>>> >>>> >>>> Shouldn't also the peripheral dma-ranges property move to board specific >>>> too? >>>> I had this patch for while but I didn't had the time to submit: >>> >>> >>> >>> Well spot I forgot it. Actually, discussing with Arnd ysterday on IIRC, >>> empty dma-ranges is not needed. Can you test on your side by removing >>> dma-ranges in usb node please ? >> >> Unfortunately will take a time for me to set up this environment on >> the STM32F4-EVAL board. >> And on the discovery boards we dont have this scenario. That was the >> main reason I did not submit the patch right away. >> My conclusion and I might be wrong but is based on the my tests with >> SDIO device at STM32F469I-DISCO board. >> >> I started this issue as discussion at ST Forum but Maxime gave me the >> hint. >> >> >> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >> >>> I will push a v2 by removing empty dma-ranges if tests are ok in your >>> side. >> >> >> From my understating/conclusion is: when empty property(dma-ranges) is >> the device node, the mapping will be taken in consideration when using >> DMA otherwise the mapping is ignored. >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >> MEM(SDRAM)->DEV. If it is not the case for the devices in question so >> I suppose it can work without the property. > > > For sure translation has to be done but I'm not sure that an empty > "dma-ranges" is needed in device node to activate it. For Ethernet empty > "dma-ranges" is not needed. I will try with usb. In the case of SDIO it is needed. As example this is my working SDIO node: sdio: sdio@40012c00 { compatible = "arm,pl18x", "arm,primecell"; arm,primecell-periphid = <0x00480181>; reg = <0x40012c00 0x400>; dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ dma-names = "rx", "tx"; clocks = <&rcc 0 171>; clock-names = "apb_pclk"; interrupts = <49>; status = "disabled"; }; &sdio { status = "okay"; vmmc-supply = <&wlan_en>; bus-width = <4>; max-frequency = <24000000>; pinctrl-names = "default"; pinctrl-0 = <&sdio_pins>; ti,non-removable; ti,needs-special-hs-handling; dma-ranges; cap-power-off-card; keep-power-in-suspend; #address-cells = <1>; #size-cells = <0>; wlcore: wlcore@0 { compatible = "ti,wl1835"; reg = <2>; interrupt-parent = <&gpioa>; interrupts = <8 IRQ_TYPE_EDGE_RISING>; }; }; > > alex > > >> >>> >>> Thanks in advance >>> Alex >>> >>> >>>> >>>> Author: Bruno Herrera <bruherrera@gmail.com> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >>>> >>>> ARM: DT: STM32: Use dma-ranges property per board not at dtsi file >>>> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>> index 6bfc595..2a22a82 100644 >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>> @@ -52,6 +52,10 @@ >>>> model = "STMicroelectronics STM32429i-EVAL board"; >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; >>>> >>>> + soc { >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >>>> + }; >>>> + >>>> chosen { >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; >>>> stdout-path = "serial0:115200n8"; >>>> @@ -96,6 +100,7 @@ >>>> >>>> ðernet0 { >>>> status = "okay"; >>>> + dma-ranges; >>>> pinctrl-0 = <ðernet0_mii>; >>>> pinctrl-names = "default"; >>>> phy-mode = "mii-id"; >>>> @@ -116,6 +121,7 @@ >>>> }; >>>> >>>> &usbotg_hs { >>>> + dma-ranges; >>>> dr_mode = "host"; >>>> phys = <&usbotg_hs_phy>; >>>> phy-names = "usb2-phy"; >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>> index 7d624a2..697a133 100644 >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>> @@ -59,7 +59,6 @@ >>>> }; >>>> >>>> soc { >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>>> >>>> timer2: timer@40000000 { >>>> compatible = "st,stm32-timer"; >>>> @@ -472,13 +471,11 @@ >>>> st,syscon = <&syscfg 0x4>; >>>> snps,pbl = <8>; >>>> snps,mixed-burst; >>>> - dma-ranges; >>>> status = "disabled"; >>>> }; >>>> >>>> usbotg_hs: usb@40040000 { >>>> compatible = "snps,dwc2"; >>>> - dma-ranges; >>>> reg = <0x40040000 0x40000>; >>>> interrupts = <77>; >>>> clocks = <&rcc 0 29>; >>>> >>>> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>>> index 0596d60..3a1cfdd 100644 >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>>> @@ -59,8 +59,6 @@ >>>>> }; >>>>> >>>>> soc { >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>>>> - >>>>> timer2: timer@40000000 { >>>>> compatible = "st,stm32-timer"; >>>>> reg = <0x40000000 0x400>; >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >>>>> index 9e73656..c2213c0 100644 >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >>>>> @@ -64,6 +64,10 @@ >>>>> aliases { >>>>> serial0 = &usart3; >>>>> }; >>>>> + >>>>> + soc { >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>>>> + }; >>>>> }; >>>>> >>>>> &clk_hse { >>>>> -- >>>> >>>> >>>> >>>> >>>> Br., >>>> Bruno >>>> >>> > ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-10-27 12:57 ` Bruno Herrera 0 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-10-27 12:57 UTC (permalink / raw) To: linux-arm-kernel Hi Alex, On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue <alexandre.torgue@st.com> wrote: > Hi Bruno, > > > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >> >> Hi Alex, >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >> <alexandre.torgue@st.com> wrote: >>> >>> Hi Bruno, >>> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >>>> >>>> >>>> Hi Alexandre, >>>> >>>>> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM start address >>>>> remapping >>>>> (to @0) to boost performances. A DMA translation through "dma-ranges" >>>>> property was needed for other masters than the M4 CPU. >>>>> stm32f429-disco doesn't use remapping so doesn't need this DMA >>>>> translation. >>>>> This patches moves this DMA translation definition from stm32f429 soc >>>>> file >>>>> to board files. >>>>> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> >>>>> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>>> index 13c7cd2..a763c15 100644 >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>>> @@ -82,6 +82,10 @@ >>>>> }; >>>>> }; >>>>> >>>>> + soc { >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>>>> + }; >>>>> + >>>>> usbotg_hs_phy: usbphy { >>>>> #phy-cells = <0>; >>>>> compatible = "usb-nop-xceiv"; >>>> >>>> >>>> >>>> Shouldn't also the peripheral dma-ranges property move to board specific >>>> too? >>>> I had this patch for while but I didn't had the time to submit: >>> >>> >>> >>> Well spot I forgot it. Actually, discussing with Arnd ysterday on IIRC, >>> empty dma-ranges is not needed. Can you test on your side by removing >>> dma-ranges in usb node please ? >> >> Unfortunately will take a time for me to set up this environment on >> the STM32F4-EVAL board. >> And on the discovery boards we dont have this scenario. That was the >> main reason I did not submit the patch right away. >> My conclusion and I might be wrong but is based on the my tests with >> SDIO device at STM32F469I-DISCO board. >> >> I started this issue as discussion at ST Forum but Maxime gave me the >> hint. >> >> >> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >> >>> I will push a v2 by removing empty dma-ranges if tests are ok in your >>> side. >> >> >> From my understating/conclusion is: when empty property(dma-ranges) is >> the device node, the mapping will be taken in consideration when using >> DMA otherwise the mapping is ignored. >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >> MEM(SDRAM)->DEV. If it is not the case for the devices in question so >> I suppose it can work without the property. > > > For sure translation has to be done but I'm not sure that an empty > "dma-ranges" is needed in device node to activate it. For Ethernet empty > "dma-ranges" is not needed. I will try with usb. In the case of SDIO it is needed. As example this is my working SDIO node: sdio: sdio at 40012c00 { compatible = "arm,pl18x", "arm,primecell"; arm,primecell-periphid = <0x00480181>; reg = <0x40012c00 0x400>; dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ dma-names = "rx", "tx"; clocks = <&rcc 0 171>; clock-names = "apb_pclk"; interrupts = <49>; status = "disabled"; }; &sdio { status = "okay"; vmmc-supply = <&wlan_en>; bus-width = <4>; max-frequency = <24000000>; pinctrl-names = "default"; pinctrl-0 = <&sdio_pins>; ti,non-removable; ti,needs-special-hs-handling; dma-ranges; cap-power-off-card; keep-power-in-suspend; #address-cells = <1>; #size-cells = <0>; wlcore: wlcore at 0 { compatible = "ti,wl1835"; reg = <2>; interrupt-parent = <&gpioa>; interrupts = <8 IRQ_TYPE_EDGE_RISING>; }; }; > > alex > > >> >>> >>> Thanks in advance >>> Alex >>> >>> >>>> >>>> Author: Bruno Herrera <bruherrera@gmail.com> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >>>> >>>> ARM: DT: STM32: Use dma-ranges property per board not at dtsi file >>>> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>> index 6bfc595..2a22a82 100644 >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>> @@ -52,6 +52,10 @@ >>>> model = "STMicroelectronics STM32429i-EVAL board"; >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; >>>> >>>> + soc { >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >>>> + }; >>>> + >>>> chosen { >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; >>>> stdout-path = "serial0:115200n8"; >>>> @@ -96,6 +100,7 @@ >>>> >>>> ðernet0 { >>>> status = "okay"; >>>> + dma-ranges; >>>> pinctrl-0 = <ðernet0_mii>; >>>> pinctrl-names = "default"; >>>> phy-mode = "mii-id"; >>>> @@ -116,6 +121,7 @@ >>>> }; >>>> >>>> &usbotg_hs { >>>> + dma-ranges; >>>> dr_mode = "host"; >>>> phys = <&usbotg_hs_phy>; >>>> phy-names = "usb2-phy"; >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>> index 7d624a2..697a133 100644 >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>> @@ -59,7 +59,6 @@ >>>> }; >>>> >>>> soc { >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>>> >>>> timer2: timer at 40000000 { >>>> compatible = "st,stm32-timer"; >>>> @@ -472,13 +471,11 @@ >>>> st,syscon = <&syscfg 0x4>; >>>> snps,pbl = <8>; >>>> snps,mixed-burst; >>>> - dma-ranges; >>>> status = "disabled"; >>>> }; >>>> >>>> usbotg_hs: usb at 40040000 { >>>> compatible = "snps,dwc2"; >>>> - dma-ranges; >>>> reg = <0x40040000 0x40000>; >>>> interrupts = <77>; >>>> clocks = <&rcc 0 29>; >>>> >>>> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>>> index 0596d60..3a1cfdd 100644 >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>>> @@ -59,8 +59,6 @@ >>>>> }; >>>>> >>>>> soc { >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>>>> - >>>>> timer2: timer at 40000000 { >>>>> compatible = "st,stm32-timer"; >>>>> reg = <0x40000000 0x400>; >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >>>>> index 9e73656..c2213c0 100644 >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >>>>> @@ -64,6 +64,10 @@ >>>>> aliases { >>>>> serial0 = &usart3; >>>>> }; >>>>> + >>>>> + soc { >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>>>> + }; >>>>> }; >>>>> >>>>> &clk_hse { >>>>> -- >>>> >>>> >>>> >>>> >>>> Br., >>>> Bruno >>>> >>> > ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-10-27 12:57 ` Bruno Herrera (?) @ 2016-10-28 7:09 ` Radosław Pietrzyk [not found] ` <CAFvLkMQGVygLb9SQ8o+2Q=bg7vvRjpHypmSyjRyLkdcHypoFHw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> -1 siblings, 1 reply; 32+ messages in thread From: Radosław Pietrzyk @ 2016-10-28 7:09 UTC (permalink / raw) To: Bruno Herrera Cc: Alexandre Torgue, mark.rutland, devicetree, Arnd Bergmann, linux, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel [-- Attachment #1: Type: text/plain, Size: 8308 bytes --] Have you defined your sdio node within soc node ? 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com>: > Hi Alex, > > On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue > <alexandre.torgue@st.com> wrote: > > Hi Bruno, > > > > > > On 10/27/2016 12:43 PM, Bruno Herrera wrote: > >> > >> Hi Alex, > >> > >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue > >> <alexandre.torgue@st.com> wrote: > >>> > >>> Hi Bruno, > >>> > >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: > >>>> > >>>> > >>>> Hi Alexandre, > >>>> > >>>>> > >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM start address > >>>>> remapping > >>>>> (to @0) to boost performances. A DMA translation through "dma-ranges" > >>>>> property was needed for other masters than the M4 CPU. > >>>>> stm32f429-disco doesn't use remapping so doesn't need this DMA > >>>>> translation. > >>>>> This patches moves this DMA translation definition from stm32f429 soc > >>>>> file > >>>>> to board files. > >>>>> > >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> > >>>>> > >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >>>>> index 13c7cd2..a763c15 100644 > >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >>>>> @@ -82,6 +82,10 @@ > >>>>> }; > >>>>> }; > >>>>> > >>>>> + soc { > >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; > >>>>> + }; > >>>>> + > >>>>> usbotg_hs_phy: usbphy { > >>>>> #phy-cells = <0>; > >>>>> compatible = "usb-nop-xceiv"; > >>>> > >>>> > >>>> > >>>> Shouldn't also the peripheral dma-ranges property move to board > specific > >>>> too? > >>>> I had this patch for while but I didn't had the time to submit: > >>> > >>> > >>> > >>> Well spot I forgot it. Actually, discussing with Arnd ysterday on IIRC, > >>> empty dma-ranges is not needed. Can you test on your side by removing > >>> dma-ranges in usb node please ? > >> > >> Unfortunately will take a time for me to set up this environment on > >> the STM32F4-EVAL board. > >> And on the discovery boards we dont have this scenario. That was the > >> main reason I did not submit the patch right away. > >> My conclusion and I might be wrong but is based on the my tests with > >> SDIO device at STM32F469I-DISCO board. > >> > >> I started this issue as discussion at ST Forum but Maxime gave me the > >> hint. > >> > >> > >> https://my.st.com/public/STe2ecommunities/mcu/Lists/ > cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic% > 2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32% > 2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID= > 0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46 > A77F0FFD06506F5B¤tviews=44 > >> > >>> I will push a v2 by removing empty dma-ranges if tests are ok in your > >>> side. > >> > >> > >> From my understating/conclusion is: when empty property(dma-ranges) is > >> the device node, the mapping will be taken in consideration when using > >> DMA otherwise the mapping is ignored. > >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and > >> MEM(SDRAM)->DEV. If it is not the case for the devices in question so > >> I suppose it can work without the property. > > > > > > For sure translation has to be done but I'm not sure that an empty > > "dma-ranges" is needed in device node to activate it. For Ethernet empty > > "dma-ranges" is not needed. I will try with usb. > > In the case of SDIO it is needed. As example this is my working SDIO node: > > sdio: sdio@40012c00 { > compatible = "arm,pl18x", "arm,primecell"; > arm,primecell-periphid = <0x00480181>; > reg = <0x40012c00 0x400>; > dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ > <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ > dma-names = "rx", "tx"; > clocks = <&rcc 0 171>; > clock-names = "apb_pclk"; > interrupts = <49>; > status = "disabled"; > }; > > &sdio { > status = "okay"; > vmmc-supply = <&wlan_en>; > bus-width = <4>; > max-frequency = <24000000>; > pinctrl-names = "default"; > pinctrl-0 = <&sdio_pins>; > ti,non-removable; > ti,needs-special-hs-handling; > dma-ranges; > cap-power-off-card; > keep-power-in-suspend; > > #address-cells = <1>; > #size-cells = <0>; > wlcore: wlcore@0 { > compatible = "ti,wl1835"; > reg = <2>; > interrupt-parent = <&gpioa>; > interrupts = <8 IRQ_TYPE_EDGE_RISING>; > }; > }; > > > > > alex > > > > > >> > >>> > >>> Thanks in advance > >>> Alex > >>> > >>> > >>>> > >>>> Author: Bruno Herrera <bruherrera@gmail.com> > >>>> Date: Sun Oct 16 14:50:00 2016 -0200 > >>>> > >>>> ARM: DT: STM32: Use dma-ranges property per board not at dtsi file > >>>> > >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >>>> index 6bfc595..2a22a82 100644 > >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >>>> @@ -52,6 +52,10 @@ > >>>> model = "STMicroelectronics STM32429i-EVAL board"; > >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; > >>>> > >>>> + soc { > >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; > >>>> + }; > >>>> + > >>>> chosen { > >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; > >>>> stdout-path = "serial0:115200n8"; > >>>> @@ -96,6 +100,7 @@ > >>>> > >>>> ðernet0 { > >>>> status = "okay"; > >>>> + dma-ranges; > >>>> pinctrl-0 = <ðernet0_mii>; > >>>> pinctrl-names = "default"; > >>>> phy-mode = "mii-id"; > >>>> @@ -116,6 +121,7 @@ > >>>> }; > >>>> > >>>> &usbotg_hs { > >>>> + dma-ranges; > >>>> dr_mode = "host"; > >>>> phys = <&usbotg_hs_phy>; > >>>> phy-names = "usb2-phy"; > >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >>>> b/arch/arm/boot/dts/stm32f429.dtsi > >>>> index 7d624a2..697a133 100644 > >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >>>> @@ -59,7 +59,6 @@ > >>>> }; > >>>> > >>>> soc { > >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; > >>>> > >>>> timer2: timer@40000000 { > >>>> compatible = "st,stm32-timer"; > >>>> @@ -472,13 +471,11 @@ > >>>> st,syscon = <&syscfg 0x4>; > >>>> snps,pbl = <8>; > >>>> snps,mixed-burst; > >>>> - dma-ranges; > >>>> status = "disabled"; > >>>> }; > >>>> > >>>> usbotg_hs: usb@40040000 { > >>>> compatible = "snps,dwc2"; > >>>> - dma-ranges; > >>>> reg = <0x40040000 0x40000>; > >>>> interrupts = <77>; > >>>> clocks = <&rcc 0 29>; > >>>> > >>>> > >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >>>>> b/arch/arm/boot/dts/stm32f429.dtsi > >>>>> index 0596d60..3a1cfdd 100644 > >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >>>>> @@ -59,8 +59,6 @@ > >>>>> }; > >>>>> > >>>>> soc { > >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; > >>>>> - > >>>>> timer2: timer@40000000 { > >>>>> compatible = "st,stm32-timer"; > >>>>> reg = <0x40000000 0x400>; > >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts > >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts > >>>>> index 9e73656..c2213c0 100644 > >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts > >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts > >>>>> @@ -64,6 +64,10 @@ > >>>>> aliases { > >>>>> serial0 = &usart3; > >>>>> }; > >>>>> + > >>>>> + soc { > >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; > >>>>> + }; > >>>>> }; > >>>>> > >>>>> &clk_hse { > >>>>> -- > >>>> > >>>> > >>>> > >>>> > >>>> Br., > >>>> Bruno > >>>> > >>> > > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > [-- Attachment #2: Type: text/html, Size: 13616 bytes --] ^ permalink raw reply [flat|nested] 32+ messages in thread
[parent not found: <CAFvLkMQGVygLb9SQ8o+2Q=bg7vvRjpHypmSyjRyLkdcHypoFHw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-10-28 7:09 ` Radosław Pietrzyk @ 2016-10-31 10:27 ` Bruno Herrera 0 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-10-31 10:27 UTC (permalink / raw) To: Radosław Pietrzyk Cc: Alexandre Torgue, mark.rutland-5wv7dgnIgG8, devicetree-u79uwXL29TY76Z2rM5mHXA, Arnd Bergmann, linux-I+IVW8TIWO2tmTQ+vhA3Yw, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r On Fri, Oct 28, 2016 at 5:09 AM, Radosław Pietrzyk <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > Have you defined your sdio node within soc node ? It is in the SOC node of the DSTI file. > > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>: >> >> Hi Alex, >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org> wrote: >> > Hi Bruno, >> > >> > >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >> >> >> >> Hi Alex, >> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org> wrote: >> >>> >> >>> Hi Bruno, >> >>> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >> >>>> >> >>>> >> >>>> Hi Alexandre, >> >>>> >> >>>>> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM start address >> >>>>> remapping >> >>>>> (to @0) to boost performances. A DMA translation through >> >>>>> "dma-ranges" >> >>>>> property was needed for other masters than the M4 CPU. >> >>>>> stm32f429-disco doesn't use remapping so doesn't need this DMA >> >>>>> translation. >> >>>>> This patches moves this DMA translation definition from stm32f429 >> >>>>> soc >> >>>>> file >> >>>>> to board files. >> >>>>> >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue-qxv4g6HH51o@public.gmane.org> >> >>>>> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >>>>> index 13c7cd2..a763c15 100644 >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >>>>> @@ -82,6 +82,10 @@ >> >>>>> }; >> >>>>> }; >> >>>>> >> >>>>> + soc { >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> >>>>> + }; >> >>>>> + >> >>>>> usbotg_hs_phy: usbphy { >> >>>>> #phy-cells = <0>; >> >>>>> compatible = "usb-nop-xceiv"; >> >>>> >> >>>> >> >>>> >> >>>> Shouldn't also the peripheral dma-ranges property move to board >> >>>> specific >> >>>> too? >> >>>> I had this patch for while but I didn't had the time to submit: >> >>> >> >>> >> >>> >> >>> Well spot I forgot it. Actually, discussing with Arnd ysterday on >> >>> IIRC, >> >>> empty dma-ranges is not needed. Can you test on your side by removing >> >>> dma-ranges in usb node please ? >> >> >> >> Unfortunately will take a time for me to set up this environment on >> >> the STM32F4-EVAL board. >> >> And on the discovery boards we dont have this scenario. That was the >> >> main reason I did not submit the patch right away. >> >> My conclusion and I might be wrong but is based on the my tests with >> >> SDIO device at STM32F469I-DISCO board. >> >> >> >> I started this issue as discussion at ST Forum but Maxime gave me the >> >> hint. >> >> >> >> >> >> >> >> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >> >> >> >>> I will push a v2 by removing empty dma-ranges if tests are ok in your >> >>> side. >> >> >> >> >> >> From my understating/conclusion is: when empty property(dma-ranges) is >> >> the device node, the mapping will be taken in consideration when using >> >> DMA otherwise the mapping is ignored. >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in question so >> >> I suppose it can work without the property. >> > >> > >> > For sure translation has to be done but I'm not sure that an empty >> > "dma-ranges" is needed in device node to activate it. For Ethernet empty >> > "dma-ranges" is not needed. I will try with usb. >> >> In the case of SDIO it is needed. As example this is my working SDIO node: >> >> sdio: sdio@40012c00 { >> compatible = "arm,pl18x", "arm,primecell"; >> arm,primecell-periphid = <0x00480181>; >> reg = <0x40012c00 0x400>; >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >> dma-names = "rx", "tx"; >> clocks = <&rcc 0 171>; >> clock-names = "apb_pclk"; >> interrupts = <49>; >> status = "disabled"; >> }; >> >> &sdio { >> status = "okay"; >> vmmc-supply = <&wlan_en>; >> bus-width = <4>; >> max-frequency = <24000000>; >> pinctrl-names = "default"; >> pinctrl-0 = <&sdio_pins>; >> ti,non-removable; >> ti,needs-special-hs-handling; >> dma-ranges; >> cap-power-off-card; >> keep-power-in-suspend; >> >> #address-cells = <1>; >> #size-cells = <0>; >> wlcore: wlcore@0 { >> compatible = "ti,wl1835"; >> reg = <2>; >> interrupt-parent = <&gpioa>; >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >> }; >> }; >> >> > >> > alex >> > >> > >> >> >> >>> >> >>> Thanks in advance >> >>> Alex >> >>> >> >>> >> >>>> >> >>>> Author: Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >> >>>> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not at dtsi >> >>>> file >> >>>> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >>>> index 6bfc595..2a22a82 100644 >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >>>> @@ -52,6 +52,10 @@ >> >>>> model = "STMicroelectronics STM32429i-EVAL board"; >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; >> >>>> >> >>>> + soc { >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >> >>>> + }; >> >>>> + >> >>>> chosen { >> >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; >> >>>> stdout-path = "serial0:115200n8"; >> >>>> @@ -96,6 +100,7 @@ >> >>>> >> >>>> ðernet0 { >> >>>> status = "okay"; >> >>>> + dma-ranges; >> >>>> pinctrl-0 = <ðernet0_mii>; >> >>>> pinctrl-names = "default"; >> >>>> phy-mode = "mii-id"; >> >>>> @@ -116,6 +121,7 @@ >> >>>> }; >> >>>> >> >>>> &usbotg_hs { >> >>>> + dma-ranges; >> >>>> dr_mode = "host"; >> >>>> phys = <&usbotg_hs_phy>; >> >>>> phy-names = "usb2-phy"; >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >>>> index 7d624a2..697a133 100644 >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >>>> @@ -59,7 +59,6 @@ >> >>>> }; >> >>>> >> >>>> soc { >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >>>> >> >>>> timer2: timer@40000000 { >> >>>> compatible = "st,stm32-timer"; >> >>>> @@ -472,13 +471,11 @@ >> >>>> st,syscon = <&syscfg 0x4>; >> >>>> snps,pbl = <8>; >> >>>> snps,mixed-burst; >> >>>> - dma-ranges; >> >>>> status = "disabled"; >> >>>> }; >> >>>> >> >>>> usbotg_hs: usb@40040000 { >> >>>> compatible = "snps,dwc2"; >> >>>> - dma-ranges; >> >>>> reg = <0x40040000 0x40000>; >> >>>> interrupts = <77>; >> >>>> clocks = <&rcc 0 29>; >> >>>> >> >>>> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >>>>> index 0596d60..3a1cfdd 100644 >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >>>>> @@ -59,8 +59,6 @@ >> >>>>> }; >> >>>>> >> >>>>> soc { >> >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >>>>> - >> >>>>> timer2: timer@40000000 { >> >>>>> compatible = "st,stm32-timer"; >> >>>>> reg = <0x40000000 0x400>; >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >> >>>>> index 9e73656..c2213c0 100644 >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >> >>>>> @@ -64,6 +64,10 @@ >> >>>>> aliases { >> >>>>> serial0 = &usart3; >> >>>>> }; >> >>>>> + >> >>>>> + soc { >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> >>>>> + }; >> >>>>> }; >> >>>>> >> >>>>> &clk_hse { >> >>>>> -- >> >>>> >> >>>> >> >>>> >> >>>> >> >>>> Br., >> >>>> Bruno >> >>>> >> >>> >> > >> >> _______________________________________________ >> linux-arm-kernel mailing list >> linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-10-31 10:27 ` Bruno Herrera 0 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-10-31 10:27 UTC (permalink / raw) To: linux-arm-kernel On Fri, Oct 28, 2016 at 5:09 AM, Rados?aw Pietrzyk <radoslaw.pietrzyk@gmail.com> wrote: > Have you defined your sdio node within soc node ? It is in the SOC node of the DSTI file. > > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com>: >> >> Hi Alex, >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >> <alexandre.torgue@st.com> wrote: >> > Hi Bruno, >> > >> > >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >> >> >> >> Hi Alex, >> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >> >> <alexandre.torgue@st.com> wrote: >> >>> >> >>> Hi Bruno, >> >>> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >> >>>> >> >>>> >> >>>> Hi Alexandre, >> >>>> >> >>>>> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM start address >> >>>>> remapping >> >>>>> (to @0) to boost performances. A DMA translation through >> >>>>> "dma-ranges" >> >>>>> property was needed for other masters than the M4 CPU. >> >>>>> stm32f429-disco doesn't use remapping so doesn't need this DMA >> >>>>> translation. >> >>>>> This patches moves this DMA translation definition from stm32f429 >> >>>>> soc >> >>>>> file >> >>>>> to board files. >> >>>>> >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> >> >>>>> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >>>>> index 13c7cd2..a763c15 100644 >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >>>>> @@ -82,6 +82,10 @@ >> >>>>> }; >> >>>>> }; >> >>>>> >> >>>>> + soc { >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> >>>>> + }; >> >>>>> + >> >>>>> usbotg_hs_phy: usbphy { >> >>>>> #phy-cells = <0>; >> >>>>> compatible = "usb-nop-xceiv"; >> >>>> >> >>>> >> >>>> >> >>>> Shouldn't also the peripheral dma-ranges property move to board >> >>>> specific >> >>>> too? >> >>>> I had this patch for while but I didn't had the time to submit: >> >>> >> >>> >> >>> >> >>> Well spot I forgot it. Actually, discussing with Arnd ysterday on >> >>> IIRC, >> >>> empty dma-ranges is not needed. Can you test on your side by removing >> >>> dma-ranges in usb node please ? >> >> >> >> Unfortunately will take a time for me to set up this environment on >> >> the STM32F4-EVAL board. >> >> And on the discovery boards we dont have this scenario. That was the >> >> main reason I did not submit the patch right away. >> >> My conclusion and I might be wrong but is based on the my tests with >> >> SDIO device at STM32F469I-DISCO board. >> >> >> >> I started this issue as discussion at ST Forum but Maxime gave me the >> >> hint. >> >> >> >> >> >> >> >> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >> >> >> >>> I will push a v2 by removing empty dma-ranges if tests are ok in your >> >>> side. >> >> >> >> >> >> From my understating/conclusion is: when empty property(dma-ranges) is >> >> the device node, the mapping will be taken in consideration when using >> >> DMA otherwise the mapping is ignored. >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in question so >> >> I suppose it can work without the property. >> > >> > >> > For sure translation has to be done but I'm not sure that an empty >> > "dma-ranges" is needed in device node to activate it. For Ethernet empty >> > "dma-ranges" is not needed. I will try with usb. >> >> In the case of SDIO it is needed. As example this is my working SDIO node: >> >> sdio: sdio at 40012c00 { >> compatible = "arm,pl18x", "arm,primecell"; >> arm,primecell-periphid = <0x00480181>; >> reg = <0x40012c00 0x400>; >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >> dma-names = "rx", "tx"; >> clocks = <&rcc 0 171>; >> clock-names = "apb_pclk"; >> interrupts = <49>; >> status = "disabled"; >> }; >> >> &sdio { >> status = "okay"; >> vmmc-supply = <&wlan_en>; >> bus-width = <4>; >> max-frequency = <24000000>; >> pinctrl-names = "default"; >> pinctrl-0 = <&sdio_pins>; >> ti,non-removable; >> ti,needs-special-hs-handling; >> dma-ranges; >> cap-power-off-card; >> keep-power-in-suspend; >> >> #address-cells = <1>; >> #size-cells = <0>; >> wlcore: wlcore at 0 { >> compatible = "ti,wl1835"; >> reg = <2>; >> interrupt-parent = <&gpioa>; >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >> }; >> }; >> >> > >> > alex >> > >> > >> >> >> >>> >> >>> Thanks in advance >> >>> Alex >> >>> >> >>> >> >>>> >> >>>> Author: Bruno Herrera <bruherrera@gmail.com> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >> >>>> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not at dtsi >> >>>> file >> >>>> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >>>> index 6bfc595..2a22a82 100644 >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >>>> @@ -52,6 +52,10 @@ >> >>>> model = "STMicroelectronics STM32429i-EVAL board"; >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; >> >>>> >> >>>> + soc { >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >> >>>> + }; >> >>>> + >> >>>> chosen { >> >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; >> >>>> stdout-path = "serial0:115200n8"; >> >>>> @@ -96,6 +100,7 @@ >> >>>> >> >>>> ðernet0 { >> >>>> status = "okay"; >> >>>> + dma-ranges; >> >>>> pinctrl-0 = <ðernet0_mii>; >> >>>> pinctrl-names = "default"; >> >>>> phy-mode = "mii-id"; >> >>>> @@ -116,6 +121,7 @@ >> >>>> }; >> >>>> >> >>>> &usbotg_hs { >> >>>> + dma-ranges; >> >>>> dr_mode = "host"; >> >>>> phys = <&usbotg_hs_phy>; >> >>>> phy-names = "usb2-phy"; >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >>>> index 7d624a2..697a133 100644 >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >>>> @@ -59,7 +59,6 @@ >> >>>> }; >> >>>> >> >>>> soc { >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >>>> >> >>>> timer2: timer at 40000000 { >> >>>> compatible = "st,stm32-timer"; >> >>>> @@ -472,13 +471,11 @@ >> >>>> st,syscon = <&syscfg 0x4>; >> >>>> snps,pbl = <8>; >> >>>> snps,mixed-burst; >> >>>> - dma-ranges; >> >>>> status = "disabled"; >> >>>> }; >> >>>> >> >>>> usbotg_hs: usb at 40040000 { >> >>>> compatible = "snps,dwc2"; >> >>>> - dma-ranges; >> >>>> reg = <0x40040000 0x40000>; >> >>>> interrupts = <77>; >> >>>> clocks = <&rcc 0 29>; >> >>>> >> >>>> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >>>>> index 0596d60..3a1cfdd 100644 >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >>>>> @@ -59,8 +59,6 @@ >> >>>>> }; >> >>>>> >> >>>>> soc { >> >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >>>>> - >> >>>>> timer2: timer at 40000000 { >> >>>>> compatible = "st,stm32-timer"; >> >>>>> reg = <0x40000000 0x400>; >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >> >>>>> index 9e73656..c2213c0 100644 >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >> >>>>> @@ -64,6 +64,10 @@ >> >>>>> aliases { >> >>>>> serial0 = &usart3; >> >>>>> }; >> >>>>> + >> >>>>> + soc { >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> >>>>> + }; >> >>>>> }; >> >>>>> >> >>>>> &clk_hse { >> >>>>> -- >> >>>> >> >>>> >> >>>> >> >>>> >> >>>> Br., >> >>>> Bruno >> >>>> >> >>> >> > >> >> _______________________________________________ >> linux-arm-kernel mailing list >> linux-arm-kernel at lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-10-31 10:27 ` Bruno Herrera (?) @ 2016-10-31 14:14 ` Radosław Pietrzyk [not found] ` <CAFvLkMQ6YMg4sf2Ug8x4-YshwnjbLz3aVzm+JpKP6zG9r-WU4Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> -1 siblings, 1 reply; 32+ messages in thread From: Radosław Pietrzyk @ 2016-10-31 14:14 UTC (permalink / raw) To: Bruno Herrera Cc: Alexandre Torgue, mark.rutland, devicetree, Arnd Bergmann, linux, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel [-- Attachment #1: Type: text/plain, Size: 9801 bytes --] This is weird because dma ddresses are recalculated using parent's dma-ranges property and soc already has it so there should be absolutely no problem. 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera@gmail.com>: > On Fri, Oct 28, 2016 at 5:09 AM, Radosław Pietrzyk > <radoslaw.pietrzyk@gmail.com> wrote: > > Have you defined your sdio node within soc node ? > > It is in the SOC node of the DSTI file. > > > > > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com>: > >> > >> Hi Alex, > >> > >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue > >> <alexandre.torgue@st.com> wrote: > >> > Hi Bruno, > >> > > >> > > >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: > >> >> > >> >> Hi Alex, > >> >> > >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue > >> >> <alexandre.torgue@st.com> wrote: > >> >>> > >> >>> Hi Bruno, > >> >>> > >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: > >> >>>> > >> >>>> > >> >>>> Hi Alexandre, > >> >>>> > >> >>>>> > >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM start address > >> >>>>> remapping > >> >>>>> (to @0) to boost performances. A DMA translation through > >> >>>>> "dma-ranges" > >> >>>>> property was needed for other masters than the M4 CPU. > >> >>>>> stm32f429-disco doesn't use remapping so doesn't need this DMA > >> >>>>> translation. > >> >>>>> This patches moves this DMA translation definition from stm32f429 > >> >>>>> soc > >> >>>>> file > >> >>>>> to board files. > >> >>>>> > >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> > >> >>>>> > >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >> >>>>> index 13c7cd2..a763c15 100644 > >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >> >>>>> @@ -82,6 +82,10 @@ > >> >>>>> }; > >> >>>>> }; > >> >>>>> > >> >>>>> + soc { > >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >>>>> + }; > >> >>>>> + > >> >>>>> usbotg_hs_phy: usbphy { > >> >>>>> #phy-cells = <0>; > >> >>>>> compatible = "usb-nop-xceiv"; > >> >>>> > >> >>>> > >> >>>> > >> >>>> Shouldn't also the peripheral dma-ranges property move to board > >> >>>> specific > >> >>>> too? > >> >>>> I had this patch for while but I didn't had the time to submit: > >> >>> > >> >>> > >> >>> > >> >>> Well spot I forgot it. Actually, discussing with Arnd ysterday on > >> >>> IIRC, > >> >>> empty dma-ranges is not needed. Can you test on your side by > removing > >> >>> dma-ranges in usb node please ? > >> >> > >> >> Unfortunately will take a time for me to set up this environment on > >> >> the STM32F4-EVAL board. > >> >> And on the discovery boards we dont have this scenario. That was the > >> >> main reason I did not submit the patch right away. > >> >> My conclusion and I might be wrong but is based on the my tests with > >> >> SDIO device at STM32F469I-DISCO board. > >> >> > >> >> I started this issue as discussion at ST Forum but Maxime gave me the > >> >> hint. > >> >> > >> >> > >> >> > >> >> https://my.st.com/public/STe2ecommunities/mcu/Lists/ > cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic% > 2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32% > 2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID= > 0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46 > A77F0FFD06506F5B¤tviews=44 > >> >> > >> >>> I will push a v2 by removing empty dma-ranges if tests are ok in > your > >> >>> side. > >> >> > >> >> > >> >> From my understating/conclusion is: when empty property(dma-ranges) > is > >> >> the device node, the mapping will be taken in consideration when > using > >> >> DMA otherwise the mapping is ignored. > >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and > >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in question so > >> >> I suppose it can work without the property. > >> > > >> > > >> > For sure translation has to be done but I'm not sure that an empty > >> > "dma-ranges" is needed in device node to activate it. For Ethernet > empty > >> > "dma-ranges" is not needed. I will try with usb. > >> > >> In the case of SDIO it is needed. As example this is my working SDIO > node: > >> > >> sdio: sdio@40012c00 { > >> compatible = "arm,pl18x", "arm,primecell"; > >> arm,primecell-periphid = <0x00480181>; > >> reg = <0x40012c00 0x400>; > >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ > >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ > >> dma-names = "rx", "tx"; > >> clocks = <&rcc 0 171>; > >> clock-names = "apb_pclk"; > >> interrupts = <49>; > >> status = "disabled"; > >> }; > >> > >> &sdio { > >> status = "okay"; > >> vmmc-supply = <&wlan_en>; > >> bus-width = <4>; > >> max-frequency = <24000000>; > >> pinctrl-names = "default"; > >> pinctrl-0 = <&sdio_pins>; > >> ti,non-removable; > >> ti,needs-special-hs-handling; > >> dma-ranges; > >> cap-power-off-card; > >> keep-power-in-suspend; > >> > >> #address-cells = <1>; > >> #size-cells = <0>; > >> wlcore: wlcore@0 { > >> compatible = "ti,wl1835"; > >> reg = <2>; > >> interrupt-parent = <&gpioa>; > >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; > >> }; > >> }; > >> > >> > > >> > alex > >> > > >> > > >> >> > >> >>> > >> >>> Thanks in advance > >> >>> Alex > >> >>> > >> >>> > >> >>>> > >> >>>> Author: Bruno Herrera <bruherrera@gmail.com> > >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 > >> >>>> > >> >>>> ARM: DT: STM32: Use dma-ranges property per board not at dtsi > >> >>>> file > >> >>>> > >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >> >>>> index 6bfc595..2a22a82 100644 > >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >> >>>> @@ -52,6 +52,10 @@ > >> >>>> model = "STMicroelectronics STM32429i-EVAL board"; > >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; > >> >>>> > >> >>>> + soc { > >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; > >> >>>> + }; > >> >>>> + > >> >>>> chosen { > >> >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; > >> >>>> stdout-path = "serial0:115200n8"; > >> >>>> @@ -96,6 +100,7 @@ > >> >>>> > >> >>>> ðernet0 { > >> >>>> status = "okay"; > >> >>>> + dma-ranges; > >> >>>> pinctrl-0 = <ðernet0_mii>; > >> >>>> pinctrl-names = "default"; > >> >>>> phy-mode = "mii-id"; > >> >>>> @@ -116,6 +121,7 @@ > >> >>>> }; > >> >>>> > >> >>>> &usbotg_hs { > >> >>>> + dma-ranges; > >> >>>> dr_mode = "host"; > >> >>>> phys = <&usbotg_hs_phy>; > >> >>>> phy-names = "usb2-phy"; > >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi > >> >>>> index 7d624a2..697a133 100644 > >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >> >>>> @@ -59,7 +59,6 @@ > >> >>>> }; > >> >>>> > >> >>>> soc { > >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >>>> > >> >>>> timer2: timer@40000000 { > >> >>>> compatible = "st,stm32-timer"; > >> >>>> @@ -472,13 +471,11 @@ > >> >>>> st,syscon = <&syscfg 0x4>; > >> >>>> snps,pbl = <8>; > >> >>>> snps,mixed-burst; > >> >>>> - dma-ranges; > >> >>>> status = "disabled"; > >> >>>> }; > >> >>>> > >> >>>> usbotg_hs: usb@40040000 { > >> >>>> compatible = "snps,dwc2"; > >> >>>> - dma-ranges; > >> >>>> reg = <0x40040000 0x40000>; > >> >>>> interrupts = <77>; > >> >>>> clocks = <&rcc 0 29>; > >> >>>> > >> >>>> > >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi > >> >>>>> index 0596d60..3a1cfdd 100644 > >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >> >>>>> @@ -59,8 +59,6 @@ > >> >>>>> }; > >> >>>>> > >> >>>>> soc { > >> >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >>>>> - > >> >>>>> timer2: timer@40000000 { > >> >>>>> compatible = "st,stm32-timer"; > >> >>>>> reg = <0x40000000 0x400>; > >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts > >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts > >> >>>>> index 9e73656..c2213c0 100644 > >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts > >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts > >> >>>>> @@ -64,6 +64,10 @@ > >> >>>>> aliases { > >> >>>>> serial0 = &usart3; > >> >>>>> }; > >> >>>>> + > >> >>>>> + soc { > >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >>>>> + }; > >> >>>>> }; > >> >>>>> > >> >>>>> &clk_hse { > >> >>>>> -- > >> >>>> > >> >>>> > >> >>>> > >> >>>> > >> >>>> Br., > >> >>>> Bruno > >> >>>> > >> >>> > >> > > >> > >> _______________________________________________ > >> linux-arm-kernel mailing list > >> linux-arm-kernel@lists.infradead.org > >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > > > > [-- Attachment #2: Type: text/html, Size: 16590 bytes --] ^ permalink raw reply [flat|nested] 32+ messages in thread
[parent not found: <CAFvLkMQ6YMg4sf2Ug8x4-YshwnjbLz3aVzm+JpKP6zG9r-WU4Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-10-31 14:14 ` Radosław Pietrzyk @ 2016-10-31 16:41 ` Bruno Herrera 0 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-10-31 16:41 UTC (permalink / raw) To: Radosław Pietrzyk Cc: Alexandre Torgue, mark.rutland-5wv7dgnIgG8, devicetree-u79uwXL29TY76Z2rM5mHXA, Arnd Bergmann, linux-I+IVW8TIWO2tmTQ+vhA3Yw, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r [-- Attachment #1: Type: text/plain, Size: 10507 bytes --] On Mon, Oct 31, 2016 at 12:14 PM, Radosław Pietrzyk <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > This is weird because dma ddresses are recalculated using parent's > dma-ranges property and soc already has it so there should be absolutely no > problem. These are my DTS and DTSI file. > > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>: >> >> On Fri, Oct 28, 2016 at 5:09 AM, Radosław Pietrzyk >> <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> > Have you defined your sdio node within soc node ? >> >> It is in the SOC node of the DSTI file. >> >> > >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>: >> >> >> >> Hi Alex, >> >> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org> wrote: >> >> > Hi Bruno, >> >> > >> >> > >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >> >> >> >> >> >> Hi Alex, >> >> >> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >> >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org> wrote: >> >> >>> >> >> >>> Hi Bruno, >> >> >>> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >> >> >>>> >> >> >>>> >> >> >>>> Hi Alexandre, >> >> >>>> >> >> >>>>> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM start address >> >> >>>>> remapping >> >> >>>>> (to @0) to boost performances. A DMA translation through >> >> >>>>> "dma-ranges" >> >> >>>>> property was needed for other masters than the M4 CPU. >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need this DMA >> >> >>>>> translation. >> >> >>>>> This patches moves this DMA translation definition from stm32f429 >> >> >>>>> soc >> >> >>>>> file >> >> >>>>> to board files. >> >> >>>>> >> >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue-qxv4g6HH51o@public.gmane.org> >> >> >>>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>>> index 13c7cd2..a763c15 100644 >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>>> @@ -82,6 +82,10 @@ >> >> >>>>> }; >> >> >>>>> }; >> >> >>>>> >> >> >>>>> + soc { >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >>>>> + }; >> >> >>>>> + >> >> >>>>> usbotg_hs_phy: usbphy { >> >> >>>>> #phy-cells = <0>; >> >> >>>>> compatible = "usb-nop-xceiv"; >> >> >>>> >> >> >>>> >> >> >>>> >> >> >>>> Shouldn't also the peripheral dma-ranges property move to board >> >> >>>> specific >> >> >>>> too? >> >> >>>> I had this patch for while but I didn't had the time to submit: >> >> >>> >> >> >>> >> >> >>> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd ysterday on >> >> >>> IIRC, >> >> >>> empty dma-ranges is not needed. Can you test on your side by >> >> >>> removing >> >> >>> dma-ranges in usb node please ? >> >> >> >> >> >> Unfortunately will take a time for me to set up this environment on >> >> >> the STM32F4-EVAL board. >> >> >> And on the discovery boards we dont have this scenario. That was the >> >> >> main reason I did not submit the patch right away. >> >> >> My conclusion and I might be wrong but is based on the my tests with >> >> >> SDIO device at STM32F469I-DISCO board. >> >> >> >> >> >> I started this issue as discussion at ST Forum but Maxime gave me >> >> >> the >> >> >> hint. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >> >> >> >> >> >>> I will push a v2 by removing empty dma-ranges if tests are ok in >> >> >>> your >> >> >>> side. >> >> >> >> >> >> >> >> >> From my understating/conclusion is: when empty property(dma-ranges) >> >> >> is >> >> >> the device node, the mapping will be taken in consideration when >> >> >> using >> >> >> DMA otherwise the mapping is ignored. >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in question >> >> >> so >> >> >> I suppose it can work without the property. >> >> > >> >> > >> >> > For sure translation has to be done but I'm not sure that an empty >> >> > "dma-ranges" is needed in device node to activate it. For Ethernet >> >> > empty >> >> > "dma-ranges" is not needed. I will try with usb. >> >> >> >> In the case of SDIO it is needed. As example this is my working SDIO >> >> node: >> >> >> >> sdio: sdio@40012c00 { >> >> compatible = "arm,pl18x", "arm,primecell"; >> >> arm,primecell-periphid = <0x00480181>; >> >> reg = <0x40012c00 0x400>; >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >> >> dma-names = "rx", "tx"; >> >> clocks = <&rcc 0 171>; >> >> clock-names = "apb_pclk"; >> >> interrupts = <49>; >> >> status = "disabled"; >> >> }; >> >> >> >> &sdio { >> >> status = "okay"; >> >> vmmc-supply = <&wlan_en>; >> >> bus-width = <4>; >> >> max-frequency = <24000000>; >> >> pinctrl-names = "default"; >> >> pinctrl-0 = <&sdio_pins>; >> >> ti,non-removable; >> >> ti,needs-special-hs-handling; >> >> dma-ranges; >> >> cap-power-off-card; >> >> keep-power-in-suspend; >> >> >> >> #address-cells = <1>; >> >> #size-cells = <0>; >> >> wlcore: wlcore@0 { >> >> compatible = "ti,wl1835"; >> >> reg = <2>; >> >> interrupt-parent = <&gpioa>; >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >> >> }; >> >> }; >> >> >> >> > >> >> > alex >> >> > >> >> > >> >> >> >> >> >>> >> >> >>> Thanks in advance >> >> >>> Alex >> >> >>> >> >> >>> >> >> >>>> >> >> >>>> Author: Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >> >> >>>> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not at dtsi >> >> >>>> file >> >> >>>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>> index 6bfc595..2a22a82 100644 >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>> @@ -52,6 +52,10 @@ >> >> >>>> model = "STMicroelectronics STM32429i-EVAL board"; >> >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; >> >> >>>> >> >> >>>> + soc { >> >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >> >> >>>> + }; >> >> >>>> + >> >> >>>> chosen { >> >> >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; >> >> >>>> stdout-path = "serial0:115200n8"; >> >> >>>> @@ -96,6 +100,7 @@ >> >> >>>> >> >> >>>> ðernet0 { >> >> >>>> status = "okay"; >> >> >>>> + dma-ranges; >> >> >>>> pinctrl-0 = <ðernet0_mii>; >> >> >>>> pinctrl-names = "default"; >> >> >>>> phy-mode = "mii-id"; >> >> >>>> @@ -116,6 +121,7 @@ >> >> >>>> }; >> >> >>>> >> >> >>>> &usbotg_hs { >> >> >>>> + dma-ranges; >> >> >>>> dr_mode = "host"; >> >> >>>> phys = <&usbotg_hs_phy>; >> >> >>>> phy-names = "usb2-phy"; >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>> index 7d624a2..697a133 100644 >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>> @@ -59,7 +59,6 @@ >> >> >>>> }; >> >> >>>> >> >> >>>> soc { >> >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >>>> >> >> >>>> timer2: timer@40000000 { >> >> >>>> compatible = "st,stm32-timer"; >> >> >>>> @@ -472,13 +471,11 @@ >> >> >>>> st,syscon = <&syscfg 0x4>; >> >> >>>> snps,pbl = <8>; >> >> >>>> snps,mixed-burst; >> >> >>>> - dma-ranges; >> >> >>>> status = "disabled"; >> >> >>>> }; >> >> >>>> >> >> >>>> usbotg_hs: usb@40040000 { >> >> >>>> compatible = "snps,dwc2"; >> >> >>>> - dma-ranges; >> >> >>>> reg = <0x40040000 0x40000>; >> >> >>>> interrupts = <77>; >> >> >>>> clocks = <&rcc 0 29>; >> >> >>>> >> >> >>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>>> index 0596d60..3a1cfdd 100644 >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>>> @@ -59,8 +59,6 @@ >> >> >>>>> }; >> >> >>>>> >> >> >>>>> soc { >> >> >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >>>>> - >> >> >>>>> timer2: timer@40000000 { >> >> >>>>> compatible = "st,stm32-timer"; >> >> >>>>> reg = <0x40000000 0x400>; >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >> >> >>>>> index 9e73656..c2213c0 100644 >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >> >> >>>>> @@ -64,6 +64,10 @@ >> >> >>>>> aliases { >> >> >>>>> serial0 = &usart3; >> >> >>>>> }; >> >> >>>>> + >> >> >>>>> + soc { >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >>>>> + }; >> >> >>>>> }; >> >> >>>>> >> >> >>>>> &clk_hse { >> >> >>>>> -- >> >> >>>> >> >> >>>> >> >> >>>> >> >> >>>> >> >> >>>> Br., >> >> >>>> Bruno >> >> >>>> >> >> >>> >> >> > >> >> >> >> _______________________________________________ >> >> linux-arm-kernel mailing list >> >> linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >> > >> > > > [-- Attachment #2: stm32f469-disco.dts --] [-- Type: application/octet-stream, Size: 3330 bytes --] /* * Copyright 2016 - Lee Jones <lee.jones@linaro.org> * * This file is dual-licensed: you can use it either under the terms * of the GPL or the X11 license, at your option. Note that this dual * licensing only applies to this file, and not this project as a * whole. * * a) This file is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this file; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301 USA * * Or, alternatively, * * b) Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or * sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ /dts-v1/; #include "stm32f429.dtsi" #include <dt-bindings/input/input.h> #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/interrupt-controller/irq.h> / { model = "STMicroelectronics STM32F469i-DISCO board"; compatible = "st,stm32f469i-disco", "st,stm32f469"; soc { dma-ranges = <0xC0000000 0x0 0x10000000>; }; chosen { bootargs = "root=/dev/sda1 rootfstype=ext4 ro rootwait clk_ignore_unused user_debug=31"; stdout-path = "serial0:115200n8"; }; memory { reg = <0x00000000 0x1000000>; }; aliases { serial0 = &usart3; }; }; &clk_hse { clock-frequency = <8000000>; }; &usart3 { pinctrl-0 = <&usart3_pins_a>; pinctrl-names = "default"; status = "okay"; }; &sdio { status = "okay"; bus-width = <4>; max-frequency = <24000000>; pinctrl-names = "default"; pinctrl-0 = <&sdio_pins>; ti,non-removable; ti,needs-special-hs-handling; dma-ranges; cap-power-off-card; keep-power-in-suspend; #address-cells = <1>; #size-cells = <0>; wlcore: wlcore@0 { compatible = "ti,wl1835"; reg = <2>; interrupt-parent = <&gpioa>; interrupts = <8 IRQ_TYPE_EDGE_RISING>; }; }; [-- Attachment #3: stm32f429.dtsi --] [-- Type: application/octet-stream, Size: 12741 bytes --] /* * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32@gmail.com> * * This file is dual-licensed: you can use it either under the terms * of the GPL or the X11 license, at your option. Note that this dual * licensing only applies to this file, and not this project as a * whole. * * a) This file is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this file; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * MA 02110-1301 USA * * Or, alternatively, * * b) Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or * sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ #include "skeleton.dtsi" #include "armv7-m.dtsi" #include <dt-bindings/pinctrl/stm32f429-pinfunc.h> / { clocks { clk_hse: clk-hse { #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <0>; }; }; soc { timer2: timer@40000000 { compatible = "st,stm32-timer"; reg = <0x40000000 0x400>; interrupts = <28>; clocks = <&rcc 0 128>; status = "disabled"; }; timer3: timer@40000400 { compatible = "st,stm32-timer"; reg = <0x40000400 0x400>; interrupts = <29>; clocks = <&rcc 0 129>; status = "disabled"; }; timer4: timer@40000800 { compatible = "st,stm32-timer"; reg = <0x40000800 0x400>; interrupts = <30>; clocks = <&rcc 0 130>; status = "disabled"; }; timer5: timer@40000c00 { compatible = "st,stm32-timer"; reg = <0x40000c00 0x400>; interrupts = <50>; clocks = <&rcc 0 131>; }; timer6: timer@40001000 { compatible = "st,stm32-timer"; reg = <0x40001000 0x400>; interrupts = <54>; clocks = <&rcc 0 132>; status = "disabled"; }; timer7: timer@40001400 { compatible = "st,stm32-timer"; reg = <0x40001400 0x400>; interrupts = <55>; clocks = <&rcc 0 133>; status = "disabled"; }; usart2: serial@40004400 { compatible = "st,stm32-usart", "st,stm32-uart"; reg = <0x40004400 0x400>; interrupts = <38>; clocks = <&rcc 0 145>; status = "disabled"; }; usart3: serial@40004800 { compatible = "st,stm32-usart", "st,stm32-uart"; reg = <0x40004800 0x400>; interrupts = <39>; clocks = <&rcc 0 146>; status = "disabled"; /*dmas = <&dma1 1 4 0x400 0x0>, <&dma1 3 4 0x400 0x0>; dma-names = "rx", "tx";*/ }; usart4: serial@40004c00 { compatible = "st,stm32-uart"; reg = <0x40004c00 0x400>; interrupts = <52>; clocks = <&rcc 0 147>; status = "disabled"; }; usart5: serial@40005000 { compatible = "st,stm32-uart"; reg = <0x40005000 0x400>; interrupts = <53>; clocks = <&rcc 0 148>; status = "disabled"; }; usart7: serial@40007800 { compatible = "st,stm32-usart", "st,stm32-uart"; reg = <0x40007800 0x400>; interrupts = <82>; clocks = <&rcc 0 158>; status = "disabled"; }; usart8: serial@40007c00 { compatible = "st,stm32-usart", "st,stm32-uart"; reg = <0x40007c00 0x400>; interrupts = <83>; clocks = <&rcc 0 159>; status = "disabled"; }; usart1: serial@40011000 { compatible = "st,stm32-usart", "st,stm32-uart"; reg = <0x40011000 0x400>; interrupts = <37>; clocks = <&rcc 0 164>; status = "disabled"; /*dmas = <&dma2 2 4 0x400 0x0>, <&dma2 7 4 0x400 0x0>; dma-names = "rx", "tx";*/ }; usart6: serial@40011400 { compatible = "st,stm32-usart", "st,stm32-uart"; reg = <0x40011400 0x400>; interrupts = <71>; clocks = <&rcc 0 165>; status = "disabled"; dmas = <&dma2 2 5 0x400 0x0>, <&dma2 7 5 0x400 0x0>; dma-names = "rx", "tx"; }; sdio: sdio@40012c00 { compatible = "arm,pl18x", "arm,primecell"; arm,primecell-periphid = <0x00480181>; reg = <0x40012c00 0x400>; dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ dma-names = "rx", "tx"; clocks = <&rcc 0 171>; clock-names = "apb_pclk"; interrupts = <49>; status = "disabled"; }; syscfg: system-config@40013800 { compatible = "syscon"; reg = <0x40013800 0x400>; }; exti: interrupt-controller@40013c00 { compatible = "st,stm32-exti"; interrupt-controller; #interrupt-cells = <2>; reg = <0x40013C00 0x400>; interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <42>, <62>, <76>; }; pinctrl: pin-controller { #address-cells = <1>; #size-cells = <1>; compatible = "st,stm32f429-pinctrl"; ranges = <0 0x40020000 0x3000>; interrupt-parent = <&exti>; st,syscfg = <&syscfg 0x8>; pins-are-numbered; gpioa: gpio@40020000 { gpio-controller; #gpio-cells = <2>; reg = <0x0 0x400>; clocks = <&rcc 0 0>; st,bank-name = "GPIOA"; }; gpiob: gpio@40020400 { gpio-controller; #gpio-cells = <2>; reg = <0x400 0x400>; clocks = <&rcc 0 1>; st,bank-name = "GPIOB"; }; gpioc: gpio@40020800 { gpio-controller; #gpio-cells = <2>; reg = <0x800 0x400>; clocks = <&rcc 0 2>; st,bank-name = "GPIOC"; }; gpiod: gpio@40020c00 { gpio-controller; #gpio-cells = <2>; reg = <0xc00 0x400>; clocks = <&rcc 0 3>; st,bank-name = "GPIOD"; }; gpioe: gpio@40021000 { gpio-controller; #gpio-cells = <2>; reg = <0x1000 0x400>; clocks = <&rcc 0 4>; st,bank-name = "GPIOE"; }; gpiof: gpio@40021400 { gpio-controller; #gpio-cells = <2>; reg = <0x1400 0x400>; clocks = <&rcc 0 5>; st,bank-name = "GPIOF"; }; gpiog: gpio@40021800 { gpio-controller; #gpio-cells = <2>; reg = <0x1800 0x400>; clocks = <&rcc 0 6>; st,bank-name = "GPIOG"; }; gpioh: gpio@40021c00 { gpio-controller; #gpio-cells = <2>; reg = <0x1c00 0x400>; clocks = <&rcc 0 7>; st,bank-name = "GPIOH"; }; gpioi: gpio@40022000 { gpio-controller; #gpio-cells = <2>; reg = <0x2000 0x400>; clocks = <&rcc 0 8>; st,bank-name = "GPIOI"; }; gpioj: gpio@40022400 { gpio-controller; #gpio-cells = <2>; reg = <0x2400 0x400>; clocks = <&rcc 0 9>; st,bank-name = "GPIOJ"; }; gpiok: gpio@40022800 { gpio-controller; #gpio-cells = <2>; reg = <0x2800 0x400>; clocks = <&rcc 0 10>; st,bank-name = "GPIOK"; }; usart1_pins_a: usart1@0 { pins1 { pinmux = <STM32F429_PA9_FUNC_USART1_TX>; bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { pinmux = <STM32F429_PA10_FUNC_USART1_RX>; bias-disable; }; }; usart6_pins_a: usart6@0 { pins1 { pinmux = <STM32F429_PG14_FUNC_USART6_TX>, <STM32F429_PG12_FUNC_USART6_RTS>; bias-disable; drive-push-pull; slew-rate = <2>; }; pins2 { pinmux = <STM32F429_PG9_FUNC_USART6_RX>, <STM32F429_PG13_FUNC_USART6_CTS>; bias-disable; }; }; usbotg_fs_pins_a: usbotg_fs@0 { pins { pinmux = <STM32F429_PA10_FUNC_OTG_FS_ID>, <STM32F429_PA11_FUNC_OTG_FS_DM>, <STM32F429_PA12_FUNC_OTG_FS_DP>; bias-disable; drive-push-pull; slew-rate = <2>; }; }; usbotg_fs_pins_b: usbotg_fs@1 { pins { pinmux = <STM32F429_PB12_FUNC_OTG_HS_ID>, <STM32F429_PB14_FUNC_OTG_HS_DM>, <STM32F429_PB15_FUNC_OTG_HS_DP>; bias-disable; drive-push-pull; slew-rate = <2>; }; }; usart3_pins_a: usart3@0 { pins1 { pinmux = <STM32F429_PB10_FUNC_USART3_TX>; bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { pinmux = <STM32F429_PB11_FUNC_USART3_RX>; bias-disable; }; }; usbotg_hs_pins_a: usbotg_hs@0 { pins { pinmux = <STM32F429_PH4_FUNC_OTG_HS_ULPI_NXT>, <STM32F429_PI11_FUNC_OTG_HS_ULPI_DIR>, <STM32F429_PC0_FUNC_OTG_HS_ULPI_STP>, <STM32F429_PA5_FUNC_OTG_HS_ULPI_CK>, <STM32F429_PA3_FUNC_OTG_HS_ULPI_D0>, <STM32F429_PB0_FUNC_OTG_HS_ULPI_D1>, <STM32F429_PB1_FUNC_OTG_HS_ULPI_D2>, <STM32F429_PB10_FUNC_OTG_HS_ULPI_D3>, <STM32F429_PB11_FUNC_OTG_HS_ULPI_D4>, <STM32F429_PB12_FUNC_OTG_HS_ULPI_D5>, <STM32F429_PB13_FUNC_OTG_HS_ULPI_D6>, <STM32F429_PB5_FUNC_OTG_HS_ULPI_D7>; bias-disable; drive-push-pull; slew-rate = <2>; }; }; ethernet0_mii: mii@0 { pins { pinmux = <STM32F429_PG13_FUNC_ETH_MII_TXD0_ETH_RMII_TXD0>, <STM32F429_PG14_FUNC_ETH_MII_TXD1_ETH_RMII_TXD1>, <STM32F429_PC2_FUNC_ETH_MII_TXD2>, <STM32F429_PB8_FUNC_ETH_MII_TXD3>, <STM32F429_PC3_FUNC_ETH_MII_TX_CLK>, <STM32F429_PG11_FUNC_ETH_MII_TX_EN_ETH_RMII_TX_EN>, <STM32F429_PA2_FUNC_ETH_MDIO>, <STM32F429_PC1_FUNC_ETH_MDC>, <STM32F429_PA1_FUNC_ETH_MII_RX_CLK_ETH_RMII_REF_CLK>, <STM32F429_PA7_FUNC_ETH_MII_RX_DV_ETH_RMII_CRS_DV>, <STM32F429_PC4_FUNC_ETH_MII_RXD0_ETH_RMII_RXD0>, <STM32F429_PC5_FUNC_ETH_MII_RXD1_ETH_RMII_RXD1>, <STM32F429_PH6_FUNC_ETH_MII_RXD2>, <STM32F429_PH7_FUNC_ETH_MII_RXD3>; slew-rate = <2>; }; }; sdio_pins: sdio@0 { pins { pinmux = <STM32F429_PC8_FUNC_SDIO_D0>, <STM32F429_PC9_FUNC_SDIO_D1>, <STM32F429_PC10_FUNC_SDIO_D2>, <STM32F429_PC11_FUNC_SDIO_D3>, <STM32F429_PC12_FUNC_SDIO_CK>, <STM32F429_PD2_FUNC_SDIO_CMD>; bias-disable; drive-push-pull; slew-rate = <2>; }; }; }; rcc: rcc@40023810 { #reset-cells = <1>; #clock-cells = <2>; compatible = "st,stm32f42xx-rcc", "st,stm32-rcc"; reg = <0x40023800 0x400>; clocks = <&clk_hse>; }; dma1: dma-controller@40026000 { compatible = "st,stm32-dma"; reg = <0x40026000 0x400>; interrupts = <11>, <12>, <13>, <14>, <15>, <16>, <17>, <47>; clocks = <&rcc 0 21>; #dma-cells = <4>; }; dma2: dma-controller@40026400 { compatible = "st,stm32-dma"; reg = <0x40026400 0x400>; interrupts = <56>, <57>, <58>, <59>, <60>, <68>, <69>, <70>; clocks = <&rcc 0 22>; #dma-cells = <4>; st,mem2mem; }; ethernet0: dwmac@40028000 { compatible = "st,stm32-dwmac", "snps,dwmac-3.50a"; reg = <0x40028000 0x8000>; reg-names = "stmmaceth"; interrupts = <61>, <62>; interrupt-names = "macirq", "eth_wake_irq"; clock-names = "stmmaceth", "tx-clk", "rx-clk"; clocks = <&rcc 0 25>, <&rcc 0 26>, <&rcc 0 27>; st,syscon = <&syscfg 0x4>; snps,pbl = <8>; snps,mixed-burst; status = "disabled"; }; usbotg_hs: usb@40040000 { compatible = "snps,dwc2"; reg = <0x40040000 0x40000>; interrupts = <77>; clocks = <&rcc 0 29>; clock-names = "otg"; status = "disabled"; }; usbotg_fs: usb@50000000 { compatible = "st,stm32-fsotg", "snps,dwc2"; reg = <0x50000000 0x40000>; interrupts = <67>; clocks = <&rcc 0 39>; clock-names = "otg"; status = "disabled"; }; rng: rng@50060800 { compatible = "st,stm32-rng"; reg = <0x50060800 0x400>; interrupts = <80>; clocks = <&rcc 0 38>; }; }; }; &systick { clocks = <&rcc 1 0>; status = "okay"; }; ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-10-31 16:41 ` Bruno Herrera 0 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-10-31 16:41 UTC (permalink / raw) To: linux-arm-kernel On Mon, Oct 31, 2016 at 12:14 PM, Rados?aw Pietrzyk <radoslaw.pietrzyk@gmail.com> wrote: > This is weird because dma ddresses are recalculated using parent's > dma-ranges property and soc already has it so there should be absolutely no > problem. These are my DTS and DTSI file. > > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera@gmail.com>: >> >> On Fri, Oct 28, 2016 at 5:09 AM, Rados?aw Pietrzyk >> <radoslaw.pietrzyk@gmail.com> wrote: >> > Have you defined your sdio node within soc node ? >> >> It is in the SOC node of the DSTI file. >> >> > >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com>: >> >> >> >> Hi Alex, >> >> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >> >> <alexandre.torgue@st.com> wrote: >> >> > Hi Bruno, >> >> > >> >> > >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >> >> >> >> >> >> Hi Alex, >> >> >> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >> >> >> <alexandre.torgue@st.com> wrote: >> >> >>> >> >> >>> Hi Bruno, >> >> >>> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >> >> >>>> >> >> >>>> >> >> >>>> Hi Alexandre, >> >> >>>> >> >> >>>>> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM start address >> >> >>>>> remapping >> >> >>>>> (to @0) to boost performances. A DMA translation through >> >> >>>>> "dma-ranges" >> >> >>>>> property was needed for other masters than the M4 CPU. >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need this DMA >> >> >>>>> translation. >> >> >>>>> This patches moves this DMA translation definition from stm32f429 >> >> >>>>> soc >> >> >>>>> file >> >> >>>>> to board files. >> >> >>>>> >> >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> >> >> >>>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>>> index 13c7cd2..a763c15 100644 >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>>> @@ -82,6 +82,10 @@ >> >> >>>>> }; >> >> >>>>> }; >> >> >>>>> >> >> >>>>> + soc { >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >>>>> + }; >> >> >>>>> + >> >> >>>>> usbotg_hs_phy: usbphy { >> >> >>>>> #phy-cells = <0>; >> >> >>>>> compatible = "usb-nop-xceiv"; >> >> >>>> >> >> >>>> >> >> >>>> >> >> >>>> Shouldn't also the peripheral dma-ranges property move to board >> >> >>>> specific >> >> >>>> too? >> >> >>>> I had this patch for while but I didn't had the time to submit: >> >> >>> >> >> >>> >> >> >>> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd ysterday on >> >> >>> IIRC, >> >> >>> empty dma-ranges is not needed. Can you test on your side by >> >> >>> removing >> >> >>> dma-ranges in usb node please ? >> >> >> >> >> >> Unfortunately will take a time for me to set up this environment on >> >> >> the STM32F4-EVAL board. >> >> >> And on the discovery boards we dont have this scenario. That was the >> >> >> main reason I did not submit the patch right away. >> >> >> My conclusion and I might be wrong but is based on the my tests with >> >> >> SDIO device at STM32F469I-DISCO board. >> >> >> >> >> >> I started this issue as discussion at ST Forum but Maxime gave me >> >> >> the >> >> >> hint. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >> >> >> >> >> >>> I will push a v2 by removing empty dma-ranges if tests are ok in >> >> >>> your >> >> >>> side. >> >> >> >> >> >> >> >> >> From my understating/conclusion is: when empty property(dma-ranges) >> >> >> is >> >> >> the device node, the mapping will be taken in consideration when >> >> >> using >> >> >> DMA otherwise the mapping is ignored. >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in question >> >> >> so >> >> >> I suppose it can work without the property. >> >> > >> >> > >> >> > For sure translation has to be done but I'm not sure that an empty >> >> > "dma-ranges" is needed in device node to activate it. For Ethernet >> >> > empty >> >> > "dma-ranges" is not needed. I will try with usb. >> >> >> >> In the case of SDIO it is needed. As example this is my working SDIO >> >> node: >> >> >> >> sdio: sdio at 40012c00 { >> >> compatible = "arm,pl18x", "arm,primecell"; >> >> arm,primecell-periphid = <0x00480181>; >> >> reg = <0x40012c00 0x400>; >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >> >> dma-names = "rx", "tx"; >> >> clocks = <&rcc 0 171>; >> >> clock-names = "apb_pclk"; >> >> interrupts = <49>; >> >> status = "disabled"; >> >> }; >> >> >> >> &sdio { >> >> status = "okay"; >> >> vmmc-supply = <&wlan_en>; >> >> bus-width = <4>; >> >> max-frequency = <24000000>; >> >> pinctrl-names = "default"; >> >> pinctrl-0 = <&sdio_pins>; >> >> ti,non-removable; >> >> ti,needs-special-hs-handling; >> >> dma-ranges; >> >> cap-power-off-card; >> >> keep-power-in-suspend; >> >> >> >> #address-cells = <1>; >> >> #size-cells = <0>; >> >> wlcore: wlcore at 0 { >> >> compatible = "ti,wl1835"; >> >> reg = <2>; >> >> interrupt-parent = <&gpioa>; >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >> >> }; >> >> }; >> >> >> >> > >> >> > alex >> >> > >> >> > >> >> >> >> >> >>> >> >> >>> Thanks in advance >> >> >>> Alex >> >> >>> >> >> >>> >> >> >>>> >> >> >>>> Author: Bruno Herrera <bruherrera@gmail.com> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >> >> >>>> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not at dtsi >> >> >>>> file >> >> >>>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>> index 6bfc595..2a22a82 100644 >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >>>> @@ -52,6 +52,10 @@ >> >> >>>> model = "STMicroelectronics STM32429i-EVAL board"; >> >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; >> >> >>>> >> >> >>>> + soc { >> >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >> >> >>>> + }; >> >> >>>> + >> >> >>>> chosen { >> >> >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; >> >> >>>> stdout-path = "serial0:115200n8"; >> >> >>>> @@ -96,6 +100,7 @@ >> >> >>>> >> >> >>>> ðernet0 { >> >> >>>> status = "okay"; >> >> >>>> + dma-ranges; >> >> >>>> pinctrl-0 = <ðernet0_mii>; >> >> >>>> pinctrl-names = "default"; >> >> >>>> phy-mode = "mii-id"; >> >> >>>> @@ -116,6 +121,7 @@ >> >> >>>> }; >> >> >>>> >> >> >>>> &usbotg_hs { >> >> >>>> + dma-ranges; >> >> >>>> dr_mode = "host"; >> >> >>>> phys = <&usbotg_hs_phy>; >> >> >>>> phy-names = "usb2-phy"; >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>> index 7d624a2..697a133 100644 >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>> @@ -59,7 +59,6 @@ >> >> >>>> }; >> >> >>>> >> >> >>>> soc { >> >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >>>> >> >> >>>> timer2: timer at 40000000 { >> >> >>>> compatible = "st,stm32-timer"; >> >> >>>> @@ -472,13 +471,11 @@ >> >> >>>> st,syscon = <&syscfg 0x4>; >> >> >>>> snps,pbl = <8>; >> >> >>>> snps,mixed-burst; >> >> >>>> - dma-ranges; >> >> >>>> status = "disabled"; >> >> >>>> }; >> >> >>>> >> >> >>>> usbotg_hs: usb at 40040000 { >> >> >>>> compatible = "snps,dwc2"; >> >> >>>> - dma-ranges; >> >> >>>> reg = <0x40040000 0x40000>; >> >> >>>> interrupts = <77>; >> >> >>>> clocks = <&rcc 0 29>; >> >> >>>> >> >> >>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>>> index 0596d60..3a1cfdd 100644 >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >> >>>>> @@ -59,8 +59,6 @@ >> >> >>>>> }; >> >> >>>>> >> >> >>>>> soc { >> >> >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >>>>> - >> >> >>>>> timer2: timer at 40000000 { >> >> >>>>> compatible = "st,stm32-timer"; >> >> >>>>> reg = <0x40000000 0x400>; >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >> >> >>>>> index 9e73656..c2213c0 100644 >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >> >> >>>>> @@ -64,6 +64,10 @@ >> >> >>>>> aliases { >> >> >>>>> serial0 = &usart3; >> >> >>>>> }; >> >> >>>>> + >> >> >>>>> + soc { >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >>>>> + }; >> >> >>>>> }; >> >> >>>>> >> >> >>>>> &clk_hse { >> >> >>>>> -- >> >> >>>> >> >> >>>> >> >> >>>> >> >> >>>> >> >> >>>> Br., >> >> >>>> Bruno >> >> >>>> >> >> >>> >> >> > >> >> >> >> _______________________________________________ >> >> linux-arm-kernel mailing list >> >> linux-arm-kernel at lists.infradead.org >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >> > >> > > > -------------- next part -------------- A non-text attachment was scrubbed... Name: stm32f469-disco.dts Type: application/octet-stream Size: 3330 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20161031/f28cc5d8/attachment-0002.obj> -------------- next part -------------- A non-text attachment was scrubbed... Name: stm32f429.dtsi Type: application/octet-stream Size: 12741 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20161031/f28cc5d8/attachment-0003.obj> ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-10-31 16:41 ` Bruno Herrera (?) @ 2016-10-31 18:58 ` Radosław Pietrzyk [not found] ` <CAFvLkMTCkRcwbRc8GVNBoJFAvKWHYDjOPabueQPjTseZrucadA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> -1 siblings, 1 reply; 32+ messages in thread From: Radosław Pietrzyk @ 2016-10-31 18:58 UTC (permalink / raw) To: Bruno Herrera Cc: Alexandre Torgue, mark.rutland, devicetree, Arnd Bergmann, linux, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel [-- Attachment #1: Type: text/plain, Size: 11046 bytes --] I think wlcore driver searches dma-ranges in its parent that's why sdio node needs it. 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera@gmail.com>: > On Mon, Oct 31, 2016 at 12:14 PM, Radosław Pietrzyk > <radoslaw.pietrzyk@gmail.com> wrote: > > This is weird because dma ddresses are recalculated using parent's > > dma-ranges property and soc already has it so there should be absolutely > no > > problem. > > These are my DTS and DTSI file. > > > > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera@gmail.com>: > >> > >> On Fri, Oct 28, 2016 at 5:09 AM, Radosław Pietrzyk > >> <radoslaw.pietrzyk@gmail.com> wrote: > >> > Have you defined your sdio node within soc node ? > >> > >> It is in the SOC node of the DSTI file. > >> > >> > > >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com>: > >> >> > >> >> Hi Alex, > >> >> > >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue > >> >> <alexandre.torgue@st.com> wrote: > >> >> > Hi Bruno, > >> >> > > >> >> > > >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: > >> >> >> > >> >> >> Hi Alex, > >> >> >> > >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue > >> >> >> <alexandre.torgue@st.com> wrote: > >> >> >>> > >> >> >>> Hi Bruno, > >> >> >>> > >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: > >> >> >>>> > >> >> >>>> > >> >> >>>> Hi Alexandre, > >> >> >>>> > >> >> >>>>> > >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM start > address > >> >> >>>>> remapping > >> >> >>>>> (to @0) to boost performances. A DMA translation through > >> >> >>>>> "dma-ranges" > >> >> >>>>> property was needed for other masters than the M4 CPU. > >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need this DMA > >> >> >>>>> translation. > >> >> >>>>> This patches moves this DMA translation definition from > stm32f429 > >> >> >>>>> soc > >> >> >>>>> file > >> >> >>>>> to board files. > >> >> >>>>> > >> >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> > >> >> >>>>> > >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>>> index 13c7cd2..a763c15 100644 > >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>>> @@ -82,6 +82,10 @@ > >> >> >>>>> }; > >> >> >>>>> }; > >> >> >>>>> > >> >> >>>>> + soc { > >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >> >>>>> + }; > >> >> >>>>> + > >> >> >>>>> usbotg_hs_phy: usbphy { > >> >> >>>>> #phy-cells = <0>; > >> >> >>>>> compatible = "usb-nop-xceiv"; > >> >> >>>> > >> >> >>>> > >> >> >>>> > >> >> >>>> Shouldn't also the peripheral dma-ranges property move to board > >> >> >>>> specific > >> >> >>>> too? > >> >> >>>> I had this patch for while but I didn't had the time to submit: > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> Well spot I forgot it. Actually, discussing with Arnd ysterday on > >> >> >>> IIRC, > >> >> >>> empty dma-ranges is not needed. Can you test on your side by > >> >> >>> removing > >> >> >>> dma-ranges in usb node please ? > >> >> >> > >> >> >> Unfortunately will take a time for me to set up this environment > on > >> >> >> the STM32F4-EVAL board. > >> >> >> And on the discovery boards we dont have this scenario. That was > the > >> >> >> main reason I did not submit the patch right away. > >> >> >> My conclusion and I might be wrong but is based on the my tests > with > >> >> >> SDIO device at STM32F469I-DISCO board. > >> >> >> > >> >> >> I started this issue as discussion at ST Forum but Maxime gave me > >> >> >> the > >> >> >> hint. > >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> https://my.st.com/public/STe2ecommunities/mcu/Lists/ > cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic% > 2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32% > 2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID= > 0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46 > A77F0FFD06506F5B¤tviews=44 > >> >> >> > >> >> >>> I will push a v2 by removing empty dma-ranges if tests are ok in > >> >> >>> your > >> >> >>> side. > >> >> >> > >> >> >> > >> >> >> From my understating/conclusion is: when empty > property(dma-ranges) > >> >> >> is > >> >> >> the device node, the mapping will be taken in consideration when > >> >> >> using > >> >> >> DMA otherwise the mapping is ignored. > >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and > >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in question > >> >> >> so > >> >> >> I suppose it can work without the property. > >> >> > > >> >> > > >> >> > For sure translation has to be done but I'm not sure that an empty > >> >> > "dma-ranges" is needed in device node to activate it. For Ethernet > >> >> > empty > >> >> > "dma-ranges" is not needed. I will try with usb. > >> >> > >> >> In the case of SDIO it is needed. As example this is my working SDIO > >> >> node: > >> >> > >> >> sdio: sdio@40012c00 { > >> >> compatible = "arm,pl18x", "arm,primecell"; > >> >> arm,primecell-periphid = <0x00480181>; > >> >> reg = <0x40012c00 0x400>; > >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ > >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ > >> >> dma-names = "rx", "tx"; > >> >> clocks = <&rcc 0 171>; > >> >> clock-names = "apb_pclk"; > >> >> interrupts = <49>; > >> >> status = "disabled"; > >> >> }; > >> >> > >> >> &sdio { > >> >> status = "okay"; > >> >> vmmc-supply = <&wlan_en>; > >> >> bus-width = <4>; > >> >> max-frequency = <24000000>; > >> >> pinctrl-names = "default"; > >> >> pinctrl-0 = <&sdio_pins>; > >> >> ti,non-removable; > >> >> ti,needs-special-hs-handling; > >> >> dma-ranges; > >> >> cap-power-off-card; > >> >> keep-power-in-suspend; > >> >> > >> >> #address-cells = <1>; > >> >> #size-cells = <0>; > >> >> wlcore: wlcore@0 { > >> >> compatible = "ti,wl1835"; > >> >> reg = <2>; > >> >> interrupt-parent = <&gpioa>; > >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; > >> >> }; > >> >> }; > >> >> > >> >> > > >> >> > alex > >> >> > > >> >> > > >> >> >> > >> >> >>> > >> >> >>> Thanks in advance > >> >> >>> Alex > >> >> >>> > >> >> >>> > >> >> >>>> > >> >> >>>> Author: Bruno Herrera <bruherrera@gmail.com> > >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 > >> >> >>>> > >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not at > dtsi > >> >> >>>> file > >> >> >>>> > >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>> index 6bfc595..2a22a82 100644 > >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>> @@ -52,6 +52,10 @@ > >> >> >>>> model = "STMicroelectronics STM32429i-EVAL board"; > >> >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; > >> >> >>>> > >> >> >>>> + soc { > >> >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; > >> >> >>>> + }; > >> >> >>>> + > >> >> >>>> chosen { > >> >> >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; > >> >> >>>> stdout-path = "serial0:115200n8"; > >> >> >>>> @@ -96,6 +100,7 @@ > >> >> >>>> > >> >> >>>> ðernet0 { > >> >> >>>> status = "okay"; > >> >> >>>> + dma-ranges; > >> >> >>>> pinctrl-0 = <ðernet0_mii>; > >> >> >>>> pinctrl-names = "default"; > >> >> >>>> phy-mode = "mii-id"; > >> >> >>>> @@ -116,6 +121,7 @@ > >> >> >>>> }; > >> >> >>>> > >> >> >>>> &usbotg_hs { > >> >> >>>> + dma-ranges; > >> >> >>>> dr_mode = "host"; > >> >> >>>> phys = <&usbotg_hs_phy>; > >> >> >>>> phy-names = "usb2-phy"; > >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>> index 7d624a2..697a133 100644 > >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>> @@ -59,7 +59,6 @@ > >> >> >>>> }; > >> >> >>>> > >> >> >>>> soc { > >> >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >> >>>> > >> >> >>>> timer2: timer@40000000 { > >> >> >>>> compatible = "st,stm32-timer"; > >> >> >>>> @@ -472,13 +471,11 @@ > >> >> >>>> st,syscon = <&syscfg 0x4>; > >> >> >>>> snps,pbl = <8>; > >> >> >>>> snps,mixed-burst; > >> >> >>>> - dma-ranges; > >> >> >>>> status = "disabled"; > >> >> >>>> }; > >> >> >>>> > >> >> >>>> usbotg_hs: usb@40040000 { > >> >> >>>> compatible = "snps,dwc2"; > >> >> >>>> - dma-ranges; > >> >> >>>> reg = <0x40040000 0x40000>; > >> >> >>>> interrupts = <77>; > >> >> >>>> clocks = <&rcc 0 29>; > >> >> >>>> > >> >> >>>> > >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>>> index 0596d60..3a1cfdd 100644 > >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>>> @@ -59,8 +59,6 @@ > >> >> >>>>> }; > >> >> >>>>> > >> >> >>>>> soc { > >> >> >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >> >>>>> - > >> >> >>>>> timer2: timer@40000000 { > >> >> >>>>> compatible = "st,stm32-timer"; > >> >> >>>>> reg = <0x40000000 0x400>; > >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >>>>> index 9e73656..c2213c0 100644 > >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >>>>> @@ -64,6 +64,10 @@ > >> >> >>>>> aliases { > >> >> >>>>> serial0 = &usart3; > >> >> >>>>> }; > >> >> >>>>> + > >> >> >>>>> + soc { > >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >> >>>>> + }; > >> >> >>>>> }; > >> >> >>>>> > >> >> >>>>> &clk_hse { > >> >> >>>>> -- > >> >> >>>> > >> >> >>>> > >> >> >>>> > >> >> >>>> > >> >> >>>> Br., > >> >> >>>> Bruno > >> >> >>>> > >> >> >>> > >> >> > > >> >> > >> >> _______________________________________________ > >> >> linux-arm-kernel mailing list > >> >> linux-arm-kernel@lists.infradead.org > >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > >> > > >> > > > > > > [-- Attachment #2: Type: text/html, Size: 19849 bytes --] ^ permalink raw reply [flat|nested] 32+ messages in thread
[parent not found: <CAFvLkMTCkRcwbRc8GVNBoJFAvKWHYDjOPabueQPjTseZrucadA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-10-31 18:58 ` Radosław Pietrzyk @ 2016-11-02 14:32 ` Alexandre Torgue 0 siblings, 0 replies; 32+ messages in thread From: Alexandre Torgue @ 2016-11-02 14:32 UTC (permalink / raw) To: Radosław Pietrzyk, Bruno Herrera Cc: mark.rutland-5wv7dgnIgG8, devicetree-u79uwXL29TY76Z2rM5mHXA, Arnd Bergmann, linux-I+IVW8TIWO2tmTQ+vhA3Yw, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r Hi On 10/31/2016 07:58 PM, Radosław Pietrzyk wrote: > I think wlcore driver searches dma-ranges in its parent that's why sdio > node needs it. Yes I agree. In this case it is needed as you have subnode in sdio node. So IMO empty dma-ranges could be removed from ethernet and usb node, but kept in future sdio subnode. Bruno, Do you plan to push sdio support ? > > 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org > <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: > > On Mon, Oct 31, 2016 at 12:14 PM, Radosław Pietrzyk > <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org <mailto:radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> > wrote: > > This is weird because dma ddresses are recalculated using parent's > > dma-ranges property and soc already has it so there should be absolutely no > > problem. > > These are my DTS and DTSI file. > > > > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org > <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: > >> > >> On Fri, Oct 28, 2016 at 5:09 AM, Radosław Pietrzyk > >> <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org > <mailto:radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> wrote: > >> > Have you defined your sdio node within soc node ? > >> > >> It is in the SOC node of the DSTI file. > >> > >> > > >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org > <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: > >> >> > >> >> Hi Alex, > >> >> > >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue > >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> wrote: > >> >> > Hi Bruno, > >> >> > > >> >> > > >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: > >> >> >> > >> >> >> Hi Alex, > >> >> >> > >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue > >> >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> > wrote: > >> >> >>> > >> >> >>> Hi Bruno, > >> >> >>> > >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: > >> >> >>>> > >> >> >>>> > >> >> >>>> Hi Alexandre, > >> >> >>>> > >> >> >>>>> > >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM > start address > >> >> >>>>> remapping > >> >> >>>>> (to @0) to boost performances. A DMA translation through > >> >> >>>>> "dma-ranges" > >> >> >>>>> property was needed for other masters than the M4 CPU. > >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need > this DMA > >> >> >>>>> translation. > >> >> >>>>> This patches moves this DMA translation definition from > stm32f429 > >> >> >>>>> soc > >> >> >>>>> file > >> >> >>>>> to board files. > >> >> >>>>> > >> >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue-qxv4g6HH51o@public.gmane.org > <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> > >> >> >>>>> > >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>>> index 13c7cd2..a763c15 100644 > >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>>> @@ -82,6 +82,10 @@ > >> >> >>>>> }; > >> >> >>>>> }; > >> >> >>>>> > >> >> >>>>> + soc { > >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >> >>>>> + }; > >> >> >>>>> + > >> >> >>>>> usbotg_hs_phy: usbphy { > >> >> >>>>> #phy-cells = <0>; > >> >> >>>>> compatible = "usb-nop-xceiv"; > >> >> >>>> > >> >> >>>> > >> >> >>>> > >> >> >>>> Shouldn't also the peripheral dma-ranges property move to > board > >> >> >>>> specific > >> >> >>>> too? > >> >> >>>> I had this patch for while but I didn't had the time to > submit: > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> Well spot I forgot it. Actually, discussing with Arnd > ysterday on > >> >> >>> IIRC, > >> >> >>> empty dma-ranges is not needed. Can you test on your side by > >> >> >>> removing > >> >> >>> dma-ranges in usb node please ? > >> >> >> > >> >> >> Unfortunately will take a time for me to set up this > environment on > >> >> >> the STM32F4-EVAL board. > >> >> >> And on the discovery boards we dont have this scenario. > That was the > >> >> >> main reason I did not submit the patch right away. > >> >> >> My conclusion and I might be wrong but is based on the my > tests with > >> >> >> SDIO device at STM32F469I-DISCO board. > >> >> >> > >> >> >> I started this issue as discussion at ST Forum but Maxime > gave me > >> >> >> the > >> >> >> hint. > >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> > https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 > <https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44> > >> >> >> > >> >> >>> I will push a v2 by removing empty dma-ranges if tests are > ok in > >> >> >>> your > >> >> >>> side. > >> >> >> > >> >> >> > >> >> >> From my understating/conclusion is: when empty > property(dma-ranges) > >> >> >> is > >> >> >> the device node, the mapping will be taken in consideration > when > >> >> >> using > >> >> >> DMA otherwise the mapping is ignored. > >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and > >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in > question > >> >> >> so > >> >> >> I suppose it can work without the property. > >> >> > > >> >> > > >> >> > For sure translation has to be done but I'm not sure that an > empty > >> >> > "dma-ranges" is needed in device node to activate it. For > Ethernet > >> >> > empty > >> >> > "dma-ranges" is not needed. I will try with usb. > >> >> > >> >> In the case of SDIO it is needed. As example this is my > working SDIO > >> >> node: > >> >> > >> >> sdio: sdio@40012c00 { > >> >> compatible = "arm,pl18x", "arm,primecell"; > >> >> arm,primecell-periphid = <0x00480181>; > >> >> reg = <0x40012c00 0x400>; > >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ > >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ > >> >> dma-names = "rx", "tx"; > >> >> clocks = <&rcc 0 171>; > >> >> clock-names = "apb_pclk"; > >> >> interrupts = <49>; > >> >> status = "disabled"; > >> >> }; > >> >> > >> >> &sdio { > >> >> status = "okay"; > >> >> vmmc-supply = <&wlan_en>; > >> >> bus-width = <4>; > >> >> max-frequency = <24000000>; > >> >> pinctrl-names = "default"; > >> >> pinctrl-0 = <&sdio_pins>; > >> >> ti,non-removable; > >> >> ti,needs-special-hs-handling; > >> >> dma-ranges; > >> >> cap-power-off-card; > >> >> keep-power-in-suspend; > >> >> > >> >> #address-cells = <1>; > >> >> #size-cells = <0>; > >> >> wlcore: wlcore@0 { > >> >> compatible = "ti,wl1835"; > >> >> reg = <2>; > >> >> interrupt-parent = <&gpioa>; > >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; > >> >> }; > >> >> }; > >> >> > >> >> > > >> >> > alex > >> >> > > >> >> > > >> >> >> > >> >> >>> > >> >> >>> Thanks in advance > >> >> >>> Alex > >> >> >>> > >> >> >>> > >> >> >>>> > >> >> >>>> Author: Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org > <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> > >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 > >> >> >>>> > >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not > at dtsi > >> >> >>>> file > >> >> >>>> > >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>> index 6bfc595..2a22a82 100644 > >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>> @@ -52,6 +52,10 @@ > >> >> >>>> model = "STMicroelectronics STM32429i-EVAL board"; > >> >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; > >> >> >>>> > >> >> >>>> + soc { > >> >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; > >> >> >>>> + }; > >> >> >>>> + > >> >> >>>> chosen { > >> >> >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; > >> >> >>>> stdout-path = "serial0:115200n8"; > >> >> >>>> @@ -96,6 +100,7 @@ > >> >> >>>> > >> >> >>>> ðernet0 { > >> >> >>>> status = "okay"; > >> >> >>>> + dma-ranges; > >> >> >>>> pinctrl-0 = <ðernet0_mii>; > >> >> >>>> pinctrl-names = "default"; > >> >> >>>> phy-mode = "mii-id"; > >> >> >>>> @@ -116,6 +121,7 @@ > >> >> >>>> }; > >> >> >>>> > >> >> >>>> &usbotg_hs { > >> >> >>>> + dma-ranges; > >> >> >>>> dr_mode = "host"; > >> >> >>>> phys = <&usbotg_hs_phy>; > >> >> >>>> phy-names = "usb2-phy"; > >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>> index 7d624a2..697a133 100644 > >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>> @@ -59,7 +59,6 @@ > >> >> >>>> }; > >> >> >>>> > >> >> >>>> soc { > >> >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >> >>>> > >> >> >>>> timer2: timer@40000000 { > >> >> >>>> compatible = "st,stm32-timer"; > >> >> >>>> @@ -472,13 +471,11 @@ > >> >> >>>> st,syscon = <&syscfg 0x4>; > >> >> >>>> snps,pbl = <8>; > >> >> >>>> snps,mixed-burst; > >> >> >>>> - dma-ranges; > >> >> >>>> status = "disabled"; > >> >> >>>> }; > >> >> >>>> > >> >> >>>> usbotg_hs: usb@40040000 { > >> >> >>>> compatible = "snps,dwc2"; > >> >> >>>> - dma-ranges; > >> >> >>>> reg = <0x40040000 0x40000>; > >> >> >>>> interrupts = <77>; > >> >> >>>> clocks = <&rcc 0 29>; > >> >> >>>> > >> >> >>>> > >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>>> index 0596d60..3a1cfdd 100644 > >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>>> @@ -59,8 +59,6 @@ > >> >> >>>>> }; > >> >> >>>>> > >> >> >>>>> soc { > >> >> >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >> >>>>> - > >> >> >>>>> timer2: timer@40000000 { > >> >> >>>>> compatible = "st,stm32-timer"; > >> >> >>>>> reg = <0x40000000 0x400>; > >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >>>>> index 9e73656..c2213c0 100644 > >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >>>>> @@ -64,6 +64,10 @@ > >> >> >>>>> aliases { > >> >> >>>>> serial0 = &usart3; > >> >> >>>>> }; > >> >> >>>>> + > >> >> >>>>> + soc { > >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >> >>>>> + }; > >> >> >>>>> }; > >> >> >>>>> > >> >> >>>>> &clk_hse { > >> >> >>>>> -- > >> >> >>>> > >> >> >>>> > >> >> >>>> > >> >> >>>> > >> >> >>>> Br., > >> >> >>>> Bruno > >> >> >>>> > >> >> >>> > >> >> > > >> >> > >> >> _______________________________________________ > >> >> linux-arm-kernel mailing list > >> >> linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org > <mailto:linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org> > >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> > >> > > >> > > > > > > > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-11-02 14:32 ` Alexandre Torgue 0 siblings, 0 replies; 32+ messages in thread From: Alexandre Torgue @ 2016-11-02 14:32 UTC (permalink / raw) To: linux-arm-kernel Hi On 10/31/2016 07:58 PM, Rados?aw Pietrzyk wrote: > I think wlcore driver searches dma-ranges in its parent that's why sdio > node needs it. Yes I agree. In this case it is needed as you have subnode in sdio node. So IMO empty dma-ranges could be removed from ethernet and usb node, but kept in future sdio subnode. Bruno, Do you plan to push sdio support ? > > 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera@gmail.com > <mailto:bruherrera@gmail.com>>: > > On Mon, Oct 31, 2016 at 12:14 PM, Rados?aw Pietrzyk > <radoslaw.pietrzyk at gmail.com <mailto:radoslaw.pietrzyk@gmail.com>> > wrote: > > This is weird because dma ddresses are recalculated using parent's > > dma-ranges property and soc already has it so there should be absolutely no > > problem. > > These are my DTS and DTSI file. > > > > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera@gmail.com > <mailto:bruherrera@gmail.com>>: > >> > >> On Fri, Oct 28, 2016 at 5:09 AM, Rados?aw Pietrzyk > >> <radoslaw.pietrzyk@gmail.com > <mailto:radoslaw.pietrzyk@gmail.com>> wrote: > >> > Have you defined your sdio node within soc node ? > >> > >> It is in the SOC node of the DSTI file. > >> > >> > > >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com > <mailto:bruherrera@gmail.com>>: > >> >> > >> >> Hi Alex, > >> >> > >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue > >> >> <alexandre.torgue at st.com <mailto:alexandre.torgue@st.com>> wrote: > >> >> > Hi Bruno, > >> >> > > >> >> > > >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: > >> >> >> > >> >> >> Hi Alex, > >> >> >> > >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue > >> >> >> <alexandre.torgue at st.com <mailto:alexandre.torgue@st.com>> > wrote: > >> >> >>> > >> >> >>> Hi Bruno, > >> >> >>> > >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: > >> >> >>>> > >> >> >>>> > >> >> >>>> Hi Alexandre, > >> >> >>>> > >> >> >>>>> > >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM > start address > >> >> >>>>> remapping > >> >> >>>>> (to @0) to boost performances. A DMA translation through > >> >> >>>>> "dma-ranges" > >> >> >>>>> property was needed for other masters than the M4 CPU. > >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need > this DMA > >> >> >>>>> translation. > >> >> >>>>> This patches moves this DMA translation definition from > stm32f429 > >> >> >>>>> soc > >> >> >>>>> file > >> >> >>>>> to board files. > >> >> >>>>> > >> >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com > <mailto:alexandre.torgue@st.com>> > >> >> >>>>> > >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>>> index 13c7cd2..a763c15 100644 > >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>>> @@ -82,6 +82,10 @@ > >> >> >>>>> }; > >> >> >>>>> }; > >> >> >>>>> > >> >> >>>>> + soc { > >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >> >>>>> + }; > >> >> >>>>> + > >> >> >>>>> usbotg_hs_phy: usbphy { > >> >> >>>>> #phy-cells = <0>; > >> >> >>>>> compatible = "usb-nop-xceiv"; > >> >> >>>> > >> >> >>>> > >> >> >>>> > >> >> >>>> Shouldn't also the peripheral dma-ranges property move to > board > >> >> >>>> specific > >> >> >>>> too? > >> >> >>>> I had this patch for while but I didn't had the time to > submit: > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> Well spot I forgot it. Actually, discussing with Arnd > ysterday on > >> >> >>> IIRC, > >> >> >>> empty dma-ranges is not needed. Can you test on your side by > >> >> >>> removing > >> >> >>> dma-ranges in usb node please ? > >> >> >> > >> >> >> Unfortunately will take a time for me to set up this > environment on > >> >> >> the STM32F4-EVAL board. > >> >> >> And on the discovery boards we dont have this scenario. > That was the > >> >> >> main reason I did not submit the patch right away. > >> >> >> My conclusion and I might be wrong but is based on the my > tests with > >> >> >> SDIO device at STM32F469I-DISCO board. > >> >> >> > >> >> >> I started this issue as discussion at ST Forum but Maxime > gave me > >> >> >> the > >> >> >> hint. > >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> > https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 > <https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44> > >> >> >> > >> >> >>> I will push a v2 by removing empty dma-ranges if tests are > ok in > >> >> >>> your > >> >> >>> side. > >> >> >> > >> >> >> > >> >> >> From my understating/conclusion is: when empty > property(dma-ranges) > >> >> >> is > >> >> >> the device node, the mapping will be taken in consideration > when > >> >> >> using > >> >> >> DMA otherwise the mapping is ignored. > >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and > >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in > question > >> >> >> so > >> >> >> I suppose it can work without the property. > >> >> > > >> >> > > >> >> > For sure translation has to be done but I'm not sure that an > empty > >> >> > "dma-ranges" is needed in device node to activate it. For > Ethernet > >> >> > empty > >> >> > "dma-ranges" is not needed. I will try with usb. > >> >> > >> >> In the case of SDIO it is needed. As example this is my > working SDIO > >> >> node: > >> >> > >> >> sdio: sdio at 40012c00 { > >> >> compatible = "arm,pl18x", "arm,primecell"; > >> >> arm,primecell-periphid = <0x00480181>; > >> >> reg = <0x40012c00 0x400>; > >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ > >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ > >> >> dma-names = "rx", "tx"; > >> >> clocks = <&rcc 0 171>; > >> >> clock-names = "apb_pclk"; > >> >> interrupts = <49>; > >> >> status = "disabled"; > >> >> }; > >> >> > >> >> &sdio { > >> >> status = "okay"; > >> >> vmmc-supply = <&wlan_en>; > >> >> bus-width = <4>; > >> >> max-frequency = <24000000>; > >> >> pinctrl-names = "default"; > >> >> pinctrl-0 = <&sdio_pins>; > >> >> ti,non-removable; > >> >> ti,needs-special-hs-handling; > >> >> dma-ranges; > >> >> cap-power-off-card; > >> >> keep-power-in-suspend; > >> >> > >> >> #address-cells = <1>; > >> >> #size-cells = <0>; > >> >> wlcore: wlcore at 0 { > >> >> compatible = "ti,wl1835"; > >> >> reg = <2>; > >> >> interrupt-parent = <&gpioa>; > >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; > >> >> }; > >> >> }; > >> >> > >> >> > > >> >> > alex > >> >> > > >> >> > > >> >> >> > >> >> >>> > >> >> >>> Thanks in advance > >> >> >>> Alex > >> >> >>> > >> >> >>> > >> >> >>>> > >> >> >>>> Author: Bruno Herrera <bruherrera@gmail.com > <mailto:bruherrera@gmail.com>> > >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 > >> >> >>>> > >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not > at dtsi > >> >> >>>> file > >> >> >>>> > >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>> index 6bfc595..2a22a82 100644 > >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >>>> @@ -52,6 +52,10 @@ > >> >> >>>> model = "STMicroelectronics STM32429i-EVAL board"; > >> >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; > >> >> >>>> > >> >> >>>> + soc { > >> >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; > >> >> >>>> + }; > >> >> >>>> + > >> >> >>>> chosen { > >> >> >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; > >> >> >>>> stdout-path = "serial0:115200n8"; > >> >> >>>> @@ -96,6 +100,7 @@ > >> >> >>>> > >> >> >>>> ðernet0 { > >> >> >>>> status = "okay"; > >> >> >>>> + dma-ranges; > >> >> >>>> pinctrl-0 = <ðernet0_mii>; > >> >> >>>> pinctrl-names = "default"; > >> >> >>>> phy-mode = "mii-id"; > >> >> >>>> @@ -116,6 +121,7 @@ > >> >> >>>> }; > >> >> >>>> > >> >> >>>> &usbotg_hs { > >> >> >>>> + dma-ranges; > >> >> >>>> dr_mode = "host"; > >> >> >>>> phys = <&usbotg_hs_phy>; > >> >> >>>> phy-names = "usb2-phy"; > >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>> index 7d624a2..697a133 100644 > >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>> @@ -59,7 +59,6 @@ > >> >> >>>> }; > >> >> >>>> > >> >> >>>> soc { > >> >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >> >>>> > >> >> >>>> timer2: timer at 40000000 { > >> >> >>>> compatible = "st,stm32-timer"; > >> >> >>>> @@ -472,13 +471,11 @@ > >> >> >>>> st,syscon = <&syscfg 0x4>; > >> >> >>>> snps,pbl = <8>; > >> >> >>>> snps,mixed-burst; > >> >> >>>> - dma-ranges; > >> >> >>>> status = "disabled"; > >> >> >>>> }; > >> >> >>>> > >> >> >>>> usbotg_hs: usb at 40040000 { > >> >> >>>> compatible = "snps,dwc2"; > >> >> >>>> - dma-ranges; > >> >> >>>> reg = <0x40040000 0x40000>; > >> >> >>>> interrupts = <77>; > >> >> >>>> clocks = <&rcc 0 29>; > >> >> >>>> > >> >> >>>> > >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>>> index 0596d60..3a1cfdd 100644 > >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >>>>> @@ -59,8 +59,6 @@ > >> >> >>>>> }; > >> >> >>>>> > >> >> >>>>> soc { > >> >> >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >> >>>>> - > >> >> >>>>> timer2: timer at 40000000 { > >> >> >>>>> compatible = "st,stm32-timer"; > >> >> >>>>> reg = <0x40000000 0x400>; > >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >>>>> index 9e73656..c2213c0 100644 > >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >>>>> @@ -64,6 +64,10 @@ > >> >> >>>>> aliases { > >> >> >>>>> serial0 = &usart3; > >> >> >>>>> }; > >> >> >>>>> + > >> >> >>>>> + soc { > >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >> >>>>> + }; > >> >> >>>>> }; > >> >> >>>>> > >> >> >>>>> &clk_hse { > >> >> >>>>> -- > >> >> >>>> > >> >> >>>> > >> >> >>>> > >> >> >>>> > >> >> >>>> Br., > >> >> >>>> Bruno > >> >> >>>> > >> >> >>> > >> >> > > >> >> > >> >> _______________________________________________ > >> >> linux-arm-kernel mailing list > >> >> linux-arm-kernel at lists.infradead.org > <mailto:linux-arm-kernel@lists.infradead.org> > >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> > >> > > >> > > > > > > > ^ permalink raw reply [flat|nested] 32+ messages in thread
[parent not found: <3e854414-f51d-3e59-6cee-142106cef40f-qxv4g6HH51o@public.gmane.org>]
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-11-02 14:32 ` Alexandre Torgue @ 2016-11-02 16:07 ` Bruno Herrera -1 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-11-02 16:07 UTC (permalink / raw) To: Alexandre Torgue Cc: Radosław Pietrzyk, mark.rutland-5wv7dgnIgG8, devicetree-u79uwXL29TY76Z2rM5mHXA, Arnd Bergmann, linux-I+IVW8TIWO2tmTQ+vhA3Yw, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, andrea.merello-Re5JQEeQqe8AvxtiuMwx3w Hi On Wed, Nov 2, 2016 at 12:32 PM, Alexandre Torgue <alexandre.torgue-qxv4g6HH51o@public.gmane.org> wrote: > Hi > > On 10/31/2016 07:58 PM, Radosław Pietrzyk wrote: >> >> I think wlcore driver searches dma-ranges in its parent that's why sdio >> node needs it. > > > Yes I agree. In this case it is needed as you have subnode in sdio node. > So IMO empty dma-ranges could be removed from ethernet and usb node, but > kept in future sdio subnode. Now it is clear. > > Bruno, > Do you plan to push sdio support ? Yes I do, but I'm not sure how long it will take. The I had to change(and hack) the mmci code because I could not get the ID from STM32 SDIO IP. My current WIP is at @ https://github.com/mcoquelin-stm32/afboot-stm32/pull/4#issuecomment-247571615 I know Andrea Merello is also working on that (and he probably has a more complete patch). > > > >> >> 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: >> >> On Mon, Oct 31, 2016 at 12:14 PM, Radosław Pietrzyk >> <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org <mailto:radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> >> wrote: >> > This is weird because dma ddresses are recalculated using parent's >> > dma-ranges property and soc already has it so there should be >> absolutely no >> > problem. >> >> These are my DTS and DTSI file. >> > >> > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: >> >> >> >> On Fri, Oct 28, 2016 at 5:09 AM, Radosław Pietrzyk >> >> <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >> <mailto:radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> wrote: >> >> > Have you defined your sdio node within soc node ? >> >> >> >> It is in the SOC node of the DSTI file. >> >> >> >> > >> >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: >> >> >> >> >> >> Hi Alex, >> >> >> >> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >> >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> >> wrote: >> >> >> > Hi Bruno, >> >> >> > >> >> >> > >> >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >> >> >> >> >> >> >> >> Hi Alex, >> >> >> >> >> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >> >> >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> >> wrote: >> >> >> >>> >> >> >> >>> Hi Bruno, >> >> >> >>> >> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> Hi Alexandre, >> >> >> >>>> >> >> >> >>>>> >> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM >> start address >> >> >> >>>>> remapping >> >> >> >>>>> (to @0) to boost performances. A DMA translation through >> >> >> >>>>> "dma-ranges" >> >> >> >>>>> property was needed for other masters than the M4 CPU. >> >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need >> this DMA >> >> >> >>>>> translation. >> >> >> >>>>> This patches moves this DMA translation definition from >> stm32f429 >> >> >> >>>>> soc >> >> >> >>>>> file >> >> >> >>>>> to board files. >> >> >> >>>>> >> >> >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue-qxv4g6HH51o@public.gmane.org >> <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> >> >> >> >> >>>>> >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>>> index 13c7cd2..a763c15 100644 >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>>> @@ -82,6 +82,10 @@ >> >> >> >>>>> }; >> >> >> >>>>> }; >> >> >> >>>>> >> >> >> >>>>> + soc { >> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >> >>>>> + }; >> >> >> >>>>> + >> >> >> >>>>> usbotg_hs_phy: usbphy { >> >> >> >>>>> #phy-cells = <0>; >> >> >> >>>>> compatible = "usb-nop-xceiv"; >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> Shouldn't also the peripheral dma-ranges property move to >> board >> >> >> >>>> specific >> >> >> >>>> too? >> >> >> >>>> I had this patch for while but I didn't had the time to >> submit: >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd >> ysterday on >> >> >> >>> IIRC, >> >> >> >>> empty dma-ranges is not needed. Can you test on your side by >> >> >> >>> removing >> >> >> >>> dma-ranges in usb node please ? >> >> >> >> >> >> >> >> Unfortunately will take a time for me to set up this >> environment on >> >> >> >> the STM32F4-EVAL board. >> >> >> >> And on the discovery boards we dont have this scenario. >> That was the >> >> >> >> main reason I did not submit the patch right away. >> >> >> >> My conclusion and I might be wrong but is based on the my >> tests with >> >> >> >> SDIO device at STM32F469I-DISCO board. >> >> >> >> >> >> >> >> I started this issue as discussion at ST Forum but Maxime >> gave me >> >> >> >> the >> >> >> >> hint. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >> >> <https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44> >> >> >> >> >> >> >> >>> I will push a v2 by removing empty dma-ranges if tests are >> ok in >> >> >> >>> your >> >> >> >>> side. >> >> >> >> >> >> >> >> >> >> >> >> From my understating/conclusion is: when empty >> property(dma-ranges) >> >> >> >> is >> >> >> >> the device node, the mapping will be taken in consideration >> when >> >> >> >> using >> >> >> >> DMA otherwise the mapping is ignored. >> >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >> >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in >> question >> >> >> >> so >> >> >> >> I suppose it can work without the property. >> >> >> > >> >> >> > >> >> >> > For sure translation has to be done but I'm not sure that an >> empty >> >> >> > "dma-ranges" is needed in device node to activate it. For >> Ethernet >> >> >> > empty >> >> >> > "dma-ranges" is not needed. I will try with usb. >> >> >> >> >> >> In the case of SDIO it is needed. As example this is my >> working SDIO >> >> >> node: >> >> >> >> >> >> sdio: sdio@40012c00 { >> >> >> compatible = "arm,pl18x", "arm,primecell"; >> >> >> arm,primecell-periphid = <0x00480181>; >> >> >> reg = <0x40012c00 0x400>; >> >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >> >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >> >> >> dma-names = "rx", "tx"; >> >> >> clocks = <&rcc 0 171>; >> >> >> clock-names = "apb_pclk"; >> >> >> interrupts = <49>; >> >> >> status = "disabled"; >> >> >> }; >> >> >> >> >> >> &sdio { >> >> >> status = "okay"; >> >> >> vmmc-supply = <&wlan_en>; >> >> >> bus-width = <4>; >> >> >> max-frequency = <24000000>; >> >> >> pinctrl-names = "default"; >> >> >> pinctrl-0 = <&sdio_pins>; >> >> >> ti,non-removable; >> >> >> ti,needs-special-hs-handling; >> >> >> dma-ranges; >> >> >> cap-power-off-card; >> >> >> keep-power-in-suspend; >> >> >> >> >> >> #address-cells = <1>; >> >> >> #size-cells = <0>; >> >> >> wlcore: wlcore@0 { >> >> >> compatible = "ti,wl1835"; >> >> >> reg = <2>; >> >> >> interrupt-parent = <&gpioa>; >> >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >> >> >> }; >> >> >> }; >> >> >> >> >> >> > >> >> >> > alex >> >> >> > >> >> >> > >> >> >> >> >> >> >> >>> >> >> >> >>> Thanks in advance >> >> >> >>> Alex >> >> >> >>> >> >> >> >>> >> >> >> >>>> >> >> >> >>>> Author: Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> >> >> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >> >> >> >>>> >> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not >> at dtsi >> >> >> >>>> file >> >> >> >>>> >> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>> index 6bfc595..2a22a82 100644 >> >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>> @@ -52,6 +52,10 @@ >> >> >> >>>> model = "STMicroelectronics STM32429i-EVAL board"; >> >> >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; >> >> >> >>>> >> >> >> >>>> + soc { >> >> >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >> >> >> >>>> + }; >> >> >> >>>> + >> >> >> >>>> chosen { >> >> >> >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; >> >> >> >>>> stdout-path = "serial0:115200n8"; >> >> >> >>>> @@ -96,6 +100,7 @@ >> >> >> >>>> >> >> >> >>>> ðernet0 { >> >> >> >>>> status = "okay"; >> >> >> >>>> + dma-ranges; >> >> >> >>>> pinctrl-0 = <ðernet0_mii>; >> >> >> >>>> pinctrl-names = "default"; >> >> >> >>>> phy-mode = "mii-id"; >> >> >> >>>> @@ -116,6 +121,7 @@ >> >> >> >>>> }; >> >> >> >>>> >> >> >> >>>> &usbotg_hs { >> >> >> >>>> + dma-ranges; >> >> >> >>>> dr_mode = "host"; >> >> >> >>>> phys = <&usbotg_hs_phy>; >> >> >> >>>> phy-names = "usb2-phy"; >> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>> index 7d624a2..697a133 100644 >> >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>> @@ -59,7 +59,6 @@ >> >> >> >>>> }; >> >> >> >>>> >> >> >> >>>> soc { >> >> >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >> >>>> >> >> >> >>>> timer2: timer@40000000 { >> >> >> >>>> compatible = "st,stm32-timer"; >> >> >> >>>> @@ -472,13 +471,11 @@ >> >> >> >>>> st,syscon = <&syscfg 0x4>; >> >> >> >>>> snps,pbl = <8>; >> >> >> >>>> snps,mixed-burst; >> >> >> >>>> - dma-ranges; >> >> >> >>>> status = "disabled"; >> >> >> >>>> }; >> >> >> >>>> >> >> >> >>>> usbotg_hs: usb@40040000 { >> >> >> >>>> compatible = "snps,dwc2"; >> >> >> >>>> - dma-ranges; >> >> >> >>>> reg = <0x40040000 0x40000>; >> >> >> >>>> interrupts = <77>; >> >> >> >>>> clocks = <&rcc 0 29>; >> >> >> >>>> >> >> >> >>>> >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>>> index 0596d60..3a1cfdd 100644 >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>>> @@ -59,8 +59,6 @@ >> >> >> >>>>> }; >> >> >> >>>>> >> >> >> >>>>> soc { >> >> >> >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >> >>>>> - >> >> >> >>>>> timer2: timer@40000000 { >> >> >> >>>>> compatible = "st,stm32-timer"; >> >> >> >>>>> reg = <0x40000000 0x400>; >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >>>>> index 9e73656..c2213c0 100644 >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >>>>> @@ -64,6 +64,10 @@ >> >> >> >>>>> aliases { >> >> >> >>>>> serial0 = &usart3; >> >> >> >>>>> }; >> >> >> >>>>> + >> >> >> >>>>> + soc { >> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >> >>>>> + }; >> >> >> >>>>> }; >> >> >> >>>>> >> >> >> >>>>> &clk_hse { >> >> >> >>>>> -- >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> Br., >> >> >> >>>> Bruno >> >> >> >>>> >> >> >> >>> >> >> >> > >> >> >> >> >> >> _______________________________________________ >> >> >> linux-arm-kernel mailing list >> >> >> linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org >> <mailto:linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org> >> >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >> <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> >> >> > >> >> > >> > >> > >> >> > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-11-02 16:07 ` Bruno Herrera 0 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-11-02 16:07 UTC (permalink / raw) To: linux-arm-kernel Hi On Wed, Nov 2, 2016 at 12:32 PM, Alexandre Torgue <alexandre.torgue@st.com> wrote: > Hi > > On 10/31/2016 07:58 PM, Rados?aw Pietrzyk wrote: >> >> I think wlcore driver searches dma-ranges in its parent that's why sdio >> node needs it. > > > Yes I agree. In this case it is needed as you have subnode in sdio node. > So IMO empty dma-ranges could be removed from ethernet and usb node, but > kept in future sdio subnode. Now it is clear. > > Bruno, > Do you plan to push sdio support ? Yes I do, but I'm not sure how long it will take. The I had to change(and hack) the mmci code because I could not get the ID from STM32 SDIO IP. My current WIP is at @ https://github.com/mcoquelin-stm32/afboot-stm32/pull/4#issuecomment-247571615 I know Andrea Merello is also working on that (and he probably has a more complete patch). > > > >> >> 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera@gmail.com >> <mailto:bruherrera@gmail.com>>: >> >> On Mon, Oct 31, 2016 at 12:14 PM, Rados?aw Pietrzyk >> <radoslaw.pietrzyk at gmail.com <mailto:radoslaw.pietrzyk@gmail.com>> >> wrote: >> > This is weird because dma ddresses are recalculated using parent's >> > dma-ranges property and soc already has it so there should be >> absolutely no >> > problem. >> >> These are my DTS and DTSI file. >> > >> > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera@gmail.com >> <mailto:bruherrera@gmail.com>>: >> >> >> >> On Fri, Oct 28, 2016 at 5:09 AM, Rados?aw Pietrzyk >> >> <radoslaw.pietrzyk@gmail.com >> <mailto:radoslaw.pietrzyk@gmail.com>> wrote: >> >> > Have you defined your sdio node within soc node ? >> >> >> >> It is in the SOC node of the DSTI file. >> >> >> >> > >> >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com >> <mailto:bruherrera@gmail.com>>: >> >> >> >> >> >> Hi Alex, >> >> >> >> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >> >> >> <alexandre.torgue at st.com <mailto:alexandre.torgue@st.com>> >> wrote: >> >> >> > Hi Bruno, >> >> >> > >> >> >> > >> >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >> >> >> >> >> >> >> >> Hi Alex, >> >> >> >> >> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >> >> >> >> <alexandre.torgue at st.com <mailto:alexandre.torgue@st.com>> >> wrote: >> >> >> >>> >> >> >> >>> Hi Bruno, >> >> >> >>> >> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> Hi Alexandre, >> >> >> >>>> >> >> >> >>>>> >> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM >> start address >> >> >> >>>>> remapping >> >> >> >>>>> (to @0) to boost performances. A DMA translation through >> >> >> >>>>> "dma-ranges" >> >> >> >>>>> property was needed for other masters than the M4 CPU. >> >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need >> this DMA >> >> >> >>>>> translation. >> >> >> >>>>> This patches moves this DMA translation definition from >> stm32f429 >> >> >> >>>>> soc >> >> >> >>>>> file >> >> >> >>>>> to board files. >> >> >> >>>>> >> >> >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com >> <mailto:alexandre.torgue@st.com>> >> >> >> >> >>>>> >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>>> index 13c7cd2..a763c15 100644 >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>>> @@ -82,6 +82,10 @@ >> >> >> >>>>> }; >> >> >> >>>>> }; >> >> >> >>>>> >> >> >> >>>>> + soc { >> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >> >>>>> + }; >> >> >> >>>>> + >> >> >> >>>>> usbotg_hs_phy: usbphy { >> >> >> >>>>> #phy-cells = <0>; >> >> >> >>>>> compatible = "usb-nop-xceiv"; >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> Shouldn't also the peripheral dma-ranges property move to >> board >> >> >> >>>> specific >> >> >> >>>> too? >> >> >> >>>> I had this patch for while but I didn't had the time to >> submit: >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd >> ysterday on >> >> >> >>> IIRC, >> >> >> >>> empty dma-ranges is not needed. Can you test on your side by >> >> >> >>> removing >> >> >> >>> dma-ranges in usb node please ? >> >> >> >> >> >> >> >> Unfortunately will take a time for me to set up this >> environment on >> >> >> >> the STM32F4-EVAL board. >> >> >> >> And on the discovery boards we dont have this scenario. >> That was the >> >> >> >> main reason I did not submit the patch right away. >> >> >> >> My conclusion and I might be wrong but is based on the my >> tests with >> >> >> >> SDIO device at STM32F469I-DISCO board. >> >> >> >> >> >> >> >> I started this issue as discussion at ST Forum but Maxime >> gave me >> >> >> >> the >> >> >> >> hint. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >> >> <https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44> >> >> >> >> >> >> >> >>> I will push a v2 by removing empty dma-ranges if tests are >> ok in >> >> >> >>> your >> >> >> >>> side. >> >> >> >> >> >> >> >> >> >> >> >> From my understating/conclusion is: when empty >> property(dma-ranges) >> >> >> >> is >> >> >> >> the device node, the mapping will be taken in consideration >> when >> >> >> >> using >> >> >> >> DMA otherwise the mapping is ignored. >> >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >> >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in >> question >> >> >> >> so >> >> >> >> I suppose it can work without the property. >> >> >> > >> >> >> > >> >> >> > For sure translation has to be done but I'm not sure that an >> empty >> >> >> > "dma-ranges" is needed in device node to activate it. For >> Ethernet >> >> >> > empty >> >> >> > "dma-ranges" is not needed. I will try with usb. >> >> >> >> >> >> In the case of SDIO it is needed. As example this is my >> working SDIO >> >> >> node: >> >> >> >> >> >> sdio: sdio at 40012c00 { >> >> >> compatible = "arm,pl18x", "arm,primecell"; >> >> >> arm,primecell-periphid = <0x00480181>; >> >> >> reg = <0x40012c00 0x400>; >> >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >> >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >> >> >> dma-names = "rx", "tx"; >> >> >> clocks = <&rcc 0 171>; >> >> >> clock-names = "apb_pclk"; >> >> >> interrupts = <49>; >> >> >> status = "disabled"; >> >> >> }; >> >> >> >> >> >> &sdio { >> >> >> status = "okay"; >> >> >> vmmc-supply = <&wlan_en>; >> >> >> bus-width = <4>; >> >> >> max-frequency = <24000000>; >> >> >> pinctrl-names = "default"; >> >> >> pinctrl-0 = <&sdio_pins>; >> >> >> ti,non-removable; >> >> >> ti,needs-special-hs-handling; >> >> >> dma-ranges; >> >> >> cap-power-off-card; >> >> >> keep-power-in-suspend; >> >> >> >> >> >> #address-cells = <1>; >> >> >> #size-cells = <0>; >> >> >> wlcore: wlcore at 0 { >> >> >> compatible = "ti,wl1835"; >> >> >> reg = <2>; >> >> >> interrupt-parent = <&gpioa>; >> >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >> >> >> }; >> >> >> }; >> >> >> >> >> >> > >> >> >> > alex >> >> >> > >> >> >> > >> >> >> >> >> >> >> >>> >> >> >> >>> Thanks in advance >> >> >> >>> Alex >> >> >> >>> >> >> >> >>> >> >> >> >>>> >> >> >> >>>> Author: Bruno Herrera <bruherrera@gmail.com >> <mailto:bruherrera@gmail.com>> >> >> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >> >> >> >>>> >> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not >> at dtsi >> >> >> >>>> file >> >> >> >>>> >> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>> index 6bfc595..2a22a82 100644 >> >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >>>> @@ -52,6 +52,10 @@ >> >> >> >>>> model = "STMicroelectronics STM32429i-EVAL board"; >> >> >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; >> >> >> >>>> >> >> >> >>>> + soc { >> >> >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >> >> >> >>>> + }; >> >> >> >>>> + >> >> >> >>>> chosen { >> >> >> >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; >> >> >> >>>> stdout-path = "serial0:115200n8"; >> >> >> >>>> @@ -96,6 +100,7 @@ >> >> >> >>>> >> >> >> >>>> ðernet0 { >> >> >> >>>> status = "okay"; >> >> >> >>>> + dma-ranges; >> >> >> >>>> pinctrl-0 = <ðernet0_mii>; >> >> >> >>>> pinctrl-names = "default"; >> >> >> >>>> phy-mode = "mii-id"; >> >> >> >>>> @@ -116,6 +121,7 @@ >> >> >> >>>> }; >> >> >> >>>> >> >> >> >>>> &usbotg_hs { >> >> >> >>>> + dma-ranges; >> >> >> >>>> dr_mode = "host"; >> >> >> >>>> phys = <&usbotg_hs_phy>; >> >> >> >>>> phy-names = "usb2-phy"; >> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>> index 7d624a2..697a133 100644 >> >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>> @@ -59,7 +59,6 @@ >> >> >> >>>> }; >> >> >> >>>> >> >> >> >>>> soc { >> >> >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >> >>>> >> >> >> >>>> timer2: timer at 40000000 { >> >> >> >>>> compatible = "st,stm32-timer"; >> >> >> >>>> @@ -472,13 +471,11 @@ >> >> >> >>>> st,syscon = <&syscfg 0x4>; >> >> >> >>>> snps,pbl = <8>; >> >> >> >>>> snps,mixed-burst; >> >> >> >>>> - dma-ranges; >> >> >> >>>> status = "disabled"; >> >> >> >>>> }; >> >> >> >>>> >> >> >> >>>> usbotg_hs: usb at 40040000 { >> >> >> >>>> compatible = "snps,dwc2"; >> >> >> >>>> - dma-ranges; >> >> >> >>>> reg = <0x40040000 0x40000>; >> >> >> >>>> interrupts = <77>; >> >> >> >>>> clocks = <&rcc 0 29>; >> >> >> >>>> >> >> >> >>>> >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>>> index 0596d60..3a1cfdd 100644 >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >>>>> @@ -59,8 +59,6 @@ >> >> >> >>>>> }; >> >> >> >>>>> >> >> >> >>>>> soc { >> >> >> >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >> >>>>> - >> >> >> >>>>> timer2: timer at 40000000 { >> >> >> >>>>> compatible = "st,stm32-timer"; >> >> >> >>>>> reg = <0x40000000 0x400>; >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >>>>> index 9e73656..c2213c0 100644 >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >>>>> @@ -64,6 +64,10 @@ >> >> >> >>>>> aliases { >> >> >> >>>>> serial0 = &usart3; >> >> >> >>>>> }; >> >> >> >>>>> + >> >> >> >>>>> + soc { >> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >> >> >> >>>>> + }; >> >> >> >>>>> }; >> >> >> >>>>> >> >> >> >>>>> &clk_hse { >> >> >> >>>>> -- >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> Br., >> >> >> >>>> Bruno >> >> >> >>>> >> >> >> >>> >> >> >> > >> >> >> >> >> >> _______________________________________________ >> >> >> linux-arm-kernel mailing list >> >> >> linux-arm-kernel at lists.infradead.org >> <mailto:linux-arm-kernel@lists.infradead.org> >> >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >> <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> >> >> > >> >> > >> > >> > >> >> > ^ permalink raw reply [flat|nested] 32+ messages in thread
[parent not found: <CAF3+TqeiPjtG7Fs1-cpbcHGxxtSS1UOGD=S=sggpaZahFLJhEQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-11-02 16:07 ` Bruno Herrera @ 2016-11-02 16:14 ` Alexandre Torgue -1 siblings, 0 replies; 32+ messages in thread From: Alexandre Torgue @ 2016-11-02 16:14 UTC (permalink / raw) To: Bruno Herrera Cc: Radosław Pietrzyk, mark.rutland-5wv7dgnIgG8, devicetree-u79uwXL29TY76Z2rM5mHXA, Arnd Bergmann, linux-I+IVW8TIWO2tmTQ+vhA3Yw, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, andrea.merello-Re5JQEeQqe8AvxtiuMwx3w On 11/02/2016 05:07 PM, Bruno Herrera wrote: > Hi > > On Wed, Nov 2, 2016 at 12:32 PM, Alexandre Torgue > <alexandre.torgue-qxv4g6HH51o@public.gmane.org> wrote: >> Hi >> >> On 10/31/2016 07:58 PM, Radosław Pietrzyk wrote: >>> >>> I think wlcore driver searches dma-ranges in its parent that's why sdio >>> node needs it. >> >> >> Yes I agree. In this case it is needed as you have subnode in sdio node. >> So IMO empty dma-ranges could be removed from ethernet and usb node, but >> kept in future sdio subnode. > > Now it is clear. Nice. Can I add your tested-by ? > >> >> Bruno, >> Do you plan to push sdio support ? > > Yes I do, but I'm not sure how long it will take. The I had to > change(and hack) the mmci code because I could not get the ID from > STM32 SDIO IP. > My current WIP is at @ > https://github.com/mcoquelin-stm32/afboot-stm32/pull/4#issuecomment-247571615 > I know Andrea Merello is also working on that (and he probably has a > more complete patch). > >> >> >> >>> >>> 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >>> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: >>> >>> On Mon, Oct 31, 2016 at 12:14 PM, Radosław Pietrzyk >>> <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org <mailto:radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> >>> wrote: >>> > This is weird because dma ddresses are recalculated using parent's >>> > dma-ranges property and soc already has it so there should be >>> absolutely no >>> > problem. >>> >>> These are my DTS and DTSI file. >>> > >>> > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >>> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: >>> >> >>> >> On Fri, Oct 28, 2016 at 5:09 AM, Radosław Pietrzyk >>> >> <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >>> <mailto:radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> wrote: >>> >> > Have you defined your sdio node within soc node ? >>> >> >>> >> It is in the SOC node of the DSTI file. >>> >> >>> >> > >>> >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >>> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: >>> >> >> >>> >> >> Hi Alex, >>> >> >> >>> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >>> >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> >>> wrote: >>> >> >> > Hi Bruno, >>> >> >> > >>> >> >> > >>> >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >>> >> >> >> >>> >> >> >> Hi Alex, >>> >> >> >> >>> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >>> >> >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> >>> wrote: >>> >> >> >>> >>> >> >> >>> Hi Bruno, >>> >> >> >>> >>> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>> Hi Alexandre, >>> >> >> >>>> >>> >> >> >>>>> >>> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM >>> start address >>> >> >> >>>>> remapping >>> >> >> >>>>> (to @0) to boost performances. A DMA translation through >>> >> >> >>>>> "dma-ranges" >>> >> >> >>>>> property was needed for other masters than the M4 CPU. >>> >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need >>> this DMA >>> >> >> >>>>> translation. >>> >> >> >>>>> This patches moves this DMA translation definition from >>> stm32f429 >>> >> >> >>>>> soc >>> >> >> >>>>> file >>> >> >> >>>>> to board files. >>> >> >> >>>>> >>> >> >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue-qxv4g6HH51o@public.gmane.org >>> <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> >>> >>> >> >> >>>>> >>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>>> index 13c7cd2..a763c15 100644 >>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>>> @@ -82,6 +82,10 @@ >>> >> >> >>>>> }; >>> >> >> >>>>> }; >>> >> >> >>>>> >>> >> >> >>>>> + soc { >>> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>> >> >> >>>>> + }; >>> >> >> >>>>> + >>> >> >> >>>>> usbotg_hs_phy: usbphy { >>> >> >> >>>>> #phy-cells = <0>; >>> >> >> >>>>> compatible = "usb-nop-xceiv"; >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>> Shouldn't also the peripheral dma-ranges property move to >>> board >>> >> >> >>>> specific >>> >> >> >>>> too? >>> >> >> >>>> I had this patch for while but I didn't had the time to >>> submit: >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd >>> ysterday on >>> >> >> >>> IIRC, >>> >> >> >>> empty dma-ranges is not needed. Can you test on your side by >>> >> >> >>> removing >>> >> >> >>> dma-ranges in usb node please ? >>> >> >> >> >>> >> >> >> Unfortunately will take a time for me to set up this >>> environment on >>> >> >> >> the STM32F4-EVAL board. >>> >> >> >> And on the discovery boards we dont have this scenario. >>> That was the >>> >> >> >> main reason I did not submit the patch right away. >>> >> >> >> My conclusion and I might be wrong but is based on the my >>> tests with >>> >> >> >> SDIO device at STM32F469I-DISCO board. >>> >> >> >> >>> >> >> >> I started this issue as discussion at ST Forum but Maxime >>> gave me >>> >> >> >> the >>> >> >> >> hint. >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >>> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >>> >>> <https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44> >>> >> >> >> >>> >> >> >>> I will push a v2 by removing empty dma-ranges if tests are >>> ok in >>> >> >> >>> your >>> >> >> >>> side. >>> >> >> >> >>> >> >> >> >>> >> >> >> From my understating/conclusion is: when empty >>> property(dma-ranges) >>> >> >> >> is >>> >> >> >> the device node, the mapping will be taken in consideration >>> when >>> >> >> >> using >>> >> >> >> DMA otherwise the mapping is ignored. >>> >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >>> >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in >>> question >>> >> >> >> so >>> >> >> >> I suppose it can work without the property. >>> >> >> > >>> >> >> > >>> >> >> > For sure translation has to be done but I'm not sure that an >>> empty >>> >> >> > "dma-ranges" is needed in device node to activate it. For >>> Ethernet >>> >> >> > empty >>> >> >> > "dma-ranges" is not needed. I will try with usb. >>> >> >> >>> >> >> In the case of SDIO it is needed. As example this is my >>> working SDIO >>> >> >> node: >>> >> >> >>> >> >> sdio: sdio@40012c00 { >>> >> >> compatible = "arm,pl18x", "arm,primecell"; >>> >> >> arm,primecell-periphid = <0x00480181>; >>> >> >> reg = <0x40012c00 0x400>; >>> >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >>> >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >>> >> >> dma-names = "rx", "tx"; >>> >> >> clocks = <&rcc 0 171>; >>> >> >> clock-names = "apb_pclk"; >>> >> >> interrupts = <49>; >>> >> >> status = "disabled"; >>> >> >> }; >>> >> >> >>> >> >> &sdio { >>> >> >> status = "okay"; >>> >> >> vmmc-supply = <&wlan_en>; >>> >> >> bus-width = <4>; >>> >> >> max-frequency = <24000000>; >>> >> >> pinctrl-names = "default"; >>> >> >> pinctrl-0 = <&sdio_pins>; >>> >> >> ti,non-removable; >>> >> >> ti,needs-special-hs-handling; >>> >> >> dma-ranges; >>> >> >> cap-power-off-card; >>> >> >> keep-power-in-suspend; >>> >> >> >>> >> >> #address-cells = <1>; >>> >> >> #size-cells = <0>; >>> >> >> wlcore: wlcore@0 { >>> >> >> compatible = "ti,wl1835"; >>> >> >> reg = <2>; >>> >> >> interrupt-parent = <&gpioa>; >>> >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >>> >> >> }; >>> >> >> }; >>> >> >> >>> >> >> > >>> >> >> > alex >>> >> >> > >>> >> >> > >>> >> >> >> >>> >> >> >>> >>> >> >> >>> Thanks in advance >>> >> >> >>> Alex >>> >> >> >>> >>> >> >> >>> >>> >> >> >>>> >>> >> >> >>>> Author: Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >>> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> >>> >>> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >>> >> >> >>>> >>> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not >>> at dtsi >>> >> >> >>>> file >>> >> >> >>>> >>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>> index 6bfc595..2a22a82 100644 >>> >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>> @@ -52,6 +52,10 @@ >>> >> >> >>>> model = "STMicroelectronics STM32429i-EVAL board"; >>> >> >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; >>> >> >> >>>> >>> >> >> >>>> + soc { >>> >> >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >>> >> >> >>>> + }; >>> >> >> >>>> + >>> >> >> >>>> chosen { >>> >> >> >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; >>> >> >> >>>> stdout-path = "serial0:115200n8"; >>> >> >> >>>> @@ -96,6 +100,7 @@ >>> >> >> >>>> >>> >> >> >>>> ðernet0 { >>> >> >> >>>> status = "okay"; >>> >> >> >>>> + dma-ranges; >>> >> >> >>>> pinctrl-0 = <ðernet0_mii>; >>> >> >> >>>> pinctrl-names = "default"; >>> >> >> >>>> phy-mode = "mii-id"; >>> >> >> >>>> @@ -116,6 +121,7 @@ >>> >> >> >>>> }; >>> >> >> >>>> >>> >> >> >>>> &usbotg_hs { >>> >> >> >>>> + dma-ranges; >>> >> >> >>>> dr_mode = "host"; >>> >> >> >>>> phys = <&usbotg_hs_phy>; >>> >> >> >>>> phy-names = "usb2-phy"; >>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>> index 7d624a2..697a133 100644 >>> >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>> @@ -59,7 +59,6 @@ >>> >> >> >>>> }; >>> >> >> >>>> >>> >> >> >>>> soc { >>> >> >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>> >> >> >>>> >>> >> >> >>>> timer2: timer@40000000 { >>> >> >> >>>> compatible = "st,stm32-timer"; >>> >> >> >>>> @@ -472,13 +471,11 @@ >>> >> >> >>>> st,syscon = <&syscfg 0x4>; >>> >> >> >>>> snps,pbl = <8>; >>> >> >> >>>> snps,mixed-burst; >>> >> >> >>>> - dma-ranges; >>> >> >> >>>> status = "disabled"; >>> >> >> >>>> }; >>> >> >> >>>> >>> >> >> >>>> usbotg_hs: usb@40040000 { >>> >> >> >>>> compatible = "snps,dwc2"; >>> >> >> >>>> - dma-ranges; >>> >> >> >>>> reg = <0x40040000 0x40000>; >>> >> >> >>>> interrupts = <77>; >>> >> >> >>>> clocks = <&rcc 0 29>; >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>>> index 0596d60..3a1cfdd 100644 >>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>>> @@ -59,8 +59,6 @@ >>> >> >> >>>>> }; >>> >> >> >>>>> >>> >> >> >>>>> soc { >>> >> >> >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>> >> >> >>>>> - >>> >> >> >>>>> timer2: timer@40000000 { >>> >> >> >>>>> compatible = "st,stm32-timer"; >>> >> >> >>>>> reg = <0x40000000 0x400>; >>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >>> >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >>> >> >> >>>>> index 9e73656..c2213c0 100644 >>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >>> >> >> >>>>> @@ -64,6 +64,10 @@ >>> >> >> >>>>> aliases { >>> >> >> >>>>> serial0 = &usart3; >>> >> >> >>>>> }; >>> >> >> >>>>> + >>> >> >> >>>>> + soc { >>> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>> >> >> >>>>> + }; >>> >> >> >>>>> }; >>> >> >> >>>>> >>> >> >> >>>>> &clk_hse { >>> >> >> >>>>> -- >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>> Br., >>> >> >> >>>> Bruno >>> >> >> >>>> >>> >> >> >>> >>> >> >> > >>> >> >> >>> >> >> _______________________________________________ >>> >> >> linux-arm-kernel mailing list >>> >> >> linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org >>> <mailto:linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org> >>> >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >>> <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> >>> >> > >>> >> > >>> > >>> > >>> >>> >> -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-11-02 16:14 ` Alexandre Torgue 0 siblings, 0 replies; 32+ messages in thread From: Alexandre Torgue @ 2016-11-02 16:14 UTC (permalink / raw) To: linux-arm-kernel On 11/02/2016 05:07 PM, Bruno Herrera wrote: > Hi > > On Wed, Nov 2, 2016 at 12:32 PM, Alexandre Torgue > <alexandre.torgue@st.com> wrote: >> Hi >> >> On 10/31/2016 07:58 PM, Rados?aw Pietrzyk wrote: >>> >>> I think wlcore driver searches dma-ranges in its parent that's why sdio >>> node needs it. >> >> >> Yes I agree. In this case it is needed as you have subnode in sdio node. >> So IMO empty dma-ranges could be removed from ethernet and usb node, but >> kept in future sdio subnode. > > Now it is clear. Nice. Can I add your tested-by ? > >> >> Bruno, >> Do you plan to push sdio support ? > > Yes I do, but I'm not sure how long it will take. The I had to > change(and hack) the mmci code because I could not get the ID from > STM32 SDIO IP. > My current WIP is at @ > https://github.com/mcoquelin-stm32/afboot-stm32/pull/4#issuecomment-247571615 > I know Andrea Merello is also working on that (and he probably has a > more complete patch). > >> >> >> >>> >>> 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera@gmail.com >>> <mailto:bruherrera@gmail.com>>: >>> >>> On Mon, Oct 31, 2016 at 12:14 PM, Rados?aw Pietrzyk >>> <radoslaw.pietrzyk at gmail.com <mailto:radoslaw.pietrzyk@gmail.com>> >>> wrote: >>> > This is weird because dma ddresses are recalculated using parent's >>> > dma-ranges property and soc already has it so there should be >>> absolutely no >>> > problem. >>> >>> These are my DTS and DTSI file. >>> > >>> > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera@gmail.com >>> <mailto:bruherrera@gmail.com>>: >>> >> >>> >> On Fri, Oct 28, 2016 at 5:09 AM, Rados?aw Pietrzyk >>> >> <radoslaw.pietrzyk@gmail.com >>> <mailto:radoslaw.pietrzyk@gmail.com>> wrote: >>> >> > Have you defined your sdio node within soc node ? >>> >> >>> >> It is in the SOC node of the DSTI file. >>> >> >>> >> > >>> >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com >>> <mailto:bruherrera@gmail.com>>: >>> >> >> >>> >> >> Hi Alex, >>> >> >> >>> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >>> >> >> <alexandre.torgue at st.com <mailto:alexandre.torgue@st.com>> >>> wrote: >>> >> >> > Hi Bruno, >>> >> >> > >>> >> >> > >>> >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >>> >> >> >> >>> >> >> >> Hi Alex, >>> >> >> >> >>> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >>> >> >> >> <alexandre.torgue at st.com <mailto:alexandre.torgue@st.com>> >>> wrote: >>> >> >> >>> >>> >> >> >>> Hi Bruno, >>> >> >> >>> >>> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>> Hi Alexandre, >>> >> >> >>>> >>> >> >> >>>>> >>> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM >>> start address >>> >> >> >>>>> remapping >>> >> >> >>>>> (to @0) to boost performances. A DMA translation through >>> >> >> >>>>> "dma-ranges" >>> >> >> >>>>> property was needed for other masters than the M4 CPU. >>> >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need >>> this DMA >>> >> >> >>>>> translation. >>> >> >> >>>>> This patches moves this DMA translation definition from >>> stm32f429 >>> >> >> >>>>> soc >>> >> >> >>>>> file >>> >> >> >>>>> to board files. >>> >> >> >>>>> >>> >> >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com >>> <mailto:alexandre.torgue@st.com>> >>> >>> >> >> >>>>> >>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>>> index 13c7cd2..a763c15 100644 >>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>>> @@ -82,6 +82,10 @@ >>> >> >> >>>>> }; >>> >> >> >>>>> }; >>> >> >> >>>>> >>> >> >> >>>>> + soc { >>> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>> >> >> >>>>> + }; >>> >> >> >>>>> + >>> >> >> >>>>> usbotg_hs_phy: usbphy { >>> >> >> >>>>> #phy-cells = <0>; >>> >> >> >>>>> compatible = "usb-nop-xceiv"; >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>> Shouldn't also the peripheral dma-ranges property move to >>> board >>> >> >> >>>> specific >>> >> >> >>>> too? >>> >> >> >>>> I had this patch for while but I didn't had the time to >>> submit: >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd >>> ysterday on >>> >> >> >>> IIRC, >>> >> >> >>> empty dma-ranges is not needed. Can you test on your side by >>> >> >> >>> removing >>> >> >> >>> dma-ranges in usb node please ? >>> >> >> >> >>> >> >> >> Unfortunately will take a time for me to set up this >>> environment on >>> >> >> >> the STM32F4-EVAL board. >>> >> >> >> And on the discovery boards we dont have this scenario. >>> That was the >>> >> >> >> main reason I did not submit the patch right away. >>> >> >> >> My conclusion and I might be wrong but is based on the my >>> tests with >>> >> >> >> SDIO device at STM32F469I-DISCO board. >>> >> >> >> >>> >> >> >> I started this issue as discussion at ST Forum but Maxime >>> gave me >>> >> >> >> the >>> >> >> >> hint. >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >>> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >>> >>> <https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44> >>> >> >> >> >>> >> >> >>> I will push a v2 by removing empty dma-ranges if tests are >>> ok in >>> >> >> >>> your >>> >> >> >>> side. >>> >> >> >> >>> >> >> >> >>> >> >> >> From my understating/conclusion is: when empty >>> property(dma-ranges) >>> >> >> >> is >>> >> >> >> the device node, the mapping will be taken in consideration >>> when >>> >> >> >> using >>> >> >> >> DMA otherwise the mapping is ignored. >>> >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >>> >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in >>> question >>> >> >> >> so >>> >> >> >> I suppose it can work without the property. >>> >> >> > >>> >> >> > >>> >> >> > For sure translation has to be done but I'm not sure that an >>> empty >>> >> >> > "dma-ranges" is needed in device node to activate it. For >>> Ethernet >>> >> >> > empty >>> >> >> > "dma-ranges" is not needed. I will try with usb. >>> >> >> >>> >> >> In the case of SDIO it is needed. As example this is my >>> working SDIO >>> >> >> node: >>> >> >> >>> >> >> sdio: sdio at 40012c00 { >>> >> >> compatible = "arm,pl18x", "arm,primecell"; >>> >> >> arm,primecell-periphid = <0x00480181>; >>> >> >> reg = <0x40012c00 0x400>; >>> >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >>> >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >>> >> >> dma-names = "rx", "tx"; >>> >> >> clocks = <&rcc 0 171>; >>> >> >> clock-names = "apb_pclk"; >>> >> >> interrupts = <49>; >>> >> >> status = "disabled"; >>> >> >> }; >>> >> >> >>> >> >> &sdio { >>> >> >> status = "okay"; >>> >> >> vmmc-supply = <&wlan_en>; >>> >> >> bus-width = <4>; >>> >> >> max-frequency = <24000000>; >>> >> >> pinctrl-names = "default"; >>> >> >> pinctrl-0 = <&sdio_pins>; >>> >> >> ti,non-removable; >>> >> >> ti,needs-special-hs-handling; >>> >> >> dma-ranges; >>> >> >> cap-power-off-card; >>> >> >> keep-power-in-suspend; >>> >> >> >>> >> >> #address-cells = <1>; >>> >> >> #size-cells = <0>; >>> >> >> wlcore: wlcore at 0 { >>> >> >> compatible = "ti,wl1835"; >>> >> >> reg = <2>; >>> >> >> interrupt-parent = <&gpioa>; >>> >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >>> >> >> }; >>> >> >> }; >>> >> >> >>> >> >> > >>> >> >> > alex >>> >> >> > >>> >> >> > >>> >> >> >> >>> >> >> >>> >>> >> >> >>> Thanks in advance >>> >> >> >>> Alex >>> >> >> >>> >>> >> >> >>> >>> >> >> >>>> >>> >> >> >>>> Author: Bruno Herrera <bruherrera@gmail.com >>> <mailto:bruherrera@gmail.com>> >>> >>> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >>> >> >> >>>> >>> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not >>> at dtsi >>> >> >> >>>> file >>> >> >> >>>> >>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>> index 6bfc595..2a22a82 100644 >>> >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>> >> >> >>>> @@ -52,6 +52,10 @@ >>> >> >> >>>> model = "STMicroelectronics STM32429i-EVAL board"; >>> >> >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; >>> >> >> >>>> >>> >> >> >>>> + soc { >>> >> >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >>> >> >> >>>> + }; >>> >> >> >>>> + >>> >> >> >>>> chosen { >>> >> >> >>>> bootargs = "root=/dev/ram rdinit=/linuxrc"; >>> >> >> >>>> stdout-path = "serial0:115200n8"; >>> >> >> >>>> @@ -96,6 +100,7 @@ >>> >> >> >>>> >>> >> >> >>>> ðernet0 { >>> >> >> >>>> status = "okay"; >>> >> >> >>>> + dma-ranges; >>> >> >> >>>> pinctrl-0 = <ðernet0_mii>; >>> >> >> >>>> pinctrl-names = "default"; >>> >> >> >>>> phy-mode = "mii-id"; >>> >> >> >>>> @@ -116,6 +121,7 @@ >>> >> >> >>>> }; >>> >> >> >>>> >>> >> >> >>>> &usbotg_hs { >>> >> >> >>>> + dma-ranges; >>> >> >> >>>> dr_mode = "host"; >>> >> >> >>>> phys = <&usbotg_hs_phy>; >>> >> >> >>>> phy-names = "usb2-phy"; >>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>> index 7d624a2..697a133 100644 >>> >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>> @@ -59,7 +59,6 @@ >>> >> >> >>>> }; >>> >> >> >>>> >>> >> >> >>>> soc { >>> >> >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>> >> >> >>>> >>> >> >> >>>> timer2: timer at 40000000 { >>> >> >> >>>> compatible = "st,stm32-timer"; >>> >> >> >>>> @@ -472,13 +471,11 @@ >>> >> >> >>>> st,syscon = <&syscfg 0x4>; >>> >> >> >>>> snps,pbl = <8>; >>> >> >> >>>> snps,mixed-burst; >>> >> >> >>>> - dma-ranges; >>> >> >> >>>> status = "disabled"; >>> >> >> >>>> }; >>> >> >> >>>> >>> >> >> >>>> usbotg_hs: usb at 40040000 { >>> >> >> >>>> compatible = "snps,dwc2"; >>> >> >> >>>> - dma-ranges; >>> >> >> >>>> reg = <0x40040000 0x40000>; >>> >> >> >>>> interrupts = <77>; >>> >> >> >>>> clocks = <&rcc 0 29>; >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>>> index 0596d60..3a1cfdd 100644 >>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>> >> >> >>>>> @@ -59,8 +59,6 @@ >>> >> >> >>>>> }; >>> >> >> >>>>> >>> >> >> >>>>> soc { >>> >> >> >>>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>> >> >> >>>>> - >>> >> >> >>>>> timer2: timer at 40000000 { >>> >> >> >>>>> compatible = "st,stm32-timer"; >>> >> >> >>>>> reg = <0x40000000 0x400>; >>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >>> >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >>> >> >> >>>>> index 9e73656..c2213c0 100644 >>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >>> >> >> >>>>> @@ -64,6 +64,10 @@ >>> >> >> >>>>> aliases { >>> >> >> >>>>> serial0 = &usart3; >>> >> >> >>>>> }; >>> >> >> >>>>> + >>> >> >> >>>>> + soc { >>> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 0x10000000>; >>> >> >> >>>>> + }; >>> >> >> >>>>> }; >>> >> >> >>>>> >>> >> >> >>>>> &clk_hse { >>> >> >> >>>>> -- >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>> Br., >>> >> >> >>>> Bruno >>> >> >> >>>> >>> >> >> >>> >>> >> >> > >>> >> >> >>> >> >> _______________________________________________ >>> >> >> linux-arm-kernel mailing list >>> >> >> linux-arm-kernel at lists.infradead.org >>> <mailto:linux-arm-kernel@lists.infradead.org> >>> >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >>> <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> >>> >> > >>> >> > >>> > >>> > >>> >>> >> ^ permalink raw reply [flat|nested] 32+ messages in thread
[parent not found: <edf05ad5-924d-87d8-fd8d-57e8e0a72052-qxv4g6HH51o@public.gmane.org>]
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-11-02 16:14 ` Alexandre Torgue @ 2016-11-02 18:24 ` Bruno Herrera -1 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-11-02 18:24 UTC (permalink / raw) To: Alexandre Torgue Cc: Radosław Pietrzyk, mark.rutland-5wv7dgnIgG8, devicetree-u79uwXL29TY76Z2rM5mHXA, Arnd Bergmann, linux-I+IVW8TIWO2tmTQ+vhA3Yw, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Andrea Merello On Wed, Nov 2, 2016 at 2:14 PM, Alexandre Torgue <alexandre.torgue-qxv4g6HH51o@public.gmane.org> wrote: > > > On 11/02/2016 05:07 PM, Bruno Herrera wrote: >> >> Hi >> >> On Wed, Nov 2, 2016 at 12:32 PM, Alexandre Torgue >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org> wrote: >>> >>> Hi >>> >>> On 10/31/2016 07:58 PM, Radosław Pietrzyk wrote: >>>> >>>> >>>> I think wlcore driver searches dma-ranges in its parent that's why sdio >>>> node needs it. >>> >>> >>> >>> Yes I agree. In this case it is needed as you have subnode in sdio node. >>> So IMO empty dma-ranges could be removed from ethernet and usb node, but >>> kept in future sdio subnode. >> >> >> Now it is clear. > > Nice. Can I add your tested-by ? > Sure >> >>> >>> Bruno, >>> Do you plan to push sdio support ? >> >> >> Yes I do, but I'm not sure how long it will take. The I had to >> change(and hack) the mmci code because I could not get the ID from >> STM32 SDIO IP. >> My current WIP is at @ >> >> https://github.com/mcoquelin-stm32/afboot-stm32/pull/4#issuecomment-247571615 >> I know Andrea Merello is also working on that (and he probably has a >> more complete patch). >> >>> >>> >>> >>>> >>>> 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >>>> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: >>>> >>>> On Mon, Oct 31, 2016 at 12:14 PM, Radosław Pietrzyk >>>> <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org <mailto:radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> >>>> wrote: >>>> > This is weird because dma ddresses are recalculated using parent's >>>> > dma-ranges property and soc already has it so there should be >>>> absolutely no >>>> > problem. >>>> >>>> These are my DTS and DTSI file. >>>> > >>>> > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >>>> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: >>>> >> >>>> >> On Fri, Oct 28, 2016 at 5:09 AM, Radosław Pietrzyk >>>> >> <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >>>> <mailto:radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> wrote: >>>> >> > Have you defined your sdio node within soc node ? >>>> >> >>>> >> It is in the SOC node of the DSTI file. >>>> >> >>>> >> > >>>> >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera-Re5JQEeQqe8@public.gmane.orgm >>>> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: >>>> >> >> >>>> >> >> Hi Alex, >>>> >> >> >>>> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >>>> >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> >>>> wrote: >>>> >> >> > Hi Bruno, >>>> >> >> > >>>> >> >> > >>>> >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >>>> >> >> >> >>>> >> >> >> Hi Alex, >>>> >> >> >> >>>> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >>>> >> >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> >>>> wrote: >>>> >> >> >>> >>>> >> >> >>> Hi Bruno, >>>> >> >> >>> >>>> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>> Hi Alexandre, >>>> >> >> >>>> >>>> >> >> >>>>> >>>> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM >>>> start address >>>> >> >> >>>>> remapping >>>> >> >> >>>>> (to @0) to boost performances. A DMA translation through >>>> >> >> >>>>> "dma-ranges" >>>> >> >> >>>>> property was needed for other masters than the M4 CPU. >>>> >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need >>>> this DMA >>>> >> >> >>>>> translation. >>>> >> >> >>>>> This patches moves this DMA translation definition from >>>> stm32f429 >>>> >> >> >>>>> soc >>>> >> >> >>>>> file >>>> >> >> >>>>> to board files. >>>> >> >> >>>>> >>>> >> >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com >>>> <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> >>>> >>>> >> >> >>>>> >>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>>> index 13c7cd2..a763c15 100644 >>>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>>> @@ -82,6 +82,10 @@ >>>> >> >> >>>>> }; >>>> >> >> >>>>> }; >>>> >> >> >>>>> >>>> >> >> >>>>> + soc { >>>> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 >>>> 0x10000000>; >>>> >> >> >>>>> + }; >>>> >> >> >>>>> + >>>> >> >> >>>>> usbotg_hs_phy: usbphy { >>>> >> >> >>>>> #phy-cells = <0>; >>>> >> >> >>>>> compatible = "usb-nop-xceiv"; >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>> Shouldn't also the peripheral dma-ranges property move to >>>> board >>>> >> >> >>>> specific >>>> >> >> >>>> too? >>>> >> >> >>>> I had this patch for while but I didn't had the time to >>>> submit: >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd >>>> ysterday on >>>> >> >> >>> IIRC, >>>> >> >> >>> empty dma-ranges is not needed. Can you test on your side >>>> by >>>> >> >> >>> removing >>>> >> >> >>> dma-ranges in usb node please ? >>>> >> >> >> >>>> >> >> >> Unfortunately will take a time for me to set up this >>>> environment on >>>> >> >> >> the STM32F4-EVAL board. >>>> >> >> >> And on the discovery boards we dont have this scenario. >>>> That was the >>>> >> >> >> main reason I did not submit the patch right away. >>>> >> >> >> My conclusion and I might be wrong but is based on the my >>>> tests with >>>> >> >> >> SDIO device at STM32F469I-DISCO board. >>>> >> >> >> >>>> >> >> >> I started this issue as discussion at ST Forum but Maxime >>>> gave me >>>> >> >> >> the >>>> >> >> >> hint. >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >>>> >>>> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >>>> >>>> >>>> <https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44> >>>> >> >> >> >>>> >> >> >>> I will push a v2 by removing empty dma-ranges if tests are >>>> ok in >>>> >> >> >>> your >>>> >> >> >>> side. >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> From my understating/conclusion is: when empty >>>> property(dma-ranges) >>>> >> >> >> is >>>> >> >> >> the device node, the mapping will be taken in consideration >>>> when >>>> >> >> >> using >>>> >> >> >> DMA otherwise the mapping is ignored. >>>> >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >>>> >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in >>>> question >>>> >> >> >> so >>>> >> >> >> I suppose it can work without the property. >>>> >> >> > >>>> >> >> > >>>> >> >> > For sure translation has to be done but I'm not sure that an >>>> empty >>>> >> >> > "dma-ranges" is needed in device node to activate it. For >>>> Ethernet >>>> >> >> > empty >>>> >> >> > "dma-ranges" is not needed. I will try with usb. >>>> >> >> >>>> >> >> In the case of SDIO it is needed. As example this is my >>>> working SDIO >>>> >> >> node: >>>> >> >> >>>> >> >> sdio: sdio@40012c00 { >>>> >> >> compatible = "arm,pl18x", "arm,primecell"; >>>> >> >> arm,primecell-periphid = <0x00480181>; >>>> >> >> reg = <0x40012c00 0x400>; >>>> >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >>>> >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >>>> >> >> dma-names = "rx", "tx"; >>>> >> >> clocks = <&rcc 0 171>; >>>> >> >> clock-names = "apb_pclk"; >>>> >> >> interrupts = <49>; >>>> >> >> status = "disabled"; >>>> >> >> }; >>>> >> >> >>>> >> >> &sdio { >>>> >> >> status = "okay"; >>>> >> >> vmmc-supply = <&wlan_en>; >>>> >> >> bus-width = <4>; >>>> >> >> max-frequency = <24000000>; >>>> >> >> pinctrl-names = "default"; >>>> >> >> pinctrl-0 = <&sdio_pins>; >>>> >> >> ti,non-removable; >>>> >> >> ti,needs-special-hs-handling; >>>> >> >> dma-ranges; >>>> >> >> cap-power-off-card; >>>> >> >> keep-power-in-suspend; >>>> >> >> >>>> >> >> #address-cells = <1>; >>>> >> >> #size-cells = <0>; >>>> >> >> wlcore: wlcore@0 { >>>> >> >> compatible = "ti,wl1835"; >>>> >> >> reg = <2>; >>>> >> >> interrupt-parent = <&gpioa>; >>>> >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >>>> >> >> }; >>>> >> >> }; >>>> >> >> >>>> >> >> > >>>> >> >> > alex >>>> >> >> > >>>> >> >> > >>>> >> >> >> >>>> >> >> >>> >>>> >> >> >>> Thanks in advance >>>> >> >> >>> Alex >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>>> >>>> >> >> >>>> Author: Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >>>> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> >>>> >>>> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >>>> >> >> >>>> >>>> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not >>>> at dtsi >>>> >> >> >>>> file >>>> >> >> >>>> >>>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>> index 6bfc595..2a22a82 100644 >>>> >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>> @@ -52,6 +52,10 @@ >>>> >> >> >>>> model = "STMicroelectronics STM32429i-EVAL >>>> board"; >>>> >> >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; >>>> >> >> >>>> >>>> >> >> >>>> + soc { >>>> >> >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >>>> >> >> >>>> + }; >>>> >> >> >>>> + >>>> >> >> >>>> chosen { >>>> >> >> >>>> bootargs = "root=/dev/ram >>>> rdinit=/linuxrc"; >>>> >> >> >>>> stdout-path = "serial0:115200n8"; >>>> >> >> >>>> @@ -96,6 +100,7 @@ >>>> >> >> >>>> >>>> >> >> >>>> ðernet0 { >>>> >> >> >>>> status = "okay"; >>>> >> >> >>>> + dma-ranges; >>>> >> >> >>>> pinctrl-0 = <ðernet0_mii>; >>>> >> >> >>>> pinctrl-names = "default"; >>>> >> >> >>>> phy-mode = "mii-id"; >>>> >> >> >>>> @@ -116,6 +121,7 @@ >>>> >> >> >>>> }; >>>> >> >> >>>> >>>> >> >> >>>> &usbotg_hs { >>>> >> >> >>>> + dma-ranges; >>>> >> >> >>>> dr_mode = "host"; >>>> >> >> >>>> phys = <&usbotg_hs_phy>; >>>> >> >> >>>> phy-names = "usb2-phy"; >>>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>> index 7d624a2..697a133 100644 >>>> >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>> @@ -59,7 +59,6 @@ >>>> >> >> >>>> }; >>>> >> >> >>>> >>>> >> >> >>>> soc { >>>> >> >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>>> >> >> >>>> >>>> >> >> >>>> timer2: timer@40000000 { >>>> >> >> >>>> compatible = "st,stm32-timer"; >>>> >> >> >>>> @@ -472,13 +471,11 @@ >>>> >> >> >>>> st,syscon = <&syscfg 0x4>; >>>> >> >> >>>> snps,pbl = <8>; >>>> >> >> >>>> snps,mixed-burst; >>>> >> >> >>>> - dma-ranges; >>>> >> >> >>>> status = "disabled"; >>>> >> >> >>>> }; >>>> >> >> >>>> >>>> >> >> >>>> usbotg_hs: usb@40040000 { >>>> >> >> >>>> compatible = "snps,dwc2"; >>>> >> >> >>>> - dma-ranges; >>>> >> >> >>>> reg = <0x40040000 0x40000>; >>>> >> >> >>>> interrupts = <77>; >>>> >> >> >>>> clocks = <&rcc 0 29>; >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>>> index 0596d60..3a1cfdd 100644 >>>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>>> @@ -59,8 +59,6 @@ >>>> >> >> >>>>> }; >>>> >> >> >>>>> >>>> >> >> >>>>> soc { >>>> >> >> >>>>> - dma-ranges = <0xc0000000 0x0 >>>> 0x10000000>; >>>> >> >> >>>>> - >>>> >> >> >>>>> timer2: timer@40000000 { >>>> >> >> >>>>> compatible = "st,stm32-timer"; >>>> >> >> >>>>> reg = <0x40000000 0x400>; >>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >>>> >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >>>> >> >> >>>>> index 9e73656..c2213c0 100644 >>>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >>>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >>>> >> >> >>>>> @@ -64,6 +64,10 @@ >>>> >> >> >>>>> aliases { >>>> >> >> >>>>> serial0 = &usart3; >>>> >> >> >>>>> }; >>>> >> >> >>>>> + >>>> >> >> >>>>> + soc { >>>> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 >>>> 0x10000000>; >>>> >> >> >>>>> + }; >>>> >> >> >>>>> }; >>>> >> >> >>>>> >>>> >> >> >>>>> &clk_hse { >>>> >> >> >>>>> -- >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>> Br., >>>> >> >> >>>> Bruno >>>> >> >> >>>> >>>> >> >> >>> >>>> >> >> > >>>> >> >> >>>> >> >> _______________________________________________ >>>> >> >> linux-arm-kernel mailing list >>>> >> >> linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org >>>> <mailto:linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org> >>>> >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >>>> <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> >>>> >> > >>>> >> > >>>> > >>>> > >>>> >>>> >>> > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-11-02 18:24 ` Bruno Herrera 0 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-11-02 18:24 UTC (permalink / raw) To: linux-arm-kernel On Wed, Nov 2, 2016 at 2:14 PM, Alexandre Torgue <alexandre.torgue@st.com> wrote: > > > On 11/02/2016 05:07 PM, Bruno Herrera wrote: >> >> Hi >> >> On Wed, Nov 2, 2016 at 12:32 PM, Alexandre Torgue >> <alexandre.torgue@st.com> wrote: >>> >>> Hi >>> >>> On 10/31/2016 07:58 PM, Rados?aw Pietrzyk wrote: >>>> >>>> >>>> I think wlcore driver searches dma-ranges in its parent that's why sdio >>>> node needs it. >>> >>> >>> >>> Yes I agree. In this case it is needed as you have subnode in sdio node. >>> So IMO empty dma-ranges could be removed from ethernet and usb node, but >>> kept in future sdio subnode. >> >> >> Now it is clear. > > Nice. Can I add your tested-by ? > Sure >> >>> >>> Bruno, >>> Do you plan to push sdio support ? >> >> >> Yes I do, but I'm not sure how long it will take. The I had to >> change(and hack) the mmci code because I could not get the ID from >> STM32 SDIO IP. >> My current WIP is at @ >> >> https://github.com/mcoquelin-stm32/afboot-stm32/pull/4#issuecomment-247571615 >> I know Andrea Merello is also working on that (and he probably has a >> more complete patch). >> >>> >>> >>> >>>> >>>> 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera@gmail.com >>>> <mailto:bruherrera@gmail.com>>: >>>> >>>> On Mon, Oct 31, 2016 at 12:14 PM, Rados?aw Pietrzyk >>>> <radoslaw.pietrzyk at gmail.com <mailto:radoslaw.pietrzyk@gmail.com>> >>>> wrote: >>>> > This is weird because dma ddresses are recalculated using parent's >>>> > dma-ranges property and soc already has it so there should be >>>> absolutely no >>>> > problem. >>>> >>>> These are my DTS and DTSI file. >>>> > >>>> > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera@gmail.com >>>> <mailto:bruherrera@gmail.com>>: >>>> >> >>>> >> On Fri, Oct 28, 2016 at 5:09 AM, Rados?aw Pietrzyk >>>> >> <radoslaw.pietrzyk@gmail.com >>>> <mailto:radoslaw.pietrzyk@gmail.com>> wrote: >>>> >> > Have you defined your sdio node within soc node ? >>>> >> >>>> >> It is in the SOC node of the DSTI file. >>>> >> >>>> >> > >>>> >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com >>>> <mailto:bruherrera@gmail.com>>: >>>> >> >> >>>> >> >> Hi Alex, >>>> >> >> >>>> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >>>> >> >> <alexandre.torgue at st.com <mailto:alexandre.torgue@st.com>> >>>> wrote: >>>> >> >> > Hi Bruno, >>>> >> >> > >>>> >> >> > >>>> >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >>>> >> >> >> >>>> >> >> >> Hi Alex, >>>> >> >> >> >>>> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >>>> >> >> >> <alexandre.torgue at st.com <mailto:alexandre.torgue@st.com>> >>>> wrote: >>>> >> >> >>> >>>> >> >> >>> Hi Bruno, >>>> >> >> >>> >>>> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>> Hi Alexandre, >>>> >> >> >>>> >>>> >> >> >>>>> >>>> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM >>>> start address >>>> >> >> >>>>> remapping >>>> >> >> >>>>> (to @0) to boost performances. A DMA translation through >>>> >> >> >>>>> "dma-ranges" >>>> >> >> >>>>> property was needed for other masters than the M4 CPU. >>>> >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need >>>> this DMA >>>> >> >> >>>>> translation. >>>> >> >> >>>>> This patches moves this DMA translation definition from >>>> stm32f429 >>>> >> >> >>>>> soc >>>> >> >> >>>>> file >>>> >> >> >>>>> to board files. >>>> >> >> >>>>> >>>> >> >> >>>>> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com >>>> <mailto:alexandre.torgue@st.com>> >>>> >>>> >> >> >>>>> >>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>>> index 13c7cd2..a763c15 100644 >>>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>>> @@ -82,6 +82,10 @@ >>>> >> >> >>>>> }; >>>> >> >> >>>>> }; >>>> >> >> >>>>> >>>> >> >> >>>>> + soc { >>>> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 >>>> 0x10000000>; >>>> >> >> >>>>> + }; >>>> >> >> >>>>> + >>>> >> >> >>>>> usbotg_hs_phy: usbphy { >>>> >> >> >>>>> #phy-cells = <0>; >>>> >> >> >>>>> compatible = "usb-nop-xceiv"; >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>> Shouldn't also the peripheral dma-ranges property move to >>>> board >>>> >> >> >>>> specific >>>> >> >> >>>> too? >>>> >> >> >>>> I had this patch for while but I didn't had the time to >>>> submit: >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd >>>> ysterday on >>>> >> >> >>> IIRC, >>>> >> >> >>> empty dma-ranges is not needed. Can you test on your side >>>> by >>>> >> >> >>> removing >>>> >> >> >>> dma-ranges in usb node please ? >>>> >> >> >> >>>> >> >> >> Unfortunately will take a time for me to set up this >>>> environment on >>>> >> >> >> the STM32F4-EVAL board. >>>> >> >> >> And on the discovery boards we dont have this scenario. >>>> That was the >>>> >> >> >> main reason I did not submit the patch right away. >>>> >> >> >> My conclusion and I might be wrong but is based on the my >>>> tests with >>>> >> >> >> SDIO device at STM32F469I-DISCO board. >>>> >> >> >> >>>> >> >> >> I started this issue as discussion at ST Forum but Maxime >>>> gave me >>>> >> >> >> the >>>> >> >> >> hint. >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >>>> >>>> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >>>> >>>> >>>> <https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44> >>>> >> >> >> >>>> >> >> >>> I will push a v2 by removing empty dma-ranges if tests are >>>> ok in >>>> >> >> >>> your >>>> >> >> >>> side. >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> From my understating/conclusion is: when empty >>>> property(dma-ranges) >>>> >> >> >> is >>>> >> >> >> the device node, the mapping will be taken in consideration >>>> when >>>> >> >> >> using >>>> >> >> >> DMA otherwise the mapping is ignored. >>>> >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >>>> >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in >>>> question >>>> >> >> >> so >>>> >> >> >> I suppose it can work without the property. >>>> >> >> > >>>> >> >> > >>>> >> >> > For sure translation has to be done but I'm not sure that an >>>> empty >>>> >> >> > "dma-ranges" is needed in device node to activate it. For >>>> Ethernet >>>> >> >> > empty >>>> >> >> > "dma-ranges" is not needed. I will try with usb. >>>> >> >> >>>> >> >> In the case of SDIO it is needed. As example this is my >>>> working SDIO >>>> >> >> node: >>>> >> >> >>>> >> >> sdio: sdio at 40012c00 { >>>> >> >> compatible = "arm,pl18x", "arm,primecell"; >>>> >> >> arm,primecell-periphid = <0x00480181>; >>>> >> >> reg = <0x40012c00 0x400>; >>>> >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >>>> >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >>>> >> >> dma-names = "rx", "tx"; >>>> >> >> clocks = <&rcc 0 171>; >>>> >> >> clock-names = "apb_pclk"; >>>> >> >> interrupts = <49>; >>>> >> >> status = "disabled"; >>>> >> >> }; >>>> >> >> >>>> >> >> &sdio { >>>> >> >> status = "okay"; >>>> >> >> vmmc-supply = <&wlan_en>; >>>> >> >> bus-width = <4>; >>>> >> >> max-frequency = <24000000>; >>>> >> >> pinctrl-names = "default"; >>>> >> >> pinctrl-0 = <&sdio_pins>; >>>> >> >> ti,non-removable; >>>> >> >> ti,needs-special-hs-handling; >>>> >> >> dma-ranges; >>>> >> >> cap-power-off-card; >>>> >> >> keep-power-in-suspend; >>>> >> >> >>>> >> >> #address-cells = <1>; >>>> >> >> #size-cells = <0>; >>>> >> >> wlcore: wlcore at 0 { >>>> >> >> compatible = "ti,wl1835"; >>>> >> >> reg = <2>; >>>> >> >> interrupt-parent = <&gpioa>; >>>> >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >>>> >> >> }; >>>> >> >> }; >>>> >> >> >>>> >> >> > >>>> >> >> > alex >>>> >> >> > >>>> >> >> > >>>> >> >> >> >>>> >> >> >>> >>>> >> >> >>> Thanks in advance >>>> >> >> >>> Alex >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>>> >>>> >> >> >>>> Author: Bruno Herrera <bruherrera@gmail.com >>>> <mailto:bruherrera@gmail.com>> >>>> >>>> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >>>> >> >> >>>> >>>> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not >>>> at dtsi >>>> >> >> >>>> file >>>> >> >> >>>> >>>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>> index 6bfc595..2a22a82 100644 >>>> >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>> >> >> >>>> @@ -52,6 +52,10 @@ >>>> >> >> >>>> model = "STMicroelectronics STM32429i-EVAL >>>> board"; >>>> >> >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; >>>> >> >> >>>> >>>> >> >> >>>> + soc { >>>> >> >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; >>>> >> >> >>>> + }; >>>> >> >> >>>> + >>>> >> >> >>>> chosen { >>>> >> >> >>>> bootargs = "root=/dev/ram >>>> rdinit=/linuxrc"; >>>> >> >> >>>> stdout-path = "serial0:115200n8"; >>>> >> >> >>>> @@ -96,6 +100,7 @@ >>>> >> >> >>>> >>>> >> >> >>>> ðernet0 { >>>> >> >> >>>> status = "okay"; >>>> >> >> >>>> + dma-ranges; >>>> >> >> >>>> pinctrl-0 = <ðernet0_mii>; >>>> >> >> >>>> pinctrl-names = "default"; >>>> >> >> >>>> phy-mode = "mii-id"; >>>> >> >> >>>> @@ -116,6 +121,7 @@ >>>> >> >> >>>> }; >>>> >> >> >>>> >>>> >> >> >>>> &usbotg_hs { >>>> >> >> >>>> + dma-ranges; >>>> >> >> >>>> dr_mode = "host"; >>>> >> >> >>>> phys = <&usbotg_hs_phy>; >>>> >> >> >>>> phy-names = "usb2-phy"; >>>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>> index 7d624a2..697a133 100644 >>>> >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>> @@ -59,7 +59,6 @@ >>>> >> >> >>>> }; >>>> >> >> >>>> >>>> >> >> >>>> soc { >>>> >> >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; >>>> >> >> >>>> >>>> >> >> >>>> timer2: timer at 40000000 { >>>> >> >> >>>> compatible = "st,stm32-timer"; >>>> >> >> >>>> @@ -472,13 +471,11 @@ >>>> >> >> >>>> st,syscon = <&syscfg 0x4>; >>>> >> >> >>>> snps,pbl = <8>; >>>> >> >> >>>> snps,mixed-burst; >>>> >> >> >>>> - dma-ranges; >>>> >> >> >>>> status = "disabled"; >>>> >> >> >>>> }; >>>> >> >> >>>> >>>> >> >> >>>> usbotg_hs: usb at 40040000 { >>>> >> >> >>>> compatible = "snps,dwc2"; >>>> >> >> >>>> - dma-ranges; >>>> >> >> >>>> reg = <0x40040000 0x40000>; >>>> >> >> >>>> interrupts = <77>; >>>> >> >> >>>> clocks = <&rcc 0 29>; >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>>> index 0596d60..3a1cfdd 100644 >>>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>> >> >> >>>>> @@ -59,8 +59,6 @@ >>>> >> >> >>>>> }; >>>> >> >> >>>>> >>>> >> >> >>>>> soc { >>>> >> >> >>>>> - dma-ranges = <0xc0000000 0x0 >>>> 0x10000000>; >>>> >> >> >>>>> - >>>> >> >> >>>>> timer2: timer at 40000000 { >>>> >> >> >>>>> compatible = "st,stm32-timer"; >>>> >> >> >>>>> reg = <0x40000000 0x400>; >>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >>>> >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >>>> >> >> >>>>> index 9e73656..c2213c0 100644 >>>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >>>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >>>> >> >> >>>>> @@ -64,6 +64,10 @@ >>>> >> >> >>>>> aliases { >>>> >> >> >>>>> serial0 = &usart3; >>>> >> >> >>>>> }; >>>> >> >> >>>>> + >>>> >> >> >>>>> + soc { >>>> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 >>>> 0x10000000>; >>>> >> >> >>>>> + }; >>>> >> >> >>>>> }; >>>> >> >> >>>>> >>>> >> >> >>>>> &clk_hse { >>>> >> >> >>>>> -- >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>> >>>> >> >> >>>> Br., >>>> >> >> >>>> Bruno >>>> >> >> >>>> >>>> >> >> >>> >>>> >> >> > >>>> >> >> >>>> >> >> _______________________________________________ >>>> >> >> linux-arm-kernel mailing list >>>> >> >> linux-arm-kernel at lists.infradead.org >>>> <mailto:linux-arm-kernel@lists.infradead.org> >>>> >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >>>> <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> >>>> >> > >>>> >> > >>>> > >>>> > >>>> >>>> >>> > ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-11-02 16:07 ` Bruno Herrera (?) (?) @ 2016-11-02 18:05 ` Radosław Pietrzyk [not found] ` <CAFvLkMSViXggGr0Set0qnQan_+bXUNzJx5WtZHP-Jyje=ZzDVw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> -1 siblings, 1 reply; 32+ messages in thread From: Radosław Pietrzyk @ 2016-11-02 18:05 UTC (permalink / raw) To: Bruno Herrera Cc: Alexandre Torgue, mark.rutland, devicetree, Arnd Bergmann, linux, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel, andrea.merello [-- Attachment #1: Type: text/plain, Size: 15279 bytes --] Have you tried with sdio { ... compatible = "arm,primecell"; arm,primecell-periphid = <id_to_define>; ... } This should register proper amba device and give it an ID you wish. 2016-11-02 17:07 GMT+01:00 Bruno Herrera <bruherrera@gmail.com>: > Hi > > On Wed, Nov 2, 2016 at 12:32 PM, Alexandre Torgue > <alexandre.torgue@st.com> wrote: > > Hi > > > > On 10/31/2016 07:58 PM, Radosław Pietrzyk wrote: > >> > >> I think wlcore driver searches dma-ranges in its parent that's why sdio > >> node needs it. > > > > > > Yes I agree. In this case it is needed as you have subnode in sdio node. > > So IMO empty dma-ranges could be removed from ethernet and usb node, but > > kept in future sdio subnode. > > Now it is clear. > > > > > Bruno, > > Do you plan to push sdio support ? > > Yes I do, but I'm not sure how long it will take. The I had to > change(and hack) the mmci code because I could not get the ID from > STM32 SDIO IP. > My current WIP is at @ > https://github.com/mcoquelin-stm32/afboot-stm32/pull/4# > issuecomment-247571615 > I know Andrea Merello is also working on that (and he probably has a > more complete patch). > > > > > > > > >> > >> 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera@gmail.com > >> <mailto:bruherrera@gmail.com>>: > >> > >> On Mon, Oct 31, 2016 at 12:14 PM, Radosław Pietrzyk > >> <radoslaw.pietrzyk@gmail.com <mailto:radoslaw.pietrzyk@gmail.com>> > >> wrote: > >> > This is weird because dma ddresses are recalculated using parent's > >> > dma-ranges property and soc already has it so there should be > >> absolutely no > >> > problem. > >> > >> These are my DTS and DTSI file. > >> > > >> > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera@gmail.com > >> <mailto:bruherrera@gmail.com>>: > >> >> > >> >> On Fri, Oct 28, 2016 at 5:09 AM, Radosław Pietrzyk > >> >> <radoslaw.pietrzyk@gmail.com > >> <mailto:radoslaw.pietrzyk@gmail.com>> wrote: > >> >> > Have you defined your sdio node within soc node ? > >> >> > >> >> It is in the SOC node of the DSTI file. > >> >> > >> >> > > >> >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com > >> <mailto:bruherrera@gmail.com>>: > >> >> >> > >> >> >> Hi Alex, > >> >> >> > >> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue > >> >> >> <alexandre.torgue@st.com <mailto:alexandre.torgue@st.com>> > >> wrote: > >> >> >> > Hi Bruno, > >> >> >> > > >> >> >> > > >> >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: > >> >> >> >> > >> >> >> >> Hi Alex, > >> >> >> >> > >> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue > >> >> >> >> <alexandre.torgue@st.com <mailto:alexandre.torgue@st.com>> > >> wrote: > >> >> >> >>> > >> >> >> >>> Hi Bruno, > >> >> >> >>> > >> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: > >> >> >> >>>> > >> >> >> >>>> > >> >> >> >>>> Hi Alexandre, > >> >> >> >>>> > >> >> >> >>>>> > >> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM > >> start address > >> >> >> >>>>> remapping > >> >> >> >>>>> (to @0) to boost performances. A DMA translation through > >> >> >> >>>>> "dma-ranges" > >> >> >> >>>>> property was needed for other masters than the M4 CPU. > >> >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need > >> this DMA > >> >> >> >>>>> translation. > >> >> >> >>>>> This patches moves this DMA translation definition from > >> stm32f429 > >> >> >> >>>>> soc > >> >> >> >>>>> file > >> >> >> >>>>> to board files. > >> >> >> >>>>> > >> >> >> >>>>> Signed-off-by: Alexandre TORGUE < > alexandre.torgue@st.com > >> <mailto:alexandre.torgue@st.com>> > >> > >> >> >> >>>>> > >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >>>>> index 13c7cd2..a763c15 100644 > >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >>>>> @@ -82,6 +82,10 @@ > >> >> >> >>>>> }; > >> >> >> >>>>> }; > >> >> >> >>>>> > >> >> >> >>>>> + soc { > >> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 > 0x10000000>; > >> >> >> >>>>> + }; > >> >> >> >>>>> + > >> >> >> >>>>> usbotg_hs_phy: usbphy { > >> >> >> >>>>> #phy-cells = <0>; > >> >> >> >>>>> compatible = "usb-nop-xceiv"; > >> >> >> >>>> > >> >> >> >>>> > >> >> >> >>>> > >> >> >> >>>> Shouldn't also the peripheral dma-ranges property move to > >> board > >> >> >> >>>> specific > >> >> >> >>>> too? > >> >> >> >>>> I had this patch for while but I didn't had the time to > >> submit: > >> >> >> >>> > >> >> >> >>> > >> >> >> >>> > >> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd > >> ysterday on > >> >> >> >>> IIRC, > >> >> >> >>> empty dma-ranges is not needed. Can you test on your side > by > >> >> >> >>> removing > >> >> >> >>> dma-ranges in usb node please ? > >> >> >> >> > >> >> >> >> Unfortunately will take a time for me to set up this > >> environment on > >> >> >> >> the STM32F4-EVAL board. > >> >> >> >> And on the discovery boards we dont have this scenario. > >> That was the > >> >> >> >> main reason I did not submit the patch right away. > >> >> >> >> My conclusion and I might be wrong but is based on the my > >> tests with > >> >> >> >> SDIO device at STM32F469I-DISCO board. > >> >> >> >> > >> >> >> >> I started this issue as discussion at ST Forum but Maxime > >> gave me > >> >> >> >> the > >> >> >> >> hint. > >> >> >> >> > >> >> >> >> > >> >> >> >> > >> >> >> >> > >> >> >> >> > >> > >> https://my.st.com/public/STe2ecommunities/mcu/Lists/ > cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic% > 2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32% > 2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID= > 0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46 > A77F0FFD06506F5B¤tviews=44 > >> > >> <https://my.st.com/public/STe2ecommunities/mcu/Lists/ > cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic% > 2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32% > 2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID= > 0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46 > A77F0FFD06506F5B¤tviews=44> > >> >> >> >> > >> >> >> >>> I will push a v2 by removing empty dma-ranges if tests are > >> ok in > >> >> >> >>> your > >> >> >> >>> side. > >> >> >> >> > >> >> >> >> > >> >> >> >> From my understating/conclusion is: when empty > >> property(dma-ranges) > >> >> >> >> is > >> >> >> >> the device node, the mapping will be taken in consideration > >> when > >> >> >> >> using > >> >> >> >> DMA otherwise the mapping is ignored. > >> >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and > >> >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in > >> question > >> >> >> >> so > >> >> >> >> I suppose it can work without the property. > >> >> >> > > >> >> >> > > >> >> >> > For sure translation has to be done but I'm not sure that an > >> empty > >> >> >> > "dma-ranges" is needed in device node to activate it. For > >> Ethernet > >> >> >> > empty > >> >> >> > "dma-ranges" is not needed. I will try with usb. > >> >> >> > >> >> >> In the case of SDIO it is needed. As example this is my > >> working SDIO > >> >> >> node: > >> >> >> > >> >> >> sdio: sdio@40012c00 { > >> >> >> compatible = "arm,pl18x", "arm,primecell"; > >> >> >> arm,primecell-periphid = <0x00480181>; > >> >> >> reg = <0x40012c00 0x400>; > >> >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ > >> >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ > >> >> >> dma-names = "rx", "tx"; > >> >> >> clocks = <&rcc 0 171>; > >> >> >> clock-names = "apb_pclk"; > >> >> >> interrupts = <49>; > >> >> >> status = "disabled"; > >> >> >> }; > >> >> >> > >> >> >> &sdio { > >> >> >> status = "okay"; > >> >> >> vmmc-supply = <&wlan_en>; > >> >> >> bus-width = <4>; > >> >> >> max-frequency = <24000000>; > >> >> >> pinctrl-names = "default"; > >> >> >> pinctrl-0 = <&sdio_pins>; > >> >> >> ti,non-removable; > >> >> >> ti,needs-special-hs-handling; > >> >> >> dma-ranges; > >> >> >> cap-power-off-card; > >> >> >> keep-power-in-suspend; > >> >> >> > >> >> >> #address-cells = <1>; > >> >> >> #size-cells = <0>; > >> >> >> wlcore: wlcore@0 { > >> >> >> compatible = "ti,wl1835"; > >> >> >> reg = <2>; > >> >> >> interrupt-parent = <&gpioa>; > >> >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; > >> >> >> }; > >> >> >> }; > >> >> >> > >> >> >> > > >> >> >> > alex > >> >> >> > > >> >> >> > > >> >> >> >> > >> >> >> >>> > >> >> >> >>> Thanks in advance > >> >> >> >>> Alex > >> >> >> >>> > >> >> >> >>> > >> >> >> >>>> > >> >> >> >>>> Author: Bruno Herrera <bruherrera@gmail.com > >> <mailto:bruherrera@gmail.com>> > >> > >> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 > >> >> >> >>>> > >> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board not > >> at dtsi > >> >> >> >>>> file > >> >> >> >>>> > >> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >>>> index 6bfc595..2a22a82 100644 > >> >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >>>> @@ -52,6 +52,10 @@ > >> >> >> >>>> model = "STMicroelectronics STM32429i-EVAL > board"; > >> >> >> >>>> compatible = "st,stm32429i-eval", "st,stm32f429"; > >> >> >> >>>> > >> >> >> >>>> + soc { > >> >> >> >>>> + dma-ranges = <0xC0000000 0x0 0x10000000>; > >> >> >> >>>> + }; > >> >> >> >>>> + > >> >> >> >>>> chosen { > >> >> >> >>>> bootargs = "root=/dev/ram > rdinit=/linuxrc"; > >> >> >> >>>> stdout-path = "serial0:115200n8"; > >> >> >> >>>> @@ -96,6 +100,7 @@ > >> >> >> >>>> > >> >> >> >>>> ðernet0 { > >> >> >> >>>> status = "okay"; > >> >> >> >>>> + dma-ranges; > >> >> >> >>>> pinctrl-0 = <ðernet0_mii>; > >> >> >> >>>> pinctrl-names = "default"; > >> >> >> >>>> phy-mode = "mii-id"; > >> >> >> >>>> @@ -116,6 +121,7 @@ > >> >> >> >>>> }; > >> >> >> >>>> > >> >> >> >>>> &usbotg_hs { > >> >> >> >>>> + dma-ranges; > >> >> >> >>>> dr_mode = "host"; > >> >> >> >>>> phys = <&usbotg_hs_phy>; > >> >> >> >>>> phy-names = "usb2-phy"; > >> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >>>> index 7d624a2..697a133 100644 > >> >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >>>> @@ -59,7 +59,6 @@ > >> >> >> >>>> }; > >> >> >> >>>> > >> >> >> >>>> soc { > >> >> >> >>>> - dma-ranges = <0xc0000000 0x0 0x10000000>; > >> >> >> >>>> > >> >> >> >>>> timer2: timer@40000000 { > >> >> >> >>>> compatible = "st,stm32-timer"; > >> >> >> >>>> @@ -472,13 +471,11 @@ > >> >> >> >>>> st,syscon = <&syscfg 0x4>; > >> >> >> >>>> snps,pbl = <8>; > >> >> >> >>>> snps,mixed-burst; > >> >> >> >>>> - dma-ranges; > >> >> >> >>>> status = "disabled"; > >> >> >> >>>> }; > >> >> >> >>>> > >> >> >> >>>> usbotg_hs: usb@40040000 { > >> >> >> >>>> compatible = "snps,dwc2"; > >> >> >> >>>> - dma-ranges; > >> >> >> >>>> reg = <0x40040000 0x40000>; > >> >> >> >>>> interrupts = <77>; > >> >> >> >>>> clocks = <&rcc 0 29>; > >> >> >> >>>> > >> >> >> >>>> > >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >>>>> index 0596d60..3a1cfdd 100644 > >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >>>>> @@ -59,8 +59,6 @@ > >> >> >> >>>>> }; > >> >> >> >>>>> > >> >> >> >>>>> soc { > >> >> >> >>>>> - dma-ranges = <0xc0000000 0x0 > 0x10000000>; > >> >> >> >>>>> - > >> >> >> >>>>> timer2: timer@40000000 { > >> >> >> >>>>> compatible = "st,stm32-timer"; > >> >> >> >>>>> reg = <0x40000000 0x400>; > >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >> >>>>> index 9e73656..c2213c0 100644 > >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >> >>>>> @@ -64,6 +64,10 @@ > >> >> >> >>>>> aliases { > >> >> >> >>>>> serial0 = &usart3; > >> >> >> >>>>> }; > >> >> >> >>>>> + > >> >> >> >>>>> + soc { > >> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 > 0x10000000>; > >> >> >> >>>>> + }; > >> >> >> >>>>> }; > >> >> >> >>>>> > >> >> >> >>>>> &clk_hse { > >> >> >> >>>>> -- > >> >> >> >>>> > >> >> >> >>>> > >> >> >> >>>> > >> >> >> >>>> > >> >> >> >>>> Br., > >> >> >> >>>> Bruno > >> >> >> >>>> > >> >> >> >>> > >> >> >> > > >> >> >> > >> >> >> _______________________________________________ > >> >> >> linux-arm-kernel mailing list > >> >> >> linux-arm-kernel@lists.infradead.org > >> <mailto:linux-arm-kernel@lists.infradead.org> > >> >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > >> <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> > >> >> > > >> >> > > >> > > >> > > >> > >> > > > [-- Attachment #2: Type: text/html, Size: 28650 bytes --] ^ permalink raw reply [flat|nested] 32+ messages in thread
[parent not found: <CAFvLkMSViXggGr0Set0qnQan_+bXUNzJx5WtZHP-Jyje=ZzDVw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-11-02 18:05 ` Radosław Pietrzyk @ 2016-11-02 18:23 ` Bruno Herrera 0 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-11-02 18:23 UTC (permalink / raw) To: Radosław Pietrzyk Cc: Alexandre Torgue, mark.rutland-5wv7dgnIgG8, devicetree-u79uwXL29TY76Z2rM5mHXA, Arnd Bergmann, linux-I+IVW8TIWO2tmTQ+vhA3Yw, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, andrea.merello-Re5JQEeQqe8AvxtiuMwx3w On Wed, Nov 2, 2016 at 4:05 PM, Radosław Pietrzyk <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > Have you tried with > > sdio { > ... > compatible = "arm,primecell"; > arm,primecell-periphid = <id_to_define>; > ... > } > > This should register proper amba device and give it an ID you wish. I'm using this: sdio: sdio@40012c00 { compatible = "arm,pl18x", "arm,primecell"; arm,primecell-periphid = <0x00480181>; reg = <0x40012c00 0x400>; dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ dma-names = "rx", "tx"; clocks = <&rcc 0 171>; clock-names = "apb_pclk"; interrupts = <49>; status = "disabled"; }; And on the driver side I added this: /* STM32 variants */ { .id = 0x00480181, .mask = 0xf0ffffff, .data = &variant_stm32f4x9, }, My .id field is the .id from variant_ux500 plus one (and what I believe is not valid). And I cannot read the ID from STM32 IP because it always return zero. Maybe someone from ST(@Alex) can get the real ID. ;) > > 2016-11-02 17:07 GMT+01:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>: >> >> Hi >> >> On Wed, Nov 2, 2016 at 12:32 PM, Alexandre Torgue >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org> wrote: >> > Hi >> > >> > On 10/31/2016 07:58 PM, Radosław Pietrzyk wrote: >> >> >> >> I think wlcore driver searches dma-ranges in its parent that's why sdio >> >> node needs it. >> > >> > >> > Yes I agree. In this case it is needed as you have subnode in sdio node. >> > So IMO empty dma-ranges could be removed from ethernet and usb node, but >> > kept in future sdio subnode. >> >> Now it is clear. >> >> > >> > Bruno, >> > Do you plan to push sdio support ? >> >> Yes I do, but I'm not sure how long it will take. The I had to >> change(and hack) the mmci code because I could not get the ID from >> STM32 SDIO IP. >> My current WIP is at @ >> >> https://github.com/mcoquelin-stm32/afboot-stm32/pull/4#issuecomment-247571615 >> I know Andrea Merello is also working on that (and he probably has a >> more complete patch). >> >> > >> > >> > >> >> >> >> 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >> >> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: >> >> >> >> On Mon, Oct 31, 2016 at 12:14 PM, Radosław Pietrzyk >> >> <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org <mailto:radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> >> >> wrote: >> >> > This is weird because dma ddresses are recalculated using >> >> parent's >> >> > dma-ranges property and soc already has it so there should be >> >> absolutely no >> >> > problem. >> >> >> >> These are my DTS and DTSI file. >> >> > >> >> > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >> >> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: >> >> >> >> >> >> On Fri, Oct 28, 2016 at 5:09 AM, Radosław Pietrzyk >> >> >> <radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >> >> <mailto:radoslaw.pietrzyk-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> wrote: >> >> >> > Have you defined your sdio node within soc node ? >> >> >> >> >> >> It is in the SOC node of the DSTI file. >> >> >> >> >> >> > >> >> >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com >> >> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>>: >> >> >> >> >> >> >> >> Hi Alex, >> >> >> >> >> >> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >> >> >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> >> >> wrote: >> >> >> >> > Hi Bruno, >> >> >> >> > >> >> >> >> > >> >> >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >> >> >> >> >> >> >> >> >> >> Hi Alex, >> >> >> >> >> >> >> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >> >> >> >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> >> >> wrote: >> >> >> >> >>> >> >> >> >> >>> Hi Bruno, >> >> >> >> >>> >> >> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> Hi Alexandre, >> >> >> >> >>>> >> >> >> >> >>>>> >> >> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM >> >> start address >> >> >> >> >>>>> remapping >> >> >> >> >>>>> (to @0) to boost performances. A DMA translation >> >> through >> >> >> >> >>>>> "dma-ranges" >> >> >> >> >>>>> property was needed for other masters than the M4 CPU. >> >> >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need >> >> this DMA >> >> >> >> >>>>> translation. >> >> >> >> >>>>> This patches moves this DMA translation definition from >> >> stm32f429 >> >> >> >> >>>>> soc >> >> >> >> >>>>> file >> >> >> >> >>>>> to board files. >> >> >> >> >>>>> >> >> >> >> >>>>> Signed-off-by: Alexandre TORGUE >> >> <alexandre.torgue-qxv4g6HH51o@public.gmane.org >> >> <mailto:alexandre.torgue-qxv4g6HH51o@public.gmane.org>> >> >> >> >> >> >> >>>>> >> >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>>> index 13c7cd2..a763c15 100644 >> >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>>> @@ -82,6 +82,10 @@ >> >> >> >> >>>>> }; >> >> >> >> >>>>> }; >> >> >> >> >>>>> >> >> >> >> >>>>> + soc { >> >> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 >> >> 0x10000000>; >> >> >> >> >>>>> + }; >> >> >> >> >>>>> + >> >> >> >> >>>>> usbotg_hs_phy: usbphy { >> >> >> >> >>>>> #phy-cells = <0>; >> >> >> >> >>>>> compatible = "usb-nop-xceiv"; >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> Shouldn't also the peripheral dma-ranges property move >> >> to >> >> board >> >> >> >> >>>> specific >> >> >> >> >>>> too? >> >> >> >> >>>> I had this patch for while but I didn't had the time to >> >> submit: >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd >> >> ysterday on >> >> >> >> >>> IIRC, >> >> >> >> >>> empty dma-ranges is not needed. Can you test on your side >> >> by >> >> >> >> >>> removing >> >> >> >> >>> dma-ranges in usb node please ? >> >> >> >> >> >> >> >> >> >> Unfortunately will take a time for me to set up this >> >> environment on >> >> >> >> >> the STM32F4-EVAL board. >> >> >> >> >> And on the discovery boards we dont have this scenario. >> >> That was the >> >> >> >> >> main reason I did not submit the patch right away. >> >> >> >> >> My conclusion and I might be wrong but is based on the my >> >> tests with >> >> >> >> >> SDIO device at STM32F469I-DISCO board. >> >> >> >> >> >> >> >> >> >> I started this issue as discussion at ST Forum but Maxime >> >> gave me >> >> >> >> >> the >> >> >> >> >> hint. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >> >> >> >> >> >> <https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44> >> >> >> >> >> >> >> >> >> >>> I will push a v2 by removing empty dma-ranges if tests >> >> are >> >> ok in >> >> >> >> >>> your >> >> >> >> >>> side. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> From my understating/conclusion is: when empty >> >> property(dma-ranges) >> >> >> >> >> is >> >> >> >> >> the device node, the mapping will be taken in >> >> consideration >> >> when >> >> >> >> >> using >> >> >> >> >> DMA otherwise the mapping is ignored. >> >> >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >> >> >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in >> >> question >> >> >> >> >> so >> >> >> >> >> I suppose it can work without the property. >> >> >> >> > >> >> >> >> > >> >> >> >> > For sure translation has to be done but I'm not sure that >> >> an >> >> empty >> >> >> >> > "dma-ranges" is needed in device node to activate it. For >> >> Ethernet >> >> >> >> > empty >> >> >> >> > "dma-ranges" is not needed. I will try with usb. >> >> >> >> >> >> >> >> In the case of SDIO it is needed. As example this is my >> >> working SDIO >> >> >> >> node: >> >> >> >> >> >> >> >> sdio: sdio@40012c00 { >> >> >> >> compatible = "arm,pl18x", "arm,primecell"; >> >> >> >> arm,primecell-periphid = <0x00480181>; >> >> >> >> reg = <0x40012c00 0x400>; >> >> >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >> >> >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >> >> >> >> dma-names = "rx", "tx"; >> >> >> >> clocks = <&rcc 0 171>; >> >> >> >> clock-names = "apb_pclk"; >> >> >> >> interrupts = <49>; >> >> >> >> status = "disabled"; >> >> >> >> }; >> >> >> >> >> >> >> >> &sdio { >> >> >> >> status = "okay"; >> >> >> >> vmmc-supply = <&wlan_en>; >> >> >> >> bus-width = <4>; >> >> >> >> max-frequency = <24000000>; >> >> >> >> pinctrl-names = "default"; >> >> >> >> pinctrl-0 = <&sdio_pins>; >> >> >> >> ti,non-removable; >> >> >> >> ti,needs-special-hs-handling; >> >> >> >> dma-ranges; >> >> >> >> cap-power-off-card; >> >> >> >> keep-power-in-suspend; >> >> >> >> >> >> >> >> #address-cells = <1>; >> >> >> >> #size-cells = <0>; >> >> >> >> wlcore: wlcore@0 { >> >> >> >> compatible = "ti,wl1835"; >> >> >> >> reg = <2>; >> >> >> >> interrupt-parent = <&gpioa>; >> >> >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >> >> >> >> }; >> >> >> >> }; >> >> >> >> >> >> >> >> > >> >> >> >> > alex >> >> >> >> > >> >> >> >> > >> >> >> >> >> >> >> >> >> >>> >> >> >> >> >>> Thanks in advance >> >> >> >> >>> Alex >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> >>>> >> >> >> >> >>>> Author: Bruno Herrera <bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org >> >> <mailto:bruherrera-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> >> >> >> >> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >> >> >> >> >>>> >> >> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board >> >> not >> >> at dtsi >> >> >> >> >>>> file >> >> >> >> >>>> >> >> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>> index 6bfc595..2a22a82 100644 >> >> >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>> @@ -52,6 +52,10 @@ >> >> >> >> >>>> model = "STMicroelectronics STM32429i-EVAL >> >> board"; >> >> >> >> >>>> compatible = "st,stm32429i-eval", >> >> "st,stm32f429"; >> >> >> >> >>>> >> >> >> >> >>>> + soc { >> >> >> >> >>>> + dma-ranges = <0xC0000000 0x0 >> >> 0x10000000>; >> >> >> >> >>>> + }; >> >> >> >> >>>> + >> >> >> >> >>>> chosen { >> >> >> >> >>>> bootargs = "root=/dev/ram >> >> rdinit=/linuxrc"; >> >> >> >> >>>> stdout-path = "serial0:115200n8"; >> >> >> >> >>>> @@ -96,6 +100,7 @@ >> >> >> >> >>>> >> >> >> >> >>>> ðernet0 { >> >> >> >> >>>> status = "okay"; >> >> >> >> >>>> + dma-ranges; >> >> >> >> >>>> pinctrl-0 = <ðernet0_mii>; >> >> >> >> >>>> pinctrl-names = "default"; >> >> >> >> >>>> phy-mode = "mii-id"; >> >> >> >> >>>> @@ -116,6 +121,7 @@ >> >> >> >> >>>> }; >> >> >> >> >>>> >> >> >> >> >>>> &usbotg_hs { >> >> >> >> >>>> + dma-ranges; >> >> >> >> >>>> dr_mode = "host"; >> >> >> >> >>>> phys = <&usbotg_hs_phy>; >> >> >> >> >>>> phy-names = "usb2-phy"; >> >> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>> index 7d624a2..697a133 100644 >> >> >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>> @@ -59,7 +59,6 @@ >> >> >> >> >>>> }; >> >> >> >> >>>> >> >> >> >> >>>> soc { >> >> >> >> >>>> - dma-ranges = <0xc0000000 0x0 >> >> 0x10000000>; >> >> >> >> >>>> >> >> >> >> >>>> timer2: timer@40000000 { >> >> >> >> >>>> compatible = "st,stm32-timer"; >> >> >> >> >>>> @@ -472,13 +471,11 @@ >> >> >> >> >>>> st,syscon = <&syscfg 0x4>; >> >> >> >> >>>> snps,pbl = <8>; >> >> >> >> >>>> snps,mixed-burst; >> >> >> >> >>>> - dma-ranges; >> >> >> >> >>>> status = "disabled"; >> >> >> >> >>>> }; >> >> >> >> >>>> >> >> >> >> >>>> usbotg_hs: usb@40040000 { >> >> >> >> >>>> compatible = "snps,dwc2"; >> >> >> >> >>>> - dma-ranges; >> >> >> >> >>>> reg = <0x40040000 0x40000>; >> >> >> >> >>>> interrupts = <77>; >> >> >> >> >>>> clocks = <&rcc 0 29>; >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>>> index 0596d60..3a1cfdd 100644 >> >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>>> @@ -59,8 +59,6 @@ >> >> >> >> >>>>> }; >> >> >> >> >>>>> >> >> >> >> >>>>> soc { >> >> >> >> >>>>> - dma-ranges = <0xc0000000 0x0 >> >> 0x10000000>; >> >> >> >> >>>>> - >> >> >> >> >>>>> timer2: timer@40000000 { >> >> >> >> >>>>> compatible = "st,stm32-timer"; >> >> >> >> >>>>> reg = <0x40000000 0x400>; >> >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >> >>>>> index 9e73656..c2213c0 100644 >> >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >> >>>>> @@ -64,6 +64,10 @@ >> >> >> >> >>>>> aliases { >> >> >> >> >>>>> serial0 = &usart3; >> >> >> >> >>>>> }; >> >> >> >> >>>>> + >> >> >> >> >>>>> + soc { >> >> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 >> >> 0x10000000>; >> >> >> >> >>>>> + }; >> >> >> >> >>>>> }; >> >> >> >> >>>>> >> >> >> >> >>>>> &clk_hse { >> >> >> >> >>>>> -- >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> Br., >> >> >> >> >>>> Bruno >> >> >> >> >>>> >> >> >> >> >>> >> >> >> >> > >> >> >> >> >> >> >> >> _______________________________________________ >> >> >> >> linux-arm-kernel mailing list >> >> >> >> linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org >> >> <mailto:linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org> >> >> >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >> >> <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> >> >> >> > >> >> >> > >> >> > >> >> > >> >> >> >> >> > > > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-11-02 18:23 ` Bruno Herrera 0 siblings, 0 replies; 32+ messages in thread From: Bruno Herrera @ 2016-11-02 18:23 UTC (permalink / raw) To: linux-arm-kernel On Wed, Nov 2, 2016 at 4:05 PM, Rados?aw Pietrzyk <radoslaw.pietrzyk@gmail.com> wrote: > Have you tried with > > sdio { > ... > compatible = "arm,primecell"; > arm,primecell-periphid = <id_to_define>; > ... > } > > This should register proper amba device and give it an ID you wish. I'm using this: sdio: sdio at 40012c00 { compatible = "arm,pl18x", "arm,primecell"; arm,primecell-periphid = <0x00480181>; reg = <0x40012c00 0x400>; dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ dma-names = "rx", "tx"; clocks = <&rcc 0 171>; clock-names = "apb_pclk"; interrupts = <49>; status = "disabled"; }; And on the driver side I added this: /* STM32 variants */ { .id = 0x00480181, .mask = 0xf0ffffff, .data = &variant_stm32f4x9, }, My .id field is the .id from variant_ux500 plus one (and what I believe is not valid). And I cannot read the ID from STM32 IP because it always return zero. Maybe someone from ST(@Alex) can get the real ID. ;) > > 2016-11-02 17:07 GMT+01:00 Bruno Herrera <bruherrera@gmail.com>: >> >> Hi >> >> On Wed, Nov 2, 2016 at 12:32 PM, Alexandre Torgue >> <alexandre.torgue@st.com> wrote: >> > Hi >> > >> > On 10/31/2016 07:58 PM, Rados?aw Pietrzyk wrote: >> >> >> >> I think wlcore driver searches dma-ranges in its parent that's why sdio >> >> node needs it. >> > >> > >> > Yes I agree. In this case it is needed as you have subnode in sdio node. >> > So IMO empty dma-ranges could be removed from ethernet and usb node, but >> > kept in future sdio subnode. >> >> Now it is clear. >> >> > >> > Bruno, >> > Do you plan to push sdio support ? >> >> Yes I do, but I'm not sure how long it will take. The I had to >> change(and hack) the mmci code because I could not get the ID from >> STM32 SDIO IP. >> My current WIP is at @ >> >> https://github.com/mcoquelin-stm32/afboot-stm32/pull/4#issuecomment-247571615 >> I know Andrea Merello is also working on that (and he probably has a >> more complete patch). >> >> > >> > >> > >> >> >> >> 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera@gmail.com >> >> <mailto:bruherrera@gmail.com>>: >> >> >> >> On Mon, Oct 31, 2016 at 12:14 PM, Rados?aw Pietrzyk >> >> <radoslaw.pietrzyk at gmail.com <mailto:radoslaw.pietrzyk@gmail.com>> >> >> wrote: >> >> > This is weird because dma ddresses are recalculated using >> >> parent's >> >> > dma-ranges property and soc already has it so there should be >> >> absolutely no >> >> > problem. >> >> >> >> These are my DTS and DTSI file. >> >> > >> >> > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera@gmail.com >> >> <mailto:bruherrera@gmail.com>>: >> >> >> >> >> >> On Fri, Oct 28, 2016 at 5:09 AM, Rados?aw Pietrzyk >> >> >> <radoslaw.pietrzyk@gmail.com >> >> <mailto:radoslaw.pietrzyk@gmail.com>> wrote: >> >> >> > Have you defined your sdio node within soc node ? >> >> >> >> >> >> It is in the SOC node of the DSTI file. >> >> >> >> >> >> > >> >> >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com >> >> <mailto:bruherrera@gmail.com>>: >> >> >> >> >> >> >> >> Hi Alex, >> >> >> >> >> >> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >> >> >> >> <alexandre.torgue at st.com <mailto:alexandre.torgue@st.com>> >> >> wrote: >> >> >> >> > Hi Bruno, >> >> >> >> > >> >> >> >> > >> >> >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >> >> >> >> >> >> >> >> >> >> Hi Alex, >> >> >> >> >> >> >> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >> >> >> >> >> <alexandre.torgue at st.com <mailto:alexandre.torgue@st.com>> >> >> wrote: >> >> >> >> >>> >> >> >> >> >>> Hi Bruno, >> >> >> >> >>> >> >> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> Hi Alexandre, >> >> >> >> >>>> >> >> >> >> >>>>> >> >> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM >> >> start address >> >> >> >> >>>>> remapping >> >> >> >> >>>>> (to @0) to boost performances. A DMA translation >> >> through >> >> >> >> >>>>> "dma-ranges" >> >> >> >> >>>>> property was needed for other masters than the M4 CPU. >> >> >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need >> >> this DMA >> >> >> >> >>>>> translation. >> >> >> >> >>>>> This patches moves this DMA translation definition from >> >> stm32f429 >> >> >> >> >>>>> soc >> >> >> >> >>>>> file >> >> >> >> >>>>> to board files. >> >> >> >> >>>>> >> >> >> >> >>>>> Signed-off-by: Alexandre TORGUE >> >> <alexandre.torgue@st.com >> >> <mailto:alexandre.torgue@st.com>> >> >> >> >> >> >> >>>>> >> >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>>> index 13c7cd2..a763c15 100644 >> >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>>> @@ -82,6 +82,10 @@ >> >> >> >> >>>>> }; >> >> >> >> >>>>> }; >> >> >> >> >>>>> >> >> >> >> >>>>> + soc { >> >> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 >> >> 0x10000000>; >> >> >> >> >>>>> + }; >> >> >> >> >>>>> + >> >> >> >> >>>>> usbotg_hs_phy: usbphy { >> >> >> >> >>>>> #phy-cells = <0>; >> >> >> >> >>>>> compatible = "usb-nop-xceiv"; >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> Shouldn't also the peripheral dma-ranges property move >> >> to >> >> board >> >> >> >> >>>> specific >> >> >> >> >>>> too? >> >> >> >> >>>> I had this patch for while but I didn't had the time to >> >> submit: >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd >> >> ysterday on >> >> >> >> >>> IIRC, >> >> >> >> >>> empty dma-ranges is not needed. Can you test on your side >> >> by >> >> >> >> >>> removing >> >> >> >> >>> dma-ranges in usb node please ? >> >> >> >> >> >> >> >> >> >> Unfortunately will take a time for me to set up this >> >> environment on >> >> >> >> >> the STM32F4-EVAL board. >> >> >> >> >> And on the discovery boards we dont have this scenario. >> >> That was the >> >> >> >> >> main reason I did not submit the patch right away. >> >> >> >> >> My conclusion and I might be wrong but is based on the my >> >> tests with >> >> >> >> >> SDIO device at STM32F469I-DISCO board. >> >> >> >> >> >> >> >> >> >> I started this issue as discussion at ST Forum but Maxime >> >> gave me >> >> >> >> >> the >> >> >> >> >> hint. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >> >> >> >> >> >> <https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44> >> >> >> >> >> >> >> >> >> >>> I will push a v2 by removing empty dma-ranges if tests >> >> are >> >> ok in >> >> >> >> >>> your >> >> >> >> >>> side. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> From my understating/conclusion is: when empty >> >> property(dma-ranges) >> >> >> >> >> is >> >> >> >> >> the device node, the mapping will be taken in >> >> consideration >> >> when >> >> >> >> >> using >> >> >> >> >> DMA otherwise the mapping is ignored. >> >> >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >> >> >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in >> >> question >> >> >> >> >> so >> >> >> >> >> I suppose it can work without the property. >> >> >> >> > >> >> >> >> > >> >> >> >> > For sure translation has to be done but I'm not sure that >> >> an >> >> empty >> >> >> >> > "dma-ranges" is needed in device node to activate it. For >> >> Ethernet >> >> >> >> > empty >> >> >> >> > "dma-ranges" is not needed. I will try with usb. >> >> >> >> >> >> >> >> In the case of SDIO it is needed. As example this is my >> >> working SDIO >> >> >> >> node: >> >> >> >> >> >> >> >> sdio: sdio at 40012c00 { >> >> >> >> compatible = "arm,pl18x", "arm,primecell"; >> >> >> >> arm,primecell-periphid = <0x00480181>; >> >> >> >> reg = <0x40012c00 0x400>; >> >> >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >> >> >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >> >> >> >> dma-names = "rx", "tx"; >> >> >> >> clocks = <&rcc 0 171>; >> >> >> >> clock-names = "apb_pclk"; >> >> >> >> interrupts = <49>; >> >> >> >> status = "disabled"; >> >> >> >> }; >> >> >> >> >> >> >> >> &sdio { >> >> >> >> status = "okay"; >> >> >> >> vmmc-supply = <&wlan_en>; >> >> >> >> bus-width = <4>; >> >> >> >> max-frequency = <24000000>; >> >> >> >> pinctrl-names = "default"; >> >> >> >> pinctrl-0 = <&sdio_pins>; >> >> >> >> ti,non-removable; >> >> >> >> ti,needs-special-hs-handling; >> >> >> >> dma-ranges; >> >> >> >> cap-power-off-card; >> >> >> >> keep-power-in-suspend; >> >> >> >> >> >> >> >> #address-cells = <1>; >> >> >> >> #size-cells = <0>; >> >> >> >> wlcore: wlcore at 0 { >> >> >> >> compatible = "ti,wl1835"; >> >> >> >> reg = <2>; >> >> >> >> interrupt-parent = <&gpioa>; >> >> >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >> >> >> >> }; >> >> >> >> }; >> >> >> >> >> >> >> >> > >> >> >> >> > alex >> >> >> >> > >> >> >> >> > >> >> >> >> >> >> >> >> >> >>> >> >> >> >> >>> Thanks in advance >> >> >> >> >>> Alex >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> >>>> >> >> >> >> >>>> Author: Bruno Herrera <bruherrera@gmail.com >> >> <mailto:bruherrera@gmail.com>> >> >> >> >> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >> >> >> >> >>>> >> >> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board >> >> not >> >> at dtsi >> >> >> >> >>>> file >> >> >> >> >>>> >> >> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>> index 6bfc595..2a22a82 100644 >> >> >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >> >> >> >> >>>> @@ -52,6 +52,10 @@ >> >> >> >> >>>> model = "STMicroelectronics STM32429i-EVAL >> >> board"; >> >> >> >> >>>> compatible = "st,stm32429i-eval", >> >> "st,stm32f429"; >> >> >> >> >>>> >> >> >> >> >>>> + soc { >> >> >> >> >>>> + dma-ranges = <0xC0000000 0x0 >> >> 0x10000000>; >> >> >> >> >>>> + }; >> >> >> >> >>>> + >> >> >> >> >>>> chosen { >> >> >> >> >>>> bootargs = "root=/dev/ram >> >> rdinit=/linuxrc"; >> >> >> >> >>>> stdout-path = "serial0:115200n8"; >> >> >> >> >>>> @@ -96,6 +100,7 @@ >> >> >> >> >>>> >> >> >> >> >>>> ðernet0 { >> >> >> >> >>>> status = "okay"; >> >> >> >> >>>> + dma-ranges; >> >> >> >> >>>> pinctrl-0 = <ðernet0_mii>; >> >> >> >> >>>> pinctrl-names = "default"; >> >> >> >> >>>> phy-mode = "mii-id"; >> >> >> >> >>>> @@ -116,6 +121,7 @@ >> >> >> >> >>>> }; >> >> >> >> >>>> >> >> >> >> >>>> &usbotg_hs { >> >> >> >> >>>> + dma-ranges; >> >> >> >> >>>> dr_mode = "host"; >> >> >> >> >>>> phys = <&usbotg_hs_phy>; >> >> >> >> >>>> phy-names = "usb2-phy"; >> >> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>> index 7d624a2..697a133 100644 >> >> >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>> @@ -59,7 +59,6 @@ >> >> >> >> >>>> }; >> >> >> >> >>>> >> >> >> >> >>>> soc { >> >> >> >> >>>> - dma-ranges = <0xc0000000 0x0 >> >> 0x10000000>; >> >> >> >> >>>> >> >> >> >> >>>> timer2: timer at 40000000 { >> >> >> >> >>>> compatible = "st,stm32-timer"; >> >> >> >> >>>> @@ -472,13 +471,11 @@ >> >> >> >> >>>> st,syscon = <&syscfg 0x4>; >> >> >> >> >>>> snps,pbl = <8>; >> >> >> >> >>>> snps,mixed-burst; >> >> >> >> >>>> - dma-ranges; >> >> >> >> >>>> status = "disabled"; >> >> >> >> >>>> }; >> >> >> >> >>>> >> >> >> >> >>>> usbotg_hs: usb at 40040000 { >> >> >> >> >>>> compatible = "snps,dwc2"; >> >> >> >> >>>> - dma-ranges; >> >> >> >> >>>> reg = <0x40040000 0x40000>; >> >> >> >> >>>> interrupts = <77>; >> >> >> >> >>>> clocks = <&rcc 0 29>; >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>>> index 0596d60..3a1cfdd 100644 >> >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >> >> >> >> >>>>> @@ -59,8 +59,6 @@ >> >> >> >> >>>>> }; >> >> >> >> >>>>> >> >> >> >> >>>>> soc { >> >> >> >> >>>>> - dma-ranges = <0xc0000000 0x0 >> >> 0x10000000>; >> >> >> >> >>>>> - >> >> >> >> >>>>> timer2: timer at 40000000 { >> >> >> >> >>>>> compatible = "st,stm32-timer"; >> >> >> >> >>>>> reg = <0x40000000 0x400>; >> >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >> >>>>> index 9e73656..c2213c0 100644 >> >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >> >> >> >> >>>>> @@ -64,6 +64,10 @@ >> >> >> >> >>>>> aliases { >> >> >> >> >>>>> serial0 = &usart3; >> >> >> >> >>>>> }; >> >> >> >> >>>>> + >> >> >> >> >>>>> + soc { >> >> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 >> >> 0x10000000>; >> >> >> >> >>>>> + }; >> >> >> >> >>>>> }; >> >> >> >> >>>>> >> >> >> >> >>>>> &clk_hse { >> >> >> >> >>>>> -- >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> Br., >> >> >> >> >>>> Bruno >> >> >> >> >>>> >> >> >> >> >>> >> >> >> >> > >> >> >> >> >> >> >> >> _______________________________________________ >> >> >> >> linux-arm-kernel mailing list >> >> >> >> linux-arm-kernel at lists.infradead.org >> >> <mailto:linux-arm-kernel@lists.infradead.org> >> >> >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >> >> <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> >> >> >> > >> >> >> > >> >> > >> >> > >> >> >> >> >> > > > ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-11-02 18:23 ` Bruno Herrera (?) @ 2016-11-03 7:43 ` Radosław Pietrzyk -1 siblings, 0 replies; 32+ messages in thread From: Radosław Pietrzyk @ 2016-11-03 7:43 UTC (permalink / raw) To: Bruno Herrera Cc: Alexandre Torgue, mark.rutland, devicetree, Arnd Bergmann, linux, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel, andrea.merello [-- Attachment #1: Type: text/plain, Size: 17755 bytes --] Ok now I get it. Than definitelly STM is the right target unless it really needs a special variant. 2016-11-02 19:23 GMT+01:00 Bruno Herrera <bruherrera@gmail.com>: > On Wed, Nov 2, 2016 at 4:05 PM, Radosław Pietrzyk > <radoslaw.pietrzyk@gmail.com> wrote: > > Have you tried with > > > > sdio { > > ... > > compatible = "arm,primecell"; > > arm,primecell-periphid = <id_to_define>; > > ... > > } > > > > This should register proper amba device and give it an ID you wish. > > I'm using this: > > sdio: sdio@40012c00 { > compatible = "arm,pl18x", "arm,primecell"; > arm,primecell-periphid = <0x00480181>; > reg = <0x40012c00 0x400>; > dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ > <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ > dma-names = "rx", "tx"; > clocks = <&rcc 0 171>; > clock-names = "apb_pclk"; > interrupts = <49>; > status = "disabled"; > }; > > And on the driver side I added this: > > /* STM32 variants */ > > { > > .id = 0x00480181, > > .mask = 0xf0ffffff, > > .data = &variant_stm32f4x9, > > }, > > My .id field is the .id from variant_ux500 plus one (and what I > believe is not valid). > And I cannot read the ID from STM32 IP because it always return zero. > Maybe someone from ST(@Alex) can get the real ID. ;) > > > > > > 2016-11-02 17:07 GMT+01:00 Bruno Herrera <bruherrera@gmail.com>: > >> > >> Hi > >> > >> On Wed, Nov 2, 2016 at 12:32 PM, Alexandre Torgue > >> <alexandre.torgue@st.com> wrote: > >> > Hi > >> > > >> > On 10/31/2016 07:58 PM, Radosław Pietrzyk wrote: > >> >> > >> >> I think wlcore driver searches dma-ranges in its parent that's why > sdio > >> >> node needs it. > >> > > >> > > >> > Yes I agree. In this case it is needed as you have subnode in sdio > node. > >> > So IMO empty dma-ranges could be removed from ethernet and usb node, > but > >> > kept in future sdio subnode. > >> > >> Now it is clear. > >> > >> > > >> > Bruno, > >> > Do you plan to push sdio support ? > >> > >> Yes I do, but I'm not sure how long it will take. The I had to > >> change(and hack) the mmci code because I could not get the ID from > >> STM32 SDIO IP. > >> My current WIP is at @ > >> > >> https://github.com/mcoquelin-stm32/afboot-stm32/pull/4# > issuecomment-247571615 > >> I know Andrea Merello is also working on that (and he probably has a > >> more complete patch). > >> > >> > > >> > > >> > > >> >> > >> >> 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera@gmail.com > >> >> <mailto:bruherrera@gmail.com>>: > >> >> > >> >> On Mon, Oct 31, 2016 at 12:14 PM, Radosław Pietrzyk > >> >> <radoslaw.pietrzyk@gmail.com <mailto:radoslaw.pietrzyk@gmail.com > >> > >> >> wrote: > >> >> > This is weird because dma ddresses are recalculated using > >> >> parent's > >> >> > dma-ranges property and soc already has it so there should be > >> >> absolutely no > >> >> > problem. > >> >> > >> >> These are my DTS and DTSI file. > >> >> > > >> >> > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera@gmail.com > >> >> <mailto:bruherrera@gmail.com>>: > >> >> >> > >> >> >> On Fri, Oct 28, 2016 at 5:09 AM, Radosław Pietrzyk > >> >> >> <radoslaw.pietrzyk@gmail.com > >> >> <mailto:radoslaw.pietrzyk@gmail.com>> wrote: > >> >> >> > Have you defined your sdio node within soc node ? > >> >> >> > >> >> >> It is in the SOC node of the DSTI file. > >> >> >> > >> >> >> > > >> >> >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera < > bruherrera@gmail.com > >> >> <mailto:bruherrera@gmail.com>>: > >> >> >> >> > >> >> >> >> Hi Alex, > >> >> >> >> > >> >> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue > >> >> >> >> <alexandre.torgue@st.com <mailto:alexandre.torgue@st.com>> > >> >> wrote: > >> >> >> >> > Hi Bruno, > >> >> >> >> > > >> >> >> >> > > >> >> >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: > >> >> >> >> >> > >> >> >> >> >> Hi Alex, > >> >> >> >> >> > >> >> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue > >> >> >> >> >> <alexandre.torgue@st.com <mailto:alexandre.torgue@st. > com>> > >> >> wrote: > >> >> >> >> >>> > >> >> >> >> >>> Hi Bruno, > >> >> >> >> >>> > >> >> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: > >> >> >> >> >>>> > >> >> >> >> >>>> > >> >> >> >> >>>> Hi Alexandre, > >> >> >> >> >>>> > >> >> >> >> >>>>> > >> >> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM > >> >> start address > >> >> >> >> >>>>> remapping > >> >> >> >> >>>>> (to @0) to boost performances. A DMA translation > >> >> through > >> >> >> >> >>>>> "dma-ranges" > >> >> >> >> >>>>> property was needed for other masters than the M4 > CPU. > >> >> >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need > >> >> this DMA > >> >> >> >> >>>>> translation. > >> >> >> >> >>>>> This patches moves this DMA translation definition > from > >> >> stm32f429 > >> >> >> >> >>>>> soc > >> >> >> >> >>>>> file > >> >> >> >> >>>>> to board files. > >> >> >> >> >>>>> > >> >> >> >> >>>>> Signed-off-by: Alexandre TORGUE > >> >> <alexandre.torgue@st.com > >> >> <mailto:alexandre.torgue@st.com>> > >> >> > >> >> >> >> >>>>> > >> >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >> >>>>> index 13c7cd2..a763c15 100644 > >> >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >> >>>>> @@ -82,6 +82,10 @@ > >> >> >> >> >>>>> }; > >> >> >> >> >>>>> }; > >> >> >> >> >>>>> > >> >> >> >> >>>>> + soc { > >> >> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 > >> >> 0x10000000>; > >> >> >> >> >>>>> + }; > >> >> >> >> >>>>> + > >> >> >> >> >>>>> usbotg_hs_phy: usbphy { > >> >> >> >> >>>>> #phy-cells = <0>; > >> >> >> >> >>>>> compatible = "usb-nop-xceiv"; > >> >> >> >> >>>> > >> >> >> >> >>>> > >> >> >> >> >>>> > >> >> >> >> >>>> Shouldn't also the peripheral dma-ranges property move > >> >> to > >> >> board > >> >> >> >> >>>> specific > >> >> >> >> >>>> too? > >> >> >> >> >>>> I had this patch for while but I didn't had the time > to > >> >> submit: > >> >> >> >> >>> > >> >> >> >> >>> > >> >> >> >> >>> > >> >> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd > >> >> ysterday on > >> >> >> >> >>> IIRC, > >> >> >> >> >>> empty dma-ranges is not needed. Can you test on your > side > >> >> by > >> >> >> >> >>> removing > >> >> >> >> >>> dma-ranges in usb node please ? > >> >> >> >> >> > >> >> >> >> >> Unfortunately will take a time for me to set up this > >> >> environment on > >> >> >> >> >> the STM32F4-EVAL board. > >> >> >> >> >> And on the discovery boards we dont have this scenario. > >> >> That was the > >> >> >> >> >> main reason I did not submit the patch right away. > >> >> >> >> >> My conclusion and I might be wrong but is based on the > my > >> >> tests with > >> >> >> >> >> SDIO device at STM32F469I-DISCO board. > >> >> >> >> >> > >> >> >> >> >> I started this issue as discussion at ST Forum but > Maxime > >> >> gave me > >> >> >> >> >> the > >> >> >> >> >> hint. > >> >> >> >> >> > >> >> >> >> >> > >> >> >> >> >> > >> >> >> >> >> > >> >> >> >> >> > >> >> > >> >> > >> >> https://my.st.com/public/STe2ecommunities/mcu/Lists/ > cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic% > 2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32% > 2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID= > 0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46 > A77F0FFD06506F5B¤tviews=44 > >> >> > >> >> > >> >> <https://my.st.com/public/STe2ecommunities/mcu/Lists/ > cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic% > 2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32% > 2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID= > 0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46 > A77F0FFD06506F5B¤tviews=44> > >> >> >> >> >> > >> >> >> >> >>> I will push a v2 by removing empty dma-ranges if tests > >> >> are > >> >> ok in > >> >> >> >> >>> your > >> >> >> >> >>> side. > >> >> >> >> >> > >> >> >> >> >> > >> >> >> >> >> From my understating/conclusion is: when empty > >> >> property(dma-ranges) > >> >> >> >> >> is > >> >> >> >> >> the device node, the mapping will be taken in > >> >> consideration > >> >> when > >> >> >> >> >> using > >> >> >> >> >> DMA otherwise the mapping is ignored. > >> >> >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) > and > >> >> >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices > in > >> >> question > >> >> >> >> >> so > >> >> >> >> >> I suppose it can work without the property. > >> >> >> >> > > >> >> >> >> > > >> >> >> >> > For sure translation has to be done but I'm not sure that > >> >> an > >> >> empty > >> >> >> >> > "dma-ranges" is needed in device node to activate it. For > >> >> Ethernet > >> >> >> >> > empty > >> >> >> >> > "dma-ranges" is not needed. I will try with usb. > >> >> >> >> > >> >> >> >> In the case of SDIO it is needed. As example this is my > >> >> working SDIO > >> >> >> >> node: > >> >> >> >> > >> >> >> >> sdio: sdio@40012c00 { > >> >> >> >> compatible = "arm,pl18x", "arm,primecell"; > >> >> >> >> arm,primecell-periphid = <0x00480181>; > >> >> >> >> reg = <0x40012c00 0x400>; > >> >> >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ > >> >> >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ > >> >> >> >> dma-names = "rx", "tx"; > >> >> >> >> clocks = <&rcc 0 171>; > >> >> >> >> clock-names = "apb_pclk"; > >> >> >> >> interrupts = <49>; > >> >> >> >> status = "disabled"; > >> >> >> >> }; > >> >> >> >> > >> >> >> >> &sdio { > >> >> >> >> status = "okay"; > >> >> >> >> vmmc-supply = <&wlan_en>; > >> >> >> >> bus-width = <4>; > >> >> >> >> max-frequency = <24000000>; > >> >> >> >> pinctrl-names = "default"; > >> >> >> >> pinctrl-0 = <&sdio_pins>; > >> >> >> >> ti,non-removable; > >> >> >> >> ti,needs-special-hs-handling; > >> >> >> >> dma-ranges; > >> >> >> >> cap-power-off-card; > >> >> >> >> keep-power-in-suspend; > >> >> >> >> > >> >> >> >> #address-cells = <1>; > >> >> >> >> #size-cells = <0>; > >> >> >> >> wlcore: wlcore@0 { > >> >> >> >> compatible = "ti,wl1835"; > >> >> >> >> reg = <2>; > >> >> >> >> interrupt-parent = <&gpioa>; > >> >> >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; > >> >> >> >> }; > >> >> >> >> }; > >> >> >> >> > >> >> >> >> > > >> >> >> >> > alex > >> >> >> >> > > >> >> >> >> > > >> >> >> >> >> > >> >> >> >> >>> > >> >> >> >> >>> Thanks in advance > >> >> >> >> >>> Alex > >> >> >> >> >>> > >> >> >> >> >>> > >> >> >> >> >>>> > >> >> >> >> >>>> Author: Bruno Herrera <bruherrera@gmail.com > >> >> <mailto:bruherrera@gmail.com>> > >> >> > >> >> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 > >> >> >> >> >>>> > >> >> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board > >> >> not > >> >> at dtsi > >> >> >> >> >>>> file > >> >> >> >> >>>> > >> >> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >> >>>> index 6bfc595..2a22a82 100644 > >> >> >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts > >> >> >> >> >>>> @@ -52,6 +52,10 @@ > >> >> >> >> >>>> model = "STMicroelectronics STM32429i-EVAL > >> >> board"; > >> >> >> >> >>>> compatible = "st,stm32429i-eval", > >> >> "st,stm32f429"; > >> >> >> >> >>>> > >> >> >> >> >>>> + soc { > >> >> >> >> >>>> + dma-ranges = <0xC0000000 0x0 > >> >> 0x10000000>; > >> >> >> >> >>>> + }; > >> >> >> >> >>>> + > >> >> >> >> >>>> chosen { > >> >> >> >> >>>> bootargs = "root=/dev/ram > >> >> rdinit=/linuxrc"; > >> >> >> >> >>>> stdout-path = "serial0:115200n8"; > >> >> >> >> >>>> @@ -96,6 +100,7 @@ > >> >> >> >> >>>> > >> >> >> >> >>>> ðernet0 { > >> >> >> >> >>>> status = "okay"; > >> >> >> >> >>>> + dma-ranges; > >> >> >> >> >>>> pinctrl-0 = <ðernet0_mii>; > >> >> >> >> >>>> pinctrl-names = "default"; > >> >> >> >> >>>> phy-mode = "mii-id"; > >> >> >> >> >>>> @@ -116,6 +121,7 @@ > >> >> >> >> >>>> }; > >> >> >> >> >>>> > >> >> >> >> >>>> &usbotg_hs { > >> >> >> >> >>>> + dma-ranges; > >> >> >> >> >>>> dr_mode = "host"; > >> >> >> >> >>>> phys = <&usbotg_hs_phy>; > >> >> >> >> >>>> phy-names = "usb2-phy"; > >> >> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >> >>>> index 7d624a2..697a133 100644 > >> >> >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >> >>>> @@ -59,7 +59,6 @@ > >> >> >> >> >>>> }; > >> >> >> >> >>>> > >> >> >> >> >>>> soc { > >> >> >> >> >>>> - dma-ranges = <0xc0000000 0x0 > >> >> 0x10000000>; > >> >> >> >> >>>> > >> >> >> >> >>>> timer2: timer@40000000 { > >> >> >> >> >>>> compatible = "st,stm32-timer"; > >> >> >> >> >>>> @@ -472,13 +471,11 @@ > >> >> >> >> >>>> st,syscon = <&syscfg 0x4>; > >> >> >> >> >>>> snps,pbl = <8>; > >> >> >> >> >>>> snps,mixed-burst; > >> >> >> >> >>>> - dma-ranges; > >> >> >> >> >>>> status = "disabled"; > >> >> >> >> >>>> }; > >> >> >> >> >>>> > >> >> >> >> >>>> usbotg_hs: usb@40040000 { > >> >> >> >> >>>> compatible = "snps,dwc2"; > >> >> >> >> >>>> - dma-ranges; > >> >> >> >> >>>> reg = <0x40040000 0x40000>; > >> >> >> >> >>>> interrupts = <77>; > >> >> >> >> >>>> clocks = <&rcc 0 29>; > >> >> >> >> >>>> > >> >> >> >> >>>> > >> >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >> >>>>> index 0596d60..3a1cfdd 100644 > >> >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi > >> >> >> >> >>>>> @@ -59,8 +59,6 @@ > >> >> >> >> >>>>> }; > >> >> >> >> >>>>> > >> >> >> >> >>>>> soc { > >> >> >> >> >>>>> - dma-ranges = <0xc0000000 0x0 > >> >> 0x10000000>; > >> >> >> >> >>>>> - > >> >> >> >> >>>>> timer2: timer@40000000 { > >> >> >> >> >>>>> compatible = > "st,stm32-timer"; > >> >> >> >> >>>>> reg = <0x40000000 0x400>; > >> >> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >> >> >>>>> index 9e73656..c2213c0 100644 > >> >> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts > >> >> >> >> >>>>> @@ -64,6 +64,10 @@ > >> >> >> >> >>>>> aliases { > >> >> >> >> >>>>> serial0 = &usart3; > >> >> >> >> >>>>> }; > >> >> >> >> >>>>> + > >> >> >> >> >>>>> + soc { > >> >> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 > >> >> 0x10000000>; > >> >> >> >> >>>>> + }; > >> >> >> >> >>>>> }; > >> >> >> >> >>>>> > >> >> >> >> >>>>> &clk_hse { > >> >> >> >> >>>>> -- > >> >> >> >> >>>> > >> >> >> >> >>>> > >> >> >> >> >>>> > >> >> >> >> >>>> > >> >> >> >> >>>> Br., > >> >> >> >> >>>> Bruno > >> >> >> >> >>>> > >> >> >> >> >>> > >> >> >> >> > > >> >> >> >> > >> >> >> >> _______________________________________________ > >> >> >> >> linux-arm-kernel mailing list > >> >> >> >> linux-arm-kernel@lists.infradead.org > >> >> <mailto:linux-arm-kernel@lists.infradead.org> > >> >> >> >> http://lists.infradead.org/mailman/listinfo/linux-arm- > kernel > >> >> <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> > >> >> >> > > >> >> >> > > >> >> > > >> >> > > >> >> > >> >> > >> > > > > > > [-- Attachment #2: Type: text/html, Size: 33868 bytes --] ^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: [PATCH] ARM: DT: stm32: move dma translation to board files 2016-11-02 18:23 ` Bruno Herrera @ 2016-11-03 8:40 ` Alexandre Torgue -1 siblings, 0 replies; 32+ messages in thread From: Alexandre Torgue @ 2016-11-03 8:40 UTC (permalink / raw) To: Bruno Herrera, Radosław Pietrzyk Cc: mark.rutland, devicetree, Arnd Bergmann, andrea.merello, linux, >, >, Maxime Coquelin, Lee Jones, linux-arm-kernel Hi Bruno, On 11/02/2016 07:23 PM, Bruno Herrera wrote: > On Wed, Nov 2, 2016 at 4:05 PM, Radosław Pietrzyk > <radoslaw.pietrzyk@gmail.com> wrote: >> Have you tried with >> >> sdio { >> ... >> compatible = "arm,primecell"; >> arm,primecell-periphid = <id_to_define>; >> ... >> } >> >> This should register proper amba device and give it an ID you wish. > > I'm using this: > > sdio: sdio@40012c00 { > compatible = "arm,pl18x", "arm,primecell"; > arm,primecell-periphid = <0x00480181>; > reg = <0x40012c00 0x400>; > dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ > <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ > dma-names = "rx", "tx"; > clocks = <&rcc 0 171>; > clock-names = "apb_pclk"; > interrupts = <49>; > status = "disabled"; > }; > > And on the driver side I added this: > > /* STM32 variants */ > > { > > .id = 0x00480181, > > .mask = 0xf0ffffff, > > .data = &variant_stm32f4x9, > > }, > > My .id field is the .id from variant_ux500 plus one (and what I > believe is not valid). > And I cannot read the ID from STM32 IP because it always return zero. > Maybe someone from ST(@Alex) can get the real ID. ;) I will have a look on it soon. regards alex > > >> >> 2016-11-02 17:07 GMT+01:00 Bruno Herrera <bruherrera@gmail.com>: >>> >>> Hi >>> >>> On Wed, Nov 2, 2016 at 12:32 PM, Alexandre Torgue >>> <alexandre.torgue@st.com> wrote: >>>> Hi >>>> >>>> On 10/31/2016 07:58 PM, Radosław Pietrzyk wrote: >>>>> >>>>> I think wlcore driver searches dma-ranges in its parent that's why sdio >>>>> node needs it. >>>> >>>> >>>> Yes I agree. In this case it is needed as you have subnode in sdio node. >>>> So IMO empty dma-ranges could be removed from ethernet and usb node, but >>>> kept in future sdio subnode. >>> >>> Now it is clear. >>> >>>> >>>> Bruno, >>>> Do you plan to push sdio support ? >>> >>> Yes I do, but I'm not sure how long it will take. The I had to >>> change(and hack) the mmci code because I could not get the ID from >>> STM32 SDIO IP. >>> My current WIP is at @ >>> >>> https://github.com/mcoquelin-stm32/afboot-stm32/pull/4#issuecomment-247571615 >>> I know Andrea Merello is also working on that (and he probably has a >>> more complete patch). >>> >>>> >>>> >>>> >>>>> >>>>> 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera@gmail.com >>>>> <mailto:bruherrera@gmail.com>>: >>>>> >>>>> On Mon, Oct 31, 2016 at 12:14 PM, Radosław Pietrzyk >>>>> <radoslaw.pietrzyk@gmail.com <mailto:radoslaw.pietrzyk@gmail.com>> >>>>> wrote: >>>>> > This is weird because dma ddresses are recalculated using >>>>> parent's >>>>> > dma-ranges property and soc already has it so there should be >>>>> absolutely no >>>>> > problem. >>>>> >>>>> These are my DTS and DTSI file. >>>>> > >>>>> > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera@gmail.com >>>>> <mailto:bruherrera@gmail.com>>: >>>>> >> >>>>> >> On Fri, Oct 28, 2016 at 5:09 AM, Radosław Pietrzyk >>>>> >> <radoslaw.pietrzyk@gmail.com >>>>> <mailto:radoslaw.pietrzyk@gmail.com>> wrote: >>>>> >> > Have you defined your sdio node within soc node ? >>>>> >> >>>>> >> It is in the SOC node of the DSTI file. >>>>> >> >>>>> >> > >>>>> >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com >>>>> <mailto:bruherrera@gmail.com>>: >>>>> >> >> >>>>> >> >> Hi Alex, >>>>> >> >> >>>>> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >>>>> >> >> <alexandre.torgue@st.com <mailto:alexandre.torgue@st.com>> >>>>> wrote: >>>>> >> >> > Hi Bruno, >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >>>>> >> >> >> >>>>> >> >> >> Hi Alex, >>>>> >> >> >> >>>>> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >>>>> >> >> >> <alexandre.torgue@st.com <mailto:alexandre.torgue@st.com>> >>>>> wrote: >>>>> >> >> >>> >>>>> >> >> >>> Hi Bruno, >>>>> >> >> >>> >>>>> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> Hi Alexandre, >>>>> >> >> >>>> >>>>> >> >> >>>>> >>>>> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM >>>>> start address >>>>> >> >> >>>>> remapping >>>>> >> >> >>>>> (to @0) to boost performances. A DMA translation >>>>> through >>>>> >> >> >>>>> "dma-ranges" >>>>> >> >> >>>>> property was needed for other masters than the M4 CPU. >>>>> >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need >>>>> this DMA >>>>> >> >> >>>>> translation. >>>>> >> >> >>>>> This patches moves this DMA translation definition from >>>>> stm32f429 >>>>> >> >> >>>>> soc >>>>> >> >> >>>>> file >>>>> >> >> >>>>> to board files. >>>>> >> >> >>>>> >>>>> >> >> >>>>> Signed-off-by: Alexandre TORGUE >>>>> <alexandre.torgue@st.com >>>>> <mailto:alexandre.torgue@st.com>> >>>>> >>>>> >> >> >>>>> >>>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>>> index 13c7cd2..a763c15 100644 >>>>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>>> @@ -82,6 +82,10 @@ >>>>> >> >> >>>>> }; >>>>> >> >> >>>>> }; >>>>> >> >> >>>>> >>>>> >> >> >>>>> + soc { >>>>> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 >>>>> 0x10000000>; >>>>> >> >> >>>>> + }; >>>>> >> >> >>>>> + >>>>> >> >> >>>>> usbotg_hs_phy: usbphy { >>>>> >> >> >>>>> #phy-cells = <0>; >>>>> >> >> >>>>> compatible = "usb-nop-xceiv"; >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> Shouldn't also the peripheral dma-ranges property move >>>>> to >>>>> board >>>>> >> >> >>>> specific >>>>> >> >> >>>> too? >>>>> >> >> >>>> I had this patch for while but I didn't had the time to >>>>> submit: >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd >>>>> ysterday on >>>>> >> >> >>> IIRC, >>>>> >> >> >>> empty dma-ranges is not needed. Can you test on your side >>>>> by >>>>> >> >> >>> removing >>>>> >> >> >>> dma-ranges in usb node please ? >>>>> >> >> >> >>>>> >> >> >> Unfortunately will take a time for me to set up this >>>>> environment on >>>>> >> >> >> the STM32F4-EVAL board. >>>>> >> >> >> And on the discovery boards we dont have this scenario. >>>>> That was the >>>>> >> >> >> main reason I did not submit the patch right away. >>>>> >> >> >> My conclusion and I might be wrong but is based on the my >>>>> tests with >>>>> >> >> >> SDIO device at STM32F469I-DISCO board. >>>>> >> >> >> >>>>> >> >> >> I started this issue as discussion at ST Forum but Maxime >>>>> gave me >>>>> >> >> >> the >>>>> >> >> >> hint. >>>>> >> >> >> >>>>> >> >> >> >>>>> >> >> >> >>>>> >> >> >> >>>>> >> >> >> >>>>> >>>>> >>>>> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >>>>> >>>>> >>>>> <https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44> >>>>> >> >> >> >>>>> >> >> >>> I will push a v2 by removing empty dma-ranges if tests >>>>> are >>>>> ok in >>>>> >> >> >>> your >>>>> >> >> >>> side. >>>>> >> >> >> >>>>> >> >> >> >>>>> >> >> >> From my understating/conclusion is: when empty >>>>> property(dma-ranges) >>>>> >> >> >> is >>>>> >> >> >> the device node, the mapping will be taken in >>>>> consideration >>>>> when >>>>> >> >> >> using >>>>> >> >> >> DMA otherwise the mapping is ignored. >>>>> >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >>>>> >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in >>>>> question >>>>> >> >> >> so >>>>> >> >> >> I suppose it can work without the property. >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > For sure translation has to be done but I'm not sure that >>>>> an >>>>> empty >>>>> >> >> > "dma-ranges" is needed in device node to activate it. For >>>>> Ethernet >>>>> >> >> > empty >>>>> >> >> > "dma-ranges" is not needed. I will try with usb. >>>>> >> >> >>>>> >> >> In the case of SDIO it is needed. As example this is my >>>>> working SDIO >>>>> >> >> node: >>>>> >> >> >>>>> >> >> sdio: sdio@40012c00 { >>>>> >> >> compatible = "arm,pl18x", "arm,primecell"; >>>>> >> >> arm,primecell-periphid = <0x00480181>; >>>>> >> >> reg = <0x40012c00 0x400>; >>>>> >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >>>>> >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >>>>> >> >> dma-names = "rx", "tx"; >>>>> >> >> clocks = <&rcc 0 171>; >>>>> >> >> clock-names = "apb_pclk"; >>>>> >> >> interrupts = <49>; >>>>> >> >> status = "disabled"; >>>>> >> >> }; >>>>> >> >> >>>>> >> >> &sdio { >>>>> >> >> status = "okay"; >>>>> >> >> vmmc-supply = <&wlan_en>; >>>>> >> >> bus-width = <4>; >>>>> >> >> max-frequency = <24000000>; >>>>> >> >> pinctrl-names = "default"; >>>>> >> >> pinctrl-0 = <&sdio_pins>; >>>>> >> >> ti,non-removable; >>>>> >> >> ti,needs-special-hs-handling; >>>>> >> >> dma-ranges; >>>>> >> >> cap-power-off-card; >>>>> >> >> keep-power-in-suspend; >>>>> >> >> >>>>> >> >> #address-cells = <1>; >>>>> >> >> #size-cells = <0>; >>>>> >> >> wlcore: wlcore@0 { >>>>> >> >> compatible = "ti,wl1835"; >>>>> >> >> reg = <2>; >>>>> >> >> interrupt-parent = <&gpioa>; >>>>> >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >>>>> >> >> }; >>>>> >> >> }; >>>>> >> >> >>>>> >> >> > >>>>> >> >> > alex >>>>> >> >> > >>>>> >> >> > >>>>> >> >> >> >>>>> >> >> >>> >>>>> >> >> >>> Thanks in advance >>>>> >> >> >>> Alex >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>>> >>>>> >> >> >>>> Author: Bruno Herrera <bruherrera@gmail.com >>>>> <mailto:bruherrera@gmail.com>> >>>>> >>>>> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >>>>> >> >> >>>> >>>>> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board >>>>> not >>>>> at dtsi >>>>> >> >> >>>> file >>>>> >> >> >>>> >>>>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>> index 6bfc595..2a22a82 100644 >>>>> >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>> @@ -52,6 +52,10 @@ >>>>> >> >> >>>> model = "STMicroelectronics STM32429i-EVAL >>>>> board"; >>>>> >> >> >>>> compatible = "st,stm32429i-eval", >>>>> "st,stm32f429"; >>>>> >> >> >>>> >>>>> >> >> >>>> + soc { >>>>> >> >> >>>> + dma-ranges = <0xC0000000 0x0 >>>>> 0x10000000>; >>>>> >> >> >>>> + }; >>>>> >> >> >>>> + >>>>> >> >> >>>> chosen { >>>>> >> >> >>>> bootargs = "root=/dev/ram >>>>> rdinit=/linuxrc"; >>>>> >> >> >>>> stdout-path = "serial0:115200n8"; >>>>> >> >> >>>> @@ -96,6 +100,7 @@ >>>>> >> >> >>>> >>>>> >> >> >>>> ðernet0 { >>>>> >> >> >>>> status = "okay"; >>>>> >> >> >>>> + dma-ranges; >>>>> >> >> >>>> pinctrl-0 = <ðernet0_mii>; >>>>> >> >> >>>> pinctrl-names = "default"; >>>>> >> >> >>>> phy-mode = "mii-id"; >>>>> >> >> >>>> @@ -116,6 +121,7 @@ >>>>> >> >> >>>> }; >>>>> >> >> >>>> >>>>> >> >> >>>> &usbotg_hs { >>>>> >> >> >>>> + dma-ranges; >>>>> >> >> >>>> dr_mode = "host"; >>>>> >> >> >>>> phys = <&usbotg_hs_phy>; >>>>> >> >> >>>> phy-names = "usb2-phy"; >>>>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>> index 7d624a2..697a133 100644 >>>>> >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>> @@ -59,7 +59,6 @@ >>>>> >> >> >>>> }; >>>>> >> >> >>>> >>>>> >> >> >>>> soc { >>>>> >> >> >>>> - dma-ranges = <0xc0000000 0x0 >>>>> 0x10000000>; >>>>> >> >> >>>> >>>>> >> >> >>>> timer2: timer@40000000 { >>>>> >> >> >>>> compatible = "st,stm32-timer"; >>>>> >> >> >>>> @@ -472,13 +471,11 @@ >>>>> >> >> >>>> st,syscon = <&syscfg 0x4>; >>>>> >> >> >>>> snps,pbl = <8>; >>>>> >> >> >>>> snps,mixed-burst; >>>>> >> >> >>>> - dma-ranges; >>>>> >> >> >>>> status = "disabled"; >>>>> >> >> >>>> }; >>>>> >> >> >>>> >>>>> >> >> >>>> usbotg_hs: usb@40040000 { >>>>> >> >> >>>> compatible = "snps,dwc2"; >>>>> >> >> >>>> - dma-ranges; >>>>> >> >> >>>> reg = <0x40040000 0x40000>; >>>>> >> >> >>>> interrupts = <77>; >>>>> >> >> >>>> clocks = <&rcc 0 29>; >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>>> index 0596d60..3a1cfdd 100644 >>>>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>>> @@ -59,8 +59,6 @@ >>>>> >> >> >>>>> }; >>>>> >> >> >>>>> >>>>> >> >> >>>>> soc { >>>>> >> >> >>>>> - dma-ranges = <0xc0000000 0x0 >>>>> 0x10000000>; >>>>> >> >> >>>>> - >>>>> >> >> >>>>> timer2: timer@40000000 { >>>>> >> >> >>>>> compatible = "st,stm32-timer"; >>>>> >> >> >>>>> reg = <0x40000000 0x400>; >>>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >>>>> >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >>>>> >> >> >>>>> index 9e73656..c2213c0 100644 >>>>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >>>>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >>>>> >> >> >>>>> @@ -64,6 +64,10 @@ >>>>> >> >> >>>>> aliases { >>>>> >> >> >>>>> serial0 = &usart3; >>>>> >> >> >>>>> }; >>>>> >> >> >>>>> + >>>>> >> >> >>>>> + soc { >>>>> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 >>>>> 0x10000000>; >>>>> >> >> >>>>> + }; >>>>> >> >> >>>>> }; >>>>> >> >> >>>>> >>>>> >> >> >>>>> &clk_hse { >>>>> >> >> >>>>> -- >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> Br., >>>>> >> >> >>>> Bruno >>>>> >> >> >>>> >>>>> >> >> >>> >>>>> >> >> > >>>>> >> >> >>>>> >> >> _______________________________________________ >>>>> >> >> linux-arm-kernel mailing list >>>>> >> >> linux-arm-kernel@lists.infradead.org >>>>> <mailto:linux-arm-kernel@lists.infradead.org> >>>>> >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >>>>> <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> >>>>> >> > >>>>> >> > >>>>> > >>>>> > >>>>> >>>>> >>>> >> >> _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-11-03 8:40 ` Alexandre Torgue 0 siblings, 0 replies; 32+ messages in thread From: Alexandre Torgue @ 2016-11-03 8:40 UTC (permalink / raw) To: linux-arm-kernel Hi Bruno, On 11/02/2016 07:23 PM, Bruno Herrera wrote: > On Wed, Nov 2, 2016 at 4:05 PM, Rados?aw Pietrzyk > <radoslaw.pietrzyk@gmail.com> wrote: >> Have you tried with >> >> sdio { >> ... >> compatible = "arm,primecell"; >> arm,primecell-periphid = <id_to_define>; >> ... >> } >> >> This should register proper amba device and give it an ID you wish. > > I'm using this: > > sdio: sdio at 40012c00 { > compatible = "arm,pl18x", "arm,primecell"; > arm,primecell-periphid = <0x00480181>; > reg = <0x40012c00 0x400>; > dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ > <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ > dma-names = "rx", "tx"; > clocks = <&rcc 0 171>; > clock-names = "apb_pclk"; > interrupts = <49>; > status = "disabled"; > }; > > And on the driver side I added this: > > /* STM32 variants */ > > { > > .id = 0x00480181, > > .mask = 0xf0ffffff, > > .data = &variant_stm32f4x9, > > }, > > My .id field is the .id from variant_ux500 plus one (and what I > believe is not valid). > And I cannot read the ID from STM32 IP because it always return zero. > Maybe someone from ST(@Alex) can get the real ID. ;) I will have a look on it soon. regards alex > > >> >> 2016-11-02 17:07 GMT+01:00 Bruno Herrera <bruherrera@gmail.com>: >>> >>> Hi >>> >>> On Wed, Nov 2, 2016 at 12:32 PM, Alexandre Torgue >>> <alexandre.torgue@st.com> wrote: >>>> Hi >>>> >>>> On 10/31/2016 07:58 PM, Rados?aw Pietrzyk wrote: >>>>> >>>>> I think wlcore driver searches dma-ranges in its parent that's why sdio >>>>> node needs it. >>>> >>>> >>>> Yes I agree. In this case it is needed as you have subnode in sdio node. >>>> So IMO empty dma-ranges could be removed from ethernet and usb node, but >>>> kept in future sdio subnode. >>> >>> Now it is clear. >>> >>>> >>>> Bruno, >>>> Do you plan to push sdio support ? >>> >>> Yes I do, but I'm not sure how long it will take. The I had to >>> change(and hack) the mmci code because I could not get the ID from >>> STM32 SDIO IP. >>> My current WIP is at @ >>> >>> https://github.com/mcoquelin-stm32/afboot-stm32/pull/4#issuecomment-247571615 >>> I know Andrea Merello is also working on that (and he probably has a >>> more complete patch). >>> >>>> >>>> >>>> >>>>> >>>>> 2016-10-31 17:41 GMT+01:00 Bruno Herrera <bruherrera@gmail.com >>>>> <mailto:bruherrera@gmail.com>>: >>>>> >>>>> On Mon, Oct 31, 2016 at 12:14 PM, Rados?aw Pietrzyk >>>>> <radoslaw.pietrzyk at gmail.com <mailto:radoslaw.pietrzyk@gmail.com>> >>>>> wrote: >>>>> > This is weird because dma ddresses are recalculated using >>>>> parent's >>>>> > dma-ranges property and soc already has it so there should be >>>>> absolutely no >>>>> > problem. >>>>> >>>>> These are my DTS and DTSI file. >>>>> > >>>>> > 2016-10-31 11:27 GMT+01:00 Bruno Herrera <bruherrera@gmail.com >>>>> <mailto:bruherrera@gmail.com>>: >>>>> >> >>>>> >> On Fri, Oct 28, 2016 at 5:09 AM, Rados?aw Pietrzyk >>>>> >> <radoslaw.pietrzyk@gmail.com >>>>> <mailto:radoslaw.pietrzyk@gmail.com>> wrote: >>>>> >> > Have you defined your sdio node within soc node ? >>>>> >> >>>>> >> It is in the SOC node of the DSTI file. >>>>> >> >>>>> >> > >>>>> >> > 2016-10-27 14:57 GMT+02:00 Bruno Herrera <bruherrera@gmail.com >>>>> <mailto:bruherrera@gmail.com>>: >>>>> >> >> >>>>> >> >> Hi Alex, >>>>> >> >> >>>>> >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >>>>> >> >> <alexandre.torgue at st.com <mailto:alexandre.torgue@st.com>> >>>>> wrote: >>>>> >> >> > Hi Bruno, >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > On 10/27/2016 12:43 PM, Bruno Herrera wrote: >>>>> >> >> >> >>>>> >> >> >> Hi Alex, >>>>> >> >> >> >>>>> >> >> >> On Wed, Oct 26, 2016 at 7:09 AM, Alexandre Torgue >>>>> >> >> >> <alexandre.torgue at st.com <mailto:alexandre.torgue@st.com>> >>>>> wrote: >>>>> >> >> >>> >>>>> >> >> >>> Hi Bruno, >>>>> >> >> >>> >>>>> >> >> >>> On 10/25/2016 11:06 PM, Bruno Herrera wrote: >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> Hi Alexandre, >>>>> >> >> >>>> >>>>> >> >> >>>>> >>>>> >> >> >>>>> stm32f469-disco and stm32f429-eval boards use SDRAM >>>>> start address >>>>> >> >> >>>>> remapping >>>>> >> >> >>>>> (to @0) to boost performances. A DMA translation >>>>> through >>>>> >> >> >>>>> "dma-ranges" >>>>> >> >> >>>>> property was needed for other masters than the M4 CPU. >>>>> >> >> >>>>> stm32f429-disco doesn't use remapping so doesn't need >>>>> this DMA >>>>> >> >> >>>>> translation. >>>>> >> >> >>>>> This patches moves this DMA translation definition from >>>>> stm32f429 >>>>> >> >> >>>>> soc >>>>> >> >> >>>>> file >>>>> >> >> >>>>> to board files. >>>>> >> >> >>>>> >>>>> >> >> >>>>> Signed-off-by: Alexandre TORGUE >>>>> <alexandre.torgue@st.com >>>>> <mailto:alexandre.torgue@st.com>> >>>>> >>>>> >> >> >>>>> >>>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>>> index 13c7cd2..a763c15 100644 >>>>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>>> @@ -82,6 +82,10 @@ >>>>> >> >> >>>>> }; >>>>> >> >> >>>>> }; >>>>> >> >> >>>>> >>>>> >> >> >>>>> + soc { >>>>> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 >>>>> 0x10000000>; >>>>> >> >> >>>>> + }; >>>>> >> >> >>>>> + >>>>> >> >> >>>>> usbotg_hs_phy: usbphy { >>>>> >> >> >>>>> #phy-cells = <0>; >>>>> >> >> >>>>> compatible = "usb-nop-xceiv"; >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> Shouldn't also the peripheral dma-ranges property move >>>>> to >>>>> board >>>>> >> >> >>>> specific >>>>> >> >> >>>> too? >>>>> >> >> >>>> I had this patch for while but I didn't had the time to >>>>> submit: >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> Well spot I forgot it. Actually, discussing with Arnd >>>>> ysterday on >>>>> >> >> >>> IIRC, >>>>> >> >> >>> empty dma-ranges is not needed. Can you test on your side >>>>> by >>>>> >> >> >>> removing >>>>> >> >> >>> dma-ranges in usb node please ? >>>>> >> >> >> >>>>> >> >> >> Unfortunately will take a time for me to set up this >>>>> environment on >>>>> >> >> >> the STM32F4-EVAL board. >>>>> >> >> >> And on the discovery boards we dont have this scenario. >>>>> That was the >>>>> >> >> >> main reason I did not submit the patch right away. >>>>> >> >> >> My conclusion and I might be wrong but is based on the my >>>>> tests with >>>>> >> >> >> SDIO device at STM32F469I-DISCO board. >>>>> >> >> >> >>>>> >> >> >> I started this issue as discussion at ST Forum but Maxime >>>>> gave me >>>>> >> >> >> the >>>>> >> >> >> hint. >>>>> >> >> >> >>>>> >> >> >> >>>>> >> >> >> >>>>> >> >> >> >>>>> >> >> >> >>>>> >>>>> >>>>> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44 >>>>> >>>>> >>>>> <https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fDMA2%20and%20SYSCFG_MEMRMP%20relationship&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B¤tviews=44> >>>>> >> >> >> >>>>> >> >> >>> I will push a v2 by removing empty dma-ranges if tests >>>>> are >>>>> ok in >>>>> >> >> >>> your >>>>> >> >> >>> side. >>>>> >> >> >> >>>>> >> >> >> >>>>> >> >> >> From my understating/conclusion is: when empty >>>>> property(dma-ranges) >>>>> >> >> >> is >>>>> >> >> >> the device node, the mapping will be taken in >>>>> consideration >>>>> when >>>>> >> >> >> using >>>>> >> >> >> DMA otherwise the mapping is ignored. >>>>> >> >> >> And in the SDIO case it is needed for DEV->MEM(SDRAM) and >>>>> >> >> >> MEM(SDRAM)->DEV. If it is not the case for the devices in >>>>> question >>>>> >> >> >> so >>>>> >> >> >> I suppose it can work without the property. >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > For sure translation has to be done but I'm not sure that >>>>> an >>>>> empty >>>>> >> >> > "dma-ranges" is needed in device node to activate it. For >>>>> Ethernet >>>>> >> >> > empty >>>>> >> >> > "dma-ranges" is not needed. I will try with usb. >>>>> >> >> >>>>> >> >> In the case of SDIO it is needed. As example this is my >>>>> working SDIO >>>>> >> >> node: >>>>> >> >> >>>>> >> >> sdio: sdio at 40012c00 { >>>>> >> >> compatible = "arm,pl18x", "arm,primecell"; >>>>> >> >> arm,primecell-periphid = <0x00480181>; >>>>> >> >> reg = <0x40012c00 0x400>; >>>>> >> >> dmas = <&dma2 6 4 0x10400 0x3>, /* Logical - DevToMem */ >>>>> >> >> <&dma2 3 4 0x10400 0x3>; /* Logical - MemToDev */ >>>>> >> >> dma-names = "rx", "tx"; >>>>> >> >> clocks = <&rcc 0 171>; >>>>> >> >> clock-names = "apb_pclk"; >>>>> >> >> interrupts = <49>; >>>>> >> >> status = "disabled"; >>>>> >> >> }; >>>>> >> >> >>>>> >> >> &sdio { >>>>> >> >> status = "okay"; >>>>> >> >> vmmc-supply = <&wlan_en>; >>>>> >> >> bus-width = <4>; >>>>> >> >> max-frequency = <24000000>; >>>>> >> >> pinctrl-names = "default"; >>>>> >> >> pinctrl-0 = <&sdio_pins>; >>>>> >> >> ti,non-removable; >>>>> >> >> ti,needs-special-hs-handling; >>>>> >> >> dma-ranges; >>>>> >> >> cap-power-off-card; >>>>> >> >> keep-power-in-suspend; >>>>> >> >> >>>>> >> >> #address-cells = <1>; >>>>> >> >> #size-cells = <0>; >>>>> >> >> wlcore: wlcore at 0 { >>>>> >> >> compatible = "ti,wl1835"; >>>>> >> >> reg = <2>; >>>>> >> >> interrupt-parent = <&gpioa>; >>>>> >> >> interrupts = <8 IRQ_TYPE_EDGE_RISING>; >>>>> >> >> }; >>>>> >> >> }; >>>>> >> >> >>>>> >> >> > >>>>> >> >> > alex >>>>> >> >> > >>>>> >> >> > >>>>> >> >> >> >>>>> >> >> >>> >>>>> >> >> >>> Thanks in advance >>>>> >> >> >>> Alex >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>>> >>>>> >> >> >>>> Author: Bruno Herrera <bruherrera@gmail.com >>>>> <mailto:bruherrera@gmail.com>> >>>>> >>>>> >> >> >>>> Date: Sun Oct 16 14:50:00 2016 -0200 >>>>> >> >> >>>> >>>>> >> >> >>>> ARM: DT: STM32: Use dma-ranges property per board >>>>> not >>>>> at dtsi >>>>> >> >> >>>> file >>>>> >> >> >>>> >>>>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>> b/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>> index 6bfc595..2a22a82 100644 >>>>> >> >> >>>> --- a/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>> +++ b/arch/arm/boot/dts/stm32429i-eval.dts >>>>> >> >> >>>> @@ -52,6 +52,10 @@ >>>>> >> >> >>>> model = "STMicroelectronics STM32429i-EVAL >>>>> board"; >>>>> >> >> >>>> compatible = "st,stm32429i-eval", >>>>> "st,stm32f429"; >>>>> >> >> >>>> >>>>> >> >> >>>> + soc { >>>>> >> >> >>>> + dma-ranges = <0xC0000000 0x0 >>>>> 0x10000000>; >>>>> >> >> >>>> + }; >>>>> >> >> >>>> + >>>>> >> >> >>>> chosen { >>>>> >> >> >>>> bootargs = "root=/dev/ram >>>>> rdinit=/linuxrc"; >>>>> >> >> >>>> stdout-path = "serial0:115200n8"; >>>>> >> >> >>>> @@ -96,6 +100,7 @@ >>>>> >> >> >>>> >>>>> >> >> >>>> ðernet0 { >>>>> >> >> >>>> status = "okay"; >>>>> >> >> >>>> + dma-ranges; >>>>> >> >> >>>> pinctrl-0 = <ðernet0_mii>; >>>>> >> >> >>>> pinctrl-names = "default"; >>>>> >> >> >>>> phy-mode = "mii-id"; >>>>> >> >> >>>> @@ -116,6 +121,7 @@ >>>>> >> >> >>>> }; >>>>> >> >> >>>> >>>>> >> >> >>>> &usbotg_hs { >>>>> >> >> >>>> + dma-ranges; >>>>> >> >> >>>> dr_mode = "host"; >>>>> >> >> >>>> phys = <&usbotg_hs_phy>; >>>>> >> >> >>>> phy-names = "usb2-phy"; >>>>> >> >> >>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>> index 7d624a2..697a133 100644 >>>>> >> >> >>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>> @@ -59,7 +59,6 @@ >>>>> >> >> >>>> }; >>>>> >> >> >>>> >>>>> >> >> >>>> soc { >>>>> >> >> >>>> - dma-ranges = <0xc0000000 0x0 >>>>> 0x10000000>; >>>>> >> >> >>>> >>>>> >> >> >>>> timer2: timer at 40000000 { >>>>> >> >> >>>> compatible = "st,stm32-timer"; >>>>> >> >> >>>> @@ -472,13 +471,11 @@ >>>>> >> >> >>>> st,syscon = <&syscfg 0x4>; >>>>> >> >> >>>> snps,pbl = <8>; >>>>> >> >> >>>> snps,mixed-burst; >>>>> >> >> >>>> - dma-ranges; >>>>> >> >> >>>> status = "disabled"; >>>>> >> >> >>>> }; >>>>> >> >> >>>> >>>>> >> >> >>>> usbotg_hs: usb at 40040000 { >>>>> >> >> >>>> compatible = "snps,dwc2"; >>>>> >> >> >>>> - dma-ranges; >>>>> >> >> >>>> reg = <0x40040000 0x40000>; >>>>> >> >> >>>> interrupts = <77>; >>>>> >> >> >>>> clocks = <&rcc 0 29>; >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>>> b/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>>> index 0596d60..3a1cfdd 100644 >>>>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f429.dtsi >>>>> >> >> >>>>> @@ -59,8 +59,6 @@ >>>>> >> >> >>>>> }; >>>>> >> >> >>>>> >>>>> >> >> >>>>> soc { >>>>> >> >> >>>>> - dma-ranges = <0xc0000000 0x0 >>>>> 0x10000000>; >>>>> >> >> >>>>> - >>>>> >> >> >>>>> timer2: timer at 40000000 { >>>>> >> >> >>>>> compatible = "st,stm32-timer"; >>>>> >> >> >>>>> reg = <0x40000000 0x400>; >>>>> >> >> >>>>> diff --git a/arch/arm/boot/dts/stm32f469-disco.dts >>>>> >> >> >>>>> b/arch/arm/boot/dts/stm32f469-disco.dts >>>>> >> >> >>>>> index 9e73656..c2213c0 100644 >>>>> >> >> >>>>> --- a/arch/arm/boot/dts/stm32f469-disco.dts >>>>> >> >> >>>>> +++ b/arch/arm/boot/dts/stm32f469-disco.dts >>>>> >> >> >>>>> @@ -64,6 +64,10 @@ >>>>> >> >> >>>>> aliases { >>>>> >> >> >>>>> serial0 = &usart3; >>>>> >> >> >>>>> }; >>>>> >> >> >>>>> + >>>>> >> >> >>>>> + soc { >>>>> >> >> >>>>> + dma-ranges = <0xc0000000 0x0 >>>>> 0x10000000>; >>>>> >> >> >>>>> + }; >>>>> >> >> >>>>> }; >>>>> >> >> >>>>> >>>>> >> >> >>>>> &clk_hse { >>>>> >> >> >>>>> -- >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> Br., >>>>> >> >> >>>> Bruno >>>>> >> >> >>>> >>>>> >> >> >>> >>>>> >> >> > >>>>> >> >> >>>>> >> >> _______________________________________________ >>>>> >> >> linux-arm-kernel mailing list >>>>> >> >> linux-arm-kernel at lists.infradead.org >>>>> <mailto:linux-arm-kernel@lists.infradead.org> >>>>> >> >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >>>>> <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel> >>>>> >> > >>>>> >> > >>>>> > >>>>> > >>>>> >>>>> >>>> >> >> ^ permalink raw reply [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-10-25 16:16 ` Alexandre TORGUE 0 siblings, 0 replies; 32+ messages in thread From: Alexandre TORGUE @ 2016-10-25 16:16 UTC (permalink / raw) To: Maxime Coquelin, arnd, robh+dt, mark.rutland, linux, peter.griffin, lee.jones Cc: devicetree, linux-arm-kernel stm32f469-disco and stm32f429-eval boards use SDRAM start address remapping (to @0) to boost performances. A DMA translation through "dma-ranges" property was needed for other masters than the M4 CPU. stm32f429-disco doesn't use remapping so doesn't need this DMA translation. This patches moves this DMA translation definition from stm32f429 soc file to board files. Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts b/arch/arm/boot/dts/stm32429i-eval.dts index 13c7cd2..a763c15 100644 --- a/arch/arm/boot/dts/stm32429i-eval.dts +++ b/arch/arm/boot/dts/stm32429i-eval.dts @@ -82,6 +82,10 @@ }; }; + soc { + dma-ranges = <0xc0000000 0x0 0x10000000>; + }; + usbotg_hs_phy: usbphy { #phy-cells = <0>; compatible = "usb-nop-xceiv"; diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi index 0596d60..3a1cfdd 100644 --- a/arch/arm/boot/dts/stm32f429.dtsi +++ b/arch/arm/boot/dts/stm32f429.dtsi @@ -59,8 +59,6 @@ }; soc { - dma-ranges = <0xc0000000 0x0 0x10000000>; - timer2: timer@40000000 { compatible = "st,stm32-timer"; reg = <0x40000000 0x400>; diff --git a/arch/arm/boot/dts/stm32f469-disco.dts b/arch/arm/boot/dts/stm32f469-disco.dts index 9e73656..c2213c0 100644 --- a/arch/arm/boot/dts/stm32f469-disco.dts +++ b/arch/arm/boot/dts/stm32f469-disco.dts @@ -64,6 +64,10 @@ aliases { serial0 = &usart3; }; + + soc { + dma-ranges = <0xc0000000 0x0 0x10000000>; + }; }; &clk_hse { -- 1.9.1 ^ permalink raw reply related [flat|nested] 32+ messages in thread
* [PATCH] ARM: DT: stm32: move dma translation to board files @ 2016-10-25 16:16 ` Alexandre TORGUE 0 siblings, 0 replies; 32+ messages in thread From: Alexandre TORGUE @ 2016-10-25 16:16 UTC (permalink / raw) To: linux-arm-kernel stm32f469-disco and stm32f429-eval boards use SDRAM start address remapping (to @0) to boost performances. A DMA translation through "dma-ranges" property was needed for other masters than the M4 CPU. stm32f429-disco doesn't use remapping so doesn't need this DMA translation. This patches moves this DMA translation definition from stm32f429 soc file to board files. Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> diff --git a/arch/arm/boot/dts/stm32429i-eval.dts b/arch/arm/boot/dts/stm32429i-eval.dts index 13c7cd2..a763c15 100644 --- a/arch/arm/boot/dts/stm32429i-eval.dts +++ b/arch/arm/boot/dts/stm32429i-eval.dts @@ -82,6 +82,10 @@ }; }; + soc { + dma-ranges = <0xc0000000 0x0 0x10000000>; + }; + usbotg_hs_phy: usbphy { #phy-cells = <0>; compatible = "usb-nop-xceiv"; diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi index 0596d60..3a1cfdd 100644 --- a/arch/arm/boot/dts/stm32f429.dtsi +++ b/arch/arm/boot/dts/stm32f429.dtsi @@ -59,8 +59,6 @@ }; soc { - dma-ranges = <0xc0000000 0x0 0x10000000>; - timer2: timer at 40000000 { compatible = "st,stm32-timer"; reg = <0x40000000 0x400>; diff --git a/arch/arm/boot/dts/stm32f469-disco.dts b/arch/arm/boot/dts/stm32f469-disco.dts index 9e73656..c2213c0 100644 --- a/arch/arm/boot/dts/stm32f469-disco.dts +++ b/arch/arm/boot/dts/stm32f469-disco.dts @@ -64,6 +64,10 @@ aliases { serial0 = &usart3; }; + + soc { + dma-ranges = <0xc0000000 0x0 0x10000000>; + }; }; &clk_hse { -- 1.9.1 ^ permalink raw reply related [flat|nested] 32+ messages in thread
end of thread, other threads:[~2016-11-03 8:40 UTC | newest] Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-10-25 21:06 [PATCH] ARM: DT: stm32: move dma translation to board files Bruno Herrera [not found] ` <CAF3+Tqd2MGmz+8XhLXhaZiEc78QOwHSpVrQA65-p1AcfT+_xgg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-10-26 9:09 ` Alexandre Torgue 2016-10-26 9:09 ` Alexandre Torgue 2016-10-27 10:43 ` Bruno Herrera 2016-10-27 10:43 ` Bruno Herrera 2016-10-27 12:21 ` Alexandre Torgue 2016-10-27 12:21 ` Alexandre Torgue 2016-10-27 12:57 ` Bruno Herrera 2016-10-27 12:57 ` Bruno Herrera 2016-10-28 7:09 ` Radosław Pietrzyk [not found] ` <CAFvLkMQGVygLb9SQ8o+2Q=bg7vvRjpHypmSyjRyLkdcHypoFHw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-10-31 10:27 ` Bruno Herrera 2016-10-31 10:27 ` Bruno Herrera 2016-10-31 14:14 ` Radosław Pietrzyk [not found] ` <CAFvLkMQ6YMg4sf2Ug8x4-YshwnjbLz3aVzm+JpKP6zG9r-WU4Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-10-31 16:41 ` Bruno Herrera 2016-10-31 16:41 ` Bruno Herrera 2016-10-31 18:58 ` Radosław Pietrzyk [not found] ` <CAFvLkMTCkRcwbRc8GVNBoJFAvKWHYDjOPabueQPjTseZrucadA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-11-02 14:32 ` Alexandre Torgue 2016-11-02 14:32 ` Alexandre Torgue [not found] ` <3e854414-f51d-3e59-6cee-142106cef40f-qxv4g6HH51o@public.gmane.org> 2016-11-02 16:07 ` Bruno Herrera 2016-11-02 16:07 ` Bruno Herrera [not found] ` <CAF3+TqeiPjtG7Fs1-cpbcHGxxtSS1UOGD=S=sggpaZahFLJhEQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-11-02 16:14 ` Alexandre Torgue 2016-11-02 16:14 ` Alexandre Torgue [not found] ` <edf05ad5-924d-87d8-fd8d-57e8e0a72052-qxv4g6HH51o@public.gmane.org> 2016-11-02 18:24 ` Bruno Herrera 2016-11-02 18:24 ` Bruno Herrera 2016-11-02 18:05 ` Radosław Pietrzyk [not found] ` <CAFvLkMSViXggGr0Set0qnQan_+bXUNzJx5WtZHP-Jyje=ZzDVw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-11-02 18:23 ` Bruno Herrera 2016-11-02 18:23 ` Bruno Herrera 2016-11-03 7:43 ` Radosław Pietrzyk 2016-11-03 8:40 ` Alexandre Torgue 2016-11-03 8:40 ` Alexandre Torgue -- strict thread matches above, loose matches on Subject: below -- 2016-10-25 16:16 Alexandre TORGUE 2016-10-25 16:16 ` Alexandre TORGUE
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.