From 57b56a989fb0071382832c9e7263e48057314e6c Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Wed, 23 Jun 2010 15:29:44 +0200 Subject: ehci: Make has_tt configurable via platform data Signed-off-by: Sascha Hauer --- drivers/usb/usb_ehci_core.c | 18 ++++++++++++------ include/usb/ehci.h | 10 ++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 include/usb/ehci.h diff --git a/drivers/usb/usb_ehci_core.c b/drivers/usb/usb_ehci_core.c index d7efaadb8c..f3611cda2f 100644 --- a/drivers/usb/usb_ehci_core.c +++ b/drivers/usb/usb_ehci_core.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include "usb_ehci.h" @@ -43,6 +44,7 @@ struct ehci_priv { struct QH *qh_list; void *qhp; int portreset; + unsigned long flags; }; #define to_ehci(ptr) container_of(ptr, struct ehci_priv, host) @@ -112,13 +114,8 @@ static struct descriptor { 255 /* bInterval */ }, }; -#define CONFIG_EHCI_IS_TDI // FIXME -#if defined(CONFIG_EHCI_IS_TDI) -#define ehci_is_TDI() (1) -#else -#define ehci_is_TDI() (0) -#endif +#define ehci_is_TDI() (ehci->flags & EHCI_HAS_TT) #ifdef CONFIG_MMU /* @@ -861,10 +858,19 @@ static int ehci_probe(struct device_d *dev) struct usb_host *host; struct ehci_priv *ehci; uint32_t reg; + struct ehci_platform_data *pdata = dev->platform_data; ehci = xmalloc(sizeof(struct ehci_priv)); host = &ehci->host; + if (pdata) + ehci->flags = pdata->flags; + else + /* default to EHCI_HAS_TT to not change behaviour of boards + * with platform_data + */ + ehci->flags = EHCI_HAS_TT; + host->init = ehci_init; host->submit_int_msg = submit_int_msg; host->submit_control_msg = submit_control_msg; diff --git a/include/usb/ehci.h b/include/usb/ehci.h new file mode 100644 index 0000000000..3304b60279 --- /dev/null +++ b/include/usb/ehci.h @@ -0,0 +1,10 @@ +#ifndef __USB_EHCI_H +#define __USB_EHCI_H + +#define EHCI_HAS_TT (1 << 0) + +struct ehci_platform_data { + unsigned long flags; +}; + +#endif /* __USB_EHCI_H */ -- cgit v1.2.3