mirror of
https://github.com/torvalds/linux.git
synced 2024-12-30 23:02:08 +00:00
2155e69a9d
This cycle we have small update for: - updates to xilinx and zynqmp dma controllers - update reside calculation for rcar controller - more RSTify fixes for documentation - Add support for race free transfer termination and updating for users for that - Support for new rev of hidma with addition new APIs to get device match data in ACPI/OF - Random updates to bunch of other drivers -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJacYHYAAoJEHwUBw8lI4NHWc0P/0oMfdJXSCPbg/Sm/VrTwMR8 QvWbVxkOdeG/2L4JQYqzuHI1fWFjWV/bCdMqugTfoCs1HGr/JIEcUntM2WLIwCu6 lF8MjULfOiUieE5SmRj3pvMEKCVYQKVjQpffFRnfnHA7gtU8wpgUYjm9I8dYeat9 R6JVnqpTL+yrSocjBOZ/PoQy4oboe3TiYH+SOVLZozLUu89+/52i0U+orPYpYXVu fu59x8J1YnFxTwNC7RhwTkp1TYW7zse/DtTWQxjJJfxzW+5Gove+VdhmJmfaOQDR mJrSzn+dPrFbR6IFs4+XE7ja/lZn5Sjs8vRWktC6/KKQrkUlxOYKDyuoLRwZGLEy hCLJo7FRt4n4jV25P4mJB1p9ePOHfzxSD/myXF6o81fX8haBJMr9SmSnWBeiYJpe ybz+AvYHn7sDW8WwHJzyuN4WJgDcSkWHqNzx2kjF1k3sYNYqMN4W94+9VIx6oxrI fucyry6dNAL9wYEfF8hlnH/3A3PKpWs4zE+trxrCnrj3hvzo3pTbhH+/fhqhR+Wk PRoD+yVTVZcPR2F9lysqDX26Rpbq6yHv5IqCyDjnwDuLqwF5yzIODgJ/glkQ1D+F bpzVN7BJyz0MMGSQX7ExMcw7PHgnycVW/rNBLVZ6QtBuc1BaYQHdqIpXqzwQr+4T 8ewXGx5EVqCyYVnDty4y =7bH/ -----END PGP SIGNATURE----- Merge tag 'dmaengine-4.16-rc1' of git://git.infradead.org/users/vkoul/slave-dma Pull dmaengine updates from Vinod Koul: "This time is smallish update with updates mainly to drivers: - updates to xilinx and zynqmp dma controllers - update reside calculation for rcar controller - more RSTify fixes for documentation - add support for race free transfer termination and updating for users for that - support for new rev of hidma with addition new APIs to get device match data in ACPI/OF - random updates to bunch of other drivers" * tag 'dmaengine-4.16-rc1' of git://git.infradead.org/users/vkoul/slave-dma: (47 commits) dmaengine: dmatest: fix container_of member in dmatest_callback dmaengine: stm32-dmamux: Remove unnecessary platform_get_resource() error check dmaengine: sprd: statify 'sprd_dma_prep_dma_memcpy' dmaengine: qcom_hidma: simplify DT resource parsing dmaengine: xilinx_dma: Free BD consistent memory dmaengine: xilinx_dma: Fix warning variable prev set but not used dmaengine: xilinx_dma: properly configure the SG mode bit in the driver for cdma dmaengine: doc: format struct fields using monospace dmaengine: doc: fix bullet list formatting dmaengine: ti-dma-crossbar: Fix event mapping for TPCC_EVT_MUX_60_63 dmaengine: cppi41: Fix channel queues array size check dmaengine: imx-sdma: Add MODULE_FIRMWARE dmaengine: xilinx_dma: Fix typos dmaengine: xilinx_dma: Differentiate probe based on the ip type dmaengine: xilinx_dma: fix style issues from checkpatch dmaengine: xilinx_dma: Fix kernel doc warnings dmaengine: xilinx_dma: Fix race condition in the driver for multiple descriptor scenario dmaeninge: xilinx_dma: Fix bug in multiple frame stores scenario in vdma dmaengine: xilinx_dma: Check for channel idle state before submitting dma descriptor dmaengine: zynqmp_dma: Fix race condition in the probe ...
96 lines
3.5 KiB
Plaintext
96 lines
3.5 KiB
Plaintext
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 partitioned
|
|
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 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" for initial HW or
|
|
"qcom,hidma-1.1"/"qcom,hidma-1.2" for MSI capable HW.
|
|
- 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
|
|
|
|
Optional properties for MSI:
|
|
- msi-parent : See the generic MSI binding described in
|
|
devicetree/bindings/interrupt-controller/msi.txt for a description of the
|
|
msi-parent property.
|
|
|
|
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@5c050000 {
|
|
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@5c050000 {
|
|
compatible = "qcom,hidma-1.0";
|
|
reg = <0 0x5c050000 0x0 0x1000>,
|
|
<0 0x5c0b0000 0x0 0x1000>;
|
|
interrupts = <0 389 0>;
|
|
desc-count = <10>;
|
|
iommus = <&system_mmu>;
|
|
};
|