mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 05:11:48 +00:00
USB fixes for 5.7-rc5
Here are some small USB fixes for 5.7-rc5 to resolve some reported issues: - syzbot found problems fixed - usbfs dma mapping fix - typec bugfixs - chipidea bugfix - usb4/thunderbolt fix - new device ids/quirks All of these have been in linux-next for a while with no reported issues. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCXrVlxQ8cZ3JlZ0Brcm9h aC5jb20ACgkQMUfUDdst+ynyPwCgtPF0qX7DbP3RwhPGoy3YCPNlsXMAoJT2T+CH 6MuNazbkAv6GcqAW/50i =Viyi -----END PGP SIGNATURE----- Merge tag 'usb-5.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb Pull USB fixes from Greg KH: "Here are some small USB fixes for 5.7-rc5 to resolve some reported issues: - syzbot found problems fixed - usbfs dma mapping fix - typec bugfixs - chipidea bugfix - usb4/thunderbolt fix - new device ids/quirks All of these have been in linux-next for a while with no reported issues" * tag 'usb-5.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: usb: chipidea: msm: Ensure proper controller reset using role switch API usb: typec: mux: intel: Handle alt mode HPD_HIGH usb: usbfs: correct kernel->user page attribute mismatch usb: typec: intel_pmc_mux: Fix the property names USB: core: Fix misleading driver bug report USB: serial: qcserial: Add DW5816e support USB: uas: add quirk for LaCie 2Big Quadra thunderbolt: Check return value of tb_sw_read() in usb4_switch_op() USB: serial: garmin_gps: add sanity checking for data length
This commit is contained in:
commit
0a0b96b2e2
@ -182,6 +182,9 @@ static int usb4_switch_op(struct tb_switch *sw, u16 opcode, u8 *status)
|
||||
return ret;
|
||||
|
||||
ret = tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_26, 1);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (val & ROUTER_CS_26_ONS)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
|
@ -114,7 +114,7 @@ static int ci_hdrc_msm_notify_event(struct ci_hdrc *ci, unsigned event)
|
||||
hw_write_id_reg(ci, HS_PHY_GENCONFIG_2,
|
||||
HS_PHY_ULPI_TX_PKT_EN_CLR_FIX, 0);
|
||||
|
||||
if (!IS_ERR(ci->platdata->vbus_extcon.edev)) {
|
||||
if (!IS_ERR(ci->platdata->vbus_extcon.edev) || ci->role_switch) {
|
||||
hw_write_id_reg(ci, HS_PHY_GENCONFIG_2,
|
||||
HS_PHY_SESS_VLD_CTRL_EN,
|
||||
HS_PHY_SESS_VLD_CTRL_EN);
|
||||
|
@ -217,6 +217,7 @@ static int usbdev_mmap(struct file *file, struct vm_area_struct *vma)
|
||||
{
|
||||
struct usb_memory *usbm = NULL;
|
||||
struct usb_dev_state *ps = file->private_data;
|
||||
struct usb_hcd *hcd = bus_to_hcd(ps->dev->bus);
|
||||
size_t size = vma->vm_end - vma->vm_start;
|
||||
void *mem;
|
||||
unsigned long flags;
|
||||
@ -250,9 +251,7 @@ static int usbdev_mmap(struct file *file, struct vm_area_struct *vma)
|
||||
usbm->vma_use_count = 1;
|
||||
INIT_LIST_HEAD(&usbm->memlist);
|
||||
|
||||
if (remap_pfn_range(vma, vma->vm_start,
|
||||
virt_to_phys(usbm->mem) >> PAGE_SHIFT,
|
||||
size, vma->vm_page_prot) < 0) {
|
||||
if (dma_mmap_coherent(hcd->self.sysdev, vma, mem, dma_handle, size)) {
|
||||
dec_usb_memory_use_count(usbm, &usbm->vma_use_count);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
@ -1144,11 +1144,11 @@ void usb_disable_endpoint(struct usb_device *dev, unsigned int epaddr,
|
||||
|
||||
if (usb_endpoint_out(epaddr)) {
|
||||
ep = dev->ep_out[epnum];
|
||||
if (reset_hardware)
|
||||
if (reset_hardware && epnum != 0)
|
||||
dev->ep_out[epnum] = NULL;
|
||||
} else {
|
||||
ep = dev->ep_in[epnum];
|
||||
if (reset_hardware)
|
||||
if (reset_hardware && epnum != 0)
|
||||
dev->ep_in[epnum] = NULL;
|
||||
}
|
||||
if (ep) {
|
||||
|
@ -1138,8 +1138,8 @@ static void garmin_read_process(struct garmin_data *garmin_data_p,
|
||||
send it directly to the tty port */
|
||||
if (garmin_data_p->flags & FLAGS_QUEUING) {
|
||||
pkt_add(garmin_data_p, data, data_length);
|
||||
} else if (bulk_data ||
|
||||
getLayerId(data) == GARMIN_LAYERID_APPL) {
|
||||
} else if (bulk_data || (data_length >= sizeof(u32) &&
|
||||
getLayerId(data) == GARMIN_LAYERID_APPL)) {
|
||||
|
||||
spin_lock_irqsave(&garmin_data_p->lock, flags);
|
||||
garmin_data_p->flags |= APP_RESP_SEEN;
|
||||
|
@ -173,6 +173,7 @@ static const struct usb_device_id id_table[] = {
|
||||
{DEVICE_SWI(0x413c, 0x81b3)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */
|
||||
{DEVICE_SWI(0x413c, 0x81b5)}, /* Dell Wireless 5811e QDL */
|
||||
{DEVICE_SWI(0x413c, 0x81b6)}, /* Dell Wireless 5811e QDL */
|
||||
{DEVICE_SWI(0x413c, 0x81cc)}, /* Dell Wireless 5816e */
|
||||
{DEVICE_SWI(0x413c, 0x81cf)}, /* Dell Wireless 5819 */
|
||||
{DEVICE_SWI(0x413c, 0x81d0)}, /* Dell Wireless 5819 */
|
||||
{DEVICE_SWI(0x413c, 0x81d1)}, /* Dell Wireless 5818 */
|
||||
|
@ -28,6 +28,13 @@
|
||||
* and don't forget to CC: the USB development list <linux-usb@vger.kernel.org>
|
||||
*/
|
||||
|
||||
/* Reported-by: Julian Groß <julian.g@posteo.de> */
|
||||
UNUSUAL_DEV(0x059f, 0x105f, 0x0000, 0x9999,
|
||||
"LaCie",
|
||||
"2Big Quadra USB3",
|
||||
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
|
||||
US_FL_NO_REPORT_OPCODES),
|
||||
|
||||
/*
|
||||
* Apricorn USB3 dongle sometimes returns "USBSUSBSUSBS" in response to SCSI
|
||||
* commands in UAS mode. Observed with the 1.28 firmware; are there others?
|
||||
|
@ -157,6 +157,10 @@ pmc_usb_mux_dp(struct pmc_usb_port *port, struct typec_mux_state *state)
|
||||
req.mode_data |= (state->mode - TYPEC_STATE_MODAL) <<
|
||||
PMC_USB_ALTMODE_DP_MODE_SHIFT;
|
||||
|
||||
if (data->status & DP_STATUS_HPD_STATE)
|
||||
req.mode_data |= PMC_USB_DP_HPD_LVL <<
|
||||
PMC_USB_ALTMODE_DP_MODE_SHIFT;
|
||||
|
||||
return pmc_usb_command(port, (void *)&req, sizeof(req));
|
||||
}
|
||||
|
||||
@ -298,11 +302,11 @@ static int pmc_usb_register_port(struct pmc_usb *pmc, int index,
|
||||
struct typec_mux_desc mux_desc = { };
|
||||
int ret;
|
||||
|
||||
ret = fwnode_property_read_u8(fwnode, "usb2-port", &port->usb2_port);
|
||||
ret = fwnode_property_read_u8(fwnode, "usb2-port-number", &port->usb2_port);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = fwnode_property_read_u8(fwnode, "usb3-port", &port->usb3_port);
|
||||
ret = fwnode_property_read_u8(fwnode, "usb3-port-number", &port->usb3_port);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user