aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorKarsten Wiese <fzu@wemgehoertderstaat.de>2007-12-31 00:55:05 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2008-02-01 17:35:02 -0500
commit3b6fcfd0664aeac6ae2fd1231f04b3ed24723c1e (patch)
tree91f6bf59435039eefcd4a931bed274a0b33882f1 /drivers/usb
parent91bc4d31e81b15aa6e2d075307b8727041f2e2d1 (diff)
USB: ehci saves some memory in ISO transfer descriptors
In the EHCI driver, itd->usecs[8] is used in periodic_usecs(), indexed by uframe. For an ITD's unused uframes it is 0, else it contains the same value as itd->stream->usecs. To check if an ITD's uframe is used, we can instead test itd->hw_transaction[uframe]: if used, it will be nonzero no matter what endianess is used. This patch replaces those two uses, eliminates itd->usecs[], and saves eight bytes from each ITD. Signed-off-by: Karsten Wiese <fzu@wemgehoertderstaat.de> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/host/ehci-sched.c4
-rw-r--r--drivers/usb/host/ehci.h1
2 files changed, 2 insertions, 3 deletions
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c
index 1c771045ccaa..1a94e6cec419 100644
--- a/drivers/usb/host/ehci-sched.c
+++ b/drivers/usb/host/ehci-sched.c
@@ -119,7 +119,8 @@ periodic_usecs (struct ehci_hcd *ehci, unsigned frame, unsigned uframe)
119 q = &q->fstn->fstn_next; 119 q = &q->fstn->fstn_next;
120 break; 120 break;
121 case Q_TYPE_ITD: 121 case Q_TYPE_ITD:
122 usecs += q->itd->usecs [uframe]; 122 if (q->itd->hw_transaction[uframe])
123 usecs += q->itd->stream->usecs;
123 hw_p = &q->itd->hw_next; 124 hw_p = &q->itd->hw_next;
124 q = &q->itd->itd_next; 125 q = &q->itd->itd_next;
125 break; 126 break;
@@ -1536,7 +1537,6 @@ itd_link_urb (
1536 uframe = next_uframe & 0x07; 1537 uframe = next_uframe & 0x07;
1537 frame = next_uframe >> 3; 1538 frame = next_uframe >> 3;
1538 1539
1539 itd->usecs [uframe] = stream->usecs;
1540 itd_patch(ehci, itd, iso_sched, packet, uframe); 1540 itd_patch(ehci, itd, iso_sched, packet, uframe);
1541 1541
1542 next_uframe += stream->interval; 1542 next_uframe += stream->interval;
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index f83472856a80..42969e9d8c44 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -602,7 +602,6 @@ struct ehci_itd {
602 unsigned frame; /* where scheduled */ 602 unsigned frame; /* where scheduled */
603 unsigned pg; 603 unsigned pg;
604 unsigned index[8]; /* in urb->iso_frame_desc */ 604 unsigned index[8]; /* in urb->iso_frame_desc */
605 u8 usecs[8];
606} __attribute__ ((aligned (32))); 605} __attribute__ ((aligned (32)));
607 606
608/*-------------------------------------------------------------------------*/ 607/*-------------------------------------------------------------------------*/