Merge tag 'usb-for-v4.16' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-next
Felipe writes: usb: changes for v4.16 merge window Not many changes here, the most important being an improvement for TI's AM57xx and DRA7xx devices which allows them to disable a metastability workaround in situations where we know what's going on. Other than that, we have a set of changes on Renesas UDC to make the code a little easier to read and maintain while also better supporting extcon framework. The u_serial adaptation layer learned to use kfifo instead of cooking its own FIFO implementation. DWC3 learned to decode a few more USB requests on the trace output.
This commit is contained in:
@@ -1062,6 +1062,9 @@ static void dwc3_get_properties(struct dwc3 *dwc)
|
||||
device_property_read_u32(dev, "snps,quirk-frame-length-adjustment",
|
||||
&dwc->fladj);
|
||||
|
||||
dwc->dis_metastability_quirk = device_property_read_bool(dev,
|
||||
"snps,dis_metastability_quirk");
|
||||
|
||||
dwc->lpm_nyet_threshold = lpm_nyet_threshold;
|
||||
dwc->tx_de_emphasis = tx_de_emphasis;
|
||||
|
||||
|
@@ -796,7 +796,6 @@ struct dwc3_scratchpad_array {
|
||||
* @usb2_generic_phy: pointer to USB2 PHY
|
||||
* @usb3_generic_phy: pointer to USB3 PHY
|
||||
* @ulpi: pointer to ulpi interface
|
||||
* @isoch_delay: wValue from Set Isochronous Delay request;
|
||||
* @u2sel: parameter from Set SEL request.
|
||||
* @u2pel: parameter from Set SEL request.
|
||||
* @u1sel: parameter from Set SEL request.
|
||||
@@ -857,6 +856,7 @@ struct dwc3_scratchpad_array {
|
||||
* 1 - -3.5dB de-emphasis
|
||||
* 2 - No de-emphasis
|
||||
* 3 - Reserved
|
||||
* @dis_metastability_quirk: set to disable metastability quirk.
|
||||
* @imod_interval: set the interrupt moderation interval in 250ns
|
||||
* increments or 0 to disable.
|
||||
*/
|
||||
@@ -955,7 +955,6 @@ struct dwc3 {
|
||||
enum dwc3_ep0_state ep0state;
|
||||
enum dwc3_link_state link_state;
|
||||
|
||||
u16 isoch_delay;
|
||||
u16 u2sel;
|
||||
u16 u2pel;
|
||||
u8 u1sel;
|
||||
@@ -1010,6 +1009,8 @@ struct dwc3 {
|
||||
unsigned tx_de_emphasis_quirk:1;
|
||||
unsigned tx_de_emphasis:2;
|
||||
|
||||
unsigned dis_metastability_quirk:1;
|
||||
|
||||
u16 imod_interval;
|
||||
};
|
||||
|
||||
|
@@ -247,6 +247,15 @@ static inline void dwc3_decode_set_clear_feature(__u8 t, __u8 b, __u16 v,
|
||||
case USB_DEVICE_TEST_MODE:
|
||||
s = "Test Mode";
|
||||
break;
|
||||
case USB_DEVICE_U1_ENABLE:
|
||||
s = "U1 Enable";
|
||||
break;
|
||||
case USB_DEVICE_U2_ENABLE:
|
||||
s = "U2 Enable";
|
||||
break;
|
||||
case USB_DEVICE_LTM_ENABLE:
|
||||
s = "LTM Enable";
|
||||
break;
|
||||
default:
|
||||
s = "UNKNOWN";
|
||||
} s; }),
|
||||
|
@@ -736,11 +736,7 @@ static int dwc3_ep0_set_isoch_delay(struct dwc3 *dwc, struct usb_ctrlrequest *ct
|
||||
if (wIndex || wLength)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* REVISIT It's unclear from Databook what to do with this
|
||||
* value. For now, just cache it.
|
||||
*/
|
||||
dwc->isoch_delay = wValue;
|
||||
dwc->gadget.isoch_delay = wValue;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -2005,7 +2005,8 @@ static void dwc3_gadget_set_speed(struct usb_gadget *g,
|
||||
* STAR#9000525659: Clock Domain Crossing on DCTL in
|
||||
* USB 2.0 Mode
|
||||
*/
|
||||
if (dwc->revision < DWC3_REVISION_220A) {
|
||||
if (dwc->revision < DWC3_REVISION_220A &&
|
||||
!dwc->dis_metastability_quirk) {
|
||||
reg |= DWC3_DCFG_SUPERSPEED;
|
||||
} else {
|
||||
switch (speed) {
|
||||
@@ -3224,7 +3225,8 @@ int dwc3_gadget_init(struct dwc3 *dwc)
|
||||
* is less than super speed because we don't have means, yet, to tell
|
||||
* composite.c that we are USB 2.0 + LPM ECN.
|
||||
*/
|
||||
if (dwc->revision < DWC3_REVISION_220A)
|
||||
if (dwc->revision < DWC3_REVISION_220A &&
|
||||
!dwc->dis_metastability_quirk)
|
||||
dev_info(dwc->dev, "changing max_speed on rev %08x\n",
|
||||
dwc->revision);
|
||||
|
||||
|
@@ -37,12 +37,12 @@ DECLARE_EVENT_CLASS(dwc3_log_io,
|
||||
);
|
||||
|
||||
DEFINE_EVENT(dwc3_log_io, dwc3_readl,
|
||||
TP_PROTO(void *base, u32 offset, u32 value),
|
||||
TP_PROTO(void __iomem *base, u32 offset, u32 value),
|
||||
TP_ARGS(base, offset, value)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(dwc3_log_io, dwc3_writel,
|
||||
TP_PROTO(void *base, u32 offset, u32 value),
|
||||
TP_PROTO(void __iomem *base, u32 offset, u32 value),
|
||||
TP_ARGS(base, offset, value)
|
||||
);
|
||||
|
||||
|
Reference in New Issue
Block a user