linux/drivers/serial
Julien BLACHE c65b15cfd6 [SERIAL] IP22: fix serial console hangs
The patch below fixes serial console hangs as seen on IP22
machines. Typically, while booting, the machine hangs for ~1 minute
displaying "INIT: ", then the same thing happens again when init
enters in the designated runlevel and finally the getty process on
ttyS0 hangs indefinitely (though strace'ing it helps).

strace (-e raw=ioctl, otherwise the ioctl() translation is utterly
bogus) reveals that getty hangs on ioctl() 0x540f which happens to be
TCSETSW (I saw it hang on another console ioctl() but couldn't
reproduce that one).

A diff between ip22zilog and sunzilog revealed the following
differences:
 1. the channel A flag being set on up.port.flags instead of up.flags
 2. the channel A flag being set on what is marked as being channel B
 3. sunzilog has a call to uart_update_timeout(port, termios->c_cflag, baud);
    at the end of sunzilog_set_termios(), which ip22zilog lacks (on
    purpose ?)

The patch below addresses point 1 and fixes the serial console hangs
just fine. However point 2 should be investigated by someone familiar
with the IP22 Zilog; it's probably OK as is but even if it is, a
comment in ip22zilog.c is badly needed.

Point 3 is left as an exercise for whoever feels like digging into
ip22zilog :)

These are the main obvious differences between ip22zilog and
sunzilog. Newer versions of sunzilog (Linus's git tree as of today)
are more close to ip22zilog as the sbus_{write,read}b have been
changed into simple {write,read}b, which shrinks the diff by a fair
amount. Resyncing both drivers should be doable in a few hours time
now for someone familiar with the IP22 Zilog hardware.

Signed-off-by: Julien BLACHE <jb@jblache.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2006-07-09 21:11:09 +01:00
..
cpm_uart Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
jsm [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
8250_accent.c [SERIAL] Use an enum for serial8250 platform device IDs 2005-09-08 16:04:41 +01:00
8250_acorn.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
8250_au1x00.c [SERIAL] AMD Alchemy UART: claim memory range 2006-04-30 11:15:58 +01:00
8250_boca.c [SERIAL] Use an enum for serial8250 platform device IDs 2005-09-08 16:04:41 +01:00
8250_early.c [SERIAL] kernel console should send CRLF not LFCR 2006-03-20 20:00:09 +00:00
8250_fourport.c [SERIAL] Use an enum for serial8250 platform device IDs 2005-09-08 16:04:41 +01:00
8250_gsc.c [PARISC] I/O-Space must be ioremap_nocache()'d 2006-03-30 17:48:42 +00:00
8250_hp300.c [PATCH] hp300: fix driver_register() return handling, remove dio_module_init() 2006-03-25 08:22:53 -08:00
8250_hub6.c [SERIAL] Use an enum for serial8250 platform device IDs 2005-09-08 16:04:41 +01:00
8250_mca.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
8250_pci.c Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-serial 2006-07-03 21:31:05 -07:00
8250_pnp.c [PATCH] SERIAL: allow shared 8250_pnp interrupts 2006-07-03 15:26:58 -07:00
8250.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
8250.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
21285.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
68328serial.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
68328serial.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
68360serial.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
amba-pl010.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
amba-pl011.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
at91_serial.c [ARM] 3710/1: AT91 Serial: Use GPIO API 2006-07-05 14:31:13 +01:00
clps711x.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
crisv10.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
crisv10.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
dz.c [SERIAL] dz: Fix compilation error 2006-07-09 21:11:09 +01:00
dz.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
icom.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
icom.h [PATCH] serial/icom: Remove custom msescs_to_jiffies() macro 2005-06-25 16:25:01 -07:00
imx.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
ioc3_serial.c [PATCH] Altix: ioc3 serial support 2006-01-14 18:25:20 -08:00
ioc4_serial.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
ip22zilog.c [SERIAL] IP22: fix serial console hangs 2006-07-09 21:11:09 +01:00
ip22zilog.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Kconfig [ARM] 3639/1: S3C2412: serial port support 2006-06-24 21:21:32 +01:00
m32r_sio_reg.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
m32r_sio.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
m32r_sio.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
Makefile [ARM] 3571/1: netX: serial driver for Hilscher netX 2006-06-19 13:29:07 +01:00
mcfserial.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
mcfserial.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
mpc52xx_uart.c Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-serial 2006-07-03 21:31:05 -07:00
mpsc.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
mux.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
netx-serial.c [ARM] 3571/1: netX: serial driver for Hilscher netX 2006-06-19 13:29:07 +01:00
pmac_zilog.c [POWERPC] Add new interrupt mapping core and change platforms to use it 2006-07-03 21:36:01 +10:00
pmac_zilog.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pxa.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
s3c2410.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
sa1100.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
serial_core.c Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-serial 2006-07-03 21:31:05 -07:00
serial_cs.c [PATCH] pcmcia: another ID for serial_cs.c 2006-06-30 22:09:10 +02:00
serial_lh7a40x.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
serial_txx9.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
sh-sci.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
sh-sci.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
sn_console.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
suncore.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
suncore.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sunhv.c [SERIAL] sunhv: Convert to of_driver layer. 2006-06-30 14:13:38 -07:00
sunsab.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
sunsab.h [SUNSAB]: Defer register updates until transmitter is idle. 2005-05-11 11:34:32 -07:00
sunsu.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
sunzilog.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
sunzilog.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
v850e_uart.c [PATCH] irq-flags: serial: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
vr41xx_siu.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00