diff options
Diffstat (limited to 'drivers/usb/class/cdc-acm.c')
-rw-r--r-- | drivers/usb/class/cdc-acm.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 077d58ac3dcb..546a17e8ad5b 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c | |||
@@ -1157,8 +1157,6 @@ static int acm_probe(struct usb_interface *intf, | |||
1157 | case USB_CDC_CALL_MANAGEMENT_TYPE: | 1157 | case USB_CDC_CALL_MANAGEMENT_TYPE: |
1158 | call_management_function = buffer[3]; | 1158 | call_management_function = buffer[3]; |
1159 | call_interface_num = buffer[4]; | 1159 | call_interface_num = buffer[4]; |
1160 | if ((quirks & NOT_A_MODEM) == 0 && (call_management_function & 3) != 3) | ||
1161 | dev_err(&intf->dev, "This device cannot do calls on its own. It is not a modem.\n"); | ||
1162 | break; | 1160 | break; |
1163 | default: | 1161 | default: |
1164 | /* there are LOTS more CDC descriptors that | 1162 | /* there are LOTS more CDC descriptors that |
@@ -1197,10 +1195,11 @@ next_desc: | |||
1197 | } else { | 1195 | } else { |
1198 | control_interface = usb_ifnum_to_if(usb_dev, union_header->bMasterInterface0); | 1196 | control_interface = usb_ifnum_to_if(usb_dev, union_header->bMasterInterface0); |
1199 | data_interface = usb_ifnum_to_if(usb_dev, (data_interface_num = union_header->bSlaveInterface0)); | 1197 | data_interface = usb_ifnum_to_if(usb_dev, (data_interface_num = union_header->bSlaveInterface0)); |
1200 | if (!control_interface || !data_interface) { | 1198 | } |
1201 | dev_dbg(&intf->dev, "no interfaces\n"); | 1199 | |
1202 | return -ENODEV; | 1200 | if (!control_interface || !data_interface) { |
1203 | } | 1201 | dev_dbg(&intf->dev, "no interfaces\n"); |
1202 | return -ENODEV; | ||
1204 | } | 1203 | } |
1205 | 1204 | ||
1206 | if (data_interface_num != call_interface_num) | 1205 | if (data_interface_num != call_interface_num) |
@@ -1475,6 +1474,7 @@ alloc_fail8: | |||
1475 | &dev_attr_wCountryCodes); | 1474 | &dev_attr_wCountryCodes); |
1476 | device_remove_file(&acm->control->dev, | 1475 | device_remove_file(&acm->control->dev, |
1477 | &dev_attr_iCountryCodeRelDate); | 1476 | &dev_attr_iCountryCodeRelDate); |
1477 | kfree(acm->country_codes); | ||
1478 | } | 1478 | } |
1479 | device_remove_file(&acm->control->dev, &dev_attr_bmCapabilities); | 1479 | device_remove_file(&acm->control->dev, &dev_attr_bmCapabilities); |
1480 | alloc_fail7: | 1480 | alloc_fail7: |
@@ -1813,11 +1813,6 @@ static const struct usb_device_id acm_ids[] = { | |||
1813 | 1813 | ||
1814 | /* NOTE: non-Nokia COMM/ACM/0xff is likely MSFT RNDIS... NOT a modem! */ | 1814 | /* NOTE: non-Nokia COMM/ACM/0xff is likely MSFT RNDIS... NOT a modem! */ |
1815 | 1815 | ||
1816 | /* Support Lego NXT using pbLua firmware */ | ||
1817 | { USB_DEVICE(0x0694, 0xff00), | ||
1818 | .driver_info = NOT_A_MODEM, | ||
1819 | }, | ||
1820 | |||
1821 | /* Support for Droids MuIn LCD */ | 1816 | /* Support for Droids MuIn LCD */ |
1822 | { USB_DEVICE(0x04d8, 0x000b), | 1817 | { USB_DEVICE(0x04d8, 0x000b), |
1823 | .driver_info = NO_DATA_INTERFACE, | 1818 | .driver_info = NO_DATA_INTERFACE, |