162306a36Sopenharmony_ciTexas Instruments eDMA 262306a36Sopenharmony_ci 362306a36Sopenharmony_ciThe eDMA3 consists of two components: Channel controller (CC) and Transfer 462306a36Sopenharmony_ciController(s) (TC). The CC is the main entry for DMA users since it is 562306a36Sopenharmony_ciresponsible for the DMA channel handling, while the TCs are responsible to 662306a36Sopenharmony_ciexecute the actual DMA tansfer. 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci------------------------------------------------------------------------------ 962306a36Sopenharmony_cieDMA3 Channel Controller 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciRequired properties: 1262306a36Sopenharmony_ci-------------------- 1362306a36Sopenharmony_ci- compatible: Should be: 1462306a36Sopenharmony_ci - "ti,edma3-tpcc" for the channel controller(s) on OMAP, 1562306a36Sopenharmony_ci AM33xx and AM43xx SoCs. 1662306a36Sopenharmony_ci - "ti,k2g-edma3-tpcc", "ti,edma3-tpcc" for the 1762306a36Sopenharmony_ci channel controller(s) on 66AK2G. 1862306a36Sopenharmony_ci- #dma-cells: Should be set to <2>. The first number is the DMA request 1962306a36Sopenharmony_ci number and the second is the TC the channel is serviced on. 2062306a36Sopenharmony_ci- reg: Memory map of eDMA CC 2162306a36Sopenharmony_ci- reg-names: "edma3_cc" 2262306a36Sopenharmony_ci- interrupts: Interrupt lines for CCINT, MPERR and CCERRINT. 2362306a36Sopenharmony_ci- interrupt-names: "edma3_ccint", "edma3_mperr" and "edma3_ccerrint" 2462306a36Sopenharmony_ci- ti,tptcs: List of TPTCs associated with the eDMA in the following form: 2562306a36Sopenharmony_ci <&tptc_phandle TC_priority_number>. The highest priority is 0. 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ciSoC-specific Required properties: 2862306a36Sopenharmony_ci-------------------------------- 2962306a36Sopenharmony_ciThe following are mandatory properties for OMAP, AM33xx and AM43xx SoCs only: 3062306a36Sopenharmony_ci- ti,hwmods: Name of the hwmods associated to the eDMA CC. 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ciThe following are mandatory properties for 66AK2G SoCs only: 3362306a36Sopenharmony_ci- power-domains:Should contain a phandle to a PM domain provider node 3462306a36Sopenharmony_ci and an args specifier containing the device id 3562306a36Sopenharmony_ci value. This property is as per the binding, 3662306a36Sopenharmony_ci Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ciOptional properties: 3962306a36Sopenharmony_ci------------------- 4062306a36Sopenharmony_ci- ti,edma-memcpy-channels: List of channels allocated to be used for memcpy, iow 4162306a36Sopenharmony_ci these channels will be SW triggered channels. See example. 4262306a36Sopenharmony_ci- ti,edma-reserved-slot-ranges: PaRAM slot ranges which should not be used by 4362306a36Sopenharmony_ci the driver, they are allocated to be used by for example the 4462306a36Sopenharmony_ci DSP. See example. 4562306a36Sopenharmony_ci- dma-channel-mask: Mask of usable channels. 4662306a36Sopenharmony_ci Single uint32 for EDMA with 32 channels, array of two uint32 for 4762306a36Sopenharmony_ci EDMA with 64 channels. See example and 4862306a36Sopenharmony_ci Documentation/devicetree/bindings/dma/dma-common.yaml 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci------------------------------------------------------------------------------ 5262306a36Sopenharmony_cieDMA3 Transfer Controller 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ciRequired properties: 5562306a36Sopenharmony_ci-------------------- 5662306a36Sopenharmony_ci- compatible: Should be: 5762306a36Sopenharmony_ci - "ti,edma3-tptc" for the transfer controller(s) on OMAP, 5862306a36Sopenharmony_ci AM33xx and AM43xx SoCs. 5962306a36Sopenharmony_ci - "ti,k2g-edma3-tptc", "ti,edma3-tptc" for the 6062306a36Sopenharmony_ci transfer controller(s) on 66AK2G. 6162306a36Sopenharmony_ci- reg: Memory map of eDMA TC 6262306a36Sopenharmony_ci- interrupts: Interrupt number for TCerrint. 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ciSoC-specific Required properties: 6562306a36Sopenharmony_ci-------------------------------- 6662306a36Sopenharmony_ciThe following are mandatory properties for OMAP, AM33xx and AM43xx SoCs only: 6762306a36Sopenharmony_ci- ti,hwmods: Name of the hwmods associated to the eDMA TC. 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ciThe following are mandatory properties for 66AK2G SoCs only: 7062306a36Sopenharmony_ci- power-domains:Should contain a phandle to a PM domain provider node 7162306a36Sopenharmony_ci and an args specifier containing the device id 7262306a36Sopenharmony_ci value. This property is as per the binding, 7362306a36Sopenharmony_ci Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ciOptional properties: 7662306a36Sopenharmony_ci------------------- 7762306a36Sopenharmony_ci- interrupt-names: "edma3_tcerrint" 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci------------------------------------------------------------------------------ 8062306a36Sopenharmony_ciExamples: 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci1. 8362306a36Sopenharmony_ciedma: edma@49000000 { 8462306a36Sopenharmony_ci compatible = "ti,edma3-tpcc"; 8562306a36Sopenharmony_ci ti,hwmods = "tpcc"; 8662306a36Sopenharmony_ci reg = <0x49000000 0x10000>; 8762306a36Sopenharmony_ci reg-names = "edma3_cc"; 8862306a36Sopenharmony_ci interrupts = <12 13 14>; 8962306a36Sopenharmony_ci interrupt-names = "edma3_ccint", "edma3_mperr", "edma3_ccerrint"; 9062306a36Sopenharmony_ci dma-requests = <64>; 9162306a36Sopenharmony_ci #dma-cells = <2>; 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 7>, <&edma_tptc2 0>; 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci /* Channel 20 and 21 is allocated for memcpy */ 9662306a36Sopenharmony_ci ti,edma-memcpy-channels = <20 21>; 9762306a36Sopenharmony_ci /* The following PaRAM slots are reserved: 35-44 and 100-109 */ 9862306a36Sopenharmony_ci ti,edma-reserved-slot-ranges = <35 10>, <100 10>; 9962306a36Sopenharmony_ci /* The following channels are reserved: 35-44 */ 10062306a36Sopenharmony_ci dma-channel-mask = <0xffffffff /* Channel 0-31 */ 10162306a36Sopenharmony_ci 0xffffe007>; /* Channel 32-63 */ 10262306a36Sopenharmony_ci}; 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ciedma_tptc0: tptc@49800000 { 10562306a36Sopenharmony_ci compatible = "ti,edma3-tptc"; 10662306a36Sopenharmony_ci ti,hwmods = "tptc0"; 10762306a36Sopenharmony_ci reg = <0x49800000 0x100000>; 10862306a36Sopenharmony_ci interrupts = <112>; 10962306a36Sopenharmony_ci interrupt-names = "edm3_tcerrint"; 11062306a36Sopenharmony_ci}; 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ciedma_tptc1: tptc@49900000 { 11362306a36Sopenharmony_ci compatible = "ti,edma3-tptc"; 11462306a36Sopenharmony_ci ti,hwmods = "tptc1"; 11562306a36Sopenharmony_ci reg = <0x49900000 0x100000>; 11662306a36Sopenharmony_ci interrupts = <113>; 11762306a36Sopenharmony_ci interrupt-names = "edm3_tcerrint"; 11862306a36Sopenharmony_ci}; 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ciedma_tptc2: tptc@49a00000 { 12162306a36Sopenharmony_ci compatible = "ti,edma3-tptc"; 12262306a36Sopenharmony_ci ti,hwmods = "tptc2"; 12362306a36Sopenharmony_ci reg = <0x49a00000 0x100000>; 12462306a36Sopenharmony_ci interrupts = <114>; 12562306a36Sopenharmony_ci interrupt-names = "edm3_tcerrint"; 12662306a36Sopenharmony_ci}; 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_cisham: sham@53100000 { 12962306a36Sopenharmony_ci compatible = "ti,omap4-sham"; 13062306a36Sopenharmony_ci ti,hwmods = "sham"; 13162306a36Sopenharmony_ci reg = <0x53100000 0x200>; 13262306a36Sopenharmony_ci interrupts = <109>; 13362306a36Sopenharmony_ci /* DMA channel 36 executed on eDMA TC0 - low priority queue */ 13462306a36Sopenharmony_ci dmas = <&edma 36 0>; 13562306a36Sopenharmony_ci dma-names = "rx"; 13662306a36Sopenharmony_ci}; 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_cimcasp0: mcasp@48038000 { 13962306a36Sopenharmony_ci compatible = "ti,am33xx-mcasp-audio"; 14062306a36Sopenharmony_ci ti,hwmods = "mcasp0"; 14162306a36Sopenharmony_ci reg = <0x48038000 0x2000>, 14262306a36Sopenharmony_ci <0x46000000 0x400000>; 14362306a36Sopenharmony_ci reg-names = "mpu", "dat"; 14462306a36Sopenharmony_ci interrupts = <80>, <81>; 14562306a36Sopenharmony_ci interrupt-names = "tx", "rx"; 14662306a36Sopenharmony_ci /* DMA channels 8 and 9 executed on eDMA TC2 - high priority queue */ 14762306a36Sopenharmony_ci dmas = <&edma 8 2>, 14862306a36Sopenharmony_ci <&edma 9 2>; 14962306a36Sopenharmony_ci dma-names = "tx", "rx"; 15062306a36Sopenharmony_ci}; 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci2. 15362306a36Sopenharmony_ciedma1: edma@2728000 { 15462306a36Sopenharmony_ci compatible = "ti,k2g-edma3-tpcc", "ti,edma3-tpcc"; 15562306a36Sopenharmony_ci reg = <0x02728000 0x8000>; 15662306a36Sopenharmony_ci reg-names = "edma3_cc"; 15762306a36Sopenharmony_ci interrupts = <GIC_SPI 208 IRQ_TYPE_EDGE_RISING>, 15862306a36Sopenharmony_ci <GIC_SPI 219 IRQ_TYPE_EDGE_RISING>, 15962306a36Sopenharmony_ci <GIC_SPI 220 IRQ_TYPE_EDGE_RISING>; 16062306a36Sopenharmony_ci interrupt-names = "edma3_ccint", "emda3_mperr", 16162306a36Sopenharmony_ci "edma3_ccerrint"; 16262306a36Sopenharmony_ci dma-requests = <64>; 16362306a36Sopenharmony_ci #dma-cells = <2>; 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci ti,tptcs = <&edma1_tptc0 7>, <&edma1_tptc1 0>; 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci /* 16862306a36Sopenharmony_ci * memcpy is disabled, can be enabled with: 16962306a36Sopenharmony_ci * ti,edma-memcpy-channels = <12 13 14 15>; 17062306a36Sopenharmony_ci * for example. 17162306a36Sopenharmony_ci */ 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci power-domains = <&k2g_pds 0x4f>; 17462306a36Sopenharmony_ci}; 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ciedma1_tptc0: tptc@27b0000 { 17762306a36Sopenharmony_ci compatible = "ti,k2g-edma3-tptc", "ti,edma3-tptc"; 17862306a36Sopenharmony_ci reg = <0x027b0000 0x400>; 17962306a36Sopenharmony_ci power-domains = <&k2g_pds 0x4f>; 18062306a36Sopenharmony_ci}; 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_ciedma1_tptc1: tptc@27b8000 { 18362306a36Sopenharmony_ci compatible = "ti,k2g-edma3-tptc", "ti,edma3-tptc"; 18462306a36Sopenharmony_ci reg = <0x027b8000 0x400>; 18562306a36Sopenharmony_ci power-domains = <&k2g_pds 0x4f>; 18662306a36Sopenharmony_ci}; 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_cimmc0: mmc@23000000 { 18962306a36Sopenharmony_ci compatible = "ti,k2g-hsmmc", "ti,omap4-hsmmc"; 19062306a36Sopenharmony_ci reg = <0x23000000 0x400>; 19162306a36Sopenharmony_ci interrupts = <GIC_SPI 96 IRQ_TYPE_EDGE_RISING>; 19262306a36Sopenharmony_ci dmas = <&edma1 24 0>, <&edma1 25 0>; 19362306a36Sopenharmony_ci dma-names = "tx", "rx"; 19462306a36Sopenharmony_ci bus-width = <4>; 19562306a36Sopenharmony_ci ti,needs-special-reset; 19662306a36Sopenharmony_ci no-1-8-v; 19762306a36Sopenharmony_ci max-frequency = <96000000>; 19862306a36Sopenharmony_ci power-domains = <&k2g_pds 0xb>; 19962306a36Sopenharmony_ci clocks = <&k2g_clks 0xb 1>, <&k2g_clks 0xb 2>; 20062306a36Sopenharmony_ci clock-names = "fck", "mmchsdb_fck"; 20162306a36Sopenharmony_ci}; 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci------------------------------------------------------------------------------ 20462306a36Sopenharmony_ciDEPRECATED binding, new DTS files must use the ti,edma3-tpcc/ti,edma3-tptc 20562306a36Sopenharmony_cibinding. 20662306a36Sopenharmony_ci 20762306a36Sopenharmony_ciRequired properties: 20862306a36Sopenharmony_ci- compatible : "ti,edma3" 20962306a36Sopenharmony_ci- #dma-cells: Should be set to <1> 21062306a36Sopenharmony_ci Clients should use a single channel number per DMA request. 21162306a36Sopenharmony_ci- reg: Memory map for accessing module 21262306a36Sopenharmony_ci- interrupts: Exactly 3 interrupts need to be specified in the order: 21362306a36Sopenharmony_ci 1. Transfer completion interrupt. 21462306a36Sopenharmony_ci 2. Memory protection interrupt. 21562306a36Sopenharmony_ci 3. Error interrupt. 21662306a36Sopenharmony_ciOptional properties: 21762306a36Sopenharmony_ci- ti,hwmods: Name of the hwmods associated to the EDMA 21862306a36Sopenharmony_ci- ti,edma-xbar-event-map: Crossbar event to channel map 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ciDeprecated properties: 22162306a36Sopenharmony_ciListed here in case one wants to boot an old kernel with new DTB. These 22262306a36Sopenharmony_ciproperties might need to be added to the new DTS files. 22362306a36Sopenharmony_ci- ti,edma-regions: Number of regions 22462306a36Sopenharmony_ci- ti,edma-slots: Number of slots 22562306a36Sopenharmony_ci- dma-channels: Specify total DMA channels per CC 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_ciExample: 22862306a36Sopenharmony_ci 22962306a36Sopenharmony_ciedma: edma@49000000 { 23062306a36Sopenharmony_ci reg = <0x49000000 0x10000>; 23162306a36Sopenharmony_ci interrupt-parent = <&intc>; 23262306a36Sopenharmony_ci interrupts = <12 13 14>; 23362306a36Sopenharmony_ci compatible = "ti,edma3"; 23462306a36Sopenharmony_ci ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2"; 23562306a36Sopenharmony_ci #dma-cells = <1>; 23662306a36Sopenharmony_ci ti,edma-xbar-event-map = /bits/ 16 <1 12 23762306a36Sopenharmony_ci 2 13>; 23862306a36Sopenharmony_ci}; 239