2021-06-07 02:31 PM
I've noticed when booting one of our board designs with a STM32MP157C in openstlinux-5.4-dunfell-mp1-20-11-12 with Weston Wayland under the STM32MP157-Ecosystem-v2.1.0 that multiple times when the kernel is loading I'll see the following messages output via std-out..
[ 1.661544] 4000e000.serial: ttySTM0 at MMIO 0x4000e000 (irq = 45, base_baud = 6250000) is a stm32-usart
[ 2.824397] printk: console [ttySTM0] enabled
[ 2.830231] stm32-usart 4000f000.serial: failed to get alias id, errno -19
..additionally, later on in the after the Weston Wayland Compositor initializes, I begin getting the following output...
[ OK ] Started Weston Wayland Compositor (on tty7).
[ 21.050754] dma dma1chan0: Request not allowe[ 21.056455] stm32-usart 4000e000.serial: rx dma pre[ 21.122445] dma dma1chan0: Request not allowe[ 21.126782] stm32-usart 4000e000.serial: rx dma pre[ 31.177662] dma dma1chan0: Request not allowe[ 31.181949] stm32-usart 4000e000.serial: rx dma pre[ 31.213137] dma dma1chan0: Request not allowe[ 31.217425] stm32-usart 4000e000.serial: rx dma pre[ 31.301740] dma dma1chan0: Request not allowe[ 31.307117] stm32-usart 4000e000.serial: rx dma pre[ 31.343051] dma dma1chan0: Request not allowe[ 31.347372] stm32-usart 4000e000.serial: rx dma pre[ 31.423030] dma dma1chan0: Request not allowe[ 31.427532] stm32-usart 4000e000.serial: rx dma pre[ 33.762935] reg11: [ 33.765128] reg18: [ 33.767238] usb33: supp[ 33.769696] r[ 33.771196] r[ 33.777466] [ 41.483019] dma dma1chan0: Request not allowe[ 41.487304] stm32-usart 4000e000.serial: rx dma pre[ 41.521778] dma dma1chan0: Request not allowe[ 41.528703] stm32-usart 4000e000.serial: rx dma pre[ 41.608479] dma dma1chan0: Request not allowe
I'm having trouble interpreting the meaning of this error -19, but I'm assuming this is likely to do with something going wrong in my device tree? As seen below, I'm aliasing serial0 to usart2, which I'm presuming is presented a sttySTM0 to the kernel.
/* USER CODE BEGIN root */
aliases {
serial0 = &usart2;
serial1 = &usart1;
};
chosen {
stdout-path = "serial0:115200n8";
};
..I appear to have everything I'm aware of present to define usart2 though, see below..
usart2_pins_mx: usart2_mx-0 {
pins1 {
pinmux = <STM32_PINMUX('D', 5, AF7)>; /* USART2_TX */
bias-disable;
drive-push-pull;
slew-rate = <0>;
};
pins2 {
pinmux = <STM32_PINMUX('D', 6, AF7)>; /* USART2_RX */
bias-disable;
};
};
usart2_sleep_pins_mx: usart2_sleep_mx-0 {
pins {
pinmux = <STM32_PINMUX('D', 5, ANALOG)>, /* USART2_TX */
<STM32_PINMUX('D', 6, ANALOG)>; /* USART2_RX */
};
};
&usart2{
pinctrl-names = "default", "sleep";
pinctrl-0 = <&usart2_pins_mx>;
pinctrl-1 = <&usart2_sleep_pins_mx>;
status = "okay";
/* USER CODE BEGIN usart2 */
/* USER CODE END usart2 */
};
..so I'm having difficulty understanding why the alias is not able to be found.. I lack experience debugging a situation reported by the kernel like this, so any possible help that can be provided would be greatly appreciated.
2021-06-24 07:30 AM
Hello KWatt.2 (Community Member)
[ 2.830231] stm32-usart 4000f000.serial: failed to get alias id, errno -19
you use USART2 but 0x4000f000 is linked to USART3 an alias is defined elsewhere in an other DT ?
also you defined:
serial0 = &usart2;
serial1 = &usart1;
Do you use &usart1?
Either remove USART3 if no use.
&uart3 {
status = "disabled";
};
Do you use usart3 instead usart1?
serial1 = &usart3;
Regards,
Olivier