[PATCH 3/3] USB: cdc-acm - blacklist IMS PCU device

2013-02-18 Thread Dmitry Torokhov
The IMS PCU (Passenger Control Unit) device used custom protocol over serial
line, so it is presenting itself as CDC ACM device.

Now that we have proper in-kernel driver for it we need to black-list the
device in cdc-acm driver.

Signed-off-by: Dmitry Torokhov 
---
 drivers/usb/class/cdc-acm.c | 13 +
 drivers/usb/class/cdc-acm.h |  1 +
 2 files changed, 14 insertions(+)

diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index 2d92cce..3c8473d 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -987,6 +987,10 @@ static int acm_probe(struct usb_interface *intf,
 
/* normal quirks */
quirks = (unsigned long)id->driver_info;
+
+   if (quirks == IGNORE_DEVICE)
+   return -ENODEV;
+
num_rx_buf = (quirks == SINGLE_RX_URB) ? 1 : ACM_NR;
 
/* handle quirks deadly to normal probing*/
@@ -1691,6 +1695,15 @@ static const struct usb_device_id acm_ids[] = {
.driver_info = NO_DATA_INTERFACE,
},
 
+#if IS_ENABLED(CONFIG_INPUT_IMS_PCU)
+   { USB_DEVICE(0x04d8, 0x0082),   /* Application mode */
+   .driver_info = IGNORE_DEVICE,
+   },
+   { USB_DEVICE(0x04d8, 0x0083),   /* Bootloader mode */
+   .driver_info = IGNORE_DEVICE,
+   },
+#endif
+
/* control interfaces without any protocol set */
{ USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM,
USB_CDC_PROTO_NONE) },
diff --git a/drivers/usb/class/cdc-acm.h b/drivers/usb/class/cdc-acm.h
index 35ef887..0f76e4a 100644
--- a/drivers/usb/class/cdc-acm.h
+++ b/drivers/usb/class/cdc-acm.h
@@ -128,3 +128,4 @@ struct acm {
 #define NO_CAP_LINE4
 #define NOT_A_MODEM8
 #define NO_DATA_INTERFACE  16
+#define IGNORE_DEVICE  32
-- 
1.7.11.7

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] USB: cdc-acm - blacklist IMS PCU device

2013-02-18 Thread Greg KH
On Mon, Feb 18, 2013 at 11:05:57AM -0800, Dmitry Torokhov wrote:
> The IMS PCU (Passenger Control Unit) device used custom protocol over serial
> line, so it is presenting itself as CDC ACM device.
> 
> Now that we have proper in-kernel driver for it we need to black-list the
> device in cdc-acm driver.
> 
> Signed-off-by: Dmitry Torokhov 

Acked-by: Greg Kroah-Hartman 

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html