mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 05:30:54 +07:00
USB fixes for 3.5-rc5
Here are some small USB gadget bugfixes, and a few new USB device ids added to
some drivers for the 3.5-rc5 release.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
iEYEABECAAYFAk/rYS0ACgkQMUfUDdst+ynuGQCfYYD43H+BtubcS+jt5N61/5lM
wUgAoM1wru64Kfox9v6U8g21AnLeJOhJ
=e1xG
-----END PGP SIGNATURE-----
Merge tag 'usb-3.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB fixes from Greg Kroah-Hartman:
"Here are some small USB gadget bugfixes, and a few new USB device ids
added to some drivers for the 3.5-rc5 release.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"
* tag 'usb-3.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
USB: CP210x Add 10 Device IDs
USB: option: Add USB ID for Novatel Ovation MC551
usb: phy: Fix Kconfig dependency for Phy drivers
usb-storage: revert commit afff07e61a
(Add 090c:1000 to unusal-devs)
SCSI & usb-storage: add try_rc_10_first flag
usb: musb: host: release dma channels if no active io
usb: gadget: lpc32xx_udc: fix build error with debugfs enabled
usb: otg: twl6030-usb: Fix twl writes
USB: option: add id for Cellient MEN-200
usb: dwc3: fix giveback of queued request in ep_dequeue
usb: gadget: Complete fsl qe/udc driver conversion
This commit is contained in:
commit
47b514cd47
@ -1899,6 +1899,8 @@ static int sd_try_rc16_first(struct scsi_device *sdp)
|
||||
{
|
||||
if (sdp->host->max_cmd_len < 16)
|
||||
return 0;
|
||||
if (sdp->try_rc_10_first)
|
||||
return 0;
|
||||
if (sdp->scsi_level > SCSI_SPC_2)
|
||||
return 1;
|
||||
if (scsi_device_protection(sdp))
|
||||
|
@ -46,7 +46,7 @@ obj-$(CONFIG_USB_MICROTEK) += image/
|
||||
obj-$(CONFIG_USB_SERIAL) += serial/
|
||||
|
||||
obj-$(CONFIG_USB) += misc/
|
||||
obj-$(CONFIG_USB) += phy/
|
||||
obj-$(CONFIG_USB_COMMON) += phy/
|
||||
obj-$(CONFIG_EARLY_PRINTK_DBGP) += early/
|
||||
|
||||
obj-$(CONFIG_USB_ATM) += atm/
|
||||
|
@ -1091,7 +1091,7 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep,
|
||||
if (r == req) {
|
||||
/* wait until it is processed */
|
||||
dwc3_stop_active_transfer(dwc, dep->number);
|
||||
goto out0;
|
||||
goto out1;
|
||||
}
|
||||
dev_err(dwc->dev, "request %p was not queued to %s\n",
|
||||
request, ep->name);
|
||||
@ -1099,6 +1099,7 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep,
|
||||
goto out0;
|
||||
}
|
||||
|
||||
out1:
|
||||
/* giveback the request */
|
||||
dwc3_gadget_giveback(dep, req, -ECONNRESET);
|
||||
|
||||
|
@ -153,10 +153,10 @@ struct usb_ep_para{
|
||||
#define USB_BUSMODE_DTB 0x02
|
||||
|
||||
/* Endpoint basic handle */
|
||||
#define ep_index(EP) ((EP)->desc->bEndpointAddress & 0xF)
|
||||
#define ep_index(EP) ((EP)->ep.desc->bEndpointAddress & 0xF)
|
||||
#define ep_maxpacket(EP) ((EP)->ep.maxpacket)
|
||||
#define ep_is_in(EP) ((ep_index(EP) == 0) ? (EP->udc->ep0_dir == \
|
||||
USB_DIR_IN) : ((EP)->desc->bEndpointAddress \
|
||||
USB_DIR_IN) : ((EP)->ep.desc->bEndpointAddress \
|
||||
& USB_DIR_IN) == USB_DIR_IN)
|
||||
|
||||
/* ep0 transfer state */
|
||||
|
@ -61,6 +61,7 @@
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/board.h>
|
||||
#ifdef CONFIG_USB_GADGET_DEBUG_FILES
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/seq_file.h>
|
||||
#endif
|
||||
|
||||
|
@ -375,11 +375,21 @@ static void musb_advance_schedule(struct musb *musb, struct urb *urb,
|
||||
*/
|
||||
if (list_empty(&qh->hep->urb_list)) {
|
||||
struct list_head *head;
|
||||
struct dma_controller *dma = musb->dma_controller;
|
||||
|
||||
if (is_in)
|
||||
if (is_in) {
|
||||
ep->rx_reinit = 1;
|
||||
else
|
||||
if (ep->rx_channel) {
|
||||
dma->channel_release(ep->rx_channel);
|
||||
ep->rx_channel = NULL;
|
||||
}
|
||||
} else {
|
||||
ep->tx_reinit = 1;
|
||||
if (ep->tx_channel) {
|
||||
dma->channel_release(ep->tx_channel);
|
||||
ep->tx_channel = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Clobber old pointers to this qh */
|
||||
musb_ep_set_qh(ep, is_in, NULL);
|
||||
|
@ -305,9 +305,8 @@ static irqreturn_t twl6030_usbotg_irq(int irq, void *_twl)
|
||||
|
||||
regulator_enable(twl->usb3v3);
|
||||
twl->asleep = 1;
|
||||
twl6030_writeb(twl, TWL_MODULE_USB, USB_ID_INT_EN_HI_CLR, 0x1);
|
||||
twl6030_writeb(twl, TWL_MODULE_USB, USB_ID_INT_EN_HI_SET,
|
||||
0x10);
|
||||
twl6030_writeb(twl, TWL_MODULE_USB, 0x1, USB_ID_INT_EN_HI_CLR);
|
||||
twl6030_writeb(twl, TWL_MODULE_USB, 0x10, USB_ID_INT_EN_HI_SET);
|
||||
status = USB_EVENT_ID;
|
||||
otg->default_a = true;
|
||||
twl->phy.state = OTG_STATE_A_IDLE;
|
||||
@ -316,12 +315,10 @@ static irqreturn_t twl6030_usbotg_irq(int irq, void *_twl)
|
||||
atomic_notifier_call_chain(&twl->phy.notifier, status,
|
||||
otg->gadget);
|
||||
} else {
|
||||
twl6030_writeb(twl, TWL_MODULE_USB, USB_ID_INT_EN_HI_CLR,
|
||||
0x10);
|
||||
twl6030_writeb(twl, TWL_MODULE_USB, USB_ID_INT_EN_HI_SET,
|
||||
0x1);
|
||||
twl6030_writeb(twl, TWL_MODULE_USB, 0x10, USB_ID_INT_EN_HI_CLR);
|
||||
twl6030_writeb(twl, TWL_MODULE_USB, 0x1, USB_ID_INT_EN_HI_SET);
|
||||
}
|
||||
twl6030_writeb(twl, TWL_MODULE_USB, USB_ID_INT_LATCH_CLR, status);
|
||||
twl6030_writeb(twl, TWL_MODULE_USB, status, USB_ID_INT_LATCH_CLR);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
@ -343,7 +340,7 @@ static int twl6030_enable_irq(struct usb_phy *x)
|
||||
{
|
||||
struct twl6030_usb *twl = phy_to_twl(x);
|
||||
|
||||
twl6030_writeb(twl, TWL_MODULE_USB, USB_ID_INT_EN_HI_SET, 0x1);
|
||||
twl6030_writeb(twl, TWL_MODULE_USB, 0x1, USB_ID_INT_EN_HI_SET);
|
||||
twl6030_interrupt_unmask(0x05, REG_INT_MSK_LINE_C);
|
||||
twl6030_interrupt_unmask(0x05, REG_INT_MSK_STS_C);
|
||||
|
||||
|
@ -2,11 +2,11 @@
|
||||
# Physical Layer USB driver configuration
|
||||
#
|
||||
comment "USB Physical Layer drivers"
|
||||
depends on USB
|
||||
depends on USB || USB_GADGET
|
||||
|
||||
config USB_ISP1301
|
||||
tristate "NXP ISP1301 USB transceiver support"
|
||||
depends on USB
|
||||
depends on USB || USB_GADGET
|
||||
depends on I2C
|
||||
help
|
||||
Say Y here to add support for the NXP ISP1301 USB transceiver driver.
|
||||
|
@ -93,6 +93,7 @@ static const struct usb_device_id id_table[] = {
|
||||
{ USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */
|
||||
{ USB_DEVICE(0x10C4, 0x8156) }, /* B&G H3000 link cable */
|
||||
{ USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */
|
||||
{ USB_DEVICE(0x10C4, 0x815F) }, /* Timewave HamLinkUSB */
|
||||
{ USB_DEVICE(0x10C4, 0x818B) }, /* AVIT Research USB to TTL */
|
||||
{ USB_DEVICE(0x10C4, 0x819F) }, /* MJS USB Toslink Switcher */
|
||||
{ USB_DEVICE(0x10C4, 0x81A6) }, /* ThinkOptics WavIt */
|
||||
@ -134,7 +135,13 @@ static const struct usb_device_id id_table[] = {
|
||||
{ USB_DEVICE(0x10CE, 0xEA6A) }, /* Silicon Labs MobiData GPRS USB Modem 100EU */
|
||||
{ USB_DEVICE(0x13AD, 0x9999) }, /* Baltech card reader */
|
||||
{ USB_DEVICE(0x1555, 0x0004) }, /* Owen AC4 USB-RS485 Converter */
|
||||
{ USB_DEVICE(0x166A, 0x0201) }, /* Clipsal 5500PACA C-Bus Pascal Automation Controller */
|
||||
{ USB_DEVICE(0x166A, 0x0301) }, /* Clipsal 5800PC C-Bus Wireless PC Interface */
|
||||
{ USB_DEVICE(0x166A, 0x0303) }, /* Clipsal 5500PCU C-Bus USB interface */
|
||||
{ USB_DEVICE(0x166A, 0x0304) }, /* Clipsal 5000CT2 C-Bus Black and White Touchscreen */
|
||||
{ USB_DEVICE(0x166A, 0x0305) }, /* Clipsal C-5000CT2 C-Bus Spectrum Colour Touchscreen */
|
||||
{ USB_DEVICE(0x166A, 0x0401) }, /* Clipsal L51xx C-Bus Architectural Dimmer */
|
||||
{ USB_DEVICE(0x166A, 0x0101) }, /* Clipsal 5560884 C-Bus Multi-room Audio Matrix Switcher */
|
||||
{ USB_DEVICE(0x16D6, 0x0001) }, /* Jablotron serial interface */
|
||||
{ USB_DEVICE(0x16DC, 0x0010) }, /* W-IE-NE-R Plein & Baus GmbH PL512 Power Supply */
|
||||
{ USB_DEVICE(0x16DC, 0x0011) }, /* W-IE-NE-R Plein & Baus GmbH RCM Remote Control for MARATON Power Supply */
|
||||
@ -146,7 +153,11 @@ static const struct usb_device_id id_table[] = {
|
||||
{ USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */
|
||||
{ USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
|
||||
{ USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */
|
||||
{ USB_DEVICE(0x1E29, 0x0102) }, /* Festo CPX-USB */
|
||||
{ USB_DEVICE(0x1E29, 0x0501) }, /* Festo CMSP */
|
||||
{ USB_DEVICE(0x3195, 0xF190) }, /* Link Instruments MSO-19 */
|
||||
{ USB_DEVICE(0x3195, 0xF280) }, /* Link Instruments MSO-28 */
|
||||
{ USB_DEVICE(0x3195, 0xF281) }, /* Link Instruments MSO-28 */
|
||||
{ USB_DEVICE(0x413C, 0x9500) }, /* DW700 GPS USB interface */
|
||||
{ } /* Terminating Entry */
|
||||
};
|
||||
|
@ -236,6 +236,7 @@ static void option_instat_callback(struct urb *urb);
|
||||
#define NOVATELWIRELESS_PRODUCT_G1 0xA001
|
||||
#define NOVATELWIRELESS_PRODUCT_G1_M 0xA002
|
||||
#define NOVATELWIRELESS_PRODUCT_G2 0xA010
|
||||
#define NOVATELWIRELESS_PRODUCT_MC551 0xB001
|
||||
|
||||
/* AMOI PRODUCTS */
|
||||
#define AMOI_VENDOR_ID 0x1614
|
||||
@ -497,6 +498,10 @@ static void option_instat_callback(struct urb *urb);
|
||||
/* MediaTek products */
|
||||
#define MEDIATEK_VENDOR_ID 0x0e8d
|
||||
|
||||
/* Cellient products */
|
||||
#define CELLIENT_VENDOR_ID 0x2692
|
||||
#define CELLIENT_PRODUCT_MEN200 0x9005
|
||||
|
||||
/* some devices interfaces need special handling due to a number of reasons */
|
||||
enum option_blacklist_reason {
|
||||
OPTION_BLACKLIST_NONE = 0,
|
||||
@ -734,6 +739,8 @@ static const struct usb_device_id option_ids[] = {
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G1) },
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G1_M) },
|
||||
{ USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G2) },
|
||||
/* Novatel Ovation MC551 a.k.a. Verizon USB551L */
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC551, 0xff, 0xff, 0xff) },
|
||||
|
||||
{ USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) },
|
||||
{ USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) },
|
||||
@ -1233,6 +1240,7 @@ static const struct usb_device_id option_ids[] = {
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a1, 0xff, 0x02, 0x01) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a2, 0xff, 0x00, 0x00) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, 0x00a2, 0xff, 0x02, 0x01) }, /* MediaTek MT6276M modem & app port */
|
||||
{ USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
MODULE_DEVICE_TABLE(usb, option_ids);
|
||||
|
@ -202,6 +202,12 @@ static int slave_configure(struct scsi_device *sdev)
|
||||
if (us->fflags & US_FL_NO_READ_CAPACITY_16)
|
||||
sdev->no_read_capacity_16 = 1;
|
||||
|
||||
/*
|
||||
* Many devices do not respond properly to READ_CAPACITY_16.
|
||||
* Tell the SCSI layer to try READ_CAPACITY_10 first.
|
||||
*/
|
||||
sdev->try_rc_10_first = 1;
|
||||
|
||||
/* assume SPC3 or latter devices support sense size > 18 */
|
||||
if (sdev->scsi_level > SCSI_SPC_2)
|
||||
us->fflags |= US_FL_SANE_SENSE;
|
||||
|
@ -1107,13 +1107,6 @@ UNUSUAL_DEV( 0x090a, 0x1200, 0x0000, 0x9999,
|
||||
USB_SC_RBC, USB_PR_BULK, NULL,
|
||||
0 ),
|
||||
|
||||
/* Feiya QDI U2 DISK, reported by Hans de Goede <hdegoede@redhat.com> */
|
||||
UNUSUAL_DEV( 0x090c, 0x1000, 0x0000, 0xffff,
|
||||
"Feiya",
|
||||
"QDI U2 DISK",
|
||||
USB_SC_DEVICE, USB_PR_DEVICE, NULL,
|
||||
US_FL_NO_READ_CAPACITY_16 ),
|
||||
|
||||
/* aeb */
|
||||
UNUSUAL_DEV( 0x090c, 0x1132, 0x0000, 0xffff,
|
||||
"Feiya",
|
||||
|
@ -151,6 +151,7 @@ struct scsi_device {
|
||||
SD_LAST_BUGGY_SECTORS */
|
||||
unsigned no_read_disc_info:1; /* Avoid READ_DISC_INFO cmds */
|
||||
unsigned no_read_capacity_16:1; /* Avoid READ_CAPACITY_16 cmds */
|
||||
unsigned try_rc_10_first:1; /* Try READ_CAPACACITY_10 first */
|
||||
unsigned is_visible:1; /* is the device visible in sysfs */
|
||||
|
||||
DECLARE_BITMAP(supported_events, SDEV_EVT_MAXBITS); /* supported events */
|
||||
|
Loading…
Reference in New Issue
Block a user