| From 3861bc7415bf4bd317c2b690fa20b526a71fffc6 Mon Sep 17 00:00:00 2001 |
| From: James Hilliard <james.hilliard1@gmail.com> |
| Date: Tue, 16 Jun 2020 16:04:03 -0600 |
| Subject: [PATCH] USB: serial: cypress_m8: enable Simply Automated UPB PIM |
| |
| commit 5c45d04c5081c1830d674f4d22d4400ea2083afe upstream. |
| |
| This is a UPB (Universal Powerline Bus) PIM (Powerline Interface Module) |
| which allows for controlling multiple UPB compatible devices from Linux |
| using the standard serial interface. |
| |
| Based on vendor application source code there are two different models |
| of USB based PIM devices in addition to a number of RS232 based PIM's. |
| |
| The vendor UPB application source contains the following USB ID's: |
| |
| #define USB_PCS_VENDOR_ID 0x04b4 |
| #define USB_PCS_PIM_PRODUCT_ID 0x5500 |
| |
| #define USB_SAI_VENDOR_ID 0x17dd |
| #define USB_SAI_PIM_PRODUCT_ID 0x5500 |
| |
| The first set of ID's correspond to the PIM variant sold by Powerline |
| Control Systems while the second corresponds to the Simply Automated |
| Incorporated PIM. As the product ID for both of these match the default |
| cypress HID->COM RS232 product ID it assumed that they both use an |
| internal variant of this HID->COM RS232 converter hardware. However |
| as the vendor ID for the Simply Automated variant is different we need |
| to also add it to the cypress_M8 driver so that it is properly |
| detected. |
| |
| Signed-off-by: James Hilliard <james.hilliard1@gmail.com> |
| Link: https://lore.kernel.org/r/20200616220403.1807003-1-james.hilliard1@gmail.com |
| Cc: stable@vger.kernel.org |
| [ johan: amend VID define entry ] |
| Signed-off-by: Johan Hovold <johan@kernel.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/usb/serial/cypress_m8.c b/drivers/usb/serial/cypress_m8.c |
| index 72d3ae1ebc64..77681229486e 100644 |
| --- a/drivers/usb/serial/cypress_m8.c |
| +++ b/drivers/usb/serial/cypress_m8.c |
| @@ -59,6 +59,7 @@ static const struct usb_device_id id_table_earthmate[] = { |
| |
| static const struct usb_device_id id_table_cyphidcomrs232[] = { |
| { USB_DEVICE(VENDOR_ID_CYPRESS, PRODUCT_ID_CYPHIDCOM) }, |
| + { USB_DEVICE(VENDOR_ID_SAI, PRODUCT_ID_CYPHIDCOM) }, |
| { USB_DEVICE(VENDOR_ID_POWERCOM, PRODUCT_ID_UPS) }, |
| { USB_DEVICE(VENDOR_ID_FRWD, PRODUCT_ID_CYPHIDCOM_FRWD) }, |
| { } /* Terminating entry */ |
| @@ -73,6 +74,7 @@ static const struct usb_device_id id_table_combined[] = { |
| { USB_DEVICE(VENDOR_ID_DELORME, PRODUCT_ID_EARTHMATEUSB) }, |
| { USB_DEVICE(VENDOR_ID_DELORME, PRODUCT_ID_EARTHMATEUSB_LT20) }, |
| { USB_DEVICE(VENDOR_ID_CYPRESS, PRODUCT_ID_CYPHIDCOM) }, |
| + { USB_DEVICE(VENDOR_ID_SAI, PRODUCT_ID_CYPHIDCOM) }, |
| { USB_DEVICE(VENDOR_ID_POWERCOM, PRODUCT_ID_UPS) }, |
| { USB_DEVICE(VENDOR_ID_FRWD, PRODUCT_ID_CYPHIDCOM_FRWD) }, |
| { USB_DEVICE(VENDOR_ID_DAZZLE, PRODUCT_ID_CA42) }, |
| diff --git a/drivers/usb/serial/cypress_m8.h b/drivers/usb/serial/cypress_m8.h |
| index 35e223751c0e..16b7410ad057 100644 |
| --- a/drivers/usb/serial/cypress_m8.h |
| +++ b/drivers/usb/serial/cypress_m8.h |
| @@ -25,6 +25,9 @@ |
| #define VENDOR_ID_CYPRESS 0x04b4 |
| #define PRODUCT_ID_CYPHIDCOM 0x5500 |
| |
| +/* Simply Automated HID->COM UPB PIM (using Cypress PID 0x5500) */ |
| +#define VENDOR_ID_SAI 0x17dd |
| + |
| /* FRWD Dongle - a GPS sports watch */ |
| #define VENDOR_ID_FRWD 0x6737 |
| #define PRODUCT_ID_CYPHIDCOM_FRWD 0x0001 |
| -- |
| 2.27.0 |
| |