Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d784ef58 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull USB driver fixes from Greg KH:
 "Here are some small USB fixes and new device ids for 4.5-rc2.  Nothing
  major here, full details are in the shortlog, and all of these have
  been in linux-next successfully"

* tag 'usb-4.5-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
  USB: option: fix Cinterion AHxx enumeration
  USB: mxu11x0: fix memory leak on usb_serial private data
  USB: serial: ftdi_sio: add support for Yaesu SCU-18 cable
  USB: serial: option: Adding support for Telit LE922
  USB: serial: visor: fix crash on detecting device without write_urbs
  USB: visor: fix null-deref at probe
  USB: cp210x: add ID for IAI USB to RS485 adaptor
  usb: hub: do not clear BOS field during reset device
  cdc-acm:exclude Samsung phone 04e8:685d
  usb: cdc-acm: send zero packet for intel 7260 modem
  usb: cdc-acm: handle unlinked urb in acm read callback
parents 54e3f3e3 a89a798a
Loading
Loading
Loading
Loading
+13 −1
Original line number Original line Diff line number Diff line
@@ -428,6 +428,7 @@ static void acm_read_bulk_callback(struct urb *urb)
		set_bit(rb->index, &acm->read_urbs_free);
		set_bit(rb->index, &acm->read_urbs_free);
		dev_dbg(&acm->data->dev, "%s - non-zero urb status: %d\n",
		dev_dbg(&acm->data->dev, "%s - non-zero urb status: %d\n",
							__func__, status);
							__func__, status);
		if ((status != -ENOENT) || (urb->actual_length == 0))
			return;
			return;
	}
	}


@@ -1404,6 +1405,8 @@ static int acm_probe(struct usb_interface *intf,
				usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress),
				usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress),
				NULL, acm->writesize, acm_write_bulk, snd);
				NULL, acm->writesize, acm_write_bulk, snd);
		snd->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
		snd->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
		if (quirks & SEND_ZERO_PACKET)
			snd->urb->transfer_flags |= URB_ZERO_PACKET;
		snd->instance = acm;
		snd->instance = acm;
	}
	}


@@ -1838,6 +1841,11 @@ static const struct usb_device_id acm_ids[] = {
	},
	},
#endif
#endif


	/*Samsung phone in firmware update mode */
	{ USB_DEVICE(0x04e8, 0x685d),
	.driver_info = IGNORE_DEVICE,
	},

	/* Exclude Infineon Flash Loader utility */
	/* Exclude Infineon Flash Loader utility */
	{ USB_DEVICE(0x058b, 0x0041),
	{ USB_DEVICE(0x058b, 0x0041),
	.driver_info = IGNORE_DEVICE,
	.driver_info = IGNORE_DEVICE,
@@ -1861,6 +1869,10 @@ static const struct usb_device_id acm_ids[] = {
	{ USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM,
	{ USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM,
		USB_CDC_ACM_PROTO_AT_CDMA) },
		USB_CDC_ACM_PROTO_AT_CDMA) },


	{ USB_DEVICE(0x1519, 0x0452), /* Intel 7260 modem */
	.driver_info = SEND_ZERO_PACKET,
	},

	{ }
	{ }
};
};


+1 −0
Original line number Original line Diff line number Diff line
@@ -134,3 +134,4 @@ struct acm {
#define IGNORE_DEVICE			BIT(5)
#define IGNORE_DEVICE			BIT(5)
#define QUIRK_CONTROL_LINE_STATE	BIT(6)
#define QUIRK_CONTROL_LINE_STATE	BIT(6)
#define CLEAR_HALT_CONDITIONS		BIT(7)
#define CLEAR_HALT_CONDITIONS		BIT(7)
#define SEND_ZERO_PACKET		BIT(8)
+5 −3
Original line number Original line Diff line number Diff line
@@ -5401,7 +5401,6 @@ static int usb_reset_and_verify_device(struct usb_device *udev)
	}
	}


	bos = udev->bos;
	bos = udev->bos;
	udev->bos = NULL;


	for (i = 0; i < SET_CONFIG_TRIES; ++i) {
	for (i = 0; i < SET_CONFIG_TRIES; ++i) {


@@ -5494,8 +5493,11 @@ static int usb_reset_and_verify_device(struct usb_device *udev)
	usb_set_usb2_hardware_lpm(udev, 1);
	usb_set_usb2_hardware_lpm(udev, 1);
	usb_unlocked_enable_lpm(udev);
	usb_unlocked_enable_lpm(udev);
	usb_enable_ltm(udev);
	usb_enable_ltm(udev);
	/* release the new BOS descriptor allocated  by hub_port_init() */
	if (udev->bos != bos) {
		usb_release_bos_descriptor(udev);
		usb_release_bos_descriptor(udev);
		udev->bos = bos;
		udev->bos = bos;
	}
	return 0;
	return 0;


re_enumerate:
re_enumerate:
+1 −0
Original line number Original line Diff line number Diff line
@@ -99,6 +99,7 @@ static const struct usb_device_id id_table[] = {
	{ USB_DEVICE(0x10C4, 0x81AC) }, /* MSD Dash Hawk */
	{ USB_DEVICE(0x10C4, 0x81AC) }, /* MSD Dash Hawk */
	{ USB_DEVICE(0x10C4, 0x81AD) }, /* INSYS USB Modem */
	{ USB_DEVICE(0x10C4, 0x81AD) }, /* INSYS USB Modem */
	{ USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */
	{ USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */
	{ USB_DEVICE(0x10C4, 0x81D7) }, /* IAI Corp. RCB-CV-USB USB to RS485 Adaptor */
	{ USB_DEVICE(0x10C4, 0x81E2) }, /* Lipowsky Industrie Elektronik GmbH, Baby-LIN */
	{ USB_DEVICE(0x10C4, 0x81E2) }, /* Lipowsky Industrie Elektronik GmbH, Baby-LIN */
	{ USB_DEVICE(0x10C4, 0x81E7) }, /* Aerocomm Radio */
	{ USB_DEVICE(0x10C4, 0x81E7) }, /* Aerocomm Radio */
	{ USB_DEVICE(0x10C4, 0x81E8) }, /* Zephyr Bioharness */
	{ USB_DEVICE(0x10C4, 0x81E8) }, /* Zephyr Bioharness */
+1 −0
Original line number Original line Diff line number Diff line
@@ -824,6 +824,7 @@ static const struct usb_device_id id_table_combined[] = {
	{ USB_DEVICE(FTDI_VID, FTDI_TURTELIZER_PID),
	{ USB_DEVICE(FTDI_VID, FTDI_TURTELIZER_PID),
		.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
		.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
	{ USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
	{ USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
	{ USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_SCU18) },
	{ USB_DEVICE(FTDI_VID, FTDI_REU_TINY_PID) },
	{ USB_DEVICE(FTDI_VID, FTDI_REU_TINY_PID) },


	/* Papouch devices based on FTDI chip */
	/* Papouch devices based on FTDI chip */
Loading