Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: stm32: add DMA configuration to UART nodes on stm32mp151

Add DMA configuration in stm32mp15x uart nodes by selecting dma direct
mode and alternate REQ/ACK dma protocol for uart.

DMA direct mode allows to bypass DMA FIFO. Each DMA request immediately
initiates a transfer from/to the memory. This allows USART to get data
transferred, even when the transfer ends before the DMA FIFO completion.

Default REQ/ACK DMA protocol consists in maintaining ACK signal up to the
removal of REQuest and the transfer completion.
In case of alternative REQ/ACK protocol, ACK de-assertion does not wait the
removal of the REQuest, but only the transfer completion.
Due to a possible DMA stream lock when transferring data to/from STM32
USART/UART, select this alternative protocol in STM32 USART/UART nodes.

Signed-off-by: Valentin Caron <valentin.caron@foss.st.com>
Signed-off-by: Erwan Le Ray <erwan.leray@foss.st.com>
Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>

authored by

Erwan Le Ray and committed by
Alexandre Torgue
0f18f728 7a5faaee

+21
+21
arch/arm/boot/dts/stm32mp151.dtsi
··· 455 455 interrupts-extended = <&exti 27 IRQ_TYPE_LEVEL_HIGH>; 456 456 clocks = <&rcc USART2_K>; 457 457 wakeup-source; 458 + dmas = <&dmamux1 43 0x400 0x15>, 459 + <&dmamux1 44 0x400 0x11>; 460 + dma-names = "rx", "tx"; 458 461 status = "disabled"; 459 462 }; 460 463 ··· 467 464 interrupts-extended = <&exti 28 IRQ_TYPE_LEVEL_HIGH>; 468 465 clocks = <&rcc USART3_K>; 469 466 wakeup-source; 467 + dmas = <&dmamux1 45 0x400 0x15>, 468 + <&dmamux1 46 0x400 0x11>; 469 + dma-names = "rx", "tx"; 470 470 status = "disabled"; 471 471 }; 472 472 ··· 479 473 interrupts-extended = <&exti 30 IRQ_TYPE_LEVEL_HIGH>; 480 474 clocks = <&rcc UART4_K>; 481 475 wakeup-source; 476 + dmas = <&dmamux1 63 0x400 0x15>, 477 + <&dmamux1 64 0x400 0x11>; 478 + dma-names = "rx", "tx"; 482 479 status = "disabled"; 483 480 }; 484 481 ··· 491 482 interrupts-extended = <&exti 31 IRQ_TYPE_LEVEL_HIGH>; 492 483 clocks = <&rcc UART5_K>; 493 484 wakeup-source; 485 + dmas = <&dmamux1 65 0x400 0x15>, 486 + <&dmamux1 66 0x400 0x11>; 487 + dma-names = "rx", "tx"; 494 488 status = "disabled"; 495 489 }; 496 490 ··· 600 588 interrupts-extended = <&exti 32 IRQ_TYPE_LEVEL_HIGH>; 601 589 clocks = <&rcc UART7_K>; 602 590 wakeup-source; 591 + dmas = <&dmamux1 79 0x400 0x15>, 592 + <&dmamux1 80 0x400 0x11>; 593 + dma-names = "rx", "tx"; 603 594 status = "disabled"; 604 595 }; 605 596 ··· 612 597 interrupts-extended = <&exti 33 IRQ_TYPE_LEVEL_HIGH>; 613 598 clocks = <&rcc UART8_K>; 614 599 wakeup-source; 600 + dmas = <&dmamux1 81 0x400 0x15>, 601 + <&dmamux1 82 0x400 0x11>; 602 + dma-names = "rx", "tx"; 615 603 status = "disabled"; 616 604 }; 617 605 ··· 696 678 interrupts-extended = <&exti 29 IRQ_TYPE_LEVEL_HIGH>; 697 679 clocks = <&rcc USART6_K>; 698 680 wakeup-source; 681 + dmas = <&dmamux1 71 0x400 0x15>, 682 + <&dmamux1 72 0x400 0x11>; 683 + dma-names = "rx", "tx"; 699 684 status = "disabled"; 700 685 }; 701 686