[PATCH 3/3] bsps/microblaze: Fix UART transmit interrupt

Sebastian Huber sebastian.huber at embedded-brains.de
Thu Mar 30 05:55:27 UTC 2023


On 29.03.23 21:22, Alex White wrote:
> diff --git a/bsps/microblaze/shared/dev/serial/uartlite.c b/bsps/microblaze/shared/dev/serial/uartlite.c
> index e2007ee24a..f1b3c013a0 100644
> --- a/bsps/microblaze/shared/dev/serial/uartlite.c
> +++ b/bsps/microblaze/shared/dev/serial/uartlite.c
> @@ -47,10 +47,6 @@ static void microblaze_uart_interrupt( void *arg )
>       char c = (char) XUartLite_ReadReg( ctx->address, XUL_RX_FIFO_OFFSET );
>       rtems_termios_enqueue_raw_characters( tty, &c, 1 );
>     }
> -
> -  while ( ctx->transmitting && !XUartLite_IsTransmitEmpty( ctx->address ) ) {
> -    rtems_termios_dequeue_characters( tty, 1 );
> -  }
>   }
>   #endif
>   
> @@ -81,6

I don't know the hardware, but this patch is very strange. Does it 
really work?

Maybe it should just change the loop to:

   while ( ctx->transmitting && XUartLite_IsTransmitEmpty( ctx->address 
) ) {
     rtems_termios_dequeue_characters( tty, 1 );
   }

When the transmit register is empty, you can dequeue the transmitted 
char from the Termios transmit queue.

-- 
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber at embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/


More information about the devel mailing list