xref: /linux/include/linux/usb/chipidea.h (revision 4413e16d9d21673bb5048a2e542f1aaa00015c2e)
1 /*
2  * Platform data for the chipidea USB dual role controller
3  */
4 
5 #ifndef __LINUX_USB_CHIPIDEA_H
6 #define __LINUX_USB_CHIPIDEA_H
7 
8 #include <linux/usb/otg.h>
9 
10 struct ci13xxx;
11 struct ci13xxx_platform_data {
12 	const char	*name;
13 	/* offset of the capability registers */
14 	uintptr_t	 capoffset;
15 	unsigned	 power_budget;
16 	struct usb_phy	*phy;
17 	unsigned long	 flags;
18 #define CI13XXX_REGS_SHARED		BIT(0)
19 #define CI13XXX_REQUIRE_TRANSCEIVER	BIT(1)
20 #define CI13XXX_PULLUP_ON_VBUS		BIT(2)
21 #define CI13XXX_DISABLE_STREAMING	BIT(3)
22 
23 #define CI13XXX_CONTROLLER_RESET_EVENT		0
24 #define CI13XXX_CONTROLLER_STOPPED_EVENT	1
25 	void	(*notify_event) (struct ci13xxx *ci, unsigned event);
26 };
27 
28 /* Default offset of capability registers */
29 #define DEF_CAPOFFSET		0x100
30 
31 /* Add ci13xxx device */
32 struct platform_device *ci13xxx_add_device(struct device *dev,
33 			struct resource *res, int nres,
34 			struct ci13xxx_platform_data *platdata);
35 /* Remove ci13xxx device */
36 void ci13xxx_remove_device(struct platform_device *pdev);
37 
38 #endif
39