diff options
Diffstat (limited to 'drivers/net/usb/plusb.c')
| -rw-r--r-- | drivers/net/usb/plusb.c | 32 | 
1 files changed, 27 insertions, 5 deletions
diff --git a/drivers/net/usb/plusb.c b/drivers/net/usb/plusb.c index 823c5375130..217aec8a768 100644 --- a/drivers/net/usb/plusb.c +++ b/drivers/net/usb/plusb.c @@ -45,6 +45,14 @@   * seems to get wedged under load.  Prolific docs are weak, and   * don't identify differences between PL2301 and PL2302, much less   * anything to explain the different PL2302 versions observed. + * + * NOTE:  pl2501 has several modes, including pl2301 and pl2302 + * compatibility.   Some docs suggest the difference between 2301 + * and 2302 is only to make MS-Windows use a different driver... + * + * pl25a1 glue based on patch from Tony Gibbs.  Prolific "docs" on + * this chip are as usual incomplete about what control messages + * are supported.   */  /* @@ -86,16 +94,20 @@ pl_set_QuickLink_features(struct usbnet *dev, int val)  static int pl_reset(struct usbnet *dev)  { +	int status; +  	/* some units seem to need this reset, others reject it utterly.  	 * FIXME be more like "naplink" or windows drivers.  	 */ -	(void) pl_set_QuickLink_features(dev, +	status = pl_set_QuickLink_features(dev,  		PL_S_EN|PL_RESET_OUT|PL_RESET_IN|PL_PEER_E); +	if (status != 0 && netif_msg_probe(dev)) +		netif_dbg(dev, link, dev->net, "pl_reset --> %d\n", status);  	return 0;  }  static const struct driver_info	prolific_info = { -	.description =	"Prolific PL-2301/PL-2302", +	.description =	"Prolific PL-2301/PL-2302/PL-25A1",  	.flags =	FLAG_POINTTOPOINT | FLAG_NO_SETINT,  		/* some PL-2302 versions seem to fail usb_set_interface() */  	.reset =	pl_reset, @@ -111,6 +123,7 @@ static const struct driver_info	prolific_info = {  static const struct usb_device_id	products [] = { +/* full speed cables */  {  	USB_DEVICE(0x067b, 0x0000),	// PL-2301  	.driver_info =	(unsigned long) &prolific_info, @@ -119,6 +132,15 @@ static const struct usb_device_id	products [] = {  	.driver_info =	(unsigned long) &prolific_info,  }, +/* high speed cables */ +{ +	USB_DEVICE(0x067b, 0x25a1),     /* PL-25A1, no eeprom */ +	.driver_info =  (unsigned long) &prolific_info, +}, { +	USB_DEVICE(0x050d, 0x258a),     /* Belkin F5U258/F5U279 (PL-25A1) */ +	.driver_info =  (unsigned long) &prolific_info, +}, +  	{ },		// END  };  MODULE_DEVICE_TABLE(usb, products); @@ -134,16 +156,16 @@ static struct usb_driver plusb_driver = {  static int __init plusb_init(void)  { - 	return usb_register(&plusb_driver); +	return usb_register(&plusb_driver);  }  module_init(plusb_init);  static void __exit plusb_exit(void)  { - 	usb_deregister(&plusb_driver); +	usb_deregister(&plusb_driver);  }  module_exit(plusb_exit);  MODULE_AUTHOR("David Brownell"); -MODULE_DESCRIPTION("Prolific PL-2301/2302 USB Host to Host Link Driver"); +MODULE_DESCRIPTION("Prolific PL-2301/2302/25A1 USB Host to Host Link Driver");  MODULE_LICENSE("GPL");  |