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