From: "John Stoffel" <stoffel@lucent.com> Quick patch to get my 8 port Cyclades Cyclom-Y ISA card to work. (It doesn't look to be very SMP-robust, but then the 2.4 dirver probably isn't either). 25-akpm/drivers/char/cyclades.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-) diff -puN drivers/char/cyclades.c~cyclades-isa-fix drivers/char/cyclades.c --- 25/drivers/char/cyclades.c~cyclades-isa-fix Wed Aug 27 15:02:03 2003 +++ 25-akpm/drivers/char/cyclades.c Wed Aug 27 15:05:59 2003 @@ -1050,14 +1050,14 @@ detect_isa_irq (volatile ucchar *address udelay(5000L); /* Enable the Tx interrupts on the CD1400 */ - save_flags(flags); cli(); + local_irq_save(flags); cy_writeb((u_long)address + (CyCAR<<index), 0); cyy_issue_cmd(address, CyCHAN_CTL|CyENB_XMTR, index); cy_writeb((u_long)address + (CyCAR<<index), 0); cy_writeb((u_long)address + (CySRER<<index), cy_readb(address + (CySRER<<index)) | CyTxRdy); - restore_flags(flags); + local_irq_restore(flags); /* Wait ... */ udelay(5000L); @@ -5665,7 +5665,7 @@ void cy_cleanup_module(void) { int i; - int e1; + int e1, e2; unsigned long flags; #ifndef CONFIG_CYZ_INTR @@ -5675,13 +5675,10 @@ cy_cleanup_module(void) } #endif /* CONFIG_CYZ_INTR */ - save_flags(flags); cli(); - if ((e1 = tty_unregister_driver(cy_serial_driver))) printk("cyc: failed to unregister Cyclades serial driver(%d)\n", e1); - restore_flags(flags); put_tty_driver(cy_serial_driver); for (i = 0; i < NR_CARDS; i++) { _