mirror of https://gitee.com/openkylin/linux.git
usb: gadget: renesas_usbhs: add mod_host support
This is mod_host prototype support for renesas_usbhs driver. It doesn't support USB-Hub, and USB-DMAC for now. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
e2eddc6103
commit
034d7c13a7
|
@ -515,6 +515,19 @@ config USB_R8A66597_HCD
|
|||
To compile this driver as a module, choose M here: the
|
||||
module will be called r8a66597-hcd.
|
||||
|
||||
config USB_RENESAS_USBHS_HCD
|
||||
tristate "Renesas USBHS HCD support"
|
||||
depends on USB
|
||||
depends on USB_RENESAS_USBHS
|
||||
help
|
||||
The Renesas USBHS is a USB 2.0 host and peripheral controller.
|
||||
|
||||
Enable this option if your board has this chip, and you want
|
||||
to use it as a host controller. If unsure, say N.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called renesas-usbhs.
|
||||
|
||||
config USB_WHCI_HCD
|
||||
tristate "Wireless USB Host Controller Interface (WHCI) driver (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
|
|
@ -6,4 +6,5 @@ obj-$(CONFIG_USB_RENESAS_USBHS) += renesas_usbhs.o
|
|||
|
||||
renesas_usbhs-y := common.o mod.o pipe.o fifo.o
|
||||
|
||||
renesas_usbhs-$(CONFIG_USB_RENESAS_USBHS_HCD) += mod_host.o
|
||||
renesas_usbhs-$(CONFIG_USB_RENESAS_USBHS_UDC) += mod_gadget.o
|
||||
|
|
|
@ -140,10 +140,14 @@ int usbhs_mod_probe(struct usbhs_priv *priv)
|
|||
/*
|
||||
* install host/gadget driver
|
||||
*/
|
||||
ret = usbhs_mod_gadget_probe(priv);
|
||||
ret = usbhs_mod_host_probe(priv);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = usbhs_mod_gadget_probe(priv);
|
||||
if (ret < 0)
|
||||
goto mod_init_host_err;
|
||||
|
||||
/* irq settings */
|
||||
ret = request_irq(priv->irq, usbhs_interrupt,
|
||||
0, dev_name(dev), priv);
|
||||
|
@ -156,12 +160,15 @@ int usbhs_mod_probe(struct usbhs_priv *priv)
|
|||
|
||||
mod_init_gadget_err:
|
||||
usbhs_mod_gadget_remove(priv);
|
||||
mod_init_host_err:
|
||||
usbhs_mod_host_remove(priv);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void usbhs_mod_remove(struct usbhs_priv *priv)
|
||||
{
|
||||
usbhs_mod_host_remove(priv);
|
||||
usbhs_mod_gadget_remove(priv);
|
||||
free_irq(priv->irq, priv);
|
||||
}
|
||||
|
|
|
@ -139,8 +139,21 @@ void usbhs_irq_callback_update(struct usbhs_priv *priv, struct usbhs_mod *mod);
|
|||
})
|
||||
|
||||
/*
|
||||
* gadget control
|
||||
* host / gadget control
|
||||
*/
|
||||
#ifdef CONFIG_USB_RENESAS_USBHS_HCD
|
||||
extern int __devinit usbhs_mod_host_probe(struct usbhs_priv *priv);
|
||||
extern int __devexit usbhs_mod_host_remove(struct usbhs_priv *priv);
|
||||
#else
|
||||
static inline int usbhs_mod_host_probe(struct usbhs_priv *priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline void usbhs_mod_host_remove(struct usbhs_priv *priv)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USB_RENESAS_USBHS_UDC
|
||||
extern int __devinit usbhs_mod_gadget_probe(struct usbhs_priv *priv);
|
||||
extern void __devexit usbhs_mod_gadget_remove(struct usbhs_priv *priv);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue