|
@@ -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>;
|
|
|
+ };
|