162306a36Sopenharmony_ci* STMicroelectronics Flexible Direct Memory Access Device Tree bindings 262306a36Sopenharmony_ci 362306a36Sopenharmony_ciThe FDMA is a general-purpose direct memory access controller capable of 462306a36Sopenharmony_cisupporting 16 independent DMA channels. It accepts up to 32 DMA requests. 562306a36Sopenharmony_ciThe FDMA is based on a Slim processor which requires a firmware. 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci* FDMA Controller 862306a36Sopenharmony_ci 962306a36Sopenharmony_ciRequired properties: 1062306a36Sopenharmony_ci- compatible : Should be one of 1162306a36Sopenharmony_ci - st,stih407-fdma-mpe31-11, "st,slim-rproc"; 1262306a36Sopenharmony_ci - st,stih407-fdma-mpe31-12, "st,slim-rproc"; 1362306a36Sopenharmony_ci - st,stih407-fdma-mpe31-13, "st,slim-rproc"; 1462306a36Sopenharmony_ci- reg : Should contain an entry for each name in reg-names 1562306a36Sopenharmony_ci- reg-names : Must contain "slimcore", "dmem", "peripherals", "imem" entries 1662306a36Sopenharmony_ci- interrupts : Should contain one interrupt shared by all channels 1762306a36Sopenharmony_ci- dma-channels : Number of channels supported by the controller 1862306a36Sopenharmony_ci- #dma-cells : Must be <3>. See DMA client section below 1962306a36Sopenharmony_ci- clocks : Must contain an entry for each clock 2062306a36Sopenharmony_ciSee: Documentation/devicetree/bindings/clock/clock-bindings.txt 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ciExample: 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci fdma0: dma-controller@8e20000 { 2662306a36Sopenharmony_ci compatible = "st,stih407-fdma-mpe31-11", "st,slim-rproc"; 2762306a36Sopenharmony_ci reg = <0x8e20000 0x8000>, 2862306a36Sopenharmony_ci <0x8e30000 0x3000>, 2962306a36Sopenharmony_ci <0x8e37000 0x1000>, 3062306a36Sopenharmony_ci <0x8e38000 0x8000>; 3162306a36Sopenharmony_ci reg-names = "slimcore", "dmem", "peripherals", "imem"; 3262306a36Sopenharmony_ci clocks = <&clk_s_c0_flexgen CLK_FDMA>, 3362306a36Sopenharmony_ci <&clk_s_c0_flexgen CLK_EXT2F_A9>, 3462306a36Sopenharmony_ci <&clk_s_c0_flexgen CLK_EXT2F_A9>, 3562306a36Sopenharmony_ci <&clk_s_c0_flexgen CLK_EXT2F_A9>; 3662306a36Sopenharmony_ci interrupts = <GIC_SPI 5 IRQ_TYPE_NONE>; 3762306a36Sopenharmony_ci dma-channels = <16>; 3862306a36Sopenharmony_ci #dma-cells = <3>; 3962306a36Sopenharmony_ci }; 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci* DMA client 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ciRequired properties: 4462306a36Sopenharmony_ci- dmas: Comma separated list of dma channel requests 4562306a36Sopenharmony_ci- dma-names: Names of the aforementioned requested channels 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ciEach dmas request consists of 4 cells: 4862306a36Sopenharmony_ci1. A phandle pointing to the FDMA controller 4962306a36Sopenharmony_ci2. The request line number 5062306a36Sopenharmony_ci3. A 32bit mask specifying (see include/linux/platform_data/dma-st-fdma.h) 5162306a36Sopenharmony_ci -bit 2-0: Holdoff value, dreq will be masked for 5262306a36Sopenharmony_ci 0x0: 0-0.5us 5362306a36Sopenharmony_ci 0x1: 0.5-1us 5462306a36Sopenharmony_ci 0x2: 1-1.5us 5562306a36Sopenharmony_ci -bit 17: data swap 5662306a36Sopenharmony_ci 0x0: disabled 5762306a36Sopenharmony_ci 0x1: enabled 5862306a36Sopenharmony_ci -bit 21: Increment Address 5962306a36Sopenharmony_ci 0x0: no address increment between transfers 6062306a36Sopenharmony_ci 0x1: increment address between transfers 6162306a36Sopenharmony_ci -bit 22: 2 STBus Initiator Coprocessor interface 6262306a36Sopenharmony_ci 0x0: high priority port 6362306a36Sopenharmony_ci 0x1: low priority port 6462306a36Sopenharmony_ci4. transfers type 6562306a36Sopenharmony_ci 0 free running 6662306a36Sopenharmony_ci 1 paced 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ciExample: 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci sti_uni_player2: sti-uni-player@2 { 7162306a36Sopenharmony_ci compatible = "st,sti-uni-player"; 7262306a36Sopenharmony_ci #sound-dai-cells = <0>; 7362306a36Sopenharmony_ci st,syscfg = <&syscfg_core>; 7462306a36Sopenharmony_ci clocks = <&clk_s_d0_flexgen CLK_PCM_2>; 7562306a36Sopenharmony_ci assigned-clocks = <&clk_s_d0_flexgen CLK_PCM_2>; 7662306a36Sopenharmony_ci assigned-clock-parents = <&clk_s_d0_quadfs 2>; 7762306a36Sopenharmony_ci assigned-clock-rates = <50000000>; 7862306a36Sopenharmony_ci reg = <0x8D82000 0x158>; 7962306a36Sopenharmony_ci interrupts = <GIC_SPI 86 IRQ_TYPE_NONE>; 8062306a36Sopenharmony_ci dmas = <&fdma0 4 0 1>; 8162306a36Sopenharmony_ci dai-name = "Uni Player #1 (DAC)"; 8262306a36Sopenharmony_ci dma-names = "tx"; 8362306a36Sopenharmony_ci st,uniperiph-id = <2>; 8462306a36Sopenharmony_ci st,version = <5>; 8562306a36Sopenharmony_ci st,mode = "PCM"; 8662306a36Sopenharmony_ci }; 87