forked from Minki/linux
9a1a34f3c8
Due to a hardware bug, reading memory (from the Accelerator Coherency Port) with a burst size equal to the maximum burst size allowed by the DMA hardware's buffer size will cause a hardware hang on the ARTPEC-6 SoC, where the only solution is a manual power cycle. On ARTPEC-6, this hardware bug does not trigger when writing memory (to the Accelerator Coherency Port) with a burst size equal to the maximum burst size allowed by the DMA hardware's buffer size. To avoid this hardware hang, introduce a new optional max-burst property for memory reads. For completeness, also introduce a max-burst property for memory writes. Signed-off-by: Niklas Cassel <niklas.cassel@axis.com> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
70 lines
1.9 KiB
Plaintext
70 lines
1.9 KiB
Plaintext
* Renesas "Type-AXI" NBPFAXI* DMA controllers
|
|
|
|
* DMA controller
|
|
|
|
Required properties
|
|
|
|
- compatible: must be one of
|
|
"renesas,nbpfaxi64dmac1b4"
|
|
"renesas,nbpfaxi64dmac1b8"
|
|
"renesas,nbpfaxi64dmac1b16"
|
|
"renesas,nbpfaxi64dmac4b4"
|
|
"renesas,nbpfaxi64dmac4b8"
|
|
"renesas,nbpfaxi64dmac4b16"
|
|
"renesas,nbpfaxi64dmac8b4"
|
|
"renesas,nbpfaxi64dmac8b8"
|
|
"renesas,nbpfaxi64dmac8b16"
|
|
- #dma-cells: must be 2: the first integer is a terminal number, to which this
|
|
slave is connected, the second one is flags. Flags is a bitmask
|
|
with the following bits defined:
|
|
|
|
#define NBPF_SLAVE_RQ_HIGH 1
|
|
#define NBPF_SLAVE_RQ_LOW 2
|
|
#define NBPF_SLAVE_RQ_LEVEL 4
|
|
|
|
Optional properties:
|
|
- max-burst-mem-read: limit burst size for memory reads
|
|
(DMA_MEM_TO_MEM/DMA_MEM_TO_DEV) to this value, specified in bytes, rather
|
|
than using the maximum burst size allowed by the hardware's buffer size.
|
|
- max-burst-mem-write: limit burst size for memory writes
|
|
(DMA_DEV_TO_MEM/DMA_MEM_TO_MEM) to this value, specified in bytes, rather
|
|
than using the maximum burst size allowed by the hardware's buffer size.
|
|
If both max-burst-mem-read and max-burst-mem-write are set, DMA_MEM_TO_MEM
|
|
will use the lower value.
|
|
|
|
You can use dma-channels and dma-requests as described in dma.txt, although they
|
|
won't be used, this information is derived from the compatibility string.
|
|
|
|
Example:
|
|
|
|
dma: dma-controller@48000000 {
|
|
compatible = "renesas,nbpfaxi64dmac8b4";
|
|
reg = <0x48000000 0x400>;
|
|
interrupts = <0 12 0x4
|
|
0 13 0x4
|
|
0 14 0x4
|
|
0 15 0x4
|
|
0 16 0x4
|
|
0 17 0x4
|
|
0 18 0x4
|
|
0 19 0x4>;
|
|
#dma-cells = <2>;
|
|
dma-channels = <8>;
|
|
dma-requests = <8>;
|
|
};
|
|
|
|
* DMA client
|
|
|
|
Required properties:
|
|
|
|
dmas and dma-names are required, as described in dma.txt.
|
|
|
|
Example:
|
|
|
|
#include <dt-bindings/dma/nbpfaxi.h>
|
|
|
|
...
|
|
dmas = <&dma 0 (NBPF_SLAVE_RQ_HIGH | NBPF_SLAVE_RQ_LEVEL)
|
|
&dma 1 (NBPF_SLAVE_RQ_HIGH | NBPF_SLAVE_RQ_LEVEL)>;
|
|
dma-names = "rx", "tx";
|