2 * Platform data for the chipidea USB dual role controller
5 #ifndef __LINUX_USB_CHIPIDEA_H
6 #define __LINUX_USB_CHIPIDEA_H
8 #include <linux/usb/otg.h>
11 struct ci_hdrc_platform_data
{
13 /* offset of the capability registers */
15 unsigned power_budget
;
17 /* old usb_phy interface */
18 struct usb_phy
*usb_phy
;
19 enum usb_phy_interface phy_mode
;
21 #define CI_HDRC_REGS_SHARED BIT(0)
22 #define CI_HDRC_DISABLE_STREAMING BIT(3)
24 * Only set it when DCCPARAMS.DC==1 and DCCPARAMS.HC==1,
25 * but otg is not supported (no register otgsc).
27 #define CI_HDRC_DUAL_ROLE_NOT_OTG BIT(4)
28 #define CI_HDRC_IMX28_WRITE_FIX BIT(5)
29 #define CI_HDRC_FORCE_FULLSPEED BIT(6)
30 enum usb_dr_mode dr_mode
;
31 #define CI_HDRC_CONTROLLER_RESET_EVENT 0
32 #define CI_HDRC_CONTROLLER_STOPPED_EVENT 1
33 void (*notify_event
) (struct ci_hdrc
*ci
, unsigned event
);
34 struct regulator
*reg_vbus
;
38 /* Default offset of capability registers */
39 #define DEF_CAPOFFSET 0x100
41 /* Add ci hdrc device */
42 struct platform_device
*ci_hdrc_add_device(struct device
*dev
,
43 struct resource
*res
, int nres
,
44 struct ci_hdrc_platform_data
*platdata
);
45 /* Remove ci hdrc device */
46 void ci_hdrc_remove_device(struct platform_device
*pdev
);