Commit 7c96943a authored by David Brownell's avatar David Brownell Committed by Greg Kroah-Hartman

[PATCH] USB: ehci-hcd, fullspeed iso data structures (2/3)

[USB] ehci, rename some iso data structures

Rename some data and functions used by EHCI to manage ISO transactions,
since they currently assume only high speed transfers.  Much of the same
infrastructure will be used for full speed ISO, with split transactions.
parent 4e5cd67f
This diff is collapsed.
...@@ -386,22 +386,24 @@ struct ehci_qh { ...@@ -386,22 +386,24 @@ struct ehci_qh {
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
/* description of one iso highspeed transaction (up to 3 KB data) */ /* description of one iso transaction (up to 3 KB data if highspeed) */
struct ehci_iso_uframe { struct ehci_iso_packet {
/* These will be copied to iTD when scheduling */ /* These will be copied to iTD when scheduling */
u64 bufp; /* itd->hw_bufp{,_hi}[pg] |= */ u64 bufp; /* itd->hw_bufp{,_hi}[pg] |= */
u32 transaction; /* itd->hw_transaction[i] |= */ u32 transaction; /* itd->hw_transaction[i] |= */
u8 cross; /* buf crosses pages */ u8 cross; /* buf crosses pages */
/* for full speed OUT splits */
u16 buf1;
}; };
/* temporary schedule data for highspeed packets from iso urbs /* temporary schedule data for packets from iso urbs (both speeds)
* each packet is one uframe's usb transactions, in some itd, * each packet is one logical usb transaction to the device (not TT),
* beginning at stream->next_uframe * beginning at stream->next_uframe
*/ */
struct ehci_itd_sched { struct ehci_iso_sched {
struct list_head itd_list; struct list_head td_list;
unsigned span; unsigned span;
struct ehci_iso_uframe packet [0]; struct ehci_iso_packet packet [0];
}; };
/* /*
...@@ -415,9 +417,10 @@ struct ehci_iso_stream { ...@@ -415,9 +417,10 @@ struct ehci_iso_stream {
u32 refcount; u32 refcount;
u8 bEndpointAddress; u8 bEndpointAddress;
struct list_head itd_list; /* queued itds */ u8 highspeed;
struct list_head free_itd_list; /* list of unused itds */ struct list_head td_list; /* queued itds/sitds */
struct hcd_dev *dev; struct list_head free_list; /* list of unused itds/sitds */
struct usb_device *udev;
/* output of (re)scheduling */ /* output of (re)scheduling */
unsigned long start; /* jiffies */ unsigned long start; /* jiffies */
...@@ -460,7 +463,7 @@ struct ehci_itd { ...@@ -460,7 +463,7 @@ struct ehci_itd {
#define EHCI_ITD_LENGTH(tok) (((tok)>>16) & 0x0fff) #define EHCI_ITD_LENGTH(tok) (((tok)>>16) & 0x0fff)
#define EHCI_ITD_IOC (1 << 15) /* interrupt on complete */ #define EHCI_ITD_IOC (1 << 15) /* interrupt on complete */
#define ISO_ACTIVE __constant_cpu_to_le32(EHCI_ISOC_ACTIVE) #define ITD_ACTIVE __constant_cpu_to_le32(EHCI_ISOC_ACTIVE)
u32 hw_bufp [7]; /* see EHCI 3.3.3 */ u32 hw_bufp [7]; /* see EHCI 3.3.3 */
u32 hw_bufp_hi [7]; /* Appendix B */ u32 hw_bufp_hi [7]; /* Appendix B */
......
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