Loading drivers/usb/serial/Kconfig +12 −12 Original line number Diff line number Diff line Loading @@ -304,19 +304,19 @@ config USB_SERIAL_KEYSPAN config USB_SERIAL_KEYSPAN_MPR bool "USB Keyspan MPR Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the Keyspan MPR converter. config USB_SERIAL_KEYSPAN_USA28 bool "USB Keyspan USA-28 Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-28 converter. config USB_SERIAL_KEYSPAN_USA28X bool "USB Keyspan USA-28X Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-28X converter. Be sure you have a USA-28X, there are also 28XA and 28XB Loading @@ -324,7 +324,7 @@ config USB_SERIAL_KEYSPAN_USA28X config USB_SERIAL_KEYSPAN_USA28XA bool "USB Keyspan USA-28XA Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-28XA converter. Be sure you have a USA-28XA, there are also 28X and 28XB Loading @@ -332,7 +332,7 @@ config USB_SERIAL_KEYSPAN_USA28XA config USB_SERIAL_KEYSPAN_USA28XB bool "USB Keyspan USA-28XB Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-28XB converter. Be sure you have a USA-28XB, there are also 28X and 28XA Loading @@ -340,43 +340,43 @@ config USB_SERIAL_KEYSPAN_USA28XB config USB_SERIAL_KEYSPAN_USA19 bool "USB Keyspan USA-19 Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-19 converter. config USB_SERIAL_KEYSPAN_USA18X bool "USB Keyspan USA-18X Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-18X converter. config USB_SERIAL_KEYSPAN_USA19W bool "USB Keyspan USA-19W Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-19W converter. config USB_SERIAL_KEYSPAN_USA19QW bool "USB Keyspan USA-19QW Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-19QW converter. config USB_SERIAL_KEYSPAN_USA19QI bool "USB Keyspan USA-19QI Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-19QI converter. config USB_SERIAL_KEYSPAN_USA49W bool "USB Keyspan USA-49W Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-49W converter. config USB_SERIAL_KEYSPAN_USA49WLC bool "USB Keyspan USA-49WLC Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-49WLC converter. Loading drivers/usb/serial/keyspan.c +42 −36 Original line number Diff line number Diff line Loading @@ -105,6 +105,8 @@ #include <linux/tty_flip.h> #include <linux/module.h> #include <linux/spinlock.h> #include <linux/firmware.h> #include <linux/ihex.h> #include <asm/uaccess.h> #include <linux/usb.h> #include <linux/usb/serial.h> Loading Loading @@ -1339,13 +1341,13 @@ static void keyspan_close(struct usb_serial_port *port, struct file *filp) port->tty = NULL; } /* download the firmware to a pre-renumeration device */ static int keyspan_fake_startup (struct usb_serial *serial) { int response; const struct ezusb_hex_record *record; const struct ihex_binrec *record; char *fw_name; const struct firmware *fw; dbg("Keyspan startup version %04x product %04x", le16_to_cpu(serial->dev->descriptor.bcdDevice), Loading @@ -1359,72 +1361,60 @@ static int keyspan_fake_startup (struct usb_serial *serial) /* Select firmware image on the basis of idProduct */ switch (le16_to_cpu(serial->dev->descriptor.idProduct)) { case keyspan_usa28_pre_product_id: record = &keyspan_usa28_firmware[0]; fw_name = "USA28"; fw_name = "keyspan/usa28.fw"; break; case keyspan_usa28x_pre_product_id: record = &keyspan_usa28x_firmware[0]; fw_name = "USA28X"; fw_name = "keyspan/usa28x.fw"; break; case keyspan_usa28xa_pre_product_id: record = &keyspan_usa28xa_firmware[0]; fw_name = "USA28XA"; fw_name = "keyspan/usa28xa.fw"; break; case keyspan_usa28xb_pre_product_id: record = &keyspan_usa28xb_firmware[0]; fw_name = "USA28XB"; fw_name = "keyspan/usa28xb.fw"; break; case keyspan_usa19_pre_product_id: record = &keyspan_usa19_firmware[0]; fw_name = "USA19"; fw_name = "keyspan/usa19.fw"; break; case keyspan_usa19qi_pre_product_id: record = &keyspan_usa19qi_firmware[0]; fw_name = "USA19QI"; fw_name = "keyspan/usa19qi.fw"; break; case keyspan_mpr_pre_product_id: record = &keyspan_mpr_firmware[0]; fw_name = "MPR"; fw_name = "keyspan/mpr.fw"; break; case keyspan_usa19qw_pre_product_id: record = &keyspan_usa19qw_firmware[0]; fw_name = "USA19QI"; fw_name = "keyspan/usa19qw.fw"; break; case keyspan_usa18x_pre_product_id: record = &keyspan_usa18x_firmware[0]; fw_name = "USA18X"; fw_name = "keyspan/usa18x.fw"; break; case keyspan_usa19w_pre_product_id: record = &keyspan_usa19w_firmware[0]; fw_name = "USA19W"; fw_name = "keyspan/usa19w.fw"; break; case keyspan_usa49w_pre_product_id: record = &keyspan_usa49w_firmware[0]; fw_name = "USA49W"; fw_name = "keyspan/usa49w.fw"; break; case keyspan_usa49wlc_pre_product_id: record = &keyspan_usa49wlc_firmware[0]; fw_name = "USA49WLC"; fw_name = "keyspan/usa49wlc.fw"; break; default: record = NULL; fw_name = "Unknown"; break; dev_err(&serial->dev->dev, "Unknown product ID (%04x)\n", le16_to_cpu(serial->dev->descriptor.idProduct)); return 1; } if (record == NULL) { if (request_ihex_firmware(&fw, fw_name, &serial->dev->dev)) { dev_err(&serial->dev->dev, "Required keyspan firmware image (%s) unavailable.\n", fw_name); return(1); } Loading @@ -1434,19 +1424,22 @@ static int keyspan_fake_startup (struct usb_serial *serial) /* download the firmware image */ response = ezusb_set_reset(serial, 1); while(record->address != 0xffff) { response = ezusb_writememory(serial, record->address, record = (const struct ihex_binrec *)fw->data; while (record) { response = ezusb_writememory(serial, be32_to_cpu(record->addr), (unsigned char *)record->data, record->data_size, 0xa0); be16_to_cpu(record->len), 0xa0); if (response < 0) { dev_err(&serial->dev->dev, "ezusb_writememory failed for Keyspan" "firmware (%d %04X %p %d)\n", response, record->address, record->data, record->data_size); response, be32_to_cpu(record->addr), record->data, be16_to_cpu(record->len)); break; } record++; record = ihex_next_binrec(record); } release_firmware(fw); /* bring device out of reset. Renumeration will occur in a moment and the new device will bind to the real driver */ response = ezusb_set_reset(serial, 0); Loading Loading @@ -2756,6 +2749,19 @@ MODULE_AUTHOR( DRIVER_AUTHOR ); MODULE_DESCRIPTION( DRIVER_DESC ); MODULE_LICENSE("GPL"); MODULE_FIRMWARE("keyspan/usa28.fw"); MODULE_FIRMWARE("keyspan/usa28x.fw"); MODULE_FIRMWARE("keyspan/usa28xa.fw"); MODULE_FIRMWARE("keyspan/usa28xb.fw"); MODULE_FIRMWARE("keyspan/usa19.fw"); MODULE_FIRMWARE("keyspan/usa19qi.fw"); MODULE_FIRMWARE("keyspan/mpr.fw"); MODULE_FIRMWARE("keyspan/usa19qw.fw"); MODULE_FIRMWARE("keyspan/usa18x.fw"); MODULE_FIRMWARE("keyspan/usa19w.fw"); MODULE_FIRMWARE("keyspan/usa49w.fw"); MODULE_FIRMWARE("keyspan/usa49wlc.fw"); module_param(debug, bool, S_IRUGO | S_IWUSR); MODULE_PARM_DESC(debug, "Debug enabled or not"); drivers/usb/serial/keyspan.h +0 −84 Original line number Diff line number Diff line Loading @@ -103,90 +103,6 @@ static int keyspan_usa67_send_setup (struct usb_serial *serial, struct usb_serial_port *port, int reset_port); /* Struct used for firmware - increased size of data section to allow Keyspan's 'C' firmware struct to be used unmodified */ struct ezusb_hex_record { __u16 address; __u8 data_size; __u8 data[64]; }; /* Conditionally include firmware images, if they aren't included create a null pointer instead. Current firmware images aren't optimised to remove duplicate addresses in the image itself. */ #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA28 #include "keyspan_usa28_fw.h" #else static const struct ezusb_hex_record *keyspan_usa28_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA28X #include "keyspan_usa28x_fw.h" #else static const struct ezusb_hex_record *keyspan_usa28x_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA28XA #include "keyspan_usa28xa_fw.h" #else static const struct ezusb_hex_record *keyspan_usa28xa_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA28XB #include "keyspan_usa28xb_fw.h" #else static const struct ezusb_hex_record *keyspan_usa28xb_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA19 #include "keyspan_usa19_fw.h" #else static const struct ezusb_hex_record *keyspan_usa19_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA19QI #include "keyspan_usa19qi_fw.h" #else static const struct ezusb_hex_record *keyspan_usa19qi_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_MPR #include "keyspan_mpr_fw.h" #else static const struct ezusb_hex_record *keyspan_mpr_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA19QW #include "keyspan_usa19qw_fw.h" #else static const struct ezusb_hex_record *keyspan_usa19qw_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA18X #include "keyspan_usa18x_fw.h" #else static const struct ezusb_hex_record *keyspan_usa18x_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA19W #include "keyspan_usa19w_fw.h" #else static const struct ezusb_hex_record *keyspan_usa19w_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA49W #include "keyspan_usa49w_fw.h" #else static const struct ezusb_hex_record *keyspan_usa49w_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA49WLC #include "keyspan_usa49wlc_fw.h" #else static const struct ezusb_hex_record *keyspan_usa49wlc_firmware = NULL; #endif /* Values used for baud rate calculation - device specific */ #define KEYSPAN_INVALID_BAUD_RATE (-1) #define KEYSPAN_BAUD_RATE_OK (0) Loading Loading
drivers/usb/serial/Kconfig +12 −12 Original line number Diff line number Diff line Loading @@ -304,19 +304,19 @@ config USB_SERIAL_KEYSPAN config USB_SERIAL_KEYSPAN_MPR bool "USB Keyspan MPR Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the Keyspan MPR converter. config USB_SERIAL_KEYSPAN_USA28 bool "USB Keyspan USA-28 Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-28 converter. config USB_SERIAL_KEYSPAN_USA28X bool "USB Keyspan USA-28X Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-28X converter. Be sure you have a USA-28X, there are also 28XA and 28XB Loading @@ -324,7 +324,7 @@ config USB_SERIAL_KEYSPAN_USA28X config USB_SERIAL_KEYSPAN_USA28XA bool "USB Keyspan USA-28XA Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-28XA converter. Be sure you have a USA-28XA, there are also 28X and 28XB Loading @@ -332,7 +332,7 @@ config USB_SERIAL_KEYSPAN_USA28XA config USB_SERIAL_KEYSPAN_USA28XB bool "USB Keyspan USA-28XB Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-28XB converter. Be sure you have a USA-28XB, there are also 28X and 28XA Loading @@ -340,43 +340,43 @@ config USB_SERIAL_KEYSPAN_USA28XB config USB_SERIAL_KEYSPAN_USA19 bool "USB Keyspan USA-19 Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-19 converter. config USB_SERIAL_KEYSPAN_USA18X bool "USB Keyspan USA-18X Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-18X converter. config USB_SERIAL_KEYSPAN_USA19W bool "USB Keyspan USA-19W Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-19W converter. config USB_SERIAL_KEYSPAN_USA19QW bool "USB Keyspan USA-19QW Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-19QW converter. config USB_SERIAL_KEYSPAN_USA19QI bool "USB Keyspan USA-19QI Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-19QI converter. config USB_SERIAL_KEYSPAN_USA49W bool "USB Keyspan USA-49W Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-49W converter. config USB_SERIAL_KEYSPAN_USA49WLC bool "USB Keyspan USA-49WLC Firmware" depends on USB_SERIAL_KEYSPAN depends on USB_SERIAL_KEYSPAN && FIRMWARE_IN_KERNEL help Say Y here to include firmware for the USA-49WLC converter. Loading
drivers/usb/serial/keyspan.c +42 −36 Original line number Diff line number Diff line Loading @@ -105,6 +105,8 @@ #include <linux/tty_flip.h> #include <linux/module.h> #include <linux/spinlock.h> #include <linux/firmware.h> #include <linux/ihex.h> #include <asm/uaccess.h> #include <linux/usb.h> #include <linux/usb/serial.h> Loading Loading @@ -1339,13 +1341,13 @@ static void keyspan_close(struct usb_serial_port *port, struct file *filp) port->tty = NULL; } /* download the firmware to a pre-renumeration device */ static int keyspan_fake_startup (struct usb_serial *serial) { int response; const struct ezusb_hex_record *record; const struct ihex_binrec *record; char *fw_name; const struct firmware *fw; dbg("Keyspan startup version %04x product %04x", le16_to_cpu(serial->dev->descriptor.bcdDevice), Loading @@ -1359,72 +1361,60 @@ static int keyspan_fake_startup (struct usb_serial *serial) /* Select firmware image on the basis of idProduct */ switch (le16_to_cpu(serial->dev->descriptor.idProduct)) { case keyspan_usa28_pre_product_id: record = &keyspan_usa28_firmware[0]; fw_name = "USA28"; fw_name = "keyspan/usa28.fw"; break; case keyspan_usa28x_pre_product_id: record = &keyspan_usa28x_firmware[0]; fw_name = "USA28X"; fw_name = "keyspan/usa28x.fw"; break; case keyspan_usa28xa_pre_product_id: record = &keyspan_usa28xa_firmware[0]; fw_name = "USA28XA"; fw_name = "keyspan/usa28xa.fw"; break; case keyspan_usa28xb_pre_product_id: record = &keyspan_usa28xb_firmware[0]; fw_name = "USA28XB"; fw_name = "keyspan/usa28xb.fw"; break; case keyspan_usa19_pre_product_id: record = &keyspan_usa19_firmware[0]; fw_name = "USA19"; fw_name = "keyspan/usa19.fw"; break; case keyspan_usa19qi_pre_product_id: record = &keyspan_usa19qi_firmware[0]; fw_name = "USA19QI"; fw_name = "keyspan/usa19qi.fw"; break; case keyspan_mpr_pre_product_id: record = &keyspan_mpr_firmware[0]; fw_name = "MPR"; fw_name = "keyspan/mpr.fw"; break; case keyspan_usa19qw_pre_product_id: record = &keyspan_usa19qw_firmware[0]; fw_name = "USA19QI"; fw_name = "keyspan/usa19qw.fw"; break; case keyspan_usa18x_pre_product_id: record = &keyspan_usa18x_firmware[0]; fw_name = "USA18X"; fw_name = "keyspan/usa18x.fw"; break; case keyspan_usa19w_pre_product_id: record = &keyspan_usa19w_firmware[0]; fw_name = "USA19W"; fw_name = "keyspan/usa19w.fw"; break; case keyspan_usa49w_pre_product_id: record = &keyspan_usa49w_firmware[0]; fw_name = "USA49W"; fw_name = "keyspan/usa49w.fw"; break; case keyspan_usa49wlc_pre_product_id: record = &keyspan_usa49wlc_firmware[0]; fw_name = "USA49WLC"; fw_name = "keyspan/usa49wlc.fw"; break; default: record = NULL; fw_name = "Unknown"; break; dev_err(&serial->dev->dev, "Unknown product ID (%04x)\n", le16_to_cpu(serial->dev->descriptor.idProduct)); return 1; } if (record == NULL) { if (request_ihex_firmware(&fw, fw_name, &serial->dev->dev)) { dev_err(&serial->dev->dev, "Required keyspan firmware image (%s) unavailable.\n", fw_name); return(1); } Loading @@ -1434,19 +1424,22 @@ static int keyspan_fake_startup (struct usb_serial *serial) /* download the firmware image */ response = ezusb_set_reset(serial, 1); while(record->address != 0xffff) { response = ezusb_writememory(serial, record->address, record = (const struct ihex_binrec *)fw->data; while (record) { response = ezusb_writememory(serial, be32_to_cpu(record->addr), (unsigned char *)record->data, record->data_size, 0xa0); be16_to_cpu(record->len), 0xa0); if (response < 0) { dev_err(&serial->dev->dev, "ezusb_writememory failed for Keyspan" "firmware (%d %04X %p %d)\n", response, record->address, record->data, record->data_size); response, be32_to_cpu(record->addr), record->data, be16_to_cpu(record->len)); break; } record++; record = ihex_next_binrec(record); } release_firmware(fw); /* bring device out of reset. Renumeration will occur in a moment and the new device will bind to the real driver */ response = ezusb_set_reset(serial, 0); Loading Loading @@ -2756,6 +2749,19 @@ MODULE_AUTHOR( DRIVER_AUTHOR ); MODULE_DESCRIPTION( DRIVER_DESC ); MODULE_LICENSE("GPL"); MODULE_FIRMWARE("keyspan/usa28.fw"); MODULE_FIRMWARE("keyspan/usa28x.fw"); MODULE_FIRMWARE("keyspan/usa28xa.fw"); MODULE_FIRMWARE("keyspan/usa28xb.fw"); MODULE_FIRMWARE("keyspan/usa19.fw"); MODULE_FIRMWARE("keyspan/usa19qi.fw"); MODULE_FIRMWARE("keyspan/mpr.fw"); MODULE_FIRMWARE("keyspan/usa19qw.fw"); MODULE_FIRMWARE("keyspan/usa18x.fw"); MODULE_FIRMWARE("keyspan/usa19w.fw"); MODULE_FIRMWARE("keyspan/usa49w.fw"); MODULE_FIRMWARE("keyspan/usa49wlc.fw"); module_param(debug, bool, S_IRUGO | S_IWUSR); MODULE_PARM_DESC(debug, "Debug enabled or not");
drivers/usb/serial/keyspan.h +0 −84 Original line number Diff line number Diff line Loading @@ -103,90 +103,6 @@ static int keyspan_usa67_send_setup (struct usb_serial *serial, struct usb_serial_port *port, int reset_port); /* Struct used for firmware - increased size of data section to allow Keyspan's 'C' firmware struct to be used unmodified */ struct ezusb_hex_record { __u16 address; __u8 data_size; __u8 data[64]; }; /* Conditionally include firmware images, if they aren't included create a null pointer instead. Current firmware images aren't optimised to remove duplicate addresses in the image itself. */ #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA28 #include "keyspan_usa28_fw.h" #else static const struct ezusb_hex_record *keyspan_usa28_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA28X #include "keyspan_usa28x_fw.h" #else static const struct ezusb_hex_record *keyspan_usa28x_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA28XA #include "keyspan_usa28xa_fw.h" #else static const struct ezusb_hex_record *keyspan_usa28xa_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA28XB #include "keyspan_usa28xb_fw.h" #else static const struct ezusb_hex_record *keyspan_usa28xb_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA19 #include "keyspan_usa19_fw.h" #else static const struct ezusb_hex_record *keyspan_usa19_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA19QI #include "keyspan_usa19qi_fw.h" #else static const struct ezusb_hex_record *keyspan_usa19qi_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_MPR #include "keyspan_mpr_fw.h" #else static const struct ezusb_hex_record *keyspan_mpr_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA19QW #include "keyspan_usa19qw_fw.h" #else static const struct ezusb_hex_record *keyspan_usa19qw_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA18X #include "keyspan_usa18x_fw.h" #else static const struct ezusb_hex_record *keyspan_usa18x_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA19W #include "keyspan_usa19w_fw.h" #else static const struct ezusb_hex_record *keyspan_usa19w_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA49W #include "keyspan_usa49w_fw.h" #else static const struct ezusb_hex_record *keyspan_usa49w_firmware = NULL; #endif #ifdef CONFIG_USB_SERIAL_KEYSPAN_USA49WLC #include "keyspan_usa49wlc_fw.h" #else static const struct ezusb_hex_record *keyspan_usa49wlc_firmware = NULL; #endif /* Values used for baud rate calculation - device specific */ #define KEYSPAN_INVALID_BAUD_RATE (-1) #define KEYSPAN_BAUD_RATE_OK (0) Loading