SPS (Smart Peripheral Switch) may be used as a DMA engine to move data in either the Peripheral-to-Peripheral (a.k.a. BAM-to-BAM) mode or the Peripheral-to-Memory (a.k.a. BAM-System) mode. SPS includes BAM (Bus Access Module) hardware block, BAM DMA peripheral, and pipe memory. Required property: - compatible: should be "qcom,msm-sps" or "qcom,msm-sps-4k" Optional properties: - reg: offset and size for the memory mapping, including maps for BAM DMA BAM, BAM DMA peripheral, pipe memory and reserved memory. - reg-names: indicates various resources passed to driver (via reg property) by name. "reg-names" examples are "bam_mem", "core_mem" , "pipe_mem" and "res_mem". - interrupts: IRQ line - qcom,device-type: specify the device configuration of BAM DMA and pipe memory. Can be one of 1 - With BAM DMA and without pipe memory 2 - With BAM DMA and with pipe memory 3 - Without BAM DMA and without pipe memory - qcom,pipe-attr-ee: BAM pipes are attributed to a specific EE, with which we can know the pipes belong to apps side and can have the error interrupts at the pipe level. - clocks: This property shall provide a list of entries each of which contains a phandle to clock controller device and a macro that is the clock's name in hardware.These should be "clock_rpm" as clock controller phandle and "clk_pnoc_sps_clk" as macro for "dfab_clk" and "clock_gcc" as clock controller phandle and "clk_gcc_bam_dma_ahb_clk" as macro for "dma_bam_pclk". - clock-names: This property shall contain the clock input names used by driver in same order as the clocks property.These should be "dfab_clk" and "dma_bam_pclk". Example: qcom,sps@f9980000 { compatible = "qcom,msm-sps"; reg = <0xf9984000 0x15000>, <0xf9999000 0xb000>, <0xfe803000 0x4800>; interrupts = <0 94 0>; qcom,device-type = <2>; qcom,pipe-attr-ee; clocks = <&clock_rpm clk_pnoc_sps_clk>, <&clock_gcc clk_gcc_bam_dma_ahb_clk>; clock-names = "dfab_clk", "dma_bam_pclk"; };