aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ehci.h
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
commitc71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch)
treeecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /drivers/usb/host/ehci.h
parentea53c912f8a86a8567697115b6a0d8152beee5c8 (diff)
parent6a00f206debf8a5c8899055726ad127dbeeed098 (diff)
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts: litmus/sched_cedf.c
Diffstat (limited to 'drivers/usb/host/ehci.h')
-rw-r--r--drivers/usb/host/ehci.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index bde823f704e9..bd6ff489baf9 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -73,6 +73,7 @@ struct ehci_hcd { /* one per controller */
73 73
74 /* async schedule support */ 74 /* async schedule support */
75 struct ehci_qh *async; 75 struct ehci_qh *async;
76 struct ehci_qh *dummy; /* For AMD quirk use */
76 struct ehci_qh *reclaim; 77 struct ehci_qh *reclaim;
77 unsigned scanning : 1; 78 unsigned scanning : 1;
78 79
@@ -117,6 +118,7 @@ struct ehci_hcd { /* one per controller */
117 struct timer_list watchdog; 118 struct timer_list watchdog;
118 unsigned long actions; 119 unsigned long actions;
119 unsigned stamp; 120 unsigned stamp;
121 unsigned periodic_stamp;
120 unsigned random_frame; 122 unsigned random_frame;
121 unsigned long next_statechange; 123 unsigned long next_statechange;
122 ktime_t last_periodic_enable; 124 ktime_t last_periodic_enable;
@@ -127,10 +129,14 @@ struct ehci_hcd { /* one per controller */
127 unsigned has_fsl_port_bug:1; /* FreeScale */ 129 unsigned has_fsl_port_bug:1; /* FreeScale */
128 unsigned big_endian_mmio:1; 130 unsigned big_endian_mmio:1;
129 unsigned big_endian_desc:1; 131 unsigned big_endian_desc:1;
132 unsigned big_endian_capbase:1;
130 unsigned has_amcc_usb23:1; 133 unsigned has_amcc_usb23:1;
131 unsigned need_io_watchdog:1; 134 unsigned need_io_watchdog:1;
132 unsigned broken_periodic:1; 135 unsigned broken_periodic:1;
136 unsigned amd_pll_fix:1;
133 unsigned fs_i_thresh:1; /* Intel iso scheduling */ 137 unsigned fs_i_thresh:1; /* Intel iso scheduling */
138 unsigned use_dummy_qh:1; /* AMD Frame List table quirk*/
139 unsigned has_synopsys_hc_bug:1; /* Synopsys HC */
134 140
135 /* required for usb32 quirk */ 141 /* required for usb32 quirk */
136 #define OHCI_CTRL_HCFS (3 << 6) 142 #define OHCI_CTRL_HCFS (3 << 6)
@@ -157,6 +163,10 @@ struct ehci_hcd { /* one per controller */
157#ifdef DEBUG 163#ifdef DEBUG
158 struct dentry *debug_dir; 164 struct dentry *debug_dir;
159#endif 165#endif
166 /*
167 * OTG controllers and transceivers need software interaction
168 */
169 struct otg_transceiver *transceiver;
160}; 170};
161 171
162/* convert between an HCD pointer and the corresponding EHCI_HCD */ 172/* convert between an HCD pointer and the corresponding EHCI_HCD */
@@ -597,12 +607,18 @@ ehci_port_speed(struct ehci_hcd *ehci, unsigned int portsc)
597 * This attempts to support either format at compile time without a 607 * This attempts to support either format at compile time without a
598 * runtime penalty, or both formats with the additional overhead 608 * runtime penalty, or both formats with the additional overhead
599 * of checking a flag bit. 609 * of checking a flag bit.
610 *
611 * ehci_big_endian_capbase is a special quirk for controllers that
612 * implement the HC capability registers as separate registers and not
613 * as fields of a 32-bit register.
600 */ 614 */
601 615
602#ifdef CONFIG_USB_EHCI_BIG_ENDIAN_MMIO 616#ifdef CONFIG_USB_EHCI_BIG_ENDIAN_MMIO
603#define ehci_big_endian_mmio(e) ((e)->big_endian_mmio) 617#define ehci_big_endian_mmio(e) ((e)->big_endian_mmio)
618#define ehci_big_endian_capbase(e) ((e)->big_endian_capbase)
604#else 619#else
605#define ehci_big_endian_mmio(e) 0 620#define ehci_big_endian_mmio(e) 0
621#define ehci_big_endian_capbase(e) 0
606#endif 622#endif
607 623
608/* 624/*
@@ -641,7 +657,7 @@ static inline void ehci_writel(const struct ehci_hcd *ehci,
641/* 657/*
642 * On certain ppc-44x SoC there is a HW issue, that could only worked around with 658 * On certain ppc-44x SoC there is a HW issue, that could only worked around with
643 * explicit suspend/operate of OHCI. This function hereby makes sense only on that arch. 659 * explicit suspend/operate of OHCI. This function hereby makes sense only on that arch.
644 * Other common bits are dependant on has_amcc_usb23 quirk flag. 660 * Other common bits are dependent on has_amcc_usb23 quirk flag.
645 */ 661 */
646#ifdef CONFIG_44x 662#ifdef CONFIG_44x
647static inline void set_ohci_hcfs(struct ehci_hcd *ehci, int operational) 663static inline void set_ohci_hcfs(struct ehci_hcd *ehci, int operational)