Skip to contentSkip to conversation

at91sam9x5: uart (not usart) broken

DISCUSSION Douglas Gilbert 2 participants 3 messages Aug 7, 2013

lore
Share & tools
lore
#0 lore raw

Between lk 3.10.0 and lk 3.11.0-rc4 the uarts (not usarts) have been broken in the at91sam9x5 family. The DT files have been re-factored for uarts but look correct.

So suspicion moves to the atmel_serial driver which enjoyed a lot of changes in June.

Tested on a at91sam9g25 (Aria G25) which is a member of the at91sam9x5 family with two uarts (four usarts and a debug serial port). The failure looks like this in dmesg:

console [ttyS0] enabled
f801c000.serial: ttyS1 at MMIO 0xf801c000 (irq = 23) is a ATMEL_SERIAL f8020000.serial: ttyS2 at MMIO 0xf8020000 (irq = 24) is a ATMEL_SERIAL f8024000.serial: ttyS3 at MMIO 0xf8024000 (irq = 25) is a ATMEL_SERIAL
atmel_usart: probe of f8040000.serial failed with error -2 f8028000.serial: ttyS4 at MMIO 0xf8028000 (irq = 32) is a ATMEL_SERIAL

The device at 0xf8040000 is uart0 . My DT file was trying to bring up uart0 but not uart1.

Doug Gilbert

#1 lore raw

Hello Doug,

Quoted 7 lines · Douglas Gilbert

Between lk 3.10.0 and lk 3.11.0-rc4 the uarts (not usarts) have been broken in the at91sam9x5 family. The DT files have been re-factored for uarts but look correct.

So suspicion moves to the atmel_serial driver which enjoyed a lot of changes in June.

My patch (the last one in log history) is adding error checks on clk_get and clk_enable (clk_prepare_enable) calls.
I think the issue you're having comes from these new checks, and the fact that uart clks DT entries are missing.

The previous version was just silently ignoring these errors. It may work if these clks (uart clks) are already enabled by bootstrap or bootloader.

Anyway, I think the cleaner way for resolving this issue is to apply the patch
I joined in attachment.

Could you test it (I don't have any sam9x5 boards), and if this works I'll submit
it.

Best Regards,

Boris

Quoted 11 lines

Tested on a at91sam9g25 (Aria G25) which is a member of the at91sam9x5 family with two uarts (four usarts and a debug serial port). The failure looks like this in dmesg:

console [ttyS0] enabled
f801c000.serial: ttyS1 at MMIO 0xf801c000 (irq = 23) is a ATMEL_SERIAL f8020000.serial: ttyS2 at MMIO 0xf8020000 (irq = 24) is a ATMEL_SERIAL f8024000.serial: ttyS3 at MMIO 0xf8024000 (irq = 25) is a ATMEL_SERIAL
atmel_usart: probe of f8040000.serial failed with error -2 f8028000.serial: ttyS4 at MMIO 0xf8028000 (irq = 32) is a ATMEL_SERIAL

Quoted 4 lines

The device at 0xf8040000 is uart0 . My DT file was trying to bring up uart0 but not uart1.

Doug Gilbert

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ARM-at91-add-missing-uart-clocks-DT-entries.patch
Type: text/x-patch
Size: 1172 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130807/4f82ce04/attachment.bin>

#2 lore raw
Quoted 20 lines · boris brezillon

Hello Doug,

Quoted 7 lines · Douglas Gilbert

Between lk 3.10.0 and lk 3.11.0-rc4 the uarts (not usarts) have been broken in the at91sam9x5 family. The DT files have been re-factored for uarts but look correct.

So suspicion moves to the atmel_serial driver which enjoyed a lot of changes in June.

My patch (the last one in log history) is adding error checks on clk_get and clk_enable (clk_prepare_enable) calls.
I think the issue you're having comes from these new checks, and the fact that uart clks DT entries are missing.

The previous version was just silently ignoring these errors. It may work if these clks (uart clks) are already enabled by bootstrap or bootloader.

Quoted 5 lines

Anyway, I think the cleaner way for resolving this issue is to apply the patch I joined in attachment.

Could you test it (I don't have any sam9x5 boards), and if this works I'll submit it.

Hi Boris,
Yes, your patch works with lk 3.11.0-rc4 on a at91sam9g25 (aria G25). So please apply to the current rc series.

Also since in the lk 3.10 series this is silently broken and/or works by accident (e.g. when a boot loader sets the uart clocks) then perhaps this fix should be sent to Greg K-H for inclusion in the lk 3.10.x stable series.

Doug Gilbert

Quoted 16 lines
Quoted 15 lines

Tested on a at91sam9g25 (Aria G25) which is a member of the at91sam9x5 family with two uarts (four usarts and a debug serial port). The failure looks like this in dmesg:

console [ttyS0] enabled
f801c000.serial: ttyS1 at MMIO 0xf801c000 (irq = 23) is a ATMEL_SERIAL f8020000.serial: ttyS2 at MMIO 0xf8020000 (irq = 24) is a ATMEL_SERIAL f8024000.serial: ttyS3 at MMIO 0xf8024000 (irq = 25) is a ATMEL_SERIAL
atmel_usart: probe of f8040000.serial failed with error -2 f8028000.serial: ttyS4 at MMIO 0xf8028000 (irq = 32) is a ATMEL_SERIAL

The device at 0xf8040000 is uart0 . My DT file was trying to bring up uart0 but not uart1.

Doug Gilbert