On Fri, Oct 28, 2016 at 5:09 AM, Radosław Pietrzyk <radoslaw.pietrzyk@xxxxxxxxx> 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@xxxxxxxxx>: >> >> Hi Alex, >> >> On Thu, Oct 27, 2016 at 10:21 AM, Alexandre Torgue >> <alexandre.torgue@xxxxxx> 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@xxxxxx> 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@xxxxxx> >> >>>>> >> >>>>> 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@xxxxxxxxx> >> >>>> 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@xxxxxxxxxxxxxxxxxxx >> 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@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html