diff mbox

USB: serial: cp210x: add Silicon Labs IDs for Windows Update

Message ID 20180609112608.2644-1-pados@pados.hu (mailing list archive)
State New, archived
Headers show

Commit Message

Karoly Pados June 9, 2018, 11:26 a.m. UTC
Silicon Labs defines alternative VID/PID pairs for some chips that when
used will automatically install drivers for Windows users without manual
intervention. Unfortunately, these IDs are not recognized by the Linux
module, so using these IDs improves user experience on one platform but
degrades it on Linux. This patch addresses this problem.

Now with mailing list in CC.

Signed-off-by: Karoly Pados <pados@pados.hu>
---
 drivers/usb/serial/cp210x.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Johan Hovold June 18, 2018, 7:10 a.m. UTC | #1
On Sat, Jun 09, 2018 at 01:26:08PM +0200, Karoly Pados wrote:
> Silicon Labs defines alternative VID/PID pairs for some chips that when
> used will automatically install drivers for Windows users without manual
> intervention. Unfortunately, these IDs are not recognized by the Linux
> module, so using these IDs improves user experience on one platform but
> degrades it on Linux. This patch addresses this problem.

How does this work; do these chips now come with the "windows update"
PIDs, and the silabs drivers then reprogram them to use other PIDs once
installed?

Is this documented somewhere?

> Now with mailing list in CC.

This kind of revision information should go below the cut-off line (---)
below. I'll just remove it this time unless there's a resend.

> Signed-off-by: Karoly Pados <pados@pados.hu>
> ---
>  drivers/usb/serial/cp210x.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
> index eb6c26cbe579..b1849f657e01 100644
> --- a/drivers/usb/serial/cp210x.c
> +++ b/drivers/usb/serial/cp210x.c
> @@ -143,8 +143,11 @@ static const struct usb_device_id id_table[] = {
>  	{ USB_DEVICE(0x10C4, 0x8B34) }, /* Qivicon ZigBee USB Radio Stick */
>  	{ USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
>  	{ USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
> +	{ USB_DEVICE(0x10C4, 0xEA63) }, /* Silicon Labs values for Windows Update support (CP2101-4/CP2102N) */

I may shorten this somewhat.

>  	{ USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */
>  	{ USB_DEVICE(0x10C4, 0xEA71) }, /* Infinity GPS-MIC-1 Radio Monophone */
> +	{ USB_DEVICE(0x10C4, 0xEA7A) }, /* Silicon Labs values for Windows Update support (CP2105) */
> +	{ USB_DEVICE(0x10C4, 0xEA7B) }, /* Silicon Labs values for Windows Update support (CP2108) */
>  	{ USB_DEVICE(0x10C4, 0xF001) }, /* Elan Digital Systems USBscope50 */
>  	{ USB_DEVICE(0x10C4, 0xF002) }, /* Elan Digital Systems USBwave12 */
>  	{ USB_DEVICE(0x10C4, 0xF003) }, /* Elan Digital Systems USBpulse100 */

Thanks,
Johan
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Karoly Pados June 18, 2018, 7:26 a.m. UTC | #2
Hello,

> How does this work; do these chips now come with the "windows update"
> PIDs, and the silabs drivers then reprogram them to use other PIDs once
> installed?
> 

The way this works is that the chips still come with the standard SiLabs IDs. When the chip is integrated into an end-user product, the product manufacturer has the choice to reprogram the IDs. If they are left on the factory standard setting, the user will have to install drivers manually (go to SiLabs website, search, download, install by hand). Alternatively, the product manufacturer can reprogram the IDs to the "new" ones for Windows Update before shipping it to the customer, in which case Windows will automatically find, download, and install the drivers when plugged in the first time.

More (official) info here: https://www.silabs.com/community/interface/knowledge-base.entry.html/2016/12/30/downloading_cp210xd-ek07

About the cutoff line: Sorry about that, now I know (first kernel patch for me). It seems you prefer to just adjust the commit message for now, otherwise let me know if you'd like me to resubmit.

Best,
Karoly
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Johan Hovold June 18, 2018, 7:46 a.m. UTC | #3
On Mon, Jun 18, 2018 at 07:26:24AM +0000, Karoly Pados wrote:

> The way this works is that the chips still come with the standard
> SiLabs IDs. When the chip is integrated into an end-user product, the
> product manufacturer has the choice to reprogram the IDs. If they are
> left on the factory standard setting, the user will have to install
> drivers manually (go to SiLabs website, search, download, install by
> hand). Alternatively, the product manufacturer can reprogram the IDs
> to the "new" ones for Windows Update before shipping it to the
> customer, in which case Windows will automatically find, download, and
> install the drivers when plugged in the first time.
> 
> More (official) info here: https://www.silabs.com/community/interface/knowledge-base.entry.html/2016/12/30/downloading_cp210xd-ek07

Thanks for the info.

> About the cutoff line: Sorry about that, now I know (first kernel
> patch for me). It seems you prefer to just adjust the commit message
> for now, otherwise let me know if you'd like me to resubmit.

Yeah, no worries. I've applied the patch for 4.17-rc with a stable tag
now.

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

Patch

diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
index eb6c26cbe579..b1849f657e01 100644
--- a/drivers/usb/serial/cp210x.c
+++ b/drivers/usb/serial/cp210x.c
@@ -143,8 +143,11 @@  static const struct usb_device_id id_table[] = {
 	{ USB_DEVICE(0x10C4, 0x8B34) }, /* Qivicon ZigBee USB Radio Stick */
 	{ USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
 	{ USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
+	{ USB_DEVICE(0x10C4, 0xEA63) }, /* Silicon Labs values for Windows Update support (CP2101-4/CP2102N) */
 	{ USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */
 	{ USB_DEVICE(0x10C4, 0xEA71) }, /* Infinity GPS-MIC-1 Radio Monophone */
+	{ USB_DEVICE(0x10C4, 0xEA7A) }, /* Silicon Labs values for Windows Update support (CP2105) */
+	{ USB_DEVICE(0x10C4, 0xEA7B) }, /* Silicon Labs values for Windows Update support (CP2108) */
 	{ USB_DEVICE(0x10C4, 0xF001) }, /* Elan Digital Systems USBscope50 */
 	{ USB_DEVICE(0x10C4, 0xF002) }, /* Elan Digital Systems USBwave12 */
 	{ USB_DEVICE(0x10C4, 0xF003) }, /* Elan Digital Systems USBpulse100 */