Re: [PATCH 00/16] STM32 configure UART nodes for DMA
From: Alexandre TORGUE <alexandre.torgue@foss.st.com>
Date: 2022-02-04 13:25:39
Also in:
linux-devicetree, lkml
Hi Ahmad On 2/3/22 18:25, Ahmad Fatoum wrote:
Hello Erwan, On 03.02.22 18:10, Erwan Le Ray wrote:quoted
Add DMA configuration to UART nodes in stm32mp15x (SOC level) and remove it at board level to keep current PIO behavior when needed. For stm32-ed1 and stm32-dkx boards, UART4 (console) and UART7 (no HW flow control pin available) are kept in PIO mode, while USART3 is now configured in DMA mode. UART4 (console UART) has to be kept in irq mode, as DMA support for console has been removed from the driver by commit e359b4411c28 ("serial: stm32: fix threaded interrupt handling").Do I understand correctly that your first patch breaks consoles of most/all boards, because they will briefly use DMA, which is refused by the stm32-usart driver and then you add a patch for each board to fix that breakage?
We have two solutions and both have pro/drawbacks. The first one (Erwan ones, can break the boot if the patch is taken "alone". Your proposition avoids this breakage but deletes a non define property (which is a bit weird). However I prefer to keep a functional behavior, and keep Ahmad proposition. Ahmad, just one question, dt-bindings check doesn't complain about it ? Cheers Alex
Such intermittent breakage makes bisection a hassle. /delete-property/ is a no-op when the property doesn't exist, so you could move the first patch to the very end to avoid intermittent breakage. I also think that the driver's behavior is a bit harsh. I think it would be better for the UART driver to print a warning and fall back to PIO for console instead of outright refusing and rendering the system silent. That's not mutually exclusive with your patch series here, of course. Cheers, Ahmadquoted
For other stm32mp15x-based boards, current configuration is kept for all UART instances. Erwan Le Ray (16): ARM: dts: stm32: add DMA configuration to UART nodes on stm32mp151 ARM: dts: stm32: keep uart4 behavior on stm32mp157c-ed1 ARM: dts: stm32: keep uart4 and uart7 behavior on stm32mp15xx-dkx ARM: dts: stm32: keep uart4 behavior on icore-stm32mp1-ctouch2 ARM: dts: stm32: keep uart4 behavior on icore-stm32mp1-edimm2.2 ARM: dts: stm32: keep uart4 behavior on stm32mp157a-iot-box ARM: dts: stm32: keep uart nodes behavior on stm32mp1-microdev2.0-of7 ARM: dts: stm32: keep uart nodes behavior on stm32mp1-microdev2.0 ARM: dts: stm32: keep uart nodes behavior on stm32mp157a-stinger96 ARM: dts: stm32: keep uart4 behavior on stm32mp157c-lxa-mc1 ARM: dts: stm32: keep uart4 behavior on stm32mp157c-odyssey ARM: dts: stm32: keep uart nodes behavior on stm32mp15xx-dhcom-drc02 ARM: dts: stm32: keep uart nodes behavior on stm32mp15xx-dhcom-pdk2 ARM: dts: stm32: keep uart nodes behavior on stm32mp15xx-dhcom-picoitx ARM: dts: stm32: keep uart4 behavior on stm32mp15xx-dhcom-som ARM: dts: stm32: keep uart nodes behavior on stm32mp15xx-dhcor-avenger96 arch/arm/boot/dts/stm32mp151.dtsi | 21 +++++++++++++++++++ .../stm32mp157a-icore-stm32mp1-ctouch2.dts | 2 ++ .../stm32mp157a-icore-stm32mp1-edimm2.2.dts | 2 ++ arch/arm/boot/dts/stm32mp157a-iot-box.dts | 2 ++ ...157a-microgea-stm32mp1-microdev2.0-of7.dts | 4 ++++ ...32mp157a-microgea-stm32mp1-microdev2.0.dts | 4 ++++ arch/arm/boot/dts/stm32mp157a-stinger96.dtsi | 6 ++++++ arch/arm/boot/dts/stm32mp157c-ed1.dts | 2 ++ arch/arm/boot/dts/stm32mp157c-lxa-mc1.dts | 2 ++ arch/arm/boot/dts/stm32mp157c-odyssey.dts | 2 ++ .../arm/boot/dts/stm32mp15xx-dhcom-drc02.dtsi | 4 ++++ arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi | 4 ++++ .../boot/dts/stm32mp15xx-dhcom-picoitx.dtsi | 4 ++++ arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi | 2 ++ .../boot/dts/stm32mp15xx-dhcor-avenger96.dtsi | 6 ++++++ arch/arm/boot/dts/stm32mp15xx-dkx.dtsi | 4 ++++ 16 files changed, 71 insertions(+)
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel