summaryrefslogtreecommitdiff
path: root/drivers/usb/host/ehci.h
diff options
context:
space:
mode:
authorDinh Nguyen <r00091@freescale.com>2009-09-16 12:56:38 -0500
committerJason Liu <r64343@freescale.com>2012-01-09 19:53:42 +0800
commit88871608f139e8a8b3470a196a0e7034b2355698 (patch)
tree6a3e7a38af89f4eed60f82c14893344b97c26d47 /drivers/usb/host/ehci.h
parent5af5570f7c4f002ba1fea78bd00db9af14dc24e3 (diff)
usb: imx usb buffers in iram work-around
Some i.MX parts (MX31, MX37) need to have usb host queue descriptors and/or buffers in on-chip IRAM in cases of heavily loaded memory system (i.e. large LCDs). Signed-off-by: Dinh Nguyen <r00091@freescale.com>
Diffstat (limited to 'drivers/usb/host/ehci.h')
-rw-r--r--drivers/usb/host/ehci.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index 9b9701fc1acc..3c3503acae58 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -157,6 +157,13 @@ struct ehci_hcd { /* one per controller */
* other external transceivers should be software-transparent
*/
struct otg_transceiver *transceiver;
+#ifdef CONFIG_USB_STATIC_IRAM
+ u32 iram_buffer[2];
+ u32 iram_buffer_v[2];
+ int iram_in_use[2];
+ int usb_address[2];
+#endif
+
/* irq statistics */
#ifdef EHCI_STATS
struct ehci_stats stats;
@@ -260,6 +267,10 @@ struct ehci_qtd {
struct list_head qtd_list; /* sw qtd list */
struct urb *urb; /* qtd's urb */
size_t length; /* length of buffer */
+#ifdef CONFIG_USB_STATIC_IRAM
+ size_t buffer_offset;
+ int last_one;
+#endif
} __attribute__ ((aligned (32)));
/* mask NakCnt+T in qh->hw_alt_next */
@@ -764,6 +775,10 @@ static inline unsigned ehci_read_frame_index(struct ehci_hcd *ehci)
#define STUB_DEBUG_FILES
#endif /* DEBUG */
+#ifdef CONFIG_USB_STATIC_IRAM
+#define IRAM_TD_SIZE 1024 /* size of 1 qTD's buffer */
+#define IRAM_NTD 2 /* number of TDs in IRAM */
+#endif
/*-------------------------------------------------------------------------*/
#endif /* __LINUX_EHCI_HCD_H */