Commit 328da899 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Merge tag 'fixes-for-v4.17-rc3' of...

Merge tag 'fixes-for-v4.17-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-linus

Felipe writes:

usb: fixes for v4.17-rc3

Not much this time around: A list_del corruption on dwc3_ep_dequeue(),
sparse warning fix also on dwc3, build issues with f_phonet.

Apart from these three, some other minor fixes.
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parents 6da6c0db ed769520
...@@ -985,6 +985,7 @@ struct dwc2_hsotg { ...@@ -985,6 +985,7 @@ struct dwc2_hsotg {
/* DWC OTG HW Release versions */ /* DWC OTG HW Release versions */
#define DWC2_CORE_REV_2_71a 0x4f54271a #define DWC2_CORE_REV_2_71a 0x4f54271a
#define DWC2_CORE_REV_2_72a 0x4f54272a
#define DWC2_CORE_REV_2_80a 0x4f54280a #define DWC2_CORE_REV_2_80a 0x4f54280a
#define DWC2_CORE_REV_2_90a 0x4f54290a #define DWC2_CORE_REV_2_90a 0x4f54290a
#define DWC2_CORE_REV_2_91a 0x4f54291a #define DWC2_CORE_REV_2_91a 0x4f54291a
...@@ -992,6 +993,7 @@ struct dwc2_hsotg { ...@@ -992,6 +993,7 @@ struct dwc2_hsotg {
#define DWC2_CORE_REV_2_94a 0x4f54294a #define DWC2_CORE_REV_2_94a 0x4f54294a
#define DWC2_CORE_REV_3_00a 0x4f54300a #define DWC2_CORE_REV_3_00a 0x4f54300a
#define DWC2_CORE_REV_3_10a 0x4f54310a #define DWC2_CORE_REV_3_10a 0x4f54310a
#define DWC2_CORE_REV_4_00a 0x4f54400a
#define DWC2_FS_IOT_REV_1_00a 0x5531100a #define DWC2_FS_IOT_REV_1_00a 0x5531100a
#define DWC2_HS_IOT_REV_1_00a 0x5532100a #define DWC2_HS_IOT_REV_1_00a 0x5532100a
......
...@@ -3928,6 +3928,27 @@ static int dwc2_hsotg_ep_enable(struct usb_ep *ep, ...@@ -3928,6 +3928,27 @@ static int dwc2_hsotg_ep_enable(struct usb_ep *ep,
if (index && !hs_ep->isochronous) if (index && !hs_ep->isochronous)
epctrl |= DXEPCTL_SETD0PID; epctrl |= DXEPCTL_SETD0PID;
/* WA for Full speed ISOC IN in DDMA mode.
* By Clear NAK status of EP, core will send ZLP
* to IN token and assert NAK interrupt relying
* on TxFIFO status only
*/
if (hsotg->gadget.speed == USB_SPEED_FULL &&
hs_ep->isochronous && dir_in) {
/* The WA applies only to core versions from 2.72a
* to 4.00a (including both). Also for FS_IOT_1.00a
* and HS_IOT_1.00a.
*/
u32 gsnpsid = dwc2_readl(hsotg->regs + GSNPSID);
if ((gsnpsid >= DWC2_CORE_REV_2_72a &&
gsnpsid <= DWC2_CORE_REV_4_00a) ||
gsnpsid == DWC2_FS_IOT_REV_1_00a ||
gsnpsid == DWC2_HS_IOT_REV_1_00a)
epctrl |= DXEPCTL_CNAK;
}
dev_dbg(hsotg->dev, "%s: write DxEPCTL=0x%08x\n", dev_dbg(hsotg->dev, "%s: write DxEPCTL=0x%08x\n",
__func__, epctrl); __func__, epctrl);
......
...@@ -358,9 +358,14 @@ static void dwc2_gusbcfg_init(struct dwc2_hsotg *hsotg) ...@@ -358,9 +358,14 @@ static void dwc2_gusbcfg_init(struct dwc2_hsotg *hsotg)
static int dwc2_vbus_supply_init(struct dwc2_hsotg *hsotg) static int dwc2_vbus_supply_init(struct dwc2_hsotg *hsotg)
{ {
int ret;
hsotg->vbus_supply = devm_regulator_get_optional(hsotg->dev, "vbus"); hsotg->vbus_supply = devm_regulator_get_optional(hsotg->dev, "vbus");
if (IS_ERR(hsotg->vbus_supply)) if (IS_ERR(hsotg->vbus_supply)) {
return 0; ret = PTR_ERR(hsotg->vbus_supply);
hsotg->vbus_supply = NULL;
return ret == -ENODEV ? 0 : ret;
}
return regulator_enable(hsotg->vbus_supply); return regulator_enable(hsotg->vbus_supply);
} }
...@@ -4342,9 +4347,7 @@ static int _dwc2_hcd_start(struct usb_hcd *hcd) ...@@ -4342,9 +4347,7 @@ static int _dwc2_hcd_start(struct usb_hcd *hcd)
spin_unlock_irqrestore(&hsotg->lock, flags); spin_unlock_irqrestore(&hsotg->lock, flags);
dwc2_vbus_supply_init(hsotg); return dwc2_vbus_supply_init(hsotg);
return 0;
} }
/* /*
......
...@@ -141,8 +141,10 @@ static int dwc2_pci_probe(struct pci_dev *pci, ...@@ -141,8 +141,10 @@ static int dwc2_pci_probe(struct pci_dev *pci,
goto err; goto err;
glue = devm_kzalloc(dev, sizeof(*glue), GFP_KERNEL); glue = devm_kzalloc(dev, sizeof(*glue), GFP_KERNEL);
if (!glue) if (!glue) {
ret = -ENOMEM;
goto err; goto err;
}
ret = platform_device_add(dwc2); ret = platform_device_add(dwc2);
if (ret) { if (ret) {
......
...@@ -166,7 +166,7 @@ static void dwc3_ep_inc_deq(struct dwc3_ep *dep) ...@@ -166,7 +166,7 @@ static void dwc3_ep_inc_deq(struct dwc3_ep *dep)
dwc3_ep_inc_trb(&dep->trb_dequeue); dwc3_ep_inc_trb(&dep->trb_dequeue);
} }
void dwc3_gadget_del_and_unmap_request(struct dwc3_ep *dep, static void dwc3_gadget_del_and_unmap_request(struct dwc3_ep *dep,
struct dwc3_request *req, int status) struct dwc3_request *req, int status)
{ {
struct dwc3 *dwc = dep->dwc; struct dwc3 *dwc = dep->dwc;
...@@ -1424,7 +1424,7 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep, ...@@ -1424,7 +1424,7 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep,
dwc->lock); dwc->lock);
if (!r->trb) if (!r->trb)
goto out1; goto out0;
if (r->num_pending_sgs) { if (r->num_pending_sgs) {
struct dwc3_trb *trb; struct dwc3_trb *trb;
......
...@@ -221,7 +221,7 @@ static void pn_tx_complete(struct usb_ep *ep, struct usb_request *req) ...@@ -221,7 +221,7 @@ static void pn_tx_complete(struct usb_ep *ep, struct usb_request *req)
netif_wake_queue(dev); netif_wake_queue(dev);
} }
static int pn_net_xmit(struct sk_buff *skb, struct net_device *dev) static netdev_tx_t pn_net_xmit(struct sk_buff *skb, struct net_device *dev)
{ {
struct phonet_port *port = netdev_priv(dev); struct phonet_port *port = netdev_priv(dev);
struct f_phonet *fp; struct f_phonet *fp;
......
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
#define USB_GADGET_DELAYED_STATUS 0x7fff /* Impossibly large value */ #define USB_GADGET_DELAYED_STATUS 0x7fff /* Impossibly large value */
/* big enough to hold our biggest descriptor */ /* big enough to hold our biggest descriptor */
#define USB_COMP_EP0_BUFSIZ 1024 #define USB_COMP_EP0_BUFSIZ 4096
/* OS feature descriptor length <= 4kB */ /* OS feature descriptor length <= 4kB */
#define USB_COMP_EP0_OS_DESC_BUFSIZ 4096 #define USB_COMP_EP0_OS_DESC_BUFSIZ 4096
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment