In order for proper usage and identifcation of the ttySA ports the sa_1100_register_uart will need to be called, either by default, or by machine specific calls. This is the function that maps the uart ports on the sa1100 arch to a specific ttySA number. Then syntax is sa1100_register_uart ( ttySA#, uart#) this function can be called for each of the uarts on the sa1100 arch this function is defined in linux/drivers/char/serial_sa1100.c void __init sa1100_register_uart(int idx, int port) { if (idx >= NR_PORTS) { printk(KERN_ERR __FUNCTION__ ": bad index number %d\n", idx); return; } switch (port) { case 1: sa1100_ports[idx].membase = (void *)&Ser1UTCR0; sa1100_ports[idx].mapbase = _Ser1UTCR0; sa1100_ports[idx].irq = IRQ_Ser1UART; sa1100_ports[idx].iotype = SERIAL_IO_MEM; sa1100_ports[idx].flags = ASYNC_BOOT_AUTOCONF; break; case 2: sa1100_ports[idx].membase = (void *)&Ser2UTCR0; sa1100_ports[idx].mapbase = _Ser2UTCR0; sa1100_ports[idx].irq = IRQ_Ser2ICP; sa1100_ports[idx].iotype = SERIAL_IO_MEM; sa1100_ports[idx].flags = ASYNC_BOOT_AUTOCONF; break; case 3: sa1100_ports[idx].membase = (void *)&Ser3UTCR0; sa1100_ports[idx].mapbase = _Ser3UTCR0; sa1100_ports[idx].irq = IRQ_Ser3UART; sa1100_ports[idx].iotype = SERIAL_IO_MEM; sa1100_ports[idx].flags = ASYNC_BOOT_AUTOCONF; break; default: printk(KERN_ERR __FUNCTION__ ": bad port number %d\n", port); } } this is an example call from linux/arch/arm/mach-sa1100/omnimeter.c static void __init omnimeter_map_io(void) { sa1100_map_io(); iotable_init(omnimeter_io_desc); sa1100_register_uart(0, 3); sa1100_register_uart(1, 1); } if the uart1 has not been inititized by the boot loader in uart mode instread of sdlc mode you will need to toggle the SUS bit int the SDCR0 register. an example of this can be found in the linux/arch/arm/mach-sa1100/assabet.c sa1100_register_uart(1, 2); if (machine_has_neponset()) { /* * When Neponset is attached, the first UART should be * UART3. That's what Angel is doing and many documents * are stating this. * We do the Neponset mapping even if Neponset support * isn't compiled in so the user will still get something on * the expected physical serial port. */ sa1100_register_uart(0, 3); sa1100_register_uart(2, 1); /* * Set SUS bit in SDCR0 so serial port 1 functions. * Its called GPCLKR0 in my SA1110 manual. */ Ser1SDCR0 |= SDCR0_SUS; } else { sa1100_register_uart_fns(&assabet_port_fns); sa1100_register_uart(0, 1); /* com port */ sa1100_register_uart(2, 3); /* radio module */ }