From: Manjunath Goudar manjunath.gou...@linaro.org
Some EHCI HCD drivers may need to override additional fields in struct
hc_driver, such as map_urb_for_dma, unmap_urb_for_dma, hub_control. Add
fields to struct ehci_driver_overrides to allow them to do so.
These new overrides will be used at least by the Tegra EHCI driver.
Signed-off-by: Manjunath Goudar manjunath.gou...@linaro.org
[swarren, reworked Manjunath's patches to split them more logically]
Signed-off-by: Stephen Warren swar...@nvidia.com
---
drivers/usb/host/ehci-hcd.c |6 ++
drivers/usb/host/ehci.h |6 ++
2 files changed, 12 insertions(+)
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 246e124..da1c224 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -1211,6 +1211,12 @@ void ehci_init_driver(struct hc_driver *drv,
drv-hcd_priv_size += over-extra_priv_size;
if (over-reset)
drv-reset = over-reset;
+ if (over-map_urb_for_dma)
+ drv-map_urb_for_dma = over-map_urb_for_dma;
+ if (over-unmap_urb_for_dma)
+ drv-unmap_urb_for_dma = over-unmap_urb_for_dma;
+ if (over-hub_control)
+ drv-hub_control = over-hub_control;
}
}
EXPORT_SYMBOL_GPL(ehci_init_driver);
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index 7c978b2..918008a 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -795,6 +795,12 @@ static inline u32 hc32_to_cpup (const struct ehci_hcd
*ehci, const __hc32 *x)
struct ehci_driver_overrides {
size_t extra_priv_size;
int (*reset)(struct usb_hcd *hcd);
+ int (*map_urb_for_dma)(struct usb_hcd *hcd, struct urb *urb,
+ gfp_t mem_flags);
+ void(*unmap_urb_for_dma)(struct usb_hcd *hcd, struct urb *urb);
+ int (*hub_control)(struct usb_hcd *hcd,
+ u16 typeReq, u16 wValue, u16 wIndex,
+ char *buf, u16 wLength);
};
extern voidehci_init_driver(struct hc_driver *drv,
--
1.7.10.4
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html