---- nozomi/nozomi.c.orig 2006-04-16 12:15:42.000000000 +0100
-+++ nozomi/nozomi.c 2006-04-19 18:27:29.000000000 +0100
+Index: nozomi-060209/nozomi.c
+===================================================================
+--- nozomi-060209.orig/nozomi.c 2007-06-04 13:22:47.338658712 +0200
++++ nozomi-060209/nozomi.c 2007-06-04 13:22:47.527629984 +0200
@@ -7,6 +7,9 @@
*
* Maintained by: Paul Hardwick, p.hardwick@option.com
} while(0)
#define GET_MEM(value__, addr__, length__) \
-@@ -265,7 +268,7 @@
+@@ -265,7 +269,7 @@
/* There are two types of nozomi cards, one with 2048 memory and with 8192 memory */
typedef enum {
F32_2 = 2048, /* Has 512 bytes downlink and uplink * 2 -> 2048 */
} card_type_t;
/* Two different toggle channels exist */
-@@ -438,12 +441,12 @@
+@@ -438,12 +442,12 @@
u32 base_addr;
u8 closing;
card_type_t card_type;
config_table_t config_table; /* Configuration table */
struct pci_dev *pdev;
-@@ -490,7 +493,7 @@
+@@ -490,7 +494,7 @@
/* Used to store interrupt variables */
typedef struct {
} irq_t;
MODULE_DEVICE_TABLE(pci, nozomi_pci_tbl);
-@@ -1345,9 +1348,9 @@
+@@ -1345,9 +1349,9 @@
u32 offset = dc->base_addr + dc->card_type/2;
int i;
dc->ier_last_written = 0;
dc->closing = 0;
-@@ -1366,13 +1369,16 @@
+@@ -1366,13 +1370,16 @@
static void tty_flip_queue_function(void *tmp_dc) {
dc_t *dc = (dc_t*) tmp_dc;
int i;
}
}
}
-@@ -1555,7 +1561,11 @@
+@@ -1555,7 +1562,11 @@
static void tty_do_close(dc_t *dc, port_t *port) {
if ( !port->tty_open_count ) {
goto exit;
-@@ -1569,7 +1579,9 @@
+@@ -1569,7 +1580,9 @@
if ( port->tty_open_count == 0) {
D1("close: %d", port->token_dl );
}
exit:
-@@ -1679,8 +1691,11 @@
+@@ -1679,8 +1692,11 @@
s32 index = get_index(tty);
port_t *port = get_port_by_tty(tty);
dc_t *dc = get_dc_by_tty(tty);
tty->low_latency = 1;
tty->driver_data = port;
-@@ -1698,7 +1713,9 @@
+@@ -1698,7 +1714,9 @@
if ( port->tty_open_count == 1) {
port->rx_data = port->tx_data = 0;
D1("open: %d", port->token_dl );
}
up(&port->tty_sem);
-@@ -1722,6 +1739,7 @@
+@@ -1722,6 +1740,7 @@
int rval = -EINVAL;
dc_t *dc = get_dc_by_tty(tty);
port_t *port = (port_t *) tty->driver_data;
/* D1( "WRITEx: %d, index = %d", count, index); */
-@@ -1729,7 +1747,10 @@
+@@ -1729,7 +1748,10 @@
return -ENODEV;
}
if (! port->tty_open_count) {
D1( " ");
-@@ -1752,6 +1773,7 @@
+@@ -1752,6 +1774,7 @@
goto exit;
}
// CTS is only valid on the modem channel
if ( port == &(dc->port[PORT_MDM]) ) {
if ( port->ctrl_dl.CTS ) {
-@@ -1763,6 +1785,7 @@
+@@ -1763,6 +1786,7 @@
} else {
enable_transmit_ul(port->tty_index, dc );
}
exit:
up(&port->tty_sem);
-@@ -1782,7 +1805,9 @@
+@@ -1782,7 +1806,9 @@
return 0;
}
if (! port->tty_open_count) {
goto exit;
-@@ -1969,6 +1994,8 @@
+@@ -1969,6 +1995,8 @@
static int ntty_ioctl(struct tty_struct *tty, struct file *file, unsigned int cmd, unsigned long arg) {
port_t *port = (port_t *) tty->driver_data;
int mask;
int rval = -ENOIOCTLCMD;
-@@ -1991,7 +2018,9 @@
+@@ -1991,7 +2019,9 @@
rval = ntty_ioctl_tiocgicount(tty, file, cmd, arg);
break;
case TIOCMGET:
break;
case TIOCMSET:
rval = ntty_tiocmset(tty, file, arg);
-@@ -2000,20 +2029,24 @@
+@@ -2000,20 +2030,24 @@
if (get_user(mask, (unsigned long *) arg))
return -EFAULT;