Have you defined your sdio node within soc node ? 2016-10-27 14:57 GMT+02:00 Bruno Herrera : > Hi Alex, > > On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue > 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 > >> 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 > >>>>> > >>>>> 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 > >>>> 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 >