Hi everybody,
with kernel 5.17, at91sam9g25 running at 400MHz I discovered drop outs
while I write data (64 to 128B) to ttyS by one call of write(). At speed
230400 or 115200 Baud. It is not transmitted at once, there are random
spaces long 200us to 1ms. It should use DMA so I think it could be
transmitted at once.
Is there everything OK with DMA or some special setting needed?
dmesg:
[ 1.636666] bus: 'platform': __driver_probe_device: matched device
f801c000.serial with driver at91_usart_mode
[ 1.636666] bus: 'platform': really_probe: probing driver
at91_usart_mode with device f801c000.serial
[ 1.636666] pinctrl-at91 ahb:apb:pinctrl@fffff400: usart0-0: 2 0:0
[ 1.636666] pinctrl-at91 ahb:apb:pinctrl@fffff400: maps: function
usart0 group usart0-0 num 3
[ 1.636666] pinctrl-at91 ahb:apb:pinctrl@fffff400: usart0_rts-0: 1 0:2
[ 1.636666] pinctrl-at91 ahb:apb:pinctrl@fffff400: maps: function
usart0 group usart0_rts-0 num 2
[ 1.636666] pinctrl-at91 ahb:apb:pinctrl@fffff400: found group
selector 4 for usart0-0
[ 1.636666] pinctrl-at91 ahb:apb:pinctrl@fffff400: found group
selector 5 for usart0_rts-0
[ 1.636666] at91_usart_mode f801c000.serial: no init pinctrl state
[ 1.636666] pinctrl-at91 ahb:apb:pinctrl@fffff400: enable function
usart0 group usart0-0
[ 1.636666] pinctrl-at91 ahb:apb:pinctrl@fffff400: enable function
usart0 group usart0_rts-0
[ 1.639999] at91_usart_mode f801c000.serial: no sleep pinctrl state
[ 1.643333] at91_usart_mode f801c000.serial: no idle pinctrl state
[ 1.643333] Registering platform device 'atmel_usart_serial.1.auto'.
Parent at f801c000.serial
[ 1.643333] device: 'atmel_usart_serial.1.auto': device_add
[ 1.643333] bus: 'platform': add device atmel_usart_serial.1.auto
[ 1.643333] bus: 'platform': __driver_probe_device: matched device
atmel_usart_serial.1.auto with driver atmel_usart_serial
[ 1.643333] bus: 'platform': really_probe: probing driver
atmel_usart_serial with device atmel_usart_serial.1.auto
[ 1.643333] atmel_usart_serial atmel_usart_serial.1.auto: no of_node;
not parsing pinctrl DT
[ 1.643333] atmel_usart_serial atmel_usart_serial.1.auto: no default
pinctrl state
[ 1.643333] atmel_usart_serial atmel_usart_serial.1.auto: GPIO lookup
for consumer rs485-term
[ 1.643333] atmel_usart_serial atmel_usart_serial.1.auto: using
device tree for GPIO lookup
[ 1.646666] atmel_usart_serial atmel_usart_serial.1.auto: using
lookup tables for GPIO lookup
[ 1.646666] atmel_usart_serial atmel_usart_serial.1.auto: No GPIO
consumer rs485-term found
[ 1.649999] atmel_usart_serial.1.auto: ttyS2 at MMIO 0xf801c000 (irq
= 24, base_baud = 8333333) is a ATMEL_SERIAL
[ 1.656666] driver: 'atmel_usart_serial': driver_bound: bound to
device 'atmel_usart_serial.1.auto'
[ 1.656666] bus: 'platform': really_probe: bound device
atmel_usart_serial.1.auto to driver atmel_usart_serial
[ 1.656666] driver: 'at91_usart_mode': driver_bound: bound to device
'f801c000.serial'
[ 1.656666] bus: 'platform': really_probe: bound device
f801c000.serial to driver at91_usart_mode
[ 41.606666] atmel_usart_serial atmel_usart_serial.1.auto: using
dma0chan6 for rx DMA transfers
[ 41.613333] atmel_usart_serial atmel_usart_serial.1.auto: using
dma0chan7 for tx DMA transfers
With kernel 4.5 spaces are there too, but shorter and less frequent.
Thanks for any help,
Jiri