>
> Ick, this patch should be reverted, it should not be removing
> sx_hungup() for no reason. I think Hanna agrees with this.
Yup. Sorry. Not sure what happened there. Here is the patch
to replace the sx_hangup function. This is based off 2.5.70-bk3
and I have compiled it but dont have the hardware to test it.
Hanna
--- diff -Nrup -Xdontdiff linux-2.5.70-bk3/drivers/char/sx.c linux-sx/drivers/char/sx.c --- linux-2.5.70-bk3/drivers/char/sx.c Thu May 29 14:03:43 2003 +++ linux-sx/drivers/char/sx.c Thu May 29 14:11:39 2003 @@ -299,6 +299,7 @@ static void sx_enable_rx_interrupts (voi static int sx_get_CD (void * ptr); static void sx_shutdown_port (void * ptr); static int sx_set_real_termios (void *ptr); +static void sx_hungup (void *ptr); static void sx_close (void *ptr); static int sx_chars_in_buffer (void * ptr); static int sx_init_board (struct sx_board *board); @@ -379,6 +380,7 @@ static struct real_driver sx_real_driver sx_set_real_termios, sx_chars_in_buffer, sx_close, + sx_hungup, }; @@ -1499,6 +1501,39 @@ static int sx_open (struct tty_struct * } +/* I haven't the foggiest why the decrement use count has to happen + here. The whole linux serial drivers stuff needs to be redesigned. + My guess is that this is a hack to minimize the impact of a bug + elsewhere. Thinking about it some more. (try it sometime) Try + running minicom on a serial port that is driven by a modularized + driver. Have the modem hangup. Then remove the driver module. Then + exit minicom. I expect an "oops". -- REW */ +static void sx_hungup (void *ptr) +{ + /* + struct sx_port *port = ptr; + */ + func_enter (); + + /* Don't force the SX card to close. mgetty doesn't like it !!!!!! -- pvdl */ + /* For some reson we added this code. Don't know why anymore ;-( -- pvdl */ + /* + sx_setsignals (port, 0, 0); + sx_reconfigure_port(port); + sx_send_command (port, HS_CLOSE, 0, 0); + + if (sx_read_channel_byte (port, hi_hstat) != HS_IDLE_CLOSED) { + if (sx_send_command (port, HS_FORCE_CLOSED, -1, HS_IDLE_CLOSED) != 1) { + printk (KERN_ERR + "sx: sent the force_close command, but card didn't react\n"); + } else + sx_dprintk (SX_DEBUG_CLOSE, "sent the force_close command.\n"); + } + */ + func_exit (); +} + + static void sx_close (void *ptr) { struct sx_port *port = ptr;- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/