Commit 2bdc2bcd authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge tag 'usb-serial-5.19-rc4' of...

Merge tag 'usb-serial-5.19-rc4' of https://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial into usb-linus

Johan writes:

USB-serial fixes for 5.19-rc4

Here are some new modem device ids and support for further PL2303
device types.

All but the final commit (RM500K device id) have been in linux-next and
with no reported issues.

* tag 'usb-serial-5.19-rc4' of https://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial:
  USB: serial: option: add Quectel RM500K module support
  USB: serial: option: add Quectel EM05-G modem
  USB: serial: pl2303: add support for more HXN (G) types
  USB: serial: option: add Telit LE910Cx 0x1250 composition
parents 9ef16540 15b694e9
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -252,10 +252,12 @@ static void option_instat_callback(struct urb *urb);
#define QUECTEL_PRODUCT_EG95			0x0195
#define QUECTEL_PRODUCT_BG96			0x0296
#define QUECTEL_PRODUCT_EP06			0x0306
#define QUECTEL_PRODUCT_EM05G			0x030a
#define QUECTEL_PRODUCT_EM12			0x0512
#define QUECTEL_PRODUCT_RM500Q			0x0800
#define QUECTEL_PRODUCT_EC200S_CN		0x6002
#define QUECTEL_PRODUCT_EC200T			0x6026
#define QUECTEL_PRODUCT_RM500K			0x7001

#define CMOTECH_VENDOR_ID			0x16d8
#define CMOTECH_PRODUCT_6001			0x6001
@@ -1134,6 +1136,8 @@ static const struct usb_device_id option_ids[] = {
	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0xff, 0xff),
	  .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06, 0xff, 0, 0) },
	{ USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM05G, 0xff),
	  .driver_info = RSVD(6) | ZLP },
	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0xff, 0xff),
	  .driver_info = RSVD(1) | RSVD(2) | RSVD(3) | RSVD(4) | NUMEP2 },
	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM12, 0xff, 0, 0) },
@@ -1147,6 +1151,7 @@ static const struct usb_device_id option_ids[] = {
	  .driver_info = ZLP },
	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200S_CN, 0xff, 0, 0) },
	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200T, 0xff, 0, 0) },
	{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RM500K, 0xff, 0x00, 0x00) },

	{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },
	{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },
@@ -1279,6 +1284,7 @@ static const struct usb_device_id option_ids[] = {
	  .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
	{ USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1231, 0xff),	/* Telit LE910Cx (RNDIS) */
	  .driver_info = NCTRL(2) | RSVD(3) },
	{ USB_DEVICE_AND_INTERFACE_INFO(TELIT_VENDOR_ID, 0x1250, 0xff, 0x00, 0x00) },	/* Telit LE910Cx (rmnet) */
	{ USB_DEVICE(TELIT_VENDOR_ID, 0x1260),
	  .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
	{ USB_DEVICE(TELIT_VENDOR_ID, 0x1261),
+17 −12
Original line number Diff line number Diff line
@@ -436,22 +436,27 @@ static int pl2303_detect_type(struct usb_serial *serial)
		break;
	case 0x200:
		switch (bcdDevice) {
		case 0x100:
		case 0x100:	/* GC */
		case 0x105:
			return TYPE_HXN;
		case 0x300:	/* GT / TA */
			if (pl2303_supports_hx_status(serial))
				return TYPE_TA;
			fallthrough;
		case 0x305:
		case 0x400:	/* GL */
		case 0x405:
		case 0x605:
			/*
			 * Assume it's an HXN-type if the device doesn't
			 * support the old read request value.
			 */
			if (!pl2303_supports_hx_status(serial))
			return TYPE_HXN;
			break;
		case 0x300:
			return TYPE_TA;
		case 0x500:
		case 0x500:	/* GE / TB */
			if (pl2303_supports_hx_status(serial))
				return TYPE_TB;
			fallthrough;
		case 0x505:
		case 0x600:	/* GS */
		case 0x605:
		case 0x700:	/* GR */
		case 0x705:
			return TYPE_HXN;
		}
		break;
	}