diff options
author | Dinh Nguyen <r00091@freescale.com> | 2009-09-16 12:56:38 -0500 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2012-01-09 19:53:42 +0800 |
commit | 88871608f139e8a8b3470a196a0e7034b2355698 (patch) | |
tree | 6a3e7a38af89f4eed60f82c14893344b97c26d47 /drivers/usb/host/ehci.h | |
parent | 5af5570f7c4f002ba1fea78bd00db9af14dc24e3 (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.h | 15 |
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 */ |