diff options
Diffstat (limited to 'drivers/net/usb')
| -rw-r--r-- | drivers/net/usb/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/net/usb/cdc_ether.c | 42 | ||||
| -rw-r--r-- | drivers/net/usb/hso.c | 8 | 
3 files changed, 47 insertions, 5 deletions
diff --git a/drivers/net/usb/Kconfig b/drivers/net/usb/Kconfig index c47237c2d63..32d93564a74 100644 --- a/drivers/net/usb/Kconfig +++ b/drivers/net/usb/Kconfig @@ -174,7 +174,7 @@ config USB_NET_CDCETHER  	    * Ericsson Mobile Broadband Module (all variants)   	    * Motorola (DM100 and SB4100)   	    * Broadcom Cable Modem (reference design) -	    * Toshiba (PCX1100U and F3507g) +	    * Toshiba (PCX1100U and F3507g/F3607gw)  	    * ...  	  This driver creates an interface named "ethX", where X depends on diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c index 4a6aff57940..21e1ba16000 100644 --- a/drivers/net/usb/cdc_ether.c +++ b/drivers/net/usb/cdc_ether.c @@ -544,20 +544,60 @@ static const struct usb_device_id	products [] = {  			USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),  	.driver_info = (unsigned long) &cdc_info,  }, { -	/* Ericsson F3307 */ +	/* Ericsson F3607gw ver 2 */ +	USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x1905, USB_CLASS_COMM, +			USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), +	.driver_info = (unsigned long) &cdc_info, +}, { +	/* Ericsson F3607gw ver 3 */  	USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x1906, USB_CLASS_COMM,  			USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),  	.driver_info = (unsigned long) &cdc_info,  }, { +	/* Ericsson F3307 */ +	USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x190a, USB_CLASS_COMM, +			USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), +	.driver_info = (unsigned long) &cdc_info, +}, { +	/* Ericsson F3307 ver 2 */ +	USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x1909, USB_CLASS_COMM, +			USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), +	.driver_info = (unsigned long) &cdc_info, +}, { +	/* Ericsson C3607w */ +	USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x1049, USB_CLASS_COMM, +			USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), +	.driver_info = (unsigned long) &cdc_info, +}, {  	/* Toshiba F3507g */  	USB_DEVICE_AND_INTERFACE_INFO(0x0930, 0x130b, USB_CLASS_COMM,  			USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),  	.driver_info = (unsigned long) &cdc_info,  }, { +	/* Toshiba F3607gw */ +	USB_DEVICE_AND_INTERFACE_INFO(0x0930, 0x130c, USB_CLASS_COMM, +			USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), +	.driver_info = (unsigned long) &cdc_info, +}, { +	/* Toshiba F3607gw ver 2 */ +	USB_DEVICE_AND_INTERFACE_INFO(0x0930, 0x1311, USB_CLASS_COMM, +			USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), +	.driver_info = (unsigned long) &cdc_info, +}, {  	/* Dell F3507g */  	USB_DEVICE_AND_INTERFACE_INFO(0x413c, 0x8147, USB_CLASS_COMM,  			USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),  	.driver_info = (unsigned long) &cdc_info, +}, { +	/* Dell F3607gw */ +	USB_DEVICE_AND_INTERFACE_INFO(0x413c, 0x8183, USB_CLASS_COMM, +			USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), +	.driver_info = (unsigned long) &cdc_info, +}, { +	/* Dell F3607gw ver 2 */ +	USB_DEVICE_AND_INTERFACE_INFO(0x413c, 0x8184, USB_CLASS_COMM, +			USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE), +	.driver_info = (unsigned long) &cdc_info,  },  	{ },		// END  }; diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c index fa4e58196c2..43bc3fcc0d8 100644 --- a/drivers/net/usb/hso.c +++ b/drivers/net/usb/hso.c @@ -378,7 +378,7 @@ static void dbg_dump(int line_count, const char *func_name, unsigned char *buf,  }  #define DUMP(buf_, len_)	\ -	dbg_dump(__LINE__, __func__, buf_, len_) +	dbg_dump(__LINE__, __func__, (unsigned char *)buf_, len_)  #define DUMP1(buf_, len_)			\  	do {					\ @@ -1363,7 +1363,7 @@ static void hso_serial_close(struct tty_struct *tty, struct file *filp)  	/* reset the rts and dtr */  	/* do the actual close */  	serial->open_count--; -	kref_put(&serial->parent->ref, hso_serial_ref_free); +  	if (serial->open_count <= 0) {  		serial->open_count = 0;  		spin_lock_irq(&serial->serial_lock); @@ -1383,6 +1383,8 @@ static void hso_serial_close(struct tty_struct *tty, struct file *filp)  		usb_autopm_put_interface(serial->parent->interface);  	mutex_unlock(&serial->parent->mutex); + +	kref_put(&serial->parent->ref, hso_serial_ref_free);  }  /* close the requested serial port */ @@ -1527,7 +1529,7 @@ static void tiocmget_intr_callback(struct urb *urb)  		dev_warn(&usb->dev,  			 "hso received invalid serial state notification\n");  		DUMP(serial_state_notification, -		     sizeof(hso_serial_state_notifation)) +		     sizeof(struct hso_serial_state_notification));  	} else {  		UART_state_bitmap = le16_to_cpu(serial_state_notification->  |