# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.621 -> 1.622 # drivers/usb/serial/io_edgeport.c 1.20 -> 1.21 # drivers/usb/serial/io_tables.h 1.4 -> 1.5 # drivers/usb/serial/io_fw_boot2.h 1.1 -> 1.2 # drivers/usb/serial/io_usbvend.h 1.7 -> 1.8 # drivers/usb/serial/io_fw_down2.h 1.1 -> 1.2 # drivers/usb/serial/io_ionsp.h 1.1 -> 1.2 # drivers/usb/serial/io_fw_down.h 1.1 -> 1.2 # drivers/usb/serial/io_edgeport.h 1.2 -> 1.3 # drivers/usb/serial/io_fw_down3.h 1.1 -> 1.2 # drivers/usb/serial/io_fw_boot.h 1.1 -> 1.2 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 02/08/29 greg@kroah.com 1.622 # USB: io_edgeport update due to usbserial core changes. # -------------------------------------------- # diff -Nru a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c --- a/drivers/usb/serial/io_edgeport.c Thu Aug 29 13:54:46 2002 +++ b/drivers/usb/serial/io_edgeport.c Thu Aug 29 13:54:46 2002 @@ -242,13 +242,9 @@ #include #include -#include -#include #include -#include #include #include -#include #include #include #include @@ -256,7 +252,7 @@ #include #include #include -#include +#include #include #ifdef CONFIG_USB_SERIAL_DEBUG @@ -274,7 +270,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v2.2" +#define DRIVER_VERSION "v2.3" #define DRIVER_AUTHOR "Greg Kroah-Hartman and David Iacovelli" #define DRIVER_DESC "Edgeport USB Serial Driver" @@ -372,8 +368,8 @@ struct edgeport_serial { char name[MAX_NAME_LEN+1]; /* string name of this device */ - EDGE_MANUF_DESCRIPTOR manuf_descriptor; /* the manufacturer descriptor */ - EDGE_BOOT_DESCRIPTOR boot_descriptor; /* the boot firmware descriptor */ + struct edge_manuf_descriptor manuf_descriptor; /* the manufacturer descriptor */ + struct edge_boot_descriptor boot_descriptor; /* the boot firmware descriptor */ struct edgeport_product_info product_info; /* Product Info */ __u8 interrupt_in_endpoint; /* the interrupt endpoint handle */ @@ -400,17 +396,17 @@ }; /* baud rate information */ -typedef struct _DIVISOR_TABLE_ENTRY { +struct divisor_table_entry { __u32 BaudRate; __u16 Divisor; -} DIVISOR_TABLE_ENTRY, *PDIVISOR_TABLE_ENTRY; +}; // // Define table of divisors for Rev A EdgePort/4 hardware // These assume a 3.6864MHz crystal, the standard /16, and // MCR.7 = 0. // -static DIVISOR_TABLE_ENTRY DivisorTable[] = { +static struct divisor_table_entry divisor_table[] = { { 75, 3072}, { 110, 2095}, /* 2094.545455 => 230450 => .0217 % over */ { 134, 1713}, /* 1713.011152 => 230398.5 => .00065% under */ @@ -510,7 +506,7 @@ __u16 BootBuildNumber; __u8 *BootImage; __u32 BootSize; - PEDGE_FIRMWARE_IMAGE_RECORD record; + struct edge_firmware_image_record *record; unsigned char *firmware; int response; @@ -566,13 +562,13 @@ firmware = BootImage; for (;;) { - record = (PEDGE_FIRMWARE_IMAGE_RECORD)firmware; + record = (struct edge_firmware_image_record *)firmware; response = rom_write (edge_serial->serial, record->ExtAddr, record->Addr, record->Len, &record->Data[0]); if (response < 0) { err("sram_write failed (%x, %x, %d)", record->ExtAddr, record->Addr, record->Len); break; } - firmware += sizeof (EDGE_FIRMWARE_IMAGE_RECORD) + record->Len; + firmware += sizeof (struct edge_firmware_image_record) + record->Len; if (firmware >= &BootImage[BootSize]) { break; } @@ -811,7 +807,8 @@ dbg("%s - txcredits for port%d = %d", __FUNCTION__, portNumber, edge_port->txCredits); /* tell the tty driver that something has changed */ - wake_up_interruptible(&edge_port->port->tty->write_wait); + if (edge_port->port->tty) + wake_up_interruptible(&edge_port->port->tty->write_wait); // Since we have more credit, check if more data can be sent send_more_port_data(edge_serial, edge_port); @@ -898,13 +895,15 @@ tty = edge_port->port->tty; - /* let the tty driver wakeup if it has a special write_wakeup function */ - if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && tty->ldisc.write_wakeup) { - (tty->ldisc.write_wakeup)(tty); - } + if (tty) { + /* let the tty driver wakeup if it has a special write_wakeup function */ + if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && tty->ldisc.write_wakeup) { + (tty->ldisc.write_wakeup)(tty); + } - /* tell the tty driver that something has changed */ - wake_up_interruptible(&tty->write_wait); + /* tell the tty driver that something has changed */ + wake_up_interruptible(&tty->write_wait); + } // Release the Write URB edge_port->write_in_progress = FALSE; @@ -953,7 +952,8 @@ tty = edge_port->port->tty; /* tell the tty driver that something has changed */ - wake_up_interruptible(&tty->write_wait); + if (tty) + wake_up_interruptible(&tty->write_wait); /* we have completed the command */ edge_port->commandPending = FALSE; @@ -987,133 +987,118 @@ if (edge_port == NULL) return -ENODEV; - ++port->open_count; - MOD_INC_USE_COUNT; - - if (!port->active) { - port->active = 1; - - /* force low_latency on so that our tty_push actually forces the data through, - otherwise it is scheduled, and with high data rates (like with OHCI) data - can get lost. */ + /* force low_latency on so that our tty_push actually forces the data through, + otherwise it is scheduled, and with high data rates (like with OHCI) data + can get lost. */ + if (port->tty) port->tty->low_latency = 1; + + /* see if we've set up our endpoint info yet (can't set it up in edge_startup + as the structures were not set up at that time.) */ + serial = port->serial; + edge_serial = (struct edgeport_serial *)serial->private; + if (edge_serial == NULL) { + return -ENODEV; + } + if (edge_serial->interrupt_in_buffer == NULL) { + struct usb_serial_port *port0 = &serial->port[0]; + + /* not set up yet, so do it now */ + edge_serial->interrupt_in_buffer = port0->interrupt_in_buffer; + edge_serial->interrupt_in_endpoint = port0->interrupt_in_endpointAddress; + edge_serial->interrupt_read_urb = port0->interrupt_in_urb; + edge_serial->bulk_in_buffer = port0->bulk_in_buffer; + edge_serial->bulk_in_endpoint = port0->bulk_in_endpointAddress; + edge_serial->read_urb = port0->read_urb; + edge_serial->bulk_out_endpoint = port0->bulk_out_endpointAddress; - /* see if we've set up our endpoint info yet (can't set it up in edge_startup - as the structures were not set up at that time.) */ - serial = port->serial; - edge_serial = (struct edgeport_serial *)serial->private; - if (edge_serial == NULL) { - port->active = 0; - port->open_count = 0; - MOD_DEC_USE_COUNT; - return -ENODEV; - } - if (edge_serial->interrupt_in_buffer == NULL) { - struct usb_serial_port *port0 = &serial->port[0]; - - /* not set up yet, so do it now */ - edge_serial->interrupt_in_buffer = port0->interrupt_in_buffer; - edge_serial->interrupt_in_endpoint = port0->interrupt_in_endpointAddress; - edge_serial->interrupt_read_urb = port0->interrupt_in_urb; - edge_serial->bulk_in_buffer = port0->bulk_in_buffer; - edge_serial->bulk_in_endpoint = port0->bulk_in_endpointAddress; - edge_serial->read_urb = port0->read_urb; - edge_serial->bulk_out_endpoint = port0->bulk_out_endpointAddress; + /* set up our interrupt urb */ + FILL_INT_URB(edge_serial->interrupt_read_urb, + serial->dev, + usb_rcvintpipe(serial->dev, + port0->interrupt_in_endpointAddress), + port0->interrupt_in_buffer, + edge_serial->interrupt_read_urb->transfer_buffer_length, + edge_interrupt_callback, edge_serial, + edge_serial->interrupt_read_urb->interval); - /* set up our interrupt urb */ - FILL_INT_URB(edge_serial->interrupt_read_urb, - serial->dev, - usb_rcvintpipe(serial->dev, - port0->interrupt_in_endpointAddress), - port0->interrupt_in_buffer, - edge_serial->interrupt_read_urb->transfer_buffer_length, - edge_interrupt_callback, edge_serial, - edge_serial->interrupt_read_urb->interval); - - /* set up our bulk in urb */ - FILL_BULK_URB(edge_serial->read_urb, serial->dev, - usb_rcvbulkpipe(serial->dev, port0->bulk_in_endpointAddress), - port0->bulk_in_buffer, - edge_serial->read_urb->transfer_buffer_length, - edge_bulk_in_callback, edge_serial); - - /* start interrupt read for this edgeport - * this interrupt will continue as long as the edgeport is connected */ - response = usb_submit_urb (edge_serial->interrupt_read_urb); - if (response) { - err("%s - Error %d submitting control urb", __FUNCTION__, response); - } + /* set up our bulk in urb */ + FILL_BULK_URB(edge_serial->read_urb, serial->dev, + usb_rcvbulkpipe(serial->dev, port0->bulk_in_endpointAddress), + port0->bulk_in_buffer, + edge_serial->read_urb->transfer_buffer_length, + edge_bulk_in_callback, edge_serial); + + /* start interrupt read for this edgeport + * this interrupt will continue as long as the edgeport is connected */ + response = usb_submit_urb (edge_serial->interrupt_read_urb); + if (response) { + err("%s - Error %d submitting control urb", __FUNCTION__, response); } - - /* initialize our wait queues */ - init_waitqueue_head(&edge_port->wait_open); - init_waitqueue_head(&edge_port->wait_chase); - init_waitqueue_head(&edge_port->delta_msr_wait); - init_waitqueue_head(&edge_port->wait_command); - - /* initialize our icount structure */ - memset (&(edge_port->icount), 0x00, sizeof(edge_port->icount)); - - /* initialize our port settings */ - edge_port->txCredits = 0; /* Can't send any data yet */ - edge_port->shadowMCR = MCR_MASTER_IE; /* Must always set this bit to enable ints! */ - edge_port->chaseResponsePending = FALSE; + } + + /* initialize our wait queues */ + init_waitqueue_head(&edge_port->wait_open); + init_waitqueue_head(&edge_port->wait_chase); + init_waitqueue_head(&edge_port->delta_msr_wait); + init_waitqueue_head(&edge_port->wait_command); + + /* initialize our icount structure */ + memset (&(edge_port->icount), 0x00, sizeof(edge_port->icount)); + + /* initialize our port settings */ + edge_port->txCredits = 0; /* Can't send any data yet */ + edge_port->shadowMCR = MCR_MASTER_IE; /* Must always set this bit to enable ints! */ + edge_port->chaseResponsePending = FALSE; + + /* send a open port command */ + edge_port->openPending = TRUE; + edge_port->open = FALSE; + response = send_iosp_ext_cmd (edge_port, IOSP_CMD_OPEN_PORT, 0); - /* send a open port command */ - edge_port->openPending = TRUE; - edge_port->open = FALSE; - response = send_iosp_ext_cmd (edge_port, IOSP_CMD_OPEN_PORT, 0); + if (response < 0) { + err("%s - error sending open port command", __FUNCTION__); + edge_port->openPending = FALSE; + return -ENODEV; + } - if (response < 0) { - err("%s - error sending open port command", __FUNCTION__); - edge_port->openPending = FALSE; - port->active = 0; - port->open_count = 0; - MOD_DEC_USE_COUNT; - return -ENODEV; - } - - /* now wait for the port to be completly opened */ - timeout = OPEN_TIMEOUT; - while (timeout && edge_port->openPending == TRUE) { - timeout = interruptible_sleep_on_timeout (&edge_port->wait_open, timeout); - } - - if (edge_port->open == FALSE) { - /* open timed out */ - dbg("%s - open timedout", __FUNCTION__); - edge_port->openPending = FALSE; - port->active = 0; - port->open_count = 0; - MOD_DEC_USE_COUNT; - return -ENODEV; - } - - /* create the txfifo */ - edge_port->txfifo.head = 0; - edge_port->txfifo.tail = 0; - edge_port->txfifo.count = 0; - edge_port->txfifo.size = edge_port->maxTxCredits; - edge_port->txfifo.fifo = kmalloc (edge_port->maxTxCredits, GFP_KERNEL); - - if (!edge_port->txfifo.fifo) { - dbg("%s - no memory", __FUNCTION__); - edge_close (port, filp); - return -ENOMEM; - } + /* now wait for the port to be completly opened */ + timeout = OPEN_TIMEOUT; + while (timeout && edge_port->openPending == TRUE) { + timeout = interruptible_sleep_on_timeout (&edge_port->wait_open, timeout); + } - /* Allocate a URB for the write */ - edge_port->write_urb = usb_alloc_urb (0); + if (edge_port->open == FALSE) { + /* open timed out */ + dbg("%s - open timedout", __FUNCTION__); + edge_port->openPending = FALSE; + return -ENODEV; + } - if (!edge_port->write_urb) { - dbg("%s - no memory", __FUNCTION__); - edge_close (port, filp); - return -ENOMEM; - } + /* create the txfifo */ + edge_port->txfifo.head = 0; + edge_port->txfifo.tail = 0; + edge_port->txfifo.count = 0; + edge_port->txfifo.size = edge_port->maxTxCredits; + edge_port->txfifo.fifo = kmalloc (edge_port->maxTxCredits, GFP_KERNEL); + + if (!edge_port->txfifo.fifo) { + dbg("%s - no memory", __FUNCTION__); + edge_close (port, filp); + return -ENOMEM; + } + + /* Allocate a URB for the write */ + edge_port->write_urb = usb_alloc_urb (0); - dbg("%s(%d) - Initialize TX fifo to %d bytes", __FUNCTION__, port->number, edge_port->maxTxCredits); + if (!edge_port->write_urb) { + dbg("%s - no memory", __FUNCTION__); + edge_close (port, filp); + return -ENOMEM; } + dbg("%s(%d) - Initialize TX fifo to %d bytes", __FUNCTION__, port->number, edge_port->maxTxCredits); + dbg("%s exited", __FUNCTION__); return 0; @@ -1243,56 +1228,49 @@ if ((edge_serial == NULL) || (edge_port == NULL)) return; - --port->open_count; + if (serial->dev) { + // block until tx is empty + block_until_tx_empty(edge_port); + + edge_port->closePending = TRUE; + + /* flush and chase */ + edge_port->chaseResponsePending = TRUE; + + dbg("%s - Sending IOSP_CMD_CHASE_PORT", __FUNCTION__); + status = send_iosp_ext_cmd (edge_port, IOSP_CMD_CHASE_PORT, 0); + if (status == 0) { + // block until chase finished + block_until_chase_response(edge_port); + } else { + edge_port->chaseResponsePending = FALSE; + } - if (port->open_count <= 0) { - if (serial->dev) { - // block until tx is empty - block_until_tx_empty(edge_port); - - edge_port->closePending = TRUE; - - /* flush and chase */ - edge_port->chaseResponsePending = TRUE; - - dbg("%s - Sending IOSP_CMD_CHASE_PORT", __FUNCTION__); - status = send_iosp_ext_cmd (edge_port, IOSP_CMD_CHASE_PORT, 0); - if (status == 0) { - // block until chase finished - block_until_chase_response(edge_port); - } else { - edge_port->chaseResponsePending = FALSE; - } + /* close the port */ + dbg("%s - Sending IOSP_CMD_CLOSE_PORT", __FUNCTION__); + send_iosp_ext_cmd (edge_port, IOSP_CMD_CLOSE_PORT, 0); - /* close the port */ - dbg("%s - Sending IOSP_CMD_CLOSE_PORT", __FUNCTION__); - send_iosp_ext_cmd (edge_port, IOSP_CMD_CLOSE_PORT, 0); - - //port->close = TRUE; - edge_port->closePending = FALSE; - edge_port->open = FALSE; - edge_port->openPending = FALSE; + //port->close = TRUE; + edge_port->closePending = FALSE; + edge_port->open = FALSE; + edge_port->openPending = FALSE; - if (edge_port->write_urb) { - usb_unlink_urb (edge_port->write_urb); - } - } - if (edge_port->write_urb) { - /* if this urb had a transfer buffer already (old transfer) free it */ - if (edge_port->write_urb->transfer_buffer != NULL) { - kfree(edge_port->write_urb->transfer_buffer); - } - usb_free_urb (edge_port->write_urb); + usb_unlink_urb (edge_port->write_urb); } - if (edge_port->txfifo.fifo) { - kfree(edge_port->txfifo.fifo); + } + + if (edge_port->write_urb) { + /* if this urb had a transfer buffer already (old transfer) free it */ + if (edge_port->write_urb->transfer_buffer != NULL) { + kfree(edge_port->write_urb->transfer_buffer); } - port->active = 0; - port->open_count = 0; + usb_free_urb (edge_port->write_urb); + } + if (edge_port->txfifo.fifo) { + kfree(edge_port->txfifo.fifo); } - MOD_DEC_USE_COUNT; dbg("%s exited", __FUNCTION__); } @@ -1446,7 +1424,7 @@ /* build the data header for the buffer and port that we are about to send out */ count = fifo->count; - buffer = kmalloc (count+2, GFP_KERNEL); + buffer = kmalloc (count+2, GFP_ATOMIC); if (buffer == NULL) { err("%s - no more kernel memory...", __FUNCTION__); edge_port->write_in_progress = FALSE; @@ -1591,6 +1569,10 @@ } tty = port->tty; + if (!tty) { + dbg ("%s - no tty available", __FUNCTION__); + return; + } /* if we are implementing XON/XOFF, send the stop character */ if (I_IXOFF(tty)) { @@ -1636,6 +1618,10 @@ } tty = port->tty; + if (!tty) { + dbg ("%s - no tty available", __FUNCTION__); + return; + } /* if we are implementing XON/XOFF, send the start character */ if (I_IXOFF(tty)) { @@ -1667,15 +1653,14 @@ { struct edgeport_port *edge_port = (struct edgeport_port *)(port->private); struct tty_struct *tty = port->tty; - unsigned int cflag = tty->termios->c_cflag; + unsigned int cflag; - dbg("%s - clfag %08x %08x iflag %08x %08x", __FUNCTION__, - tty->termios->c_cflag, - old_termios->c_cflag, - RELEVANT_IFLAG(tty->termios->c_iflag), - RELEVANT_IFLAG(old_termios->c_iflag) - ); + if (!port->tty || !port->tty->termios) { + dbg ("%s - no tty or termios", __FUNCTION__); + return; + } + cflag = tty->termios->c_cflag; /* check that they really want us to change something */ if (old_termios) { if ((cflag == old_termios->c_cflag) && @@ -1685,6 +1670,15 @@ } } + dbg("%s - clfag %08x iflag %08x", __FUNCTION__, + tty->termios->c_cflag, + RELEVANT_IFLAG(tty->termios->c_iflag)); + if (old_termios) { + dbg("%s - old clfag %08x old iflag %08x", __FUNCTION__, + old_termios->c_cflag, + RELEVANT_IFLAG(old_termios->c_iflag)); + } + dbg("%s - port %d", __FUNCTION__, port->number); if (edge_port == NULL) @@ -1732,6 +1726,9 @@ unsigned int result = 0; struct tty_struct *tty = edge_port->port->tty; + if (!tty) + return -ENOIOCTLCMD; + result = tty->read_cnt; dbg("%s(%d) = %d", __FUNCTION__, edge_port->port->number, result); @@ -2159,7 +2156,8 @@ handle_new_msr (edge_port, byte2); /* send the current line settings to the port so we are in sync with any further termios calls */ - change_port_settings (edge_port, edge_port->port->tty->termios); + if (edge_port->port->tty) + change_port_settings (edge_port, edge_port->port->tty->termios); /* we have completed the open */ edge_port->openPending = FALSE; @@ -2270,7 +2268,7 @@ } /* Place LSR data byte into Rx buffer */ - if (lsrData) { + if (lsrData && edge_port->port->tty) { tty_insert_flip_char(edge_port->port->tty, data, 0); tty_flip_buffer_push(edge_port->port->tty); } @@ -2442,7 +2440,7 @@ dbg("%s - %d, %d", __FUNCTION__, command, param); - buffer = kmalloc (10, GFP_KERNEL); + buffer = kmalloc (10, GFP_ATOMIC); if (!buffer) { err("%s - kmalloc(%d) failed.\n", __FUNCTION__, 10); return -ENOMEM; @@ -2543,7 +2541,7 @@ } // Alloc memory for the string of commands. - cmdBuffer = kmalloc (0x100, GFP_KERNEL); + cmdBuffer = kmalloc (0x100, GFP_ATOMIC); if (!cmdBuffer) { err("%s - kmalloc(%d) failed.\n", __FUNCTION__, 0x100); return -ENOMEM; @@ -2585,9 +2583,9 @@ dbg("%s - %d", __FUNCTION__, baudrate); - for (i = 0; i < NUM_ENTRIES(DivisorTable); i++) { - if ( DivisorTable[i].BaudRate == baudrate ) { - *divisor = DivisorTable[i].Divisor; + for (i = 0; i < NUM_ENTRIES(divisor_table); i++) { + if ( divisor_table[i].BaudRate == baudrate ) { + *divisor = divisor_table[i].Divisor; return 0; } } @@ -2629,7 +2627,7 @@ dbg("%s - write to %s register 0x%02x", (regNum == MCR) ? "MCR" : "LCR", __FUNCTION__, regValue); // Alloc memory for the string of commands. - cmdBuffer = kmalloc (0x10, GFP_KERNEL); + cmdBuffer = kmalloc (0x10, GFP_ATOMIC); if (cmdBuffer == NULL ) { return -ENOMEM; } @@ -2881,7 +2879,7 @@ ****************************************************************************/ static void load_application_firmware (struct edgeport_serial *edge_serial) { - PEDGE_FIRMWARE_IMAGE_RECORD record; + struct edge_firmware_image_record *record; unsigned char *firmware; unsigned char *FirmwareImage; int ImageSize; @@ -2919,13 +2917,13 @@ for (;;) { - record = (PEDGE_FIRMWARE_IMAGE_RECORD)firmware; + record = (struct edge_firmware_image_record *)firmware; response = sram_write (edge_serial->serial, record->ExtAddr, record->Addr, record->Len, &record->Data[0]); if (response < 0) { err("sram_write failed (%x, %x, %d)", record->ExtAddr, record->Addr, record->Len); break; } - firmware += sizeof (EDGE_FIRMWARE_IMAGE_RECORD) + record->Len; + firmware += sizeof (struct edge_firmware_image_record) + record->Len; if (firmware >= &FirmwareImage[ImageSize]) { break; } @@ -3039,9 +3037,6 @@ /* stop reads and writes on all ports */ for (i=0; i < serial->num_ports; ++i) { - while (serial->port[i].open_count > 0) { - edge_close (&serial->port[i], NULL); - } kfree (serial->port[i].private); serial->port[i].private = NULL; } diff -Nru a/drivers/usb/serial/io_edgeport.h b/drivers/usb/serial/io_edgeport.h --- a/drivers/usb/serial/io_edgeport.h Thu Aug 29 13:54:46 2002 +++ b/drivers/usb/serial/io_edgeport.h Thu Aug 29 13:54:46 2002 @@ -136,7 +136,6 @@ __u16 Strings[1]; /* Start of string block */ }; -typedef struct string_block STRING_BLOCK, *PSTRING_BLOCK; #endif diff -Nru a/drivers/usb/serial/io_fw_boot.h b/drivers/usb/serial/io_fw_boot.h --- a/drivers/usb/serial/io_fw_boot.h Thu Aug 29 13:54:46 2002 +++ b/drivers/usb/serial/io_fw_boot.h Thu Aug 29 13:54:46 2002 @@ -12,20 +12,18 @@ //Image structure definition #if !defined(DEFINED_EDGE_FIRMWARE_IMAGE_RECORD) #define DEFINED_EDGE_FIRMWARE_IMAGE_RECORD - typedef struct _EDGE_FIRMWARE_IMAGE_RECORD - { + struct edge_firmware_image_record { unsigned short ExtAddr; unsigned short Addr; unsigned short Len; unsigned char Data[0]; - } EDGE_FIRMWARE_IMAGE_RECORD, *PEDGE_FIRMWARE_IMAGE_RECORD; + }; - typedef struct _EDGE_FIRMWARE_VERSION_INFO - { + struct edge_firmware_version_info { unsigned char MajorVersion; unsigned char MinorVersion; unsigned short BuildNumber; - } EDGE_FIRMWARE_VERSION_INFO, *PEDGE_FIRMWARE_VERSION_INFO; + }; #endif @@ -549,7 +547,7 @@ 0x7e, 0x74, 0x00, 0x01, 0x02, 0x08, 0xd6, }; -static EDGE_FIRMWARE_VERSION_INFO IMAGE_VERSION_NAME = { +static struct edge_firmware_version_info IMAGE_VERSION_NAME = { 1, 12, 2 }; // Major, Minor, Build #undef IMAGE_VERSION_NAME diff -Nru a/drivers/usb/serial/io_fw_boot2.h b/drivers/usb/serial/io_fw_boot2.h --- a/drivers/usb/serial/io_fw_boot2.h Thu Aug 29 13:54:46 2002 +++ b/drivers/usb/serial/io_fw_boot2.h Thu Aug 29 13:54:46 2002 @@ -12,20 +12,18 @@ //Image structure definition #if !defined(DEFINED_EDGE_FIRMWARE_IMAGE_RECORD) #define DEFINED_EDGE_FIRMWARE_IMAGE_RECORD - typedef struct _EDGE_FIRMWARE_IMAGE_RECORD - { + struct edge_firmware_image_record { unsigned short ExtAddr; unsigned short Addr; unsigned short Len; unsigned char Data[0]; - } EDGE_FIRMWARE_IMAGE_RECORD, *PEDGE_FIRMWARE_IMAGE_RECORD; + }; - typedef struct _EDGE_FIRMWARE_VERSION_INFO - { + struct edge_firmware_version_info { unsigned char MajorVersion; unsigned char MinorVersion; unsigned short BuildNumber; - } EDGE_FIRMWARE_VERSION_INFO, *PEDGE_FIRMWARE_VERSION_INFO; + }; #endif @@ -539,7 +537,7 @@ }; -static EDGE_FIRMWARE_VERSION_INFO IMAGE_VERSION_NAME = { +static struct edge_firmware_version_info IMAGE_VERSION_NAME = { 2, 0, 3 }; // Major, Minor, Build #undef IMAGE_VERSION_NAME diff -Nru a/drivers/usb/serial/io_fw_down.h b/drivers/usb/serial/io_fw_down.h --- a/drivers/usb/serial/io_fw_down.h Thu Aug 29 13:54:46 2002 +++ b/drivers/usb/serial/io_fw_down.h Thu Aug 29 13:54:46 2002 @@ -12,20 +12,18 @@ //Image structure definition #if !defined(DEFINED_EDGE_FIRMWARE_IMAGE_RECORD) #define DEFINED_EDGE_FIRMWARE_IMAGE_RECORD - typedef struct _EDGE_FIRMWARE_IMAGE_RECORD - { + struct edge_firmware_image_record { unsigned short ExtAddr; unsigned short Addr; unsigned short Len; unsigned char Data[0]; - } EDGE_FIRMWARE_IMAGE_RECORD, *PEDGE_FIRMWARE_IMAGE_RECORD; + }; - typedef struct _EDGE_FIRMWARE_VERSION_INFO - { + struct edge_firmware_version_info { unsigned char MajorVersion; unsigned char MinorVersion; unsigned short BuildNumber; - } EDGE_FIRMWARE_VERSION_INFO, *PEDGE_FIRMWARE_VERSION_INFO; + }; #endif @@ -1114,7 +1112,7 @@ 0x08, 0xa5, 0xb8, 0x02, 0x03, 0x4e, 0xa0, 0x08, 0x22, 0x80, 0xfe, }; -static EDGE_FIRMWARE_VERSION_INFO IMAGE_VERSION_NAME = { +static struct edge_firmware_version_info IMAGE_VERSION_NAME = { 1, 12, 3 }; // Major, Minor, Build #undef IMAGE_VERSION_NAME diff -Nru a/drivers/usb/serial/io_fw_down2.h b/drivers/usb/serial/io_fw_down2.h --- a/drivers/usb/serial/io_fw_down2.h Thu Aug 29 13:54:46 2002 +++ b/drivers/usb/serial/io_fw_down2.h Thu Aug 29 13:54:46 2002 @@ -12,20 +12,18 @@ //Image structure definition #if !defined(DEFINED_EDGE_FIRMWARE_IMAGE_RECORD) #define DEFINED_EDGE_FIRMWARE_IMAGE_RECORD - typedef struct _EDGE_FIRMWARE_IMAGE_RECORD - { + struct edge_firmware_image_record { unsigned short ExtAddr; unsigned short Addr; unsigned short Len; unsigned char Data[0]; - } EDGE_FIRMWARE_IMAGE_RECORD, *PEDGE_FIRMWARE_IMAGE_RECORD; + }; - typedef struct _EDGE_FIRMWARE_VERSION_INFO - { - unsigned char MajorVersion; + struct edge_firmware_version_info { + unsigned char MajorVersion; unsigned char MinorVersion; unsigned short BuildNumber; - } EDGE_FIRMWARE_VERSION_INFO, *PEDGE_FIRMWARE_VERSION_INFO; + }; #endif @@ -1126,7 +1124,7 @@ 0x02, 0x03, 0x4e, 0xa0, 0x08, 0x22, 0x80, 0xfe, }; -static EDGE_FIRMWARE_VERSION_INFO IMAGE_VERSION_NAME = { +static struct edge_firmware_version_info IMAGE_VERSION_NAME = { 2, 0, 3 }; // Major, Minor, Build #undef IMAGE_VERSION_NAME diff -Nru a/drivers/usb/serial/io_fw_down3.h b/drivers/usb/serial/io_fw_down3.h --- a/drivers/usb/serial/io_fw_down3.h Thu Aug 29 13:54:46 2002 +++ b/drivers/usb/serial/io_fw_down3.h Thu Aug 29 13:54:46 2002 @@ -7,14 +7,14 @@ static int IMAGE_SIZE = 12166; -typedef struct _EDGE_FIRMWARE_VERSION_INFO +struct EDGE_FIRMWARE_VERSION_INFO { unsigned char MajorVersion; unsigned char MinorVersion; unsigned short BuildNumber; -} EDGE_FIRMWARE_VERSION_INFO, *PEDGE_FIRMWARE_VERSION_INFO; +}; -static EDGE_FIRMWARE_VERSION_INFO IMAGE_VERSION_NAME = +static struct EDGE_FIRMWARE_VERSION_INFO IMAGE_VERSION_NAME = { 4, 1, 0 // Major, Minor, Build diff -Nru a/drivers/usb/serial/io_ionsp.h b/drivers/usb/serial/io_ionsp.h --- a/drivers/usb/serial/io_ionsp.h Thu Aug 29 13:54:46 2002 +++ b/drivers/usb/serial/io_ionsp.h Thu Aug 29 13:54:46 2002 @@ -88,12 +88,12 @@ // Interrupt pipe // -typedef struct _INT_STATUS_PKT { +struct int_status_pkt { __u16 RxBytesAvail; // Additional bytes available to // be read from Bulk IN pipe __u16 TxCredits[ MAX_RS232_PORTS ]; // Additional space available in // given port's TxBuffer -} INT_STATUS_PKT, *PINT_STATUS_PKT; +}; #define GET_INT_STATUS_SIZE(NumPorts) (sizeof(__u16) + (sizeof(__u16) * (NumPorts))) diff -Nru a/drivers/usb/serial/io_tables.h b/drivers/usb/serial/io_tables.h --- a/drivers/usb/serial/io_tables.h Thu Aug 29 13:54:46 2002 +++ b/drivers/usb/serial/io_tables.h Thu Aug 29 13:54:46 2002 @@ -98,11 +98,9 @@ MODULE_DEVICE_TABLE (usb, id_table_combined); static struct usb_serial_device_type edgeport_1port_device = { + owner: THIS_MODULE, name: "Edgeport 1 port adapter", id_table: edgeport_1port_id_table, - needs_interrupt_in: MUST_HAVE, - needs_bulk_in: MUST_HAVE, - needs_bulk_out: MUST_HAVE, num_interrupt_in: 1, num_bulk_in: 1, num_bulk_out: 1, @@ -122,11 +120,9 @@ }; static struct usb_serial_device_type edgeport_2port_device = { + owner: THIS_MODULE, name: "Edgeport 2 port adapter", id_table: edgeport_2port_id_table, - needs_interrupt_in: MUST_HAVE, - needs_bulk_in: MUST_HAVE, - needs_bulk_out: MUST_HAVE, num_interrupt_in: 1, num_bulk_in: 1, num_bulk_out: 1, @@ -146,11 +142,9 @@ }; static struct usb_serial_device_type edgeport_4port_device = { + owner: THIS_MODULE, name: "Edgeport 4 port adapter", id_table: edgeport_4port_id_table, - needs_interrupt_in: MUST_HAVE, - needs_bulk_in: MUST_HAVE, - needs_bulk_out: MUST_HAVE, num_interrupt_in: 1, num_bulk_in: 1, num_bulk_out: 1, @@ -170,11 +164,9 @@ }; static struct usb_serial_device_type edgeport_8port_device = { + owner: THIS_MODULE, name: "Edgeport 8 port adapter", id_table: edgeport_8port_id_table, - needs_interrupt_in: MUST_HAVE, - needs_bulk_in: MUST_HAVE, - needs_bulk_out: MUST_HAVE, num_interrupt_in: 1, num_bulk_in: 1, num_bulk_out: 1, diff -Nru a/drivers/usb/serial/io_usbvend.h b/drivers/usb/serial/io_usbvend.h --- a/drivers/usb/serial/io_usbvend.h Thu Aug 29 13:54:46 2002 +++ b/drivers/usb/serial/io_usbvend.h Thu Aug 29 13:54:46 2002 @@ -107,6 +107,7 @@ #define ION_DEVICE_ID_BB_EDGEPORT_16_DUAL_CPU 0x012 // Half of an Edgeport/16 (the kind with 2 EP/8s) #define ION_DEVICE_ID_BB_EDGEPORT_8I 0x014 // Edgeport/8 RS422 (single-CPU) + /* Edgeport TI based devices */ #define ION_DEVICE_ID_TI_EDGEPORT_4 0x0201 /* Edgeport/4 RS232 */ #define ION_DEVICE_ID_TI_EDGEPORT_2 0x0205 /* Edgeport/2 RS232 */ @@ -207,11 +208,11 @@ // Version 2 format of DeviceParams. This format is longer (3C0h) // and starts lower in memory, at the uppermost 1K in ROM. #define EDGE_MANUF_DESC_ADDR 0x00FF7C00 -#define EDGE_MANUF_DESC_LEN sizeof(EDGE_MANUF_DESCRIPTOR) +#define EDGE_MANUF_DESC_LEN sizeof(struct edge_manuf_descriptor) // Boot params descriptor #define EDGE_BOOT_DESC_ADDR 0x00FF7FC0 -#define EDGE_BOOT_DESC_LEN sizeof(EDGE_BOOT_DESCRIPTOR) +#define EDGE_BOOT_DESC_LEN sizeof(struct edge_boot_descriptor) // Define the max block size that may be read or written // in a read/write RAM/ROM command. @@ -252,7 +253,7 @@ #define MAX_SERIALNUMBER_LEN 12 #define MAX_ASSEMBLYNUMBER_LEN 14 -typedef struct _EDGE_MANUF_DESCRIPTOR { +struct edge_manuf_descriptor { __u16 RootDescTable[0x10]; // C00 Root of descriptor tables (just a placeholder) __u8 DescriptorArea[0x2E0]; // C20 Descriptors go here, up to 2E0h (just a placeholder) @@ -297,7 +298,7 @@ __u8 IonConfig; // FBF Config byte for ION manufacturing use // FBF end of structure, total len = 3C0h -} EDGE_MANUF_DESCRIPTOR, *PEDGE_MANUF_DESCRIPTOR; +}; #define MANUF_DESC_VER_1 1 // Original definition of MANUF_DESC @@ -342,10 +343,10 @@ -#define MANUF_SERNUM_LENGTH sizeof(((PEDGE_MANUF_DESCRIPTOR)0)->SerialNumber) -#define MANUF_ASSYNUM_LENGTH sizeof(((PEDGE_MANUF_DESCRIPTOR)0)->AssemblyNumber) -#define MANUF_OEMASSYNUM_LENGTH sizeof(((PEDGE_MANUF_DESCRIPTOR)0)->OemAssyNumber) -#define MANUF_MANUFDATE_LENGTH sizeof(((PEDGE_MANUF_DESCRIPTOR)0)->ManufDate) +#define MANUF_SERNUM_LENGTH sizeof(((struct edge_manuf_descriptor *)0)->SerialNumber) +#define MANUF_ASSYNUM_LENGTH sizeof(((struct edge_manuf_descriptor *)0)->AssemblyNumber) +#define MANUF_OEMASSYNUM_LENGTH sizeof(((struct edge_manuf_descriptor *)0)->OemAssyNumber) +#define MANUF_MANUFDATE_LENGTH sizeof(((struct edge_manuf_descriptor *)0)->ManufDate) #define MANUF_ION_CONFIG_MASTER 0x80 // 1=Master mode, 0=Normal #define MANUF_ION_CONFIG_DIAG 0x40 // 1=Run h/w diags, 0=norm @@ -360,7 +361,7 @@ // - FF:xFFF. Note that the 930-mandated UCONFIG bytes are // included in this structure. // -typedef struct _EDGE_BOOT_DESCRIPTOR { +struct edge_boot_descriptor { __u8 Length; // C0 Desc length, per USB (= 40h) __u8 DescType; // C1 Desc type, per USB (= DEVICE type) __u8 DescVer; // C2 Desc version/format @@ -384,8 +385,7 @@ __u8 UConfig1; // F9 930-defined CPU configuration byte 1 __u8 Reserved3[6]; // FA -- unused, set to 0 -- // FF end of structure, total len = 80 - -} EDGE_BOOT_DESCRIPTOR, *PEDGE_BOOT_DESCRIPTOR; +}; #define BOOT_DESC_VER_1 1 // Original definition of BOOT_PARAMS @@ -442,7 +442,7 @@ __u8 CheckSum; }__attribute__((packed)); -typedef struct +struct ti_basic_descriptor { __u8 Power; // Self powered // bit 7: 1 - power switching supported @@ -457,7 +457,7 @@ __u16 DevPid; // PID Edgeport __u8 HubTime; // Time for power on to power good __u8 HubCurrent; // HUB Current = 100ma -} TI_BASIC_DESCRIPTOR, *PTI_BASIC_DESCRIPTOR __attribute__((packed)); +} __attribute__((packed)); #define TI_GET_CPU_REVISION(x) (__u8)((((x)>>4)&0x0f))