mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 08:31:55 +00:00
usb: host: ehci-sched: remove prohibited spaces
This patch removes prohibited spaces before open parenthesis and open brackets. It also removes an assignment inside condition and unnecessary braces in single statement block. Tested by compilation only. Caught by checkpatch. Signed-off-by: Geyslan G. Bem <geyslan@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
189b8ff0da
commit
ee90647061
@ -34,7 +34,7 @@
|
||||
* pre-calculated schedule data to make appending to the queue be quick.
|
||||
*/
|
||||
|
||||
static int ehci_get_frame (struct usb_hcd *hcd);
|
||||
static int ehci_get_frame(struct usb_hcd *hcd);
|
||||
|
||||
/*
|
||||
* periodic_next_shadow - return "next" pointer on shadow list
|
||||
@ -73,7 +73,7 @@ shadow_next_periodic(struct ehci_hcd *ehci, union ehci_shadow *periodic,
|
||||
}
|
||||
|
||||
/* caller must hold ehci->lock */
|
||||
static void periodic_unlink (struct ehci_hcd *ehci, unsigned frame, void *ptr)
|
||||
static void periodic_unlink(struct ehci_hcd *ehci, unsigned frame, void *ptr)
|
||||
{
|
||||
union ehci_shadow *prev_p = &ehci->pshadow[frame];
|
||||
__hc32 *hw_p = &ehci->periodic[frame];
|
||||
@ -375,7 +375,7 @@ static inline void carryover_tt_bandwidth(unsigned short tt_usecs[8])
|
||||
* limit of 16, specified in USB 2.0 spec section 11.18.4 requirement #4,
|
||||
* since proper scheduling limits ssplits to less than 16 per uframe.
|
||||
*/
|
||||
static int tt_available (
|
||||
static int tt_available(
|
||||
struct ehci_hcd *ehci,
|
||||
struct ehci_per_sched *ps,
|
||||
struct ehci_tt *tt,
|
||||
@ -435,7 +435,7 @@ static int tt_available (
|
||||
* for a periodic transfer starting at the specified frame, using
|
||||
* all the uframes in the mask.
|
||||
*/
|
||||
static int tt_no_collision (
|
||||
static int tt_no_collision(
|
||||
struct ehci_hcd *ehci,
|
||||
unsigned period,
|
||||
struct usb_device *dev,
|
||||
@ -455,8 +455,8 @@ static int tt_no_collision (
|
||||
__hc32 type;
|
||||
struct ehci_qh_hw *hw;
|
||||
|
||||
here = ehci->pshadow [frame];
|
||||
type = Q_NEXT_TYPE(ehci, ehci->periodic [frame]);
|
||||
here = ehci->pshadow[frame];
|
||||
type = Q_NEXT_TYPE(ehci, ehci->periodic[frame]);
|
||||
while (here.ptr) {
|
||||
switch (hc32_to_cpu(ehci, type)) {
|
||||
case Q_TYPE_ITD:
|
||||
@ -479,7 +479,7 @@ static int tt_no_collision (
|
||||
here = here.qh->qh_next;
|
||||
continue;
|
||||
case Q_TYPE_SITD:
|
||||
if (same_tt (dev, here.sitd->urb->dev)) {
|
||||
if (same_tt(dev, here.sitd->urb->dev)) {
|
||||
u16 mask;
|
||||
|
||||
mask = hc32_to_cpu(ehci, here.sitd
|
||||
@ -494,7 +494,7 @@ static int tt_no_collision (
|
||||
continue;
|
||||
// case Q_TYPE_FSTN:
|
||||
default:
|
||||
ehci_dbg (ehci,
|
||||
ehci_dbg(ehci,
|
||||
"periodic frame %d bogus type %d\n",
|
||||
frame, type);
|
||||
}
|
||||
@ -588,9 +588,9 @@ static void qh_link_periodic(struct ehci_hcd *ehci, struct ehci_qh *qh)
|
||||
qh->qh_next = here;
|
||||
if (here.qh)
|
||||
qh->hw->hw_next = *hw_p;
|
||||
wmb ();
|
||||
wmb();
|
||||
prev->qh = qh;
|
||||
*hw_p = QH_NEXT (ehci, qh->qh_dma);
|
||||
*hw_p = QH_NEXT(ehci, qh->qh_dma);
|
||||
}
|
||||
}
|
||||
qh->qh_state = QH_STATE_LINKED;
|
||||
@ -633,7 +633,7 @@ static void qh_unlink_periodic(struct ehci_hcd *ehci, struct ehci_qh *qh)
|
||||
period = qh->ps.period ? : 1;
|
||||
|
||||
for (i = qh->ps.phase; i < ehci->periodic_size; i += period)
|
||||
periodic_unlink (ehci, i, qh);
|
||||
periodic_unlink(ehci, i, qh);
|
||||
|
||||
/* update per-qh bandwidth for debugfs */
|
||||
ehci_to_hcd(ehci)->self.bandwidth_allocated -= qh->ps.bw_period
|
||||
@ -679,7 +679,7 @@ static void start_unlink_intr(struct ehci_hcd *ehci, struct ehci_qh *qh)
|
||||
/* if the qh is waiting for unlink, cancel it now */
|
||||
cancel_unlink_wait_intr(ehci, qh);
|
||||
|
||||
qh_unlink_periodic (ehci, qh);
|
||||
qh_unlink_periodic(ehci, qh);
|
||||
|
||||
/* Make sure the unlinks are visible before starting the timer */
|
||||
wmb();
|
||||
@ -763,7 +763,7 @@ static void end_unlink_intr(struct ehci_hcd *ehci, struct ehci_qh *qh)
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
static int check_period (
|
||||
static int check_period(
|
||||
struct ehci_hcd *ehci,
|
||||
unsigned frame,
|
||||
unsigned uframe,
|
||||
@ -789,7 +789,7 @@ static int check_period (
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int check_intr_schedule (
|
||||
static int check_intr_schedule(
|
||||
struct ehci_hcd *ehci,
|
||||
unsigned frame,
|
||||
unsigned uframe,
|
||||
@ -925,7 +925,7 @@ done:
|
||||
return status;
|
||||
}
|
||||
|
||||
static int intr_submit (
|
||||
static int intr_submit(
|
||||
struct ehci_hcd *ehci,
|
||||
struct urb *urb,
|
||||
struct list_head *qtd_list,
|
||||
@ -940,7 +940,7 @@ static int intr_submit (
|
||||
/* get endpoint and transfer/schedule data */
|
||||
epnum = urb->ep->desc.bEndpointAddress;
|
||||
|
||||
spin_lock_irqsave (&ehci->lock, flags);
|
||||
spin_lock_irqsave(&ehci->lock, flags);
|
||||
|
||||
if (unlikely(!HCD_HW_ACCESSIBLE(ehci_to_hcd(ehci)))) {
|
||||
status = -ESHUTDOWN;
|
||||
@ -951,20 +951,21 @@ static int intr_submit (
|
||||
goto done_not_linked;
|
||||
|
||||
/* get qh and force any scheduling errors */
|
||||
INIT_LIST_HEAD (&empty);
|
||||
INIT_LIST_HEAD(&empty);
|
||||
qh = qh_append_tds(ehci, urb, &empty, epnum, &urb->ep->hcpriv);
|
||||
if (qh == NULL) {
|
||||
status = -ENOMEM;
|
||||
goto done;
|
||||
}
|
||||
if (qh->qh_state == QH_STATE_IDLE) {
|
||||
if ((status = qh_schedule (ehci, qh)) != 0)
|
||||
status = qh_schedule(ehci, qh);
|
||||
if (status)
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* then queue the urb's tds to the qh */
|
||||
qh = qh_append_tds(ehci, urb, qtd_list, epnum, &urb->ep->hcpriv);
|
||||
BUG_ON (qh == NULL);
|
||||
BUG_ON(qh == NULL);
|
||||
|
||||
/* stuff into the periodic schedule */
|
||||
if (qh->qh_state == QH_STATE_IDLE) {
|
||||
@ -982,9 +983,9 @@ done:
|
||||
if (unlikely(status))
|
||||
usb_hcd_unlink_urb_from_ep(ehci_to_hcd(ehci), urb);
|
||||
done_not_linked:
|
||||
spin_unlock_irqrestore (&ehci->lock, flags);
|
||||
spin_unlock_irqrestore(&ehci->lock, flags);
|
||||
if (status)
|
||||
qtd_list_free (ehci, urb, qtd_list);
|
||||
qtd_list_free(ehci, urb, qtd_list);
|
||||
|
||||
return status;
|
||||
}
|
||||
@ -1022,12 +1023,12 @@ static void scan_intr(struct ehci_hcd *ehci)
|
||||
/* ehci_iso_stream ops work with both ITD and SITD */
|
||||
|
||||
static struct ehci_iso_stream *
|
||||
iso_stream_alloc (gfp_t mem_flags)
|
||||
iso_stream_alloc(gfp_t mem_flags)
|
||||
{
|
||||
struct ehci_iso_stream *stream;
|
||||
|
||||
stream = kzalloc(sizeof *stream, mem_flags);
|
||||
if (likely (stream != NULL)) {
|
||||
if (likely(stream != NULL)) {
|
||||
INIT_LIST_HEAD(&stream->td_list);
|
||||
INIT_LIST_HEAD(&stream->free_list);
|
||||
stream->next_uframe = NO_FRAME;
|
||||
@ -1037,13 +1038,13 @@ iso_stream_alloc (gfp_t mem_flags)
|
||||
}
|
||||
|
||||
static void
|
||||
iso_stream_init (
|
||||
iso_stream_init(
|
||||
struct ehci_hcd *ehci,
|
||||
struct ehci_iso_stream *stream,
|
||||
struct urb *urb
|
||||
)
|
||||
{
|
||||
static const u8 smask_out [] = { 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f };
|
||||
static const u8 smask_out[] = { 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f };
|
||||
|
||||
struct usb_device *dev = urb->dev;
|
||||
u32 buf1;
|
||||
@ -1111,7 +1112,7 @@ iso_stream_init (
|
||||
think_time = dev->tt ? dev->tt->think_time : 0;
|
||||
stream->ps.tt_usecs = NS_TO_US(think_time + usb_calc_bus_time(
|
||||
dev->speed, is_input, 1, maxp));
|
||||
hs_transfers = max (1u, (maxp + 187) / 188);
|
||||
hs_transfers = max(1u, (maxp + 187) / 188);
|
||||
if (is_input) {
|
||||
u32 tmp;
|
||||
|
||||
@ -1151,7 +1152,7 @@ iso_stream_init (
|
||||
}
|
||||
|
||||
static struct ehci_iso_stream *
|
||||
iso_stream_find (struct ehci_hcd *ehci, struct urb *urb)
|
||||
iso_stream_find(struct ehci_hcd *ehci, struct urb *urb)
|
||||
{
|
||||
unsigned epnum;
|
||||
struct ehci_iso_stream *stream;
|
||||
@ -1164,25 +1165,25 @@ iso_stream_find (struct ehci_hcd *ehci, struct urb *urb)
|
||||
else
|
||||
ep = urb->dev->ep_out[epnum];
|
||||
|
||||
spin_lock_irqsave (&ehci->lock, flags);
|
||||
spin_lock_irqsave(&ehci->lock, flags);
|
||||
stream = ep->hcpriv;
|
||||
|
||||
if (unlikely (stream == NULL)) {
|
||||
if (unlikely(stream == NULL)) {
|
||||
stream = iso_stream_alloc(GFP_ATOMIC);
|
||||
if (likely (stream != NULL)) {
|
||||
if (likely(stream != NULL)) {
|
||||
ep->hcpriv = stream;
|
||||
iso_stream_init(ehci, stream, urb);
|
||||
}
|
||||
|
||||
/* if dev->ep [epnum] is a QH, hw is set */
|
||||
} else if (unlikely (stream->hw != NULL)) {
|
||||
ehci_dbg (ehci, "dev %s ep%d%s, not iso??\n",
|
||||
} else if (unlikely(stream->hw != NULL)) {
|
||||
ehci_dbg(ehci, "dev %s ep%d%s, not iso??\n",
|
||||
urb->dev->devpath, epnum,
|
||||
usb_pipein(urb->pipe) ? "in" : "out");
|
||||
stream = NULL;
|
||||
}
|
||||
|
||||
spin_unlock_irqrestore (&ehci->lock, flags);
|
||||
spin_unlock_irqrestore(&ehci->lock, flags);
|
||||
return stream;
|
||||
}
|
||||
|
||||
@ -1191,16 +1192,16 @@ iso_stream_find (struct ehci_hcd *ehci, struct urb *urb)
|
||||
/* ehci_iso_sched ops can be ITD-only or SITD-only */
|
||||
|
||||
static struct ehci_iso_sched *
|
||||
iso_sched_alloc (unsigned packets, gfp_t mem_flags)
|
||||
iso_sched_alloc(unsigned packets, gfp_t mem_flags)
|
||||
{
|
||||
struct ehci_iso_sched *iso_sched;
|
||||
int size = sizeof *iso_sched;
|
||||
|
||||
size += packets * sizeof (struct ehci_iso_packet);
|
||||
size += packets * sizeof(struct ehci_iso_packet);
|
||||
iso_sched = kzalloc(size, mem_flags);
|
||||
if (likely (iso_sched != NULL)) {
|
||||
INIT_LIST_HEAD (&iso_sched->td_list);
|
||||
}
|
||||
if (likely(iso_sched != NULL))
|
||||
INIT_LIST_HEAD(&iso_sched->td_list);
|
||||
|
||||
return iso_sched;
|
||||
}
|
||||
|
||||
@ -1222,17 +1223,17 @@ itd_sched_init(
|
||||
* when we fit new itds into the schedule.
|
||||
*/
|
||||
for (i = 0; i < urb->number_of_packets; i++) {
|
||||
struct ehci_iso_packet *uframe = &iso_sched->packet [i];
|
||||
struct ehci_iso_packet *uframe = &iso_sched->packet[i];
|
||||
unsigned length;
|
||||
dma_addr_t buf;
|
||||
u32 trans;
|
||||
|
||||
length = urb->iso_frame_desc [i].length;
|
||||
buf = dma + urb->iso_frame_desc [i].offset;
|
||||
length = urb->iso_frame_desc[i].length;
|
||||
buf = dma + urb->iso_frame_desc[i].offset;
|
||||
|
||||
trans = EHCI_ISOC_ACTIVE;
|
||||
trans |= buf & 0x0fff;
|
||||
if (unlikely (((i + 1) == urb->number_of_packets))
|
||||
if (unlikely(((i + 1) == urb->number_of_packets))
|
||||
&& !(urb->transfer_flags & URB_NO_INTERRUPT))
|
||||
trans |= EHCI_ITD_IOC;
|
||||
trans |= length << 16;
|
||||
@ -1241,13 +1242,13 @@ itd_sched_init(
|
||||
/* might need to cross a buffer page within a uframe */
|
||||
uframe->bufp = (buf & ~(u64)0x0fff);
|
||||
buf += length;
|
||||
if (unlikely ((uframe->bufp != (buf & ~(u64)0x0fff))))
|
||||
if (unlikely((uframe->bufp != (buf & ~(u64)0x0fff))))
|
||||
uframe->cross = 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
iso_sched_free (
|
||||
iso_sched_free(
|
||||
struct ehci_iso_stream *stream,
|
||||
struct ehci_iso_sched *iso_sched
|
||||
)
|
||||
@ -1255,12 +1256,12 @@ iso_sched_free (
|
||||
if (!iso_sched)
|
||||
return;
|
||||
// caller must hold ehci->lock!
|
||||
list_splice (&iso_sched->td_list, &stream->free_list);
|
||||
kfree (iso_sched);
|
||||
list_splice(&iso_sched->td_list, &stream->free_list);
|
||||
kfree(iso_sched);
|
||||
}
|
||||
|
||||
static int
|
||||
itd_urb_transaction (
|
||||
itd_urb_transaction(
|
||||
struct ehci_iso_stream *stream,
|
||||
struct ehci_hcd *ehci,
|
||||
struct urb *urb,
|
||||
@ -1274,8 +1275,8 @@ itd_urb_transaction (
|
||||
struct ehci_iso_sched *sched;
|
||||
unsigned long flags;
|
||||
|
||||
sched = iso_sched_alloc (urb->number_of_packets, mem_flags);
|
||||
if (unlikely (sched == NULL))
|
||||
sched = iso_sched_alloc(urb->number_of_packets, mem_flags);
|
||||
if (unlikely(sched == NULL))
|
||||
return -ENOMEM;
|
||||
|
||||
itd_sched_init(ehci, sched, stream, urb);
|
||||
@ -1286,7 +1287,7 @@ itd_urb_transaction (
|
||||
num_itds = urb->number_of_packets;
|
||||
|
||||
/* allocate/init ITDs */
|
||||
spin_lock_irqsave (&ehci->lock, flags);
|
||||
spin_lock_irqsave(&ehci->lock, flags);
|
||||
for (i = 0; i < num_itds; i++) {
|
||||
|
||||
/*
|
||||
@ -1298,14 +1299,14 @@ itd_urb_transaction (
|
||||
struct ehci_itd, itd_list);
|
||||
if (itd->frame == ehci->now_frame)
|
||||
goto alloc_itd;
|
||||
list_del (&itd->itd_list);
|
||||
list_del(&itd->itd_list);
|
||||
itd_dma = itd->itd_dma;
|
||||
} else {
|
||||
alloc_itd:
|
||||
spin_unlock_irqrestore (&ehci->lock, flags);
|
||||
itd = dma_pool_alloc (ehci->itd_pool, mem_flags,
|
||||
spin_unlock_irqrestore(&ehci->lock, flags);
|
||||
itd = dma_pool_alloc(ehci->itd_pool, mem_flags,
|
||||
&itd_dma);
|
||||
spin_lock_irqsave (&ehci->lock, flags);
|
||||
spin_lock_irqsave(&ehci->lock, flags);
|
||||
if (!itd) {
|
||||
iso_sched_free(stream, sched);
|
||||
spin_unlock_irqrestore(&ehci->lock, flags);
|
||||
@ -1313,12 +1314,12 @@ itd_urb_transaction (
|
||||
}
|
||||
}
|
||||
|
||||
memset (itd, 0, sizeof *itd);
|
||||
memset(itd, 0, sizeof *itd);
|
||||
itd->itd_dma = itd_dma;
|
||||
itd->frame = NO_FRAME;
|
||||
list_add (&itd->itd_list, &sched->td_list);
|
||||
list_add(&itd->itd_list, &sched->td_list);
|
||||
}
|
||||
spin_unlock_irqrestore (&ehci->lock, flags);
|
||||
spin_unlock_irqrestore(&ehci->lock, flags);
|
||||
|
||||
/* temporarily store schedule info in hcpriv */
|
||||
urb->hcpriv = sched;
|
||||
@ -1385,7 +1386,7 @@ static void reserve_release_iso_bandwidth(struct ehci_hcd *ehci,
|
||||
}
|
||||
|
||||
static inline int
|
||||
itd_slot_ok (
|
||||
itd_slot_ok(
|
||||
struct ehci_hcd *ehci,
|
||||
struct ehci_iso_stream *stream,
|
||||
unsigned uframe
|
||||
@ -1405,7 +1406,7 @@ itd_slot_ok (
|
||||
}
|
||||
|
||||
static inline int
|
||||
sitd_slot_ok (
|
||||
sitd_slot_ok(
|
||||
struct ehci_hcd *ehci,
|
||||
struct ehci_iso_stream *stream,
|
||||
unsigned uframe,
|
||||
@ -1492,7 +1493,7 @@ sitd_slot_ok (
|
||||
*/
|
||||
|
||||
static int
|
||||
iso_stream_schedule (
|
||||
iso_stream_schedule(
|
||||
struct ehci_hcd *ehci,
|
||||
struct urb *urb,
|
||||
struct ehci_iso_stream *stream
|
||||
@ -1693,9 +1694,9 @@ itd_init(struct ehci_hcd *ehci, struct ehci_iso_stream *stream,
|
||||
|
||||
/* it's been recently zeroed */
|
||||
itd->hw_next = EHCI_LIST_END(ehci);
|
||||
itd->hw_bufp [0] = stream->buf0;
|
||||
itd->hw_bufp [1] = stream->buf1;
|
||||
itd->hw_bufp [2] = stream->buf2;
|
||||
itd->hw_bufp[0] = stream->buf0;
|
||||
itd->hw_bufp[1] = stream->buf1;
|
||||
itd->hw_bufp[2] = stream->buf2;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
itd->index[i] = -1;
|
||||
@ -1712,13 +1713,13 @@ itd_patch(
|
||||
u16 uframe
|
||||
)
|
||||
{
|
||||
struct ehci_iso_packet *uf = &iso_sched->packet [index];
|
||||
struct ehci_iso_packet *uf = &iso_sched->packet[index];
|
||||
unsigned pg = itd->pg;
|
||||
|
||||
// BUG_ON (pg == 6 && uf->cross);
|
||||
|
||||
uframe &= 0x07;
|
||||
itd->index [uframe] = index;
|
||||
itd->index[uframe] = index;
|
||||
|
||||
itd->hw_transaction[uframe] = uf->transaction;
|
||||
itd->hw_transaction[uframe] |= cpu_to_hc32(ehci, pg << 12);
|
||||
@ -1726,7 +1727,7 @@ itd_patch(
|
||||
itd->hw_bufp_hi[pg] |= cpu_to_hc32(ehci, (u32)(uf->bufp >> 32));
|
||||
|
||||
/* iso_frame_desc[].offset must be strictly increasing */
|
||||
if (unlikely (uf->cross)) {
|
||||
if (unlikely(uf->cross)) {
|
||||
u64 bufp = uf->bufp + 4096;
|
||||
|
||||
itd->pg = ++pg;
|
||||
@ -1736,7 +1737,7 @@ itd_patch(
|
||||
}
|
||||
|
||||
static inline void
|
||||
itd_link (struct ehci_hcd *ehci, unsigned frame, struct ehci_itd *itd)
|
||||
itd_link(struct ehci_hcd *ehci, unsigned frame, struct ehci_itd *itd)
|
||||
{
|
||||
union ehci_shadow *prev = &ehci->pshadow[frame];
|
||||
__hc32 *hw_p = &ehci->periodic[frame];
|
||||
@ -1757,7 +1758,7 @@ itd_link (struct ehci_hcd *ehci, unsigned frame, struct ehci_itd *itd)
|
||||
itd->hw_next = *hw_p;
|
||||
prev->itd = itd;
|
||||
itd->frame = frame;
|
||||
wmb ();
|
||||
wmb();
|
||||
*hw_p = cpu_to_hc32(ehci, itd->itd_dma | Q_TYPE_ITD);
|
||||
}
|
||||
|
||||
@ -1776,7 +1777,7 @@ static void itd_link_urb(
|
||||
|
||||
next_uframe = stream->next_uframe & (mod - 1);
|
||||
|
||||
if (unlikely (list_empty(&stream->td_list)))
|
||||
if (unlikely(list_empty(&stream->td_list)))
|
||||
ehci_to_hcd(ehci)->self.bandwidth_allocated
|
||||
+= stream->bandwidth;
|
||||
|
||||
@ -1796,12 +1797,12 @@ static void itd_link_urb(
|
||||
|
||||
/* ASSERT: no itds for this endpoint in this uframe */
|
||||
|
||||
itd = list_entry (iso_sched->td_list.next,
|
||||
itd = list_entry(iso_sched->td_list.next,
|
||||
struct ehci_itd, itd_list);
|
||||
list_move_tail (&itd->itd_list, &stream->td_list);
|
||||
list_move_tail(&itd->itd_list, &stream->td_list);
|
||||
itd->stream = stream;
|
||||
itd->urb = urb;
|
||||
itd_init (ehci, stream, itd);
|
||||
itd_init(ehci, stream, itd);
|
||||
}
|
||||
|
||||
uframe = next_uframe & 0x07;
|
||||
@ -1823,7 +1824,7 @@ static void itd_link_urb(
|
||||
stream->next_uframe = next_uframe;
|
||||
|
||||
/* don't need that schedule data any more */
|
||||
iso_sched_free (stream, iso_sched);
|
||||
iso_sched_free(stream, iso_sched);
|
||||
urb->hcpriv = stream;
|
||||
|
||||
++ehci->isoc_count;
|
||||
@ -1855,19 +1856,19 @@ static bool itd_complete(struct ehci_hcd *ehci, struct ehci_itd *itd)
|
||||
|
||||
/* for each uframe with a packet */
|
||||
for (uframe = 0; uframe < 8; uframe++) {
|
||||
if (likely (itd->index[uframe] == -1))
|
||||
if (likely(itd->index[uframe] == -1))
|
||||
continue;
|
||||
urb_index = itd->index[uframe];
|
||||
desc = &urb->iso_frame_desc [urb_index];
|
||||
desc = &urb->iso_frame_desc[urb_index];
|
||||
|
||||
t = hc32_to_cpup(ehci, &itd->hw_transaction [uframe]);
|
||||
itd->hw_transaction [uframe] = 0;
|
||||
t = hc32_to_cpup(ehci, &itd->hw_transaction[uframe]);
|
||||
itd->hw_transaction[uframe] = 0;
|
||||
|
||||
/* report transfer status */
|
||||
if (unlikely (t & ISO_ERRS)) {
|
||||
if (unlikely(t & ISO_ERRS)) {
|
||||
urb->error_count++;
|
||||
if (t & EHCI_ISOC_BUF_ERR)
|
||||
desc->status = usb_pipein (urb->pipe)
|
||||
desc->status = usb_pipein(urb->pipe)
|
||||
? -ENOSR /* hc couldn't read */
|
||||
: -ECOMM; /* hc couldn't write */
|
||||
else if (t & EHCI_ISOC_BABBLE)
|
||||
@ -1880,7 +1881,7 @@ static bool itd_complete(struct ehci_hcd *ehci, struct ehci_itd *itd)
|
||||
desc->actual_length = EHCI_ITD_LENGTH(t);
|
||||
urb->actual_length += desc->actual_length;
|
||||
}
|
||||
} else if (likely ((t & EHCI_ISOC_ACTIVE) == 0)) {
|
||||
} else if (likely((t & EHCI_ISOC_ACTIVE) == 0)) {
|
||||
desc->status = 0;
|
||||
desc->actual_length = EHCI_ITD_LENGTH(t);
|
||||
urb->actual_length += desc->actual_length;
|
||||
@ -1891,7 +1892,7 @@ static bool itd_complete(struct ehci_hcd *ehci, struct ehci_itd *itd)
|
||||
}
|
||||
|
||||
/* handle completion now? */
|
||||
if (likely ((urb_index + 1) != urb->number_of_packets))
|
||||
if (likely((urb_index + 1) != urb->number_of_packets))
|
||||
goto done;
|
||||
|
||||
/* ASSERT: it's really the last itd for this urb
|
||||
@ -1936,7 +1937,7 @@ done:
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
static int itd_submit (struct ehci_hcd *ehci, struct urb *urb,
|
||||
static int itd_submit(struct ehci_hcd *ehci, struct urb *urb,
|
||||
gfp_t mem_flags)
|
||||
{
|
||||
int status = -EINVAL;
|
||||
@ -1944,37 +1945,37 @@ static int itd_submit (struct ehci_hcd *ehci, struct urb *urb,
|
||||
struct ehci_iso_stream *stream;
|
||||
|
||||
/* Get iso_stream head */
|
||||
stream = iso_stream_find (ehci, urb);
|
||||
if (unlikely (stream == NULL)) {
|
||||
ehci_dbg (ehci, "can't get iso stream\n");
|
||||
stream = iso_stream_find(ehci, urb);
|
||||
if (unlikely(stream == NULL)) {
|
||||
ehci_dbg(ehci, "can't get iso stream\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
if (unlikely(urb->interval != stream->uperiod)) {
|
||||
ehci_dbg (ehci, "can't change iso interval %d --> %d\n",
|
||||
ehci_dbg(ehci, "can't change iso interval %d --> %d\n",
|
||||
stream->uperiod, urb->interval);
|
||||
goto done;
|
||||
}
|
||||
|
||||
#ifdef EHCI_URB_TRACE
|
||||
ehci_dbg (ehci,
|
||||
ehci_dbg(ehci,
|
||||
"%s %s urb %p ep%d%s len %d, %d pkts %d uframes [%p]\n",
|
||||
__func__, urb->dev->devpath, urb,
|
||||
usb_pipeendpoint (urb->pipe),
|
||||
usb_pipein (urb->pipe) ? "in" : "out",
|
||||
usb_pipeendpoint(urb->pipe),
|
||||
usb_pipein(urb->pipe) ? "in" : "out",
|
||||
urb->transfer_buffer_length,
|
||||
urb->number_of_packets, urb->interval,
|
||||
stream);
|
||||
#endif
|
||||
|
||||
/* allocate ITDs w/o locking anything */
|
||||
status = itd_urb_transaction (stream, ehci, urb, mem_flags);
|
||||
if (unlikely (status < 0)) {
|
||||
ehci_dbg (ehci, "can't init itds\n");
|
||||
status = itd_urb_transaction(stream, ehci, urb, mem_flags);
|
||||
if (unlikely(status < 0)) {
|
||||
ehci_dbg(ehci, "can't init itds\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* schedule ... need to lock */
|
||||
spin_lock_irqsave (&ehci->lock, flags);
|
||||
spin_lock_irqsave(&ehci->lock, flags);
|
||||
if (unlikely(!HCD_HW_ACCESSIBLE(ehci_to_hcd(ehci)))) {
|
||||
status = -ESHUTDOWN;
|
||||
goto done_not_linked;
|
||||
@ -1984,7 +1985,7 @@ static int itd_submit (struct ehci_hcd *ehci, struct urb *urb,
|
||||
goto done_not_linked;
|
||||
status = iso_stream_schedule(ehci, urb, stream);
|
||||
if (likely(status == 0)) {
|
||||
itd_link_urb (ehci, urb, ehci->periodic_size << 3, stream);
|
||||
itd_link_urb(ehci, urb, ehci->periodic_size << 3, stream);
|
||||
} else if (status > 0) {
|
||||
status = 0;
|
||||
ehci_urb_done(ehci, urb, 0);
|
||||
@ -1992,7 +1993,7 @@ static int itd_submit (struct ehci_hcd *ehci, struct urb *urb,
|
||||
usb_hcd_unlink_urb_from_ep(ehci_to_hcd(ehci), urb);
|
||||
}
|
||||
done_not_linked:
|
||||
spin_unlock_irqrestore (&ehci->lock, flags);
|
||||
spin_unlock_irqrestore(&ehci->lock, flags);
|
||||
done:
|
||||
return status;
|
||||
}
|
||||
@ -2022,13 +2023,13 @@ sitd_sched_init(
|
||||
* when we fit new sitds into the schedule.
|
||||
*/
|
||||
for (i = 0; i < urb->number_of_packets; i++) {
|
||||
struct ehci_iso_packet *packet = &iso_sched->packet [i];
|
||||
struct ehci_iso_packet *packet = &iso_sched->packet[i];
|
||||
unsigned length;
|
||||
dma_addr_t buf;
|
||||
u32 trans;
|
||||
|
||||
length = urb->iso_frame_desc [i].length & 0x03ff;
|
||||
buf = dma + urb->iso_frame_desc [i].offset;
|
||||
length = urb->iso_frame_desc[i].length & 0x03ff;
|
||||
buf = dma + urb->iso_frame_desc[i].offset;
|
||||
|
||||
trans = SITD_STS_ACTIVE;
|
||||
if (((i + 1) == urb->number_of_packets)
|
||||
@ -2054,7 +2055,7 @@ sitd_sched_init(
|
||||
}
|
||||
|
||||
static int
|
||||
sitd_urb_transaction (
|
||||
sitd_urb_transaction(
|
||||
struct ehci_iso_stream *stream,
|
||||
struct ehci_hcd *ehci,
|
||||
struct urb *urb,
|
||||
@ -2067,14 +2068,14 @@ sitd_urb_transaction (
|
||||
struct ehci_iso_sched *iso_sched;
|
||||
unsigned long flags;
|
||||
|
||||
iso_sched = iso_sched_alloc (urb->number_of_packets, mem_flags);
|
||||
iso_sched = iso_sched_alloc(urb->number_of_packets, mem_flags);
|
||||
if (iso_sched == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
sitd_sched_init(ehci, iso_sched, stream, urb);
|
||||
|
||||
/* allocate/init sITDs */
|
||||
spin_lock_irqsave (&ehci->lock, flags);
|
||||
spin_lock_irqsave(&ehci->lock, flags);
|
||||
for (i = 0; i < urb->number_of_packets; i++) {
|
||||
|
||||
/* NOTE: for now, we don't try to handle wraparound cases
|
||||
@ -2091,14 +2092,14 @@ sitd_urb_transaction (
|
||||
struct ehci_sitd, sitd_list);
|
||||
if (sitd->frame == ehci->now_frame)
|
||||
goto alloc_sitd;
|
||||
list_del (&sitd->sitd_list);
|
||||
list_del(&sitd->sitd_list);
|
||||
sitd_dma = sitd->sitd_dma;
|
||||
} else {
|
||||
alloc_sitd:
|
||||
spin_unlock_irqrestore (&ehci->lock, flags);
|
||||
sitd = dma_pool_alloc (ehci->sitd_pool, mem_flags,
|
||||
spin_unlock_irqrestore(&ehci->lock, flags);
|
||||
sitd = dma_pool_alloc(ehci->sitd_pool, mem_flags,
|
||||
&sitd_dma);
|
||||
spin_lock_irqsave (&ehci->lock, flags);
|
||||
spin_lock_irqsave(&ehci->lock, flags);
|
||||
if (!sitd) {
|
||||
iso_sched_free(stream, iso_sched);
|
||||
spin_unlock_irqrestore(&ehci->lock, flags);
|
||||
@ -2106,17 +2107,17 @@ sitd_urb_transaction (
|
||||
}
|
||||
}
|
||||
|
||||
memset (sitd, 0, sizeof *sitd);
|
||||
memset(sitd, 0, sizeof *sitd);
|
||||
sitd->sitd_dma = sitd_dma;
|
||||
sitd->frame = NO_FRAME;
|
||||
list_add (&sitd->sitd_list, &iso_sched->td_list);
|
||||
list_add(&sitd->sitd_list, &iso_sched->td_list);
|
||||
}
|
||||
|
||||
/* temporarily store schedule info in hcpriv */
|
||||
urb->hcpriv = iso_sched;
|
||||
urb->error_count = 0;
|
||||
|
||||
spin_unlock_irqrestore (&ehci->lock, flags);
|
||||
spin_unlock_irqrestore(&ehci->lock, flags);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2131,7 +2132,7 @@ sitd_patch(
|
||||
unsigned index
|
||||
)
|
||||
{
|
||||
struct ehci_iso_packet *uf = &iso_sched->packet [index];
|
||||
struct ehci_iso_packet *uf = &iso_sched->packet[index];
|
||||
u64 bufp;
|
||||
|
||||
sitd->hw_next = EHCI_LIST_END(ehci);
|
||||
@ -2152,14 +2153,14 @@ sitd_patch(
|
||||
}
|
||||
|
||||
static inline void
|
||||
sitd_link (struct ehci_hcd *ehci, unsigned frame, struct ehci_sitd *sitd)
|
||||
sitd_link(struct ehci_hcd *ehci, unsigned frame, struct ehci_sitd *sitd)
|
||||
{
|
||||
/* note: sitd ordering could matter (CSPLIT then SSPLIT) */
|
||||
sitd->sitd_next = ehci->pshadow [frame];
|
||||
sitd->hw_next = ehci->periodic [frame];
|
||||
ehci->pshadow [frame].sitd = sitd;
|
||||
sitd->sitd_next = ehci->pshadow[frame];
|
||||
sitd->hw_next = ehci->periodic[frame];
|
||||
ehci->pshadow[frame].sitd = sitd;
|
||||
sitd->frame = frame;
|
||||
wmb ();
|
||||
wmb();
|
||||
ehci->periodic[frame] = cpu_to_hc32(ehci, sitd->sitd_dma | Q_TYPE_SITD);
|
||||
}
|
||||
|
||||
@ -2196,13 +2197,13 @@ static void sitd_link_urb(
|
||||
packet++) {
|
||||
|
||||
/* ASSERT: we have all necessary sitds */
|
||||
BUG_ON (list_empty (&sched->td_list));
|
||||
BUG_ON(list_empty(&sched->td_list));
|
||||
|
||||
/* ASSERT: no itds for this endpoint in this frame */
|
||||
|
||||
sitd = list_entry (sched->td_list.next,
|
||||
sitd = list_entry(sched->td_list.next,
|
||||
struct ehci_sitd, sitd_list);
|
||||
list_move_tail (&sitd->sitd_list, &stream->td_list);
|
||||
list_move_tail(&sitd->sitd_list, &stream->td_list);
|
||||
sitd->stream = stream;
|
||||
sitd->urb = urb;
|
||||
|
||||
@ -2215,7 +2216,7 @@ static void sitd_link_urb(
|
||||
stream->next_uframe = next_uframe & (mod - 1);
|
||||
|
||||
/* don't need that schedule data any more */
|
||||
iso_sched_free (stream, sched);
|
||||
iso_sched_free(stream, sched);
|
||||
urb->hcpriv = stream;
|
||||
|
||||
++ehci->isoc_count;
|
||||
@ -2248,14 +2249,14 @@ static bool sitd_complete(struct ehci_hcd *ehci, struct ehci_sitd *sitd)
|
||||
bool retval = false;
|
||||
|
||||
urb_index = sitd->index;
|
||||
desc = &urb->iso_frame_desc [urb_index];
|
||||
desc = &urb->iso_frame_desc[urb_index];
|
||||
t = hc32_to_cpup(ehci, &sitd->hw_results);
|
||||
|
||||
/* report transfer status */
|
||||
if (unlikely(t & SITD_ERRS)) {
|
||||
urb->error_count++;
|
||||
if (t & SITD_STS_DBE)
|
||||
desc->status = usb_pipein (urb->pipe)
|
||||
desc->status = usb_pipein(urb->pipe)
|
||||
? -ENOSR /* hc couldn't read */
|
||||
: -ECOMM; /* hc couldn't write */
|
||||
else if (t & SITD_STS_BABBLE)
|
||||
@ -2316,7 +2317,7 @@ done:
|
||||
}
|
||||
|
||||
|
||||
static int sitd_submit (struct ehci_hcd *ehci, struct urb *urb,
|
||||
static int sitd_submit(struct ehci_hcd *ehci, struct urb *urb,
|
||||
gfp_t mem_flags)
|
||||
{
|
||||
int status = -EINVAL;
|
||||
@ -2324,35 +2325,35 @@ static int sitd_submit (struct ehci_hcd *ehci, struct urb *urb,
|
||||
struct ehci_iso_stream *stream;
|
||||
|
||||
/* Get iso_stream head */
|
||||
stream = iso_stream_find (ehci, urb);
|
||||
stream = iso_stream_find(ehci, urb);
|
||||
if (stream == NULL) {
|
||||
ehci_dbg (ehci, "can't get iso stream\n");
|
||||
ehci_dbg(ehci, "can't get iso stream\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
if (urb->interval != stream->ps.period) {
|
||||
ehci_dbg (ehci, "can't change iso interval %d --> %d\n",
|
||||
ehci_dbg(ehci, "can't change iso interval %d --> %d\n",
|
||||
stream->ps.period, urb->interval);
|
||||
goto done;
|
||||
}
|
||||
|
||||
#ifdef EHCI_URB_TRACE
|
||||
ehci_dbg (ehci,
|
||||
ehci_dbg(ehci,
|
||||
"submit %p dev%s ep%d%s-iso len %d\n",
|
||||
urb, urb->dev->devpath,
|
||||
usb_pipeendpoint (urb->pipe),
|
||||
usb_pipein (urb->pipe) ? "in" : "out",
|
||||
usb_pipeendpoint(urb->pipe),
|
||||
usb_pipein(urb->pipe) ? "in" : "out",
|
||||
urb->transfer_buffer_length);
|
||||
#endif
|
||||
|
||||
/* allocate SITDs */
|
||||
status = sitd_urb_transaction (stream, ehci, urb, mem_flags);
|
||||
status = sitd_urb_transaction(stream, ehci, urb, mem_flags);
|
||||
if (status < 0) {
|
||||
ehci_dbg (ehci, "can't init sitds\n");
|
||||
ehci_dbg(ehci, "can't init sitds\n");
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* schedule ... need to lock */
|
||||
spin_lock_irqsave (&ehci->lock, flags);
|
||||
spin_lock_irqsave(&ehci->lock, flags);
|
||||
if (unlikely(!HCD_HW_ACCESSIBLE(ehci_to_hcd(ehci)))) {
|
||||
status = -ESHUTDOWN;
|
||||
goto done_not_linked;
|
||||
@ -2362,7 +2363,7 @@ static int sitd_submit (struct ehci_hcd *ehci, struct urb *urb,
|
||||
goto done_not_linked;
|
||||
status = iso_stream_schedule(ehci, urb, stream);
|
||||
if (likely(status == 0)) {
|
||||
sitd_link_urb (ehci, urb, ehci->periodic_size << 3, stream);
|
||||
sitd_link_urb(ehci, urb, ehci->periodic_size << 3, stream);
|
||||
} else if (status > 0) {
|
||||
status = 0;
|
||||
ehci_urb_done(ehci, urb, 0);
|
||||
@ -2370,7 +2371,7 @@ static int sitd_submit (struct ehci_hcd *ehci, struct urb *urb,
|
||||
usb_hcd_unlink_urb_from_ep(ehci_to_hcd(ehci), urb);
|
||||
}
|
||||
done_not_linked:
|
||||
spin_unlock_irqrestore (&ehci->lock, flags);
|
||||
spin_unlock_irqrestore(&ehci->lock, flags);
|
||||
done:
|
||||
return status;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user