The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/device-tree/Bindings/dma/qcom_hidma_mgmt.txt

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 Qualcomm Technologies HIDMA Management interface
    2 
    3 Qualcomm Technologies HIDMA is a high speed DMA device. It only supports
    4 memcpy and memset capabilities. It has been designed for virtualized
    5 environments.
    6 
    7 Each HIDMA HW instance consists of multiple DMA channels. These channels
    8 share the same bandwidth. The bandwidth utilization can be partitioned
    9 among channels based on the priority and weight assignments.
   10 
   11 There are only two priority levels and 15 weigh assignments possible.
   12 
   13 Other parameters here determine how much of the system bus this HIDMA
   14 instance can use like maximum read/write request and number of bytes to
   15 read/write in a single burst.
   16 
   17 Main node required properties:
   18 - compatible: "qcom,hidma-mgmt-1.0";
   19 - reg: Address range for DMA device
   20 - dma-channels: Number of channels supported by this DMA controller.
   21 - max-write-burst-bytes: Maximum write burst in bytes that HIDMA can
   22   occupy the bus for in a single transaction. A memcpy requested is
   23   fragmented to multiples of this amount. This parameter is used while
   24   writing into destination memory. Setting this value incorrectly can
   25   starve other peripherals in the system.
   26 - max-read-burst-bytes: Maximum read burst in bytes that HIDMA can
   27   occupy the bus for in a single transaction. A memcpy request is
   28   fragmented to multiples of this amount. This parameter is used while
   29   reading the source memory. Setting this value incorrectly can starve
   30   other peripherals in the system.
   31 - max-write-transactions: This value is how many times a write burst is
   32   applied back to back while writing to the destination before yielding
   33   the bus.
   34 - max-read-transactions: This value is how many times a read burst is
   35   applied back to back while reading the source before yielding the bus.
   36 - channel-reset-timeout-cycles: Channel reset timeout in cycles for this SOC.
   37   Once a reset is applied to the HW, HW starts a timer for reset operation
   38   to confirm. If reset is not completed within this time, HW reports reset
   39   failure.
   40 
   41 Sub-nodes:
   42 
   43 HIDMA has one or more DMA channels that are used to move data from one
   44 memory location to another.
   45 
   46 When the OS is not in control of the management interface (i.e. it's a guest),
   47 the channel nodes appear on their own, not under a management node.
   48 
   49 Required properties:
   50 - compatible: must contain "qcom,hidma-1.0" for initial HW or
   51   "qcom,hidma-1.1"/"qcom,hidma-1.2" for MSI capable HW.
   52 - reg: Addresses for the transfer and event channel
   53 - interrupts: Should contain the event interrupt
   54 - desc-count: Number of asynchronous requests this channel can handle
   55 - iommus: required a iommu node
   56 
   57 Optional properties for MSI:
   58 - msi-parent : See the generic MSI binding described in
   59  devicetree/bindings/interrupt-controller/msi.txt for a description of the
   60  msi-parent property.
   61 
   62 Example:
   63 
   64 Hypervisor OS configuration:
   65 
   66         hidma-mgmt@f9984000 = {
   67                 compatible = "qcom,hidma-mgmt-1.0";
   68                 reg = <0xf9984000 0x15000>;
   69                 dma-channels = <6>;
   70                 max-write-burst-bytes = <1024>;
   71                 max-read-burst-bytes = <1024>;
   72                 max-write-transactions = <31>;
   73                 max-read-transactions = <31>;
   74                 channel-reset-timeout-cycles = <0x500>;
   75 
   76                 hidma_24: dma-controller@5c050000 {
   77                         compatible = "qcom,hidma-1.0";
   78                         reg = <0 0x5c050000 0x0 0x1000>,
   79                               <0 0x5c0b0000 0x0 0x1000>;
   80                         interrupts = <0 389 0>;
   81                         desc-count = <10>;
   82                         iommus = <&system_mmu>;
   83                 };
   84         };
   85 
   86 Guest OS configuration:
   87 
   88         hidma_24: dma-controller@5c050000 {
   89                 compatible = "qcom,hidma-1.0";
   90                 reg = <0 0x5c050000 0x0 0x1000>,
   91                       <0 0x5c0b0000 0x0 0x1000>;
   92                 interrupts = <0 389 0>;
   93                 desc-count = <10>;
   94                 iommus = <&system_mmu>;
   95         };

Cache object: 8f34e2aee3b4bea021fc2055bd08816b


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.