r8152: add PID for the Lenovo OneLink+ Dock
The Lenovo OneLink+ Dock contains an RTL8153 controller that behaves as a broken CDC device by default. Add the custom Lenovo PID to the r8152 driver to support it properly. Also, systems compatible with this dock provide a BIOS option to enable MAC address passthrough (as per Lenovo document "ThinkPad Docking Solutions 2017"). Add the custom PID to the MAC passthrough list too. Tested on a ThinkPad 13 1st gen with the expected results: passthrough disabled: Invalid header when reading pass-thru MAC addr passthrough enabled: Using pass-thru MAC addr XX:XX:XX:XX:XX:XX Signed-off-by: Jean-Francois Le Fillatre <jflf_kernel@gmx.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ebe5555c2f
commit
1bd3a38307
|
@ -777,6 +777,13 @@ static const struct usb_device_id products[] = {
|
|||
},
|
||||
#endif
|
||||
|
||||
/* Lenovo ThinkPad OneLink+ Dock (based on Realtek RTL8153) */
|
||||
{
|
||||
USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0x3054, USB_CLASS_COMM,
|
||||
USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
|
||||
.driver_info = 0,
|
||||
},
|
||||
|
||||
/* ThinkPad USB-C Dock (based on Realtek RTL8153) */
|
||||
{
|
||||
USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0x3062, USB_CLASS_COMM,
|
||||
|
|
|
@ -770,6 +770,7 @@ enum rtl8152_flags {
|
|||
RX_EPROTO,
|
||||
};
|
||||
|
||||
#define DEVICE_ID_THINKPAD_ONELINK_PLUS_DOCK 0x3054
|
||||
#define DEVICE_ID_THINKPAD_THUNDERBOLT3_DOCK_GEN2 0x3082
|
||||
#define DEVICE_ID_THINKPAD_USB_C_DONGLE 0x720c
|
||||
#define DEVICE_ID_THINKPAD_USB_C_DOCK_GEN2 0xa387
|
||||
|
@ -9581,6 +9582,7 @@ static bool rtl8152_supports_lenovo_macpassthru(struct usb_device *udev)
|
|||
|
||||
if (vendor_id == VENDOR_ID_LENOVO) {
|
||||
switch (product_id) {
|
||||
case DEVICE_ID_THINKPAD_ONELINK_PLUS_DOCK:
|
||||
case DEVICE_ID_THINKPAD_THUNDERBOLT3_DOCK_GEN2:
|
||||
case DEVICE_ID_THINKPAD_USB_C_DOCK_GEN2:
|
||||
case DEVICE_ID_THINKPAD_USB_C_DOCK_GEN3:
|
||||
|
@ -9828,6 +9830,7 @@ static const struct usb_device_id rtl8152_table[] = {
|
|||
REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x0927),
|
||||
REALTEK_USB_DEVICE(VENDOR_ID_SAMSUNG, 0xa101),
|
||||
REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x304f),
|
||||
REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3054),
|
||||
REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3062),
|
||||
REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3069),
|
||||
REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3082),
|
||||
|
|
Loading…
Reference in New Issue