xref: /openbmc/linux/include/linux/usb/chipidea.h (revision 078a55fc)
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 ci_hdrc;
11 struct ci_hdrc_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 	enum usb_phy_interface phy_mode;
18 	unsigned long	 flags;
19 #define CI_HDRC_REGS_SHARED		BIT(0)
20 #define CI_HDRC_REQUIRE_TRANSCEIVER	BIT(1)
21 #define CI_HDRC_PULLUP_ON_VBUS		BIT(2)
22 #define CI_HDRC_DISABLE_STREAMING	BIT(3)
23 	enum usb_dr_mode	dr_mode;
24 #define CI_HDRC_CONTROLLER_RESET_EVENT		0
25 #define CI_HDRC_CONTROLLER_STOPPED_EVENT	1
26 	void	(*notify_event) (struct ci_hdrc *ci, unsigned event);
27 };
28 
29 /* Default offset of capability registers */
30 #define DEF_CAPOFFSET		0x100
31 
32 /* Add ci hdrc device */
33 struct platform_device *ci_hdrc_add_device(struct device *dev,
34 			struct resource *res, int nres,
35 			struct ci_hdrc_platform_data *platdata);
36 /* Remove ci hdrc device */
37 void ci_hdrc_remove_device(struct platform_device *pdev);
38 
39 #endif
40