Merge tag 'dmaengine-4.6-rc1' of git://git.infradead.org/users/vkoul/slave-dma
Pull dmaengine updates from Vinod Koul: "This is smallish update with minor changes to core and new driver and usual updates. Nothing super exciting here.. - We have made slave address as physical to enable driver to do the mapping. - We now expose the maxburst for slave dma as new capability so clients can know this and program accordingly - addition of device synchronize callbacks on omap and edma. - pl330 updates to support DMAFLUSHP for Rockchip platforms. - Updates and improved sg handling in Xilinx VDMA driver. - New hidma qualcomm dma driver, though some bits are still in progress" * tag 'dmaengine-4.6-rc1' of git://git.infradead.org/users/vkoul/slave-dma: (40 commits) dmaengine: IOATDMA: revise channel reset workaround on CB3.3 platforms dmaengine: add Qualcomm Technologies HIDMA channel driver dmaengine: add Qualcomm Technologies HIDMA management driver dmaengine: hidma: Add Device Tree binding dmaengine: qcom_bam_dma: move to qcom directory dmaengine: tegra: Move of_device_id table near to its user dmaengine: xilinx_vdma: Remove unnecessary variable initializations dmaengine: sirf: use __maybe_unused to hide pm functions dmaengine: rcar-dmac: clear pertinence number of channels dmaengine: sh: shdmac: don't open code of_device_get_match_data() dmaengine: tegra: don't open code of_device_get_match_data() dmaengine: qcom_bam_dma: Make driver work for BE dmaengine: sun4i: support module autoloading dma/mic_x100_dma: IS_ERR() vs PTR_ERR() typo dmaengine: xilinx_vdma: Use readl_poll_timeout instead of do while loop's dmaengine: xilinx_vdma: Simplify spin lock handling dmaengine: xilinx_vdma: Fix issues with non-parking mode dmaengine: xilinx_vdma: Improve SG engine handling dmaengine: pl330: fix to support the burst mode dmaengine: make slave address physical ...
This commit is contained in:
@@ -15,6 +15,7 @@ Optional properties:
|
||||
cells in the dmas property of client device.
|
||||
- dma-channels: contains the total number of DMA channels supported by the DMAC
|
||||
- dma-requests: contains the total number of DMA requests supported by the DMAC
|
||||
- arm,pl330-broken-no-flushp: quirk for avoiding to execute DMAFLUSHP
|
||||
|
||||
Example:
|
||||
|
||||
|
89
Documentation/devicetree/bindings/dma/qcom_hidma_mgmt.txt
Normal file
89
Documentation/devicetree/bindings/dma/qcom_hidma_mgmt.txt
Normal file
@@ -0,0 +1,89 @@
|
||||
Qualcomm Technologies HIDMA Management interface
|
||||
|
||||
Qualcomm Technologies HIDMA is a high speed DMA device. It only supports
|
||||
memcpy and memset capabilities. It has been designed for virtualized
|
||||
environments.
|
||||
|
||||
Each HIDMA HW instance consists of multiple DMA channels. These channels
|
||||
share the same bandwidth. The bandwidth utilization can be parititioned
|
||||
among channels based on the priority and weight assignments.
|
||||
|
||||
There are only two priority levels and 15 weigh assignments possible.
|
||||
|
||||
Other parameters here determine how much of the system bus this HIDMA
|
||||
instance can use like maximum read/write request and and number of bytes to
|
||||
read/write in a single burst.
|
||||
|
||||
Main node required properties:
|
||||
- compatible: "qcom,hidma-mgmt-1.0";
|
||||
- reg: Address range for DMA device
|
||||
- dma-channels: Number of channels supported by this DMA controller.
|
||||
- max-write-burst-bytes: Maximum write burst in bytes that HIDMA can
|
||||
occupy the bus for in a single transaction. A memcpy requested is
|
||||
fragmented to multiples of this amount. This parameter is used while
|
||||
writing into destination memory. Setting this value incorrectly can
|
||||
starve other peripherals in the system.
|
||||
- max-read-burst-bytes: Maximum read burst in bytes that HIDMA can
|
||||
occupy the bus for in a single transaction. A memcpy request is
|
||||
fragmented to multiples of this amount. This parameter is used while
|
||||
reading the source memory. Setting this value incorrectly can starve
|
||||
other peripherals in the system.
|
||||
- max-write-transactions: This value is how many times a write burst is
|
||||
applied back to back while writing to the destination before yielding
|
||||
the bus.
|
||||
- max-read-transactions: This value is how many times a read burst is
|
||||
applied back to back while reading the source before yielding the bus.
|
||||
- channel-reset-timeout-cycles: Channel reset timeout in cycles for this SOC.
|
||||
Once a reset is applied to the HW, HW starts a timer for reset operation
|
||||
to confirm. If reset is not completed within this time, HW reports reset
|
||||
failure.
|
||||
|
||||
Sub-nodes:
|
||||
|
||||
HIDMA has one or more DMA channels that are used to move data from one
|
||||
memory location to another.
|
||||
|
||||
When the OS is not in control of the management interface (i.e. it's a guest),
|
||||
the channel nodes appear on their own, not under a management node.
|
||||
|
||||
Required properties:
|
||||
- compatible: must contain "qcom,hidma-1.0"
|
||||
- reg: Addresses for the transfer and event channel
|
||||
- interrupts: Should contain the event interrupt
|
||||
- desc-count: Number of asynchronous requests this channel can handle
|
||||
- iommus: required a iommu node
|
||||
|
||||
Example:
|
||||
|
||||
Hypervisor OS configuration:
|
||||
|
||||
hidma-mgmt@f9984000 = {
|
||||
compatible = "qcom,hidma-mgmt-1.0";
|
||||
reg = <0xf9984000 0x15000>;
|
||||
dma-channels = <6>;
|
||||
max-write-burst-bytes = <1024>;
|
||||
max-read-burst-bytes = <1024>;
|
||||
max-write-transactions = <31>;
|
||||
max-read-transactions = <31>;
|
||||
channel-reset-timeout-cycles = <0x500>;
|
||||
|
||||
hidma_24: dma-controller@0x5c050000 {
|
||||
compatible = "qcom,hidma-1.0";
|
||||
reg = <0 0x5c050000 0x0 0x1000>,
|
||||
<0 0x5c0b0000 0x0 0x1000>;
|
||||
interrupts = <0 389 0>;
|
||||
desc-count = <10>;
|
||||
iommus = <&system_mmu>;
|
||||
};
|
||||
};
|
||||
|
||||
Guest OS configuration:
|
||||
|
||||
hidma_24: dma-controller@0x5c050000 {
|
||||
compatible = "qcom,hidma-1.0";
|
||||
reg = <0 0x5c050000 0x0 0x1000>,
|
||||
<0 0x5c0b0000 0x0 0x1000>;
|
||||
interrupts = <0 389 0>;
|
||||
desc-count = <10>;
|
||||
iommus = <&system_mmu>;
|
||||
};
|
Reference in New Issue
Block a user