usb: isp1760: Make HCD support optional
Enable compilation of the isp1760 driver in pure host mode, pure device mode, or dual-role mode. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
7ef077a8ad
commit
100832abf0
@ -1,6 +1,6 @@
|
|||||||
config USB_ISP1760
|
config USB_ISP1760
|
||||||
tristate "NXP ISP 1760/1761 support"
|
tristate "NXP ISP 1760/1761 support"
|
||||||
depends on USB
|
depends on USB || USB_GADGET
|
||||||
help
|
help
|
||||||
Say Y or M here if your system as an ISP1760 USB host controller
|
Say Y or M here if your system as an ISP1760 USB host controller
|
||||||
or an ISP1761 USB dual-role controller.
|
or an ISP1761 USB dual-role controller.
|
||||||
@ -14,9 +14,46 @@ config USB_ISP1760
|
|||||||
To compile this driver as a module, choose M here: the
|
To compile this driver as a module, choose M here: the
|
||||||
module will be called isp1760.
|
module will be called isp1760.
|
||||||
|
|
||||||
|
config USB_ISP1760_HCD
|
||||||
|
bool
|
||||||
|
|
||||||
config USB_ISP1761_UDC
|
config USB_ISP1761_UDC
|
||||||
boolean "NXP ISP1761 USB Device Controller"
|
bool
|
||||||
depends on USB_ISP1760 && USB_GADGET
|
|
||||||
|
if USB_ISP1760
|
||||||
|
|
||||||
|
choice
|
||||||
|
bool "ISP1760 Mode Selection"
|
||||||
|
default USB_ISP1760_DUAL_ROLE if (USB && USB_GADGET)
|
||||||
|
default USB_ISP1760_HOST_ROLE if (USB && !USB_GADGET)
|
||||||
|
default USB_ISP1760_GADGET_ROLE if (!USB && USB_GADGET)
|
||||||
|
|
||||||
|
config USB_ISP1760_HOST_ROLE
|
||||||
|
bool "Host only mode"
|
||||||
|
depends on USB=y || USB=USB_ISP1760
|
||||||
|
select USB_ISP1760_HCD
|
||||||
help
|
help
|
||||||
The NXP ISP1761 is a dual-role high-speed USB host and device
|
Select this if you want to use the ISP1760 in host mode only. The
|
||||||
controller.
|
gadget function will be disabled.
|
||||||
|
|
||||||
|
config USB_ISP1760_GADGET_ROLE
|
||||||
|
bool "Gadget only mode"
|
||||||
|
depends on USB_GADGET=y || USB_GADGET=USB_ISP1760
|
||||||
|
select USB_ISP1761_UDC
|
||||||
|
help
|
||||||
|
Select this if you want to use the ISP1760 in peripheral mode only.
|
||||||
|
The host function will be disabled.
|
||||||
|
|
||||||
|
config USB_ISP1760_DUAL_ROLE
|
||||||
|
bool "Dual Role mode"
|
||||||
|
depends on USB=y || USB=USB_ISP1760
|
||||||
|
depends on USB_GADGET=y || USB_GADGET=USB_ISP1760
|
||||||
|
select USB_ISP1760_HCD
|
||||||
|
select USB_ISP1761_UDC
|
||||||
|
help
|
||||||
|
Select this if you want to use the ISP1760 in both host and
|
||||||
|
peripheral modes.
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
endif
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
isp1760-y := isp1760-core.o isp1760-hcd.o isp1760-if.o
|
isp1760-y := isp1760-core.o isp1760-if.o
|
||||||
|
isp1760-$(CONFIG_USB_ISP1760_HCD) += isp1760-hcd.o
|
||||||
isp1760-$(CONFIG_USB_ISP1761_UDC) += isp1760-udc.o
|
isp1760-$(CONFIG_USB_ISP1761_UDC) += isp1760-udc.o
|
||||||
|
|
||||||
obj-$(CONFIG_USB_ISP1760) += isp1760.o
|
obj-$(CONFIG_USB_ISP1760) += isp1760.o
|
||||||
|
@ -47,6 +47,7 @@ enum isp1760_queue_head_types {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct isp1760_hcd {
|
struct isp1760_hcd {
|
||||||
|
#ifdef CONFIG_USB_ISP1760_HCD
|
||||||
struct usb_hcd *hcd;
|
struct usb_hcd *hcd;
|
||||||
|
|
||||||
u32 hcs_params;
|
u32 hcs_params;
|
||||||
@ -64,8 +65,10 @@ struct isp1760_hcd {
|
|||||||
unsigned i_thresh;
|
unsigned i_thresh;
|
||||||
unsigned long reset_done;
|
unsigned long reset_done;
|
||||||
unsigned long next_statechange;
|
unsigned long next_statechange;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef CONFIG_USB_ISP1760_HCD
|
||||||
int isp1760_hcd_register(struct isp1760_hcd *priv, void __iomem *regs,
|
int isp1760_hcd_register(struct isp1760_hcd *priv, void __iomem *regs,
|
||||||
struct resource *mem, int irq, unsigned long irqflags,
|
struct resource *mem, int irq, unsigned long irqflags,
|
||||||
struct device *dev);
|
struct device *dev);
|
||||||
@ -73,5 +76,27 @@ void isp1760_hcd_unregister(struct isp1760_hcd *priv);
|
|||||||
|
|
||||||
int isp1760_init_kmem_once(void);
|
int isp1760_init_kmem_once(void);
|
||||||
void isp1760_deinit_kmem_cache(void);
|
void isp1760_deinit_kmem_cache(void);
|
||||||
|
#else
|
||||||
|
static inline int isp1760_hcd_register(struct isp1760_hcd *priv,
|
||||||
|
void __iomem *regs, struct resource *mem,
|
||||||
|
int irq, unsigned long irqflags,
|
||||||
|
struct device *dev)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void isp1760_hcd_unregister(struct isp1760_hcd *priv)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int isp1760_init_kmem_once(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void isp1760_deinit_kmem_cache(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _ISP1760_HCD_H_ */
|
#endif /* _ISP1760_HCD_H_ */
|
||||||
|
@ -62,7 +62,7 @@ struct isp1760_ep {
|
|||||||
* connected: Tracks gadget driver bus connection state
|
* connected: Tracks gadget driver bus connection state
|
||||||
*/
|
*/
|
||||||
struct isp1760_udc {
|
struct isp1760_udc {
|
||||||
#if CONFIG_USB_ISP1761_UDC
|
#ifdef CONFIG_USB_ISP1761_UDC
|
||||||
struct isp1760_device *isp;
|
struct isp1760_device *isp;
|
||||||
|
|
||||||
int irq;
|
int irq;
|
||||||
@ -87,7 +87,7 @@ struct isp1760_udc {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#if CONFIG_USB_ISP1761_UDC
|
#ifdef CONFIG_USB_ISP1761_UDC
|
||||||
int isp1760_udc_register(struct isp1760_device *isp, int irq,
|
int isp1760_udc_register(struct isp1760_device *isp, int irq,
|
||||||
unsigned long irqflags);
|
unsigned long irqflags);
|
||||||
void isp1760_udc_unregister(struct isp1760_device *isp);
|
void isp1760_udc_unregister(struct isp1760_device *isp);
|
||||||
|
Loading…
Reference in New Issue
Block a user