Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 145377
b: refs/heads/master
c: 0afb20e
h: refs/heads/master
i:
  145375: cbcbab3
v: v3
  • Loading branch information
Warren Free authored and Greg Kroah-Hartman committed May 28, 2009
1 parent 2c7b1c9 commit 1c043e9
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: cab98a0a349829b145d924c0649a2d30cd6a9e3d
refs/heads/master: 0afb20e00b5053170c85298fed842b32d20b4ea9
24 changes: 22 additions & 2 deletions trunk/drivers/usb/host/isp1760-hcd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1658,6 +1658,7 @@ static int isp1760_urb_dequeue(struct usb_hcd *hcd, struct urb *urb,
u32 reg_base, or_reg, skip_reg;
unsigned long flags;
struct ptd ptd;
packet_enqueue *pe;

switch (usb_pipetype(urb->pipe)) {
case PIPE_ISOCHRONOUS:
Expand All @@ -1669,13 +1670,15 @@ static int isp1760_urb_dequeue(struct usb_hcd *hcd, struct urb *urb,
reg_base = INT_REGS_OFFSET;
or_reg = HC_INT_IRQ_MASK_OR_REG;
skip_reg = HC_INT_PTD_SKIPMAP_REG;
pe = enqueue_an_INT_packet;
break;

default:
ints = priv->atl_ints;
reg_base = ATL_REGS_OFFSET;
or_reg = HC_ATL_IRQ_MASK_OR_REG;
skip_reg = HC_ATL_PTD_SKIPMAP_REG;
pe = enqueue_an_ATL_packet;
break;
}

Expand All @@ -1687,6 +1690,7 @@ static int isp1760_urb_dequeue(struct usb_hcd *hcd, struct urb *urb,
u32 skip_map;
u32 or_map;
struct isp1760_qtd *qtd;
struct isp1760_qh *qh = ints->qh;

skip_map = isp1760_readl(hcd->regs + skip_reg);
skip_map |= 1 << i;
Expand All @@ -1699,8 +1703,7 @@ static int isp1760_urb_dequeue(struct usb_hcd *hcd, struct urb *urb,
priv_write_copy(priv, (u32 *)&ptd, hcd->regs + reg_base
+ i * sizeof(ptd), sizeof(ptd));
qtd = ints->qtd;

clean_up_qtdlist(qtd);
qtd = clean_up_qtdlist(qtd);

free_mem(priv, ints->payload);

Expand All @@ -1711,7 +1714,24 @@ static int isp1760_urb_dequeue(struct usb_hcd *hcd, struct urb *urb,
ints->payload = 0;

isp1760_urb_done(priv, urb, status);
if (qtd)
pe(hcd, qh, qtd);
break;

} else if (ints->qtd) {
struct isp1760_qtd *qtd, *prev_qtd = ints->qtd;

for (qtd = ints->qtd->hw_next; qtd; qtd = qtd->hw_next) {
if (qtd->urb == urb) {
prev_qtd->hw_next = clean_up_qtdlist(qtd);
isp1760_urb_done(priv, urb, status);
break;
}
prev_qtd = qtd;
}
/* we found the urb before the end of the list */
if (qtd)
break;
}
ints++;
}
Expand Down

0 comments on commit 1c043e9

Please sign in to comment.