I have a Belkin USB Dockstation (F5U120-PC) which has a serial amongst
other things.  The current Belkin serial driver doesn't talk to it.

The usb serial has a vendor id/product id of 0x050d/0x1203. I modified the
driver by adding another struct usb_serial_device_type with everything
else the same as the standard Belkin serial converter and it seems
to work.

I've included a snippet of my kernel messages plus my patch against 2.4.9.

thanks
Amy 

--------------------------------------------------------------------
diff -uNr orig/belkin_sa.c new/belkin_sa.c
--- orig/belkin_sa.c    Sat Sep 29 00:40:48 2001
+++ new/belkin_sa.c     Sat Sep 29 00:42:35 2001
@@ -108,6 +108,12 @@
        { USB_DEVICE(BELKIN_OLD_VID, BELKIN_OLD_PID) },
        { USB_DEVICE(PERACOM_VID, PERACOM_PID) },
        { USB_DEVICE(GOHUBS_VID, GOHUBS_PID) },
+       { USB_DEVICE(BELKIN_DOCKSTATION_VID, BELKIN_DOCKSTATION_PID) },
+       { }                                                     /* Terminating entry */
+};
+
+static __devinitdata struct usb_device_id belkin_dockstation_table [] = {
+       { USB_DEVICE(BELKIN_DOCKSTATION_VID, BELKIN_DOCKSTATION_PID) },
        { }                                                     /* Terminating entry */
 };
 
@@ -133,6 +139,27 @@
 
 MODULE_DEVICE_TABLE (usb, id_table_combined);
 
+/* All of the device info needed for the Belkin dockstation serial converter */
+struct usb_serial_device_type belkin_dockstation_device = {
+       name:                   "Belkin F5U120-PC USB Serial Adapter",
+       id_table:               belkin_dockstation_table,               /* the Belkin 
+F5U103 device */
+       needs_interrupt_in:     MUST_HAVE,                      /* this device must 
+have an interrupt in endpoint */
+       needs_bulk_in:          MUST_HAVE,                      /* this device must 
+have a bulk in endpoint */
+       needs_bulk_out:         MUST_HAVE,                      /* this device must 
+have a bulk out endpoint */
+       num_interrupt_in:       1,
+       num_bulk_in:            1,
+       num_bulk_out:           1,
+       num_ports:              1,
+       open:                   belkin_sa_open,
+       close:                  belkin_sa_close,
+       read_int_callback:      belkin_sa_read_int_callback,    /* How we get the 
+status info */
+       ioctl:                  belkin_sa_ioctl,
+       set_termios:            belkin_sa_set_termios,
+       break_ctl:              belkin_sa_break_ctl,
+       startup:                belkin_sa_startup,
+       shutdown:               belkin_sa_shutdown,
+};
+
 /* All of the device info needed for the Belkin serial converter */
 struct usb_serial_device_type belkin_sa_device = {
        name:                   "Belkin F5U103 USB Serial Adapter",
@@ -602,6 +629,7 @@
 
 static int __init belkin_sa_init (void)
 {
+       usb_serial_register (&belkin_dockstation_device);
        usb_serial_register (&belkin_sa_device);
        usb_serial_register (&belkin_old_device);
        usb_serial_register (&peracom_device);
@@ -613,6 +641,7 @@
 
 static void __exit belkin_sa_exit (void)
 {
+       usb_serial_deregister (&belkin_dockstation_device);
        usb_serial_deregister (&belkin_sa_device);
        usb_serial_deregister (&belkin_old_device);
        usb_serial_deregister (&peracom_device);
diff -uNr orig/belkin_sa.h new/belkin_sa.h
--- orig/belkin_sa.h    Sat Sep 29 00:40:49 2001
+++ new/belkin_sa.h     Sat Sep 29 00:26:16 2001
@@ -33,6 +33,9 @@
 #ifndef __LINUX_USB_SERIAL_BSA_H
 #define __LINUX_USB_SERIAL_BSA_H
 
+#define BELKIN_DOCKSTATION_VID 0x050d  /* Vendor Id */
+#define BELKIN_DOCKSTATION_PID 0x1203  /* Product Id */
+
 #define BELKIN_SA_VID  0x050d  /* Vendor Id */
 #define BELKIN_SA_PID  0x0103  /* Product Id */
 
--------------------------------------------------------------------

hub.c: USB new device connect on bus1/1, assigned device number 3
usb.c: kmalloc IF c6a5e8fc, numif 1
usb.c: new device strings: Mfr=0, Product=0, SerialNumber=0
hub.c: USB hub found
hub.c: 7 ports detected
hub.c: standalone hub
hub.c: individual port power switching
hub.c: individual port over-current protection
hub.c: Port indicators are not supported
hub.c: power on to power good time: 100ms
hub.c: hub controller current requirement: 100mA
hub.c: port removable status: RRRRRRR
hub.c: local power source is good
hub.c: no over-current condition exists
hub.c: enabling power on all ports
usb.c: hub driver claimed interface c6a5e8fc
usb.c: kusbd: /sbin/hotplug add 3
hub.c: port 5 connection change
hub.c: port 5, portstatus 101, change 1, 12 Mb/s
hub.c: port 5, portstatus 103, change 10, 12 Mb/s
hub.c: USB new device connect on bus1/1/5, assigned device number 4
usb.c: kmalloc IF c6a5e9c4, numif 1
usb.c: new device strings: Mfr=1, Product=2, SerialNumber=3
usb.c: USB device number 4 default language ID 0x409
Manufacturer: Belkin Components
Product: USB-232 Adapter
SerialNumber: BL2350
usbserial.c: Belkin F5U120-PC USB Serial Adapter converter detected
belkin_sa.c: bcdDevice: 0207, bfc: 0
usbserial.c: Belkin F5U120-PC USB Serial Adapter converter now attached to ttyUSB0 (or 
usb/tts/0 for devfs)
usb.c: serial driver claimed interface c6a5e9c4
usb.c: kusbd: /sbin/hotplug add 4
hub.c: port 6 connection change
hub.c: port 6, portstatus 301, change 1, 1.5 Mb/s
hub.c: port 6, portstatus 303, change 10, 1.5 Mb/s
hub.c: USB new device connect on bus1/1/6, assigned device number 5
usb.c: kmalloc IF c9414fa4, numif 2
usb.c: skipped 1 class/vendor specific interface descriptors
usb.c: skipped 1 class/vendor specific interface descriptors
usb.c: new device strings: Mfr=1, Product=2, SerialNumber=0
usb.c: USB device number 5 default language ID 0x409
Manufacturer: Belkin Components
Product: USB-PS2 Adapter 
usb.c: unhandled interfaces on device
usb.c: USB device 5 (vend/prod 0x50d/0x119) is not claimed by any active driver.
  Length              = 18
  DescriptorType      = 01
  USB version         = 1.10
  Vendor:Product      = 050d:0119
  MaxPacketSize0      = 8
  NumConfigurations   = 1
  Device version      = 1.20
  Device Class:SubClass:Protocol = 00:00:00
    Per-interface classes
Configuration:
  bLength             =    9
  bDescriptorType     =   02
  wTotalLength        = 003b
  bNumInterfaces      =   02
  bConfigurationValue =   01
  iConfiguration      =   00
  bmAttributes        =   a0
  MaxPower            =  100mA

  Interface: 0
  Alternate Setting:  0
    bLength             =    9
    bDescriptorType     =   04
    bInterfaceNumber    =   00
    bAlternateSetting   =   00
    bNumEndpoints       =   01
    bInterface Class:SubClass:Protocol =   03:01:01
    iInterface          =   00
    Endpoint:
      bLength             =    7
      bDescriptorType     =   05
      bEndpointAddress    =   81 (in)
      bmAttributes        =   03 (Interrupt)
      wMaxPacketSize      = 0008
      bInterval           =   0a

  Interface: 1
  Alternate Setting:  0
    bLength             =    9
    bDescriptorType     =   04
    bInterfaceNumber    =   01
    bAlternateSetting   =   00
    bNumEndpoints       =   01
    bInterface Class:SubClass:Protocol =   03:01:02
    iInterface          =   00
    Endpoint:
      bLength             =    7
      bDescriptorType     =   05
      bEndpointAddress    =   82 (in)
      bmAttributes        =   03 (Interrupt)
      wMaxPacketSize      = 0004
      bInterval           =   0a
usb.c: kusbd: /sbin/hotplug add 5
hub.c: port 7 connection change
hub.c: port 7, portstatus 101, change 1, 12 Mb/s
hub.c: port 7, portstatus 103, change 10, 12 Mb/s
hub.c: USB new device connect on bus1/1/7, assigned device number 6
usb.c: kmalloc IF c6a5eb54, numif 1
usb.c: new device strings: Mfr=0, Product=0, SerialNumber=0
usb.c: unhandled interfaces on device
usb.c: USB device 6 (vend/prod 0x50d/0x1202) is not claimed by any active driver.
  Length              = 18
  DescriptorType      = 01
  USB version         = 1.00
  Vendor:Product      = 050d:1202
  MaxPacketSize0      = 8
  NumConfigurations   = 1
  Device version      = 1.04
  Device Class:SubClass:Protocol = 00:00:00
    Per-interface classes
Configuration:
  bLength             =    9
  bDescriptorType     =   02
  wTotalLength        = 004e
  bNumInterfaces      =   01
  bConfigurationValue =   01
  iConfiguration      =   00
  bmAttributes        =   80
  MaxPower            =   98mA

  Interface: 0
  Alternate Setting:  0
    bLength             =    9
    bDescriptorType     =   04
    bInterfaceNumber    =   00
    bAlternateSetting   =   00
    bNumEndpoints       =   01
    bInterface Class:SubClass:Protocol =   07:01:01
    iInterface          =   00
    Endpoint:
      bLength             =    7
      bDescriptorType     =   05
      bEndpointAddress    =   01 (out)
      bmAttributes        =   02 (Bulk)
      wMaxPacketSize      = 0040
      bInterval           =   00
  Alternate Setting:  1
    bLength             =    9
    bDescriptorType     =   04
    bInterfaceNumber    =   00
    bAlternateSetting   =   01
    bNumEndpoints       =   02
    bInterface Class:SubClass:Protocol =   07:01:02
    iInterface          =   00
    Endpoint:
      bLength             =    7
      bDescriptorType     =   05
      bEndpointAddress    =   01 (out)
      bmAttributes        =   02 (Bulk)
      wMaxPacketSize      = 0040
      bInterval           =   00
    Endpoint:
      bLength             =    7
      bDescriptorType     =   05
      bEndpointAddress    =   82 (in)
      bmAttributes        =   02 (Bulk)
      wMaxPacketSize      = 0040
      bInterval           =   00
  Alternate Setting:  2
    bLength             =    9
    bDescriptorType     =   04
    bInterfaceNumber    =   00
    bAlternateSetting   =   02
    bNumEndpoints       =   03
    bInterface Class:SubClass:Protocol =   ff:00:ff
    iInterface          =   00
    Endpoint:
      bLength             =    7
      bDescriptorType     =   05
      bEndpointAddress    =   01 (out)
      bmAttributes        =   02 (Bulk)
      wMaxPacketSize      = 0040
      bInterval           =   00
    Endpoint:
      bLength             =    7
      bDescriptorType     =   05
      bEndpointAddress    =   82 (in)
      bmAttributes        =   02 (Bulk)
      wMaxPacketSize      = 0040
      bInterval           =   00
    Endpoint:
      bLength             =    7
      bDescriptorType     =   05
      bEndpointAddress    =   83 (in)
      bmAttributes        =   03 (Interrupt)
      wMaxPacketSize      = 0004
      bInterval           =   01
usb.c: kusbd: /sbin/hotplug add 6
usb.c: registered new driver usblp
usb.c: registered new driver keyboard
printer.c: usblp0: USB Bidirectional printer dev 6 if 0 alt 1
usb.c: usblp driver claimed interface c6a5eb54
printer.c: v0.8:USB Printer Device Class driver
input0: Belkin Components USB-PS2 Adapter  on usb1:5.0
usb.c: keyboard driver claimed interface c9414fa4
usbkbd.c: :USB HID Boot Protocol keyboard driver
usb.c: registered new driver hid
usb-uhci.c: interrupt, status 2, frame# 2011
usb-uhci.c: interrupt, status 3, frame# 2013
input1: USB HID v1.00 Mouse [Belkin Components USB-PS2 Adapter ] on usb1:5.1
usb.c: hid driver claimed interface c9414fbc
usb.c: registered new driver hiddev
hid-core.c: v1.8 Andreas Gal, Vojtech Pavlik <[EMAIL PROTECTED]>
hid-core.c: USB HID support drivers
usb.c: registered new driver usb_mouse
usbmouse.c: v1.6:USB HID Boot Protocol mouse driver
mice: PS/2 mouse device common for all mice
hub.c: port 1 connection change
hub.c: port 1, portstatus 100, change 3, 12 Mb/s
usb.c: USB disconnect on device 3
usb.c: USB disconnect on device 4
usbserial.c: Belkin F5U120-PC USB Serial Adapter converter now disconnected from 
ttyUSB0
usb.c: kusbd: /sbin/hotplug remove 4
usb-uhci.c: interrupt, status 3, frame# 180
usb.c: USB disconnect on device 5
usb.c: kusbd: /sbin/hotplug remove 5
usb.c: USB disconnect on device 6
printer.c: usblp0: removed
usb.c: kusbd: /sbin/hotplug remove 6
usb.c: kusbd: /sbin/hotplug remove 3
hub.c: port 1 enable change, status 100


Attachment: msg02647/pgp00000.pgp
Description: PGP signature

Reply via email to