Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / usb / serial / ipaq.c
index 3bd69c4..9a5c979 100644 (file)
@@ -92,24 +92,7 @@ static void ipaq_destroy_lists(struct usb_serial_port *port);
 static struct usb_device_id ipaq_id_table [] = {
        /* The first entry is a placeholder for the insmod-specified device */
        { USB_DEVICE(0x049F, 0x0003) },
-       { USB_DEVICE(0x1690, 0x0601) }, /* Askey USB Sync */
-       { USB_DEVICE(0x0960, 0x0065) }, /* BCOM USB Sync 0065 */
-       { USB_DEVICE(0x0960, 0x0066) }, /* BCOM USB Sync 0066 */
-       { USB_DEVICE(0x0960, 0x0067) }, /* BCOM USB Sync 0067 */
-       { USB_DEVICE(0x07CF, 0x2001) }, /* CASIO USB Sync 2001 */
-       { USB_DEVICE(0x07CF, 0x2002) }, /* CASIO USB Sync 2002 */
-       { USB_DEVICE(0x07CF, 0x2003) }, /* CASIO USB Sync 2003 */
-       { USB_DEVICE(0x049F, 0x0003) }, /* Compaq iPAQ USB Sync */
-       { USB_DEVICE(0x049F, 0x0032) }, /* Compaq iPAQ USB Sync */
-       { USB_DEVICE(0x413C, 0x4001) }, /* Dell Axim USB Sync */
-       { USB_DEVICE(0x413C, 0x4002) }, /* Dell Axim USB Sync */
-       { USB_DEVICE(0x413C, 0x4003) }, /* Dell Axim USB Sync */
-       { USB_DEVICE(0x413C, 0x4004) }, /* Dell Axim USB Sync */
-       { USB_DEVICE(0x413C, 0x4005) }, /* Dell Axim USB Sync */
-       { USB_DEVICE(0x413C, 0x4006) }, /* Dell Axim USB Sync */
-       { USB_DEVICE(0x413C, 0x4007) }, /* Dell Axim USB Sync */
-       { USB_DEVICE(0x413C, 0x4008) }, /* Dell Axim USB Sync */
-       { USB_DEVICE(0x413C, 0x4009) }, /* Dell Axim USB Sync */
+       { USB_DEVICE(0x0104, 0x00BE) }, /* Socket USB Sync */
        { USB_DEVICE(0x03F0, 0x1016) }, /* HP USB Sync */
        { USB_DEVICE(0x03F0, 0x1116) }, /* HP USB Sync 1611 */
        { USB_DEVICE(0x03F0, 0x1216) }, /* HP USB Sync 1612 */
@@ -125,7 +108,13 @@ static struct usb_device_id ipaq_id_table [] = {
        { USB_DEVICE(0x03F0, 0x5016) }, /* HP USB Sync 1650 */
        { USB_DEVICE(0x03F0, 0x5116) }, /* HP USB Sync 1651 */
        { USB_DEVICE(0x03F0, 0x5216) }, /* HP USB Sync 1652 */
-       { USB_DEVICE(0x094B, 0x0001) }, /* Linkup Systems USB Sync */
+       { USB_DEVICE(0x0409, 0x00D5) }, /* NEC USB Sync */
+       { USB_DEVICE(0x0409, 0x00D6) }, /* NEC USB Sync */
+       { USB_DEVICE(0x0409, 0x00D7) }, /* NEC USB Sync */
+       { USB_DEVICE(0x0409, 0x8024) }, /* NEC USB Sync */
+       { USB_DEVICE(0x0409, 0x8025) }, /* NEC USB Sync */
+       { USB_DEVICE(0x043E, 0x9C01) }, /* LGE USB Sync */
+       { USB_DEVICE(0x045E, 0x00CE) }, /* Microsoft USB Sync */
        { USB_DEVICE(0x045E, 0x0400) }, /* Windows Powered Pocket PC 2002 */
        { USB_DEVICE(0x045E, 0x0401) }, /* Windows Powered Pocket PC 2002 */
        { USB_DEVICE(0x045E, 0x0402) }, /* Windows Powered Pocket PC 2002 */
@@ -251,17 +240,81 @@ static struct usb_device_id ipaq_id_table [] = {
        { USB_DEVICE(0x045E, 0x04E8) }, /* Windows Powered Smartphone 2003 */
        { USB_DEVICE(0x045E, 0x04E9) }, /* Windows Powered Smartphone 2003 */
        { USB_DEVICE(0x045E, 0x04EA) }, /* Windows Powered Smartphone 2003 */
-       { USB_DEVICE(0x0961, 0x0010) }, /* Portatec USB Sync */
-       { USB_DEVICE(0x5E04, 0xCE00) }, /* SAGEM Wireless Assistant */
-       { USB_DEVICE(0x0104, 0x00BE) }, /* Socket USB Sync */
+       { USB_DEVICE(0x049F, 0x0003) }, /* Compaq iPAQ USB Sync */
+       { USB_DEVICE(0x049F, 0x0032) }, /* Compaq iPAQ USB Sync */
+       { USB_DEVICE(0x04A4, 0x0014) }, /* Hitachi USB Sync */
+       { USB_DEVICE(0x04AD, 0x0301) }, /* USB Sync 0301 */
+       { USB_DEVICE(0x04AD, 0x0302) }, /* USB Sync 0302 */
+       { USB_DEVICE(0x04AD, 0x0303) }, /* USB Sync 0303 */
+       { USB_DEVICE(0x04C5, 0x1058) }, /* FUJITSU USB Sync */
+       { USB_DEVICE(0x04C5, 0x1079) }, /* FUJITSU USB Sync */
+       { USB_DEVICE(0x04DA, 0x2500) }, /* Panasonic USB Sync */
+       { USB_DEVICE(0x04E8, 0x5F00) }, /* Samsung NEXiO USB Sync */
+       { USB_DEVICE(0x04E8, 0x5F01) }, /* Samsung NEXiO USB Sync */
+       { USB_DEVICE(0x04E8, 0x5F02) }, /* Samsung NEXiO USB Sync */
+       { USB_DEVICE(0x04E8, 0x5F03) }, /* Samsung NEXiO USB Sync */
+       { USB_DEVICE(0x04E8, 0x5F04) }, /* Samsung NEXiO USB Sync */
+       { USB_DEVICE(0x04E8, 0x6611) }, /* Samsung MITs USB Sync */
+       { USB_DEVICE(0x04E8, 0x6613) }, /* Samsung MITs USB Sync */
+       { USB_DEVICE(0x04E8, 0x6615) }, /* Samsung MITs USB Sync */
+       { USB_DEVICE(0x04E8, 0x6617) }, /* Samsung MITs USB Sync */
+       { USB_DEVICE(0x04E8, 0x6619) }, /* Samsung MITs USB Sync */
+       { USB_DEVICE(0x04E8, 0x661B) }, /* Samsung MITs USB Sync */
+       { USB_DEVICE(0x04E8, 0x662E) }, /* Samsung MITs USB Sync */
+       { USB_DEVICE(0x04E8, 0x6630) }, /* Samsung MITs USB Sync */
+       { USB_DEVICE(0x04E8, 0x6632) }, /* Samsung MITs USB Sync */
+       { USB_DEVICE(0x04f1, 0x3011) }, /* JVC USB Sync */
+       { USB_DEVICE(0x04F1, 0x3012) }, /* JVC USB Sync */
+       { USB_DEVICE(0x0502, 0x1631) }, /* c10 Series */
+       { USB_DEVICE(0x0502, 0x1632) }, /* c20 Series */
+       { USB_DEVICE(0x0502, 0x16E1) }, /* Acer n10 Handheld USB Sync */
+       { USB_DEVICE(0x0502, 0x16E2) }, /* Acer n20 Handheld USB Sync */
+       { USB_DEVICE(0x0502, 0x16E3) }, /* Acer n30 Handheld USB Sync */
+       { USB_DEVICE(0x0536, 0x01A0) }, /* HHP PDT */
+       { USB_DEVICE(0x0543, 0x0ED9) }, /* ViewSonic Color Pocket PC V35 */
+       { USB_DEVICE(0x0543, 0x1527) }, /* ViewSonic Color Pocket PC V36 */
+       { USB_DEVICE(0x0543, 0x1529) }, /* ViewSonic Color Pocket PC V37 */
+       { USB_DEVICE(0x0543, 0x152B) }, /* ViewSonic Color Pocket PC V38 */
+       { USB_DEVICE(0x0543, 0x152E) }, /* ViewSonic Pocket PC */
+       { USB_DEVICE(0x0543, 0x1921) }, /* ViewSonic Communicator Pocket PC */
+       { USB_DEVICE(0x0543, 0x1922) }, /* ViewSonic Smartphone */
+       { USB_DEVICE(0x0543, 0x1923) }, /* ViewSonic Pocket PC V30 */
+       { USB_DEVICE(0x05E0, 0x2000) }, /* Symbol USB Sync */
+       { USB_DEVICE(0x05E0, 0x2001) }, /* Symbol USB Sync 0x2001 */
+       { USB_DEVICE(0x05E0, 0x2002) }, /* Symbol USB Sync 0x2002 */
+       { USB_DEVICE(0x05E0, 0x2003) }, /* Symbol USB Sync 0x2003 */
+       { USB_DEVICE(0x05E0, 0x2004) }, /* Symbol USB Sync 0x2004 */
+       { USB_DEVICE(0x05E0, 0x2005) }, /* Symbol USB Sync 0x2005 */
+       { USB_DEVICE(0x05E0, 0x2006) }, /* Symbol USB Sync 0x2006 */
+       { USB_DEVICE(0x05E0, 0x2007) }, /* Symbol USB Sync 0x2007 */
+       { USB_DEVICE(0x05E0, 0x2008) }, /* Symbol USB Sync 0x2008 */
+       { USB_DEVICE(0x05E0, 0x2009) }, /* Symbol USB Sync 0x2009 */
+       { USB_DEVICE(0x05E0, 0x200A) }, /* Symbol USB Sync 0x200A */
+       { USB_DEVICE(0x067E, 0x1001) }, /* Intermec Mobile Computer */
+       { USB_DEVICE(0x07CF, 0x2001) }, /* CASIO USB Sync 2001 */
+       { USB_DEVICE(0x07CF, 0x2002) }, /* CASIO USB Sync 2002 */
+       { USB_DEVICE(0x07CF, 0x2003) }, /* CASIO USB Sync 2003 */
        { USB_DEVICE(0x0930, 0x0700) }, /* TOSHIBA USB Sync 0700 */
        { USB_DEVICE(0x0930, 0x0705) }, /* TOSHIBA Pocket PC e310 */
+       { USB_DEVICE(0x0930, 0x0706) }, /* TOSHIBA Pocket PC e740 */
        { USB_DEVICE(0x0930, 0x0707) }, /* TOSHIBA Pocket PC e330 Series */
        { USB_DEVICE(0x0930, 0x0708) }, /* TOSHIBA Pocket PC e350 Series */
-       { USB_DEVICE(0x0930, 0x0706) }, /* TOSHIBA Pocket PC e740 */
        { USB_DEVICE(0x0930, 0x0709) }, /* TOSHIBA Pocket PC e750 Series */
        { USB_DEVICE(0x0930, 0x070A) }, /* TOSHIBA Pocket PC e400 Series */
        { USB_DEVICE(0x0930, 0x070B) }, /* TOSHIBA Pocket PC e800 Series */
+       { USB_DEVICE(0x094B, 0x0001) }, /* Linkup Systems USB Sync */
+       { USB_DEVICE(0x0960, 0x0065) }, /* BCOM USB Sync 0065 */
+       { USB_DEVICE(0x0960, 0x0066) }, /* BCOM USB Sync 0066 */
+       { USB_DEVICE(0x0960, 0x0067) }, /* BCOM USB Sync 0067 */
+       { USB_DEVICE(0x0961, 0x0010) }, /* Portatec USB Sync */
+       { USB_DEVICE(0x099E, 0x0052) }, /* Trimble GeoExplorer */
+       { USB_DEVICE(0x099E, 0x4000) }, /* TDS Data Collector */
+       { USB_DEVICE(0x0B05, 0x4200) }, /* ASUS USB Sync */
+       { USB_DEVICE(0x0B05, 0x4201) }, /* ASUS USB Sync */
+       { USB_DEVICE(0x0B05, 0x4202) }, /* ASUS USB Sync */
+       { USB_DEVICE(0x0B05, 0x420F) }, /* ASUS USB Sync */
+       { USB_DEVICE(0x0B05, 0x9200) }, /* ASUS USB Sync */
+       { USB_DEVICE(0x0B05, 0x9202) }, /* ASUS USB Sync */
        { USB_DEVICE(0x0BB4, 0x00CE) }, /* HTC USB Sync */
        { USB_DEVICE(0x0BB4, 0x0A01) }, /* PocketPC USB Sync */
        { USB_DEVICE(0x0BB4, 0x0A02) }, /* PocketPC USB Sync */
@@ -422,134 +475,88 @@ static struct usb_device_id ipaq_id_table [] = {
        { USB_DEVICE(0x0BB4, 0x0A9D) }, /* SmartPhone USB Sync */
        { USB_DEVICE(0x0BB4, 0x0A9E) }, /* SmartPhone USB Sync */
        { USB_DEVICE(0x0BB4, 0x0A9F) }, /* SmartPhone USB Sync */
-       { USB_DEVICE(0x0409, 0x00D5) }, /* NEC USB Sync */
-       { USB_DEVICE(0x0409, 0x00D6) }, /* NEC USB Sync */
-       { USB_DEVICE(0x0409, 0x00D7) }, /* NEC USB Sync */
-       { USB_DEVICE(0x0409, 0x8024) }, /* NEC USB Sync */
-       { USB_DEVICE(0x0409, 0x8025) }, /* NEC USB Sync */
-       { USB_DEVICE(0x04A4, 0x0014) }, /* Hitachi USB Sync */
        { USB_DEVICE(0x0BF8, 0x1001) }, /* Fujitsu Siemens Computers USB Sync */
-       { USB_DEVICE(0x0F98, 0x0201) }, /* Cyberbank USB Sync */
-       { USB_DEVICE(0x0502, 0x16E1) }, /* Acer n10 Handheld USB Sync */
-       { USB_DEVICE(0x0502, 0x16E3) }, /* Acer n30 Handheld USB Sync */
-       { USB_DEVICE(0x0502, 0x16E2) }, /* Acer n20 Handheld USB Sync */
-       { USB_DEVICE(0x0502, 0x1631) }, /* c10 Series */
-       { USB_DEVICE(0x0502, 0x1632) }, /* c20 Series */
-       { USB_DEVICE(0x0B05, 0x9202) }, /* ASUS USB Sync */
-       { USB_DEVICE(0x0B05, 0x420F) }, /* ASUS USB Sync */
-       { USB_DEVICE(0x0B05, 0x4200) }, /* ASUS USB Sync */
-       { USB_DEVICE(0x0B05, 0x4201) }, /* ASUS USB Sync */
-       { USB_DEVICE(0x0B05, 0x4202) }, /* ASUS USB Sync */
-       { USB_DEVICE(0x0B05, 0x9200) }, /* ASUS USB Sync */
+       { USB_DEVICE(0x0C44, 0x03A2) }, /* Motorola iDEN Smartphone */
        { USB_DEVICE(0x0C8E, 0x6000) }, /* Cesscom Luxian Series */
-       { USB_DEVICE(0x04AD, 0x0301) }, /* USB Sync 0301 */
-       { USB_DEVICE(0x04AD, 0x0302) }, /* USB Sync 0302 */
-       { USB_DEVICE(0x04AD, 0x0303) }, /* USB Sync 0303 */
+       { USB_DEVICE(0x0CAD, 0x9001) }, /* Motorola PowerPad Pocket PC Device */
+       { USB_DEVICE(0x0F4E, 0x0200) }, /* Freedom Scientific USB Sync */
+       { USB_DEVICE(0x0F98, 0x0201) }, /* Cyberbank USB Sync */
+       { USB_DEVICE(0x0FB8, 0x3001) }, /* Wistron USB Sync */
+       { USB_DEVICE(0x0FB8, 0x3002) }, /* Wistron USB Sync */
+       { USB_DEVICE(0x0FB8, 0x3003) }, /* Wistron USB Sync */
+       { USB_DEVICE(0x0FB8, 0x4001) }, /* Wistron USB Sync */
+       { USB_DEVICE(0x1066, 0x00CE) }, /* E-TEN USB Sync */
        { USB_DEVICE(0x1066, 0x0300) }, /* E-TEN P3XX Pocket PC */
        { USB_DEVICE(0x1066, 0x0500) }, /* E-TEN P5XX Pocket PC */
        { USB_DEVICE(0x1066, 0x0600) }, /* E-TEN P6XX Pocket PC */
        { USB_DEVICE(0x1066, 0x0700) }, /* E-TEN P7XX Pocket PC */
-       { USB_DEVICE(0x1066, 0x00CE) }, /* E-TEN USB Sync */
-       { USB_DEVICE(0x0F4E, 0x0200) }, /* Freedom Scientific USB Sync */
-       { USB_DEVICE(0x04C5, 0x1058) }, /* FUJITSU USB Sync */
-       { USB_DEVICE(0x04C5, 0x1079) }, /* FUJITSU USB Sync */
-       { USB_DEVICE(0x067E, 0x1001) }, /* Intermec Mobile Computer */
-       { USB_DEVICE(0x04f1, 0x3011) }, /* JVC USB Sync */
-       { USB_DEVICE(0x04F1, 0x3012) }, /* JVC USB Sync */
-       { USB_DEVICE(0x3708, 0x20CE) }, /* Legend USB Sync */
-       { USB_DEVICE(0x3708, 0x21CE) }, /* Lenovo USB Sync */
-       { USB_DEVICE(0x043E, 0x9C01) }, /* LGE USB Sync */
-       { USB_DEVICE(0x04DA, 0x2500) }, /* Panasonic USB Sync */
-       { USB_DEVICE(0x3340, 0x0B1C) }, /* Generic PPC StrongARM */
-       { USB_DEVICE(0x3340, 0x0E3A) }, /* Generic PPC USB Sync */
-       { USB_DEVICE(0x3340, 0x0F3A) }, /* Generic SmartPhone USB Sync */
-       { USB_DEVICE(0x3340, 0x0F1C) }, /* Itautec USB Sync */
-       { USB_DEVICE(0x3340, 0x1326) }, /* Itautec USB Sync */
-       { USB_DEVICE(0x3340, 0x3326) }, /* MEDION Winodws Moble USB Sync */
+       { USB_DEVICE(0x1114, 0x0001) }, /* Psion Teklogix Sync 753x */
+       { USB_DEVICE(0x1114, 0x0004) }, /* Psion Teklogix Sync netBookPro */
+       { USB_DEVICE(0x1114, 0x0006) }, /* Psion Teklogix Sync 7525 */
+       { USB_DEVICE(0x1182, 0x1388) }, /* VES USB Sync */
+       { USB_DEVICE(0x11D9, 0x1002) }, /* Rugged Pocket PC 2003 */
+       { USB_DEVICE(0x11D9, 0x1003) }, /* Rugged Pocket PC 2003 */
+       { USB_DEVICE(0x1231, 0xCE01) }, /* USB Sync 03 */
+       { USB_DEVICE(0x1231, 0xCE02) }, /* USB Sync 03 */
+       { USB_DEVICE(0x1690, 0x0601) }, /* Askey USB Sync */
+       { USB_DEVICE(0x22B8, 0x4204) }, /* Motorola MPx200 Smartphone */
+       { USB_DEVICE(0x22B8, 0x4214) }, /* Motorola MPc GSM */
+       { USB_DEVICE(0x22B8, 0x4224) }, /* Motorola MPx220 Smartphone */
+       { USB_DEVICE(0x22B8, 0x4234) }, /* Motorola MPc CDMA */
+       { USB_DEVICE(0x22B8, 0x4244) }, /* Motorola MPx100 Smartphone */
+       { USB_DEVICE(0x3340, 0x011C) }, /* Mio DigiWalker PPC StrongARM */
        { USB_DEVICE(0x3340, 0x0326) }, /* Mio DigiWalker 338 */
        { USB_DEVICE(0x3340, 0x0426) }, /* Mio DigiWalker 338 */
-       { USB_DEVICE(0x3340, 0x011C) }, /* Mio DigiWalker PPC StrongARM */
-       { USB_DEVICE(0x3340, 0x053A) }, /* Mio DigiWalker SmartPhone USB Sync */
        { USB_DEVICE(0x3340, 0x043A) }, /* Mio DigiWalker USB Sync */
-       { USB_DEVICE(0x3340, 0x071C) }, /* MiTAC USB Sync */
        { USB_DEVICE(0x3340, 0x051C) }, /* MiTAC USB Sync 528 */
-       { USB_DEVICE(0x3340, 0x2326) }, /* Vobis USB Sync */
+       { USB_DEVICE(0x3340, 0x053A) }, /* Mio DigiWalker SmartPhone USB Sync */
+       { USB_DEVICE(0x3340, 0x071C) }, /* MiTAC USB Sync */
+       { USB_DEVICE(0x3340, 0x0B1C) }, /* Generic PPC StrongARM */
+       { USB_DEVICE(0x3340, 0x0E3A) }, /* Generic PPC USB Sync */
+       { USB_DEVICE(0x3340, 0x0F1C) }, /* Itautec USB Sync */
+       { USB_DEVICE(0x3340, 0x0F3A) }, /* Generic SmartPhone USB Sync */
+       { USB_DEVICE(0x3340, 0x1326) }, /* Itautec USB Sync */
        { USB_DEVICE(0x3340, 0x191C) }, /* YAKUMO USB Sync */
+       { USB_DEVICE(0x3340, 0x2326) }, /* Vobis USB Sync */
+       { USB_DEVICE(0x3340, 0x3326) }, /* MEDION Winodws Moble USB Sync */
+       { USB_DEVICE(0x3708, 0x20CE) }, /* Legend USB Sync */
+       { USB_DEVICE(0x3708, 0x21CE) }, /* Lenovo USB Sync */
        { USB_DEVICE(0x4113, 0x0210) }, /* Mobile Media Technology USB Sync */
        { USB_DEVICE(0x4113, 0x0211) }, /* Mobile Media Technology USB Sync */
        { USB_DEVICE(0x4113, 0x0400) }, /* Mobile Media Technology USB Sync */
        { USB_DEVICE(0x4113, 0x0410) }, /* Mobile Media Technology USB Sync */
-       { USB_DEVICE(0x0CAD, 0x9001) }, /* Motorola PowerPad Pocket PC Device */
-       { USB_DEVICE(0x0C44, 0x03A2) }, /* Motorola iDEN Smartphone */
-       { USB_DEVICE(0x04E8, 0x6611) }, /* Samsung MITs USB Sync */
-       { USB_DEVICE(0x04E8, 0x6613) }, /* Samsung MITs USB Sync */
-       { USB_DEVICE(0x04E8, 0x6615) }, /* Samsung MITs USB Sync */
-       { USB_DEVICE(0x04E8, 0x6617) }, /* Samsung MITs USB Sync */
-       { USB_DEVICE(0x04E8, 0x6619) }, /* Samsung MITs USB Sync */
-       { USB_DEVICE(0x04E8, 0x661B) }, /* Samsung MITs USB Sync */
-       { USB_DEVICE(0x04E8, 0x5F00) }, /* Samsung NEXiO USB Sync */
-       { USB_DEVICE(0x04E8, 0x5F01) }, /* Samsung NEXiO USB Sync */
-       { USB_DEVICE(0x04E8, 0x5F02) }, /* Samsung NEXiO USB Sync */
-       { USB_DEVICE(0x04E8, 0x5F03) }, /* Samsung NEXiO USB Sync */
-       { USB_DEVICE(0x04E8, 0x5F04) }, /* Samsung NEXiO USB Sync */
-       { USB_DEVICE(0x04E8, 0x662E) }, /* Samsung MITs USB Sync */
-       { USB_DEVICE(0x04E8, 0x6630) }, /* Samsung MITs USB Sync */
-       { USB_DEVICE(0x04E8, 0x6632) }, /* Samsung MITs USB Sync */
+       { USB_DEVICE(0x413C, 0x4001) }, /* Dell Axim USB Sync */
+       { USB_DEVICE(0x413C, 0x4002) }, /* Dell Axim USB Sync */
+       { USB_DEVICE(0x413C, 0x4003) }, /* Dell Axim USB Sync */
+       { USB_DEVICE(0x413C, 0x4004) }, /* Dell Axim USB Sync */
+       { USB_DEVICE(0x413C, 0x4005) }, /* Dell Axim USB Sync */
+       { USB_DEVICE(0x413C, 0x4006) }, /* Dell Axim USB Sync */
+       { USB_DEVICE(0x413C, 0x4007) }, /* Dell Axim USB Sync */
+       { USB_DEVICE(0x413C, 0x4008) }, /* Dell Axim USB Sync */
+       { USB_DEVICE(0x413C, 0x4009) }, /* Dell Axim USB Sync */
        { USB_DEVICE(0x4505, 0x0010) }, /* Smartphone */
-       { USB_DEVICE(0x05E0, 0x2000) }, /* Symbol USB Sync */
-       { USB_DEVICE(0x05E0, 0x2001) }, /* Symbol USB Sync 0x2001 */
-       { USB_DEVICE(0x05E0, 0x2002) }, /* Symbol USB Sync 0x2002 */
-       { USB_DEVICE(0x05E0, 0x2003) }, /* Symbol USB Sync 0x2003 */
-       { USB_DEVICE(0x05E0, 0x2004) }, /* Symbol USB Sync 0x2004 */
-       { USB_DEVICE(0x05E0, 0x2005) }, /* Symbol USB Sync 0x2005 */
-       { USB_DEVICE(0x05E0, 0x2006) }, /* Symbol USB Sync 0x2006 */
-       { USB_DEVICE(0x05E0, 0x2007) }, /* Symbol USB Sync 0x2007 */
-       { USB_DEVICE(0x05E0, 0x2008) }, /* Symbol USB Sync 0x2008 */
-       { USB_DEVICE(0x05E0, 0x2009) }, /* Symbol USB Sync 0x2009 */
-       { USB_DEVICE(0x05E0, 0x200A) }, /* Symbol USB Sync 0x200A */
-       { USB_DEVICE(0x1182, 0x1388) }, /* VES USB Sync */
-       { USB_DEVICE(0x0543, 0x0ED9) }, /* ViewSonic Color Pocket PC V35 */
-       { USB_DEVICE(0x0543, 0x1527) }, /* ViewSonic Color Pocket PC V36 */
-       { USB_DEVICE(0x0543, 0x1529) }, /* ViewSonic Color Pocket PC V37 */
-       { USB_DEVICE(0x0543, 0x152B) }, /* ViewSonic Color Pocket PC V38 */
-       { USB_DEVICE(0x0543, 0x152E) }, /* ViewSonic Pocket PC */
-       { USB_DEVICE(0x0543, 0x1921) }, /* ViewSonic Communicator Pocket PC */
-       { USB_DEVICE(0x0543, 0x1922) }, /* ViewSonic Smartphone */
-       { USB_DEVICE(0x0543, 0x1923) }, /* ViewSonic Pocket PC V30 */
-       { USB_DEVICE(0x0536, 0x01A0) }, /* HHP PDT */
-       { USB_DEVICE(0x099E, 0x0052) }, /* Trimble GeoExplorer */
-       { USB_DEVICE(0x099E, 0x4000) }, /* TDS Data Collector */
-       { USB_DEVICE(0x0FB8, 0x3001) }, /* Wistron USB Sync */
-       { USB_DEVICE(0x0FB8, 0x3002) }, /* Wistron USB Sync */
-       { USB_DEVICE(0x0FB8, 0x3003) }, /* Wistron USB Sync */
-       { USB_DEVICE(0x0FB8, 0x4001) }, /* Wistron USB Sync */
-       { USB_DEVICE(0x11D9, 0x1003) }, /* Rugged Pocket PC 2003 */
-       { USB_DEVICE(0x11D9, 0x1002) }, /* Rugged Pocket PC 2003 */
-       { USB_DEVICE(0x22B8, 0x4204) }, /* Motorola MPx200 Smartphone */
-       { USB_DEVICE(0x22B8, 0x4214) }, /* Motorola MPc GSM */
-       { USB_DEVICE(0x22B8, 0x4224) }, /* Motorola MPx220 Smartphone */
-       { USB_DEVICE(0x22B8, 0x4234) }, /* Motorola MPc CDMA */
-       { USB_DEVICE(0x22B8, 0x4244) }, /* Motorola MPx100 Smartphone */
-       { USB_DEVICE(0x1231, 0xCE01) }, /* USB Sync 03 */
-       { USB_DEVICE(0x1231, 0xCE02) }, /* USB Sync 03 */
+       { USB_DEVICE(0x5E04, 0xCE00) }, /* SAGEM Wireless Assistant */
        { }                             /* Terminating entry */
 };
 
 MODULE_DEVICE_TABLE (usb, ipaq_id_table);
 
 static struct usb_driver ipaq_driver = {
-       .owner =        THIS_MODULE,
        .name =         "ipaq",
        .probe =        usb_serial_probe,
        .disconnect =   usb_serial_disconnect,
        .id_table =     ipaq_id_table,
+       .no_dynamic_id =        1,
 };
 
 
 /* All of the device info needed for the Compaq iPAQ */
-static struct usb_serial_device_type ipaq_device = {
-       .owner =                THIS_MODULE,
-       .name =                 "PocketPC PDA",
+static struct usb_serial_driver ipaq_device = {
+       .driver = {
+               .owner =        THIS_MODULE,
+               .name =         "ipaq",
+       },
+       .description =          "PocketPC PDA",
        .id_table =             ipaq_id_table,
        .num_interrupt_in =     NUM_DONT_CARE,
        .num_bulk_in =          1,
@@ -704,7 +711,7 @@ static void ipaq_read_bulk_callback(struct urb *urb, struct pt_regs *regs)
        struct usb_serial_port  *port = (struct usb_serial_port *)urb->context;
        struct tty_struct       *tty;
        unsigned char           *data = urb->transfer_buffer;
-       int                     i, result;
+       int                     result;
 
        dbg("%s - port %d", __FUNCTION__, port->number);
 
@@ -717,14 +724,8 @@ static void ipaq_read_bulk_callback(struct urb *urb, struct pt_regs *regs)
 
        tty = port->tty;
        if (tty && urb->actual_length) {
-               for (i = 0; i < urb->actual_length ; ++i) {
-                       /* if we insert more than TTY_FLIPBUF_SIZE characters, we drop them. */
-                       if(tty->flip.count >= TTY_FLIPBUF_SIZE) {
-                               tty_flip_buffer_push(tty);
-                       }
-                       /* this doesn't actually push the data through unless tty->low_latency is set */
-                       tty_insert_flip_char(tty, data[i], 0);
-               }
+               tty_buffer_request_room(tty, urb->actual_length);
+               tty_insert_flip_string(tty, data, urb->actual_length);
                tty_flip_buffer_push(tty);
                bytes_in += urb->actual_length;
        }
@@ -818,11 +819,6 @@ static void ipaq_write_gather(struct usb_serial_port *port)
        struct ipaq_packet      *pkt, *tmp;
        struct urb              *urb = port->write_urb;
 
-       if (urb->status == -EINPROGRESS) {
-               /* Should never happen */
-               err("%s - flushing while urb is active !", __FUNCTION__);
-               return;
-       }
        room = URBDATA_SIZE;
        list_for_each_entry_safe(pkt, tmp, &priv->queue, list) {
                count = min(room, (int)(pkt->len - pkt->written));