Sorry to cross-post but this is looking more like a Linux problem than a hardware one.
I'm trying to enable UART1 on our DM368 hardware (Appro IPNC SDK 4.x, psp 3.21.00.4), I'm pretty sure I've done all the correct hardware driver changes*, setting the pinmux, clocks, etc., but although the UART shows up in the startup logs, it does not get initialised (uart_open() is never called)
In the boot process it shows the following:
[ 0.263546] davinci_serial_init: uart0 initialised
[ 0.274028] davinci_serial_init: uart1 initialised
[ 0.547812] serial8250.0: ttyS0 at MMIO 0x1c20000 (irq = 40) is a 16550A
[ 0.569849] serial8250.0: ttyS1 at MMIO 0x1d06000 (irq = 41) is a 16550A
If I do ls /dev/ I can see ttyS1, if I echo text to /dev/ttyS1 it returns OK but nothing happens (confirmed with oscillioscope), if I do cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A mmio:0x01C20000 irq:40 tx:97998 rx:0 CTS|DSR
1: uart:16550A mmio:0x01D06000 irq:41 tx:0 rx:0 DSR
If I try to modify it I get an error:
> stty -F /dev/ttyS1
stty: /dev/ttyS1: Inappropriate ioctl for device
Here's the strange thing: If I modify bootargs to set the console to be ttyS1 (setenv bootargs 'console=ttyS1,115200n8 ....) UART1 works fine and reports:
cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A mmio:0x01C20000 irq:40 tx:0 rx:0 CTS|DSR
1: uart:16550A mmio:0x01D06000 irq:41 tx:11563 rx:0 RTS|DTR|DSR
Can anyone tell me what I've missed or done wrong?
(* = see http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/100/t/295760.aspx)