chipidea.h 1.4 KB

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