Commit c7de7dec authored by hayeswang's avatar hayeswang Committed by David S. Miller

r8152: ecm and vendor modes coexist

Remove the limitation that the ecm and r8152 drivers couldn't coexist.
 - Remove the devices from the blacklist of relative drivers.
 - Remove usb_driver_set_configuration() from r8152 driver.
 - Modify the id_table of the r8152 driver for the vendor mode only.
Signed-off-by: default avatarHayes Wang <hayeswang@realtek.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9629e3c0
...@@ -653,15 +653,6 @@ static const struct usb_device_id products[] = { ...@@ -653,15 +653,6 @@ static const struct usb_device_id products[] = {
.driver_info = 0, .driver_info = 0,
}, },
#if defined(CONFIG_USB_RTL8152) || defined(CONFIG_USB_RTL8152_MODULE)
/* Samsung USB Ethernet Adapters */
{
USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, 0xa101, USB_CLASS_COMM,
USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
.driver_info = 0,
},
#endif
/* WHITELIST!!! /* WHITELIST!!!
* *
* CDC Ether uses two interfaces, not necessarily consecutive. * CDC Ether uses two interfaces, not necessarily consecutive.
......
/* /*
* Copyright (c) 2013 Realtek Semiconductor Corp. All rights reserved. * Copyright (c) 2014 Realtek Semiconductor Corp. All rights reserved.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#include <linux/ipv6.h> #include <linux/ipv6.h>
/* Version Information */ /* Version Information */
#define DRIVER_VERSION "v1.03.0 (2013/12/26)" #define DRIVER_VERSION "v1.04.0 (2014/01/15)"
#define DRIVER_AUTHOR "Realtek linux nic maintainers <nic_swsd@realtek.com>" #define DRIVER_AUTHOR "Realtek linux nic maintainers <nic_swsd@realtek.com>"
#define DRIVER_DESC "Realtek RTL8152/RTL8153 Based USB Ethernet Adapters" #define DRIVER_DESC "Realtek RTL8152/RTL8153 Based USB Ethernet Adapters"
#define MODULENAME "r8152" #define MODULENAME "r8152"
...@@ -450,6 +450,9 @@ enum rtl8152_flags { ...@@ -450,6 +450,9 @@ enum rtl8152_flags {
#define MCU_TYPE_PLA 0x0100 #define MCU_TYPE_PLA 0x0100
#define MCU_TYPE_USB 0x0000 #define MCU_TYPE_USB 0x0000
#define REALTEK_USB_DEVICE(vend, prod) \
USB_DEVICE_INTERFACE_CLASS(vend, prod, USB_CLASS_VENDOR_SPEC)
struct rx_desc { struct rx_desc {
__le32 opts1; __le32 opts1;
#define RX_LEN_MASK 0x7fff #define RX_LEN_MASK 0x7fff
...@@ -2738,11 +2741,6 @@ static int rtl8152_probe(struct usb_interface *intf, ...@@ -2738,11 +2741,6 @@ static int rtl8152_probe(struct usb_interface *intf,
struct net_device *netdev; struct net_device *netdev;
int ret; int ret;
if (udev->actconfig->desc.bConfigurationValue != 1) {
usb_driver_set_configuration(udev, 1);
return -ENODEV;
}
netdev = alloc_etherdev(sizeof(struct r8152)); netdev = alloc_etherdev(sizeof(struct r8152));
if (!netdev) { if (!netdev) {
dev_err(&intf->dev, "Out of memory\n"); dev_err(&intf->dev, "Out of memory\n");
...@@ -2823,9 +2821,9 @@ static void rtl8152_disconnect(struct usb_interface *intf) ...@@ -2823,9 +2821,9 @@ static void rtl8152_disconnect(struct usb_interface *intf)
/* table of devices that work with this driver */ /* table of devices that work with this driver */
static struct usb_device_id rtl8152_table[] = { static struct usb_device_id rtl8152_table[] = {
{USB_DEVICE(VENDOR_ID_REALTEK, PRODUCT_ID_RTL8152)}, {REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, PRODUCT_ID_RTL8152)},
{USB_DEVICE(VENDOR_ID_REALTEK, PRODUCT_ID_RTL8153)}, {REALTEK_USB_DEVICE(VENDOR_ID_REALTEK, PRODUCT_ID_RTL8153)},
{USB_DEVICE(VENDOR_ID_SAMSUNG, PRODUCT_ID_SAMSUNG)}, {REALTEK_USB_DEVICE(VENDOR_ID_SAMSUNG, PRODUCT_ID_SAMSUNG)},
{} {}
}; };
......
...@@ -216,21 +216,13 @@ static const struct usb_device_id products[] = { ...@@ -216,21 +216,13 @@ static const struct usb_device_id products[] = {
{ {
USB_DEVICE_AND_INTERFACE_INFO(REALTEK_VENDOR_ID, 0x8152, USB_CLASS_COMM, USB_DEVICE_AND_INTERFACE_INFO(REALTEK_VENDOR_ID, 0x8152, USB_CLASS_COMM,
USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
#if defined(CONFIG_USB_RTL8152) || defined(CONFIG_USB_RTL8152_MODULE)
.driver_info = 0,
#else
.driver_info = (unsigned long) &r8152_info, .driver_info = (unsigned long) &r8152_info,
#endif
}, },
{ {
USB_DEVICE_AND_INTERFACE_INFO(REALTEK_VENDOR_ID, 0x8153, USB_CLASS_COMM, USB_DEVICE_AND_INTERFACE_INFO(REALTEK_VENDOR_ID, 0x8153, USB_CLASS_COMM,
USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
#if defined(CONFIG_USB_RTL8152) || defined(CONFIG_USB_RTL8152_MODULE)
.driver_info = 0,
#else
.driver_info = (unsigned long) &r8153_info, .driver_info = (unsigned long) &r8153_info,
#endif
}, },
{ }, /* END */ { }, /* END */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment