usb: Add support for txfifo threshold

CONFIG_USB_EHCI_TXFIFO_THRESH enables setting of the txfilltuning
field in the EHCI controller on reset.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Remy Bohmer <linux@bohmer.net>
Signed-off-by: Tom Warren <twarren@nvidia.com>
This commit is contained in:
Simon Glass 2012-02-27 10:52:47 +00:00 committed by Albert ARIBAUD
parent 1920172ec8
commit 9ab4ce223c
3 changed files with 15 additions and 1 deletions

3
README
View File

@ -1125,6 +1125,9 @@ The following options need to be configured:
May be defined to allow interrupt polling May be defined to allow interrupt polling
instead of using asynchronous interrupts instead of using asynchronous interrupts
CONFIG_USB_EHCI_TXFIFO_THRESH enables setting of the
txfilltuning field in the EHCI controller on reset.
- USB Device: - USB Device:
Define the below if you wish to use the USB console. Define the below if you wish to use the USB console.
Once firmware is rebuilt from a serial console issue the Once firmware is rebuilt from a serial console issue the

View File

@ -255,6 +255,13 @@ static int ehci_reset(void)
#endif #endif
ehci_writel(reg_ptr, tmp); ehci_writel(reg_ptr, tmp);
} }
#ifdef CONFIG_USB_EHCI_TXFIFO_THRESH
cmd = ehci_readl(&hcor->or_txfilltuning);
cmd &= ~TXFIFO_THRESH(0x3f);
cmd |= TXFIFO_THRESH(CONFIG_USB_EHCI_TXFIFO_THRESH);
ehci_writel(&hcor->or_txfilltuning, cmd);
#endif
out: out:
return ret; return ret;
} }

View File

@ -80,7 +80,11 @@ struct ehci_hcor {
uint32_t or_ctrldssegment; uint32_t or_ctrldssegment;
uint32_t or_periodiclistbase; uint32_t or_periodiclistbase;
uint32_t or_asynclistaddr; uint32_t or_asynclistaddr;
uint32_t _reserved_[9]; uint32_t _reserved_0_;
uint32_t or_burstsize;
uint32_t or_txfilltuning;
#define TXFIFO_THRESH(p) ((p & 0x3f) << 16)
uint32_t _reserved_1_[6];
uint32_t or_configflag; uint32_t or_configflag;
#define FLAG_CF (1 << 0) /* true: we'll support "high speed" */ #define FLAG_CF (1 << 0) /* true: we'll support "high speed" */
uint32_t or_portsc[CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS]; uint32_t or_portsc[CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS];