chipidea.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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_DISABLE_STREAMING BIT(3)
  20. /*
  21. * Only set it when DCCPARAMS.DC==1 and DCCPARAMS.HC==1,
  22. * but otg is not supported (no register otgsc).
  23. */
  24. #define CI_HDRC_DUAL_ROLE_NOT_OTG BIT(4)
  25. #define CI_HDRC_IMX28_WRITE_FIX BIT(5)
  26. #define CI_HDRC_FORCE_FULLSPEED BIT(6)
  27. enum usb_dr_mode dr_mode;
  28. #define CI_HDRC_CONTROLLER_RESET_EVENT 0
  29. #define CI_HDRC_CONTROLLER_STOPPED_EVENT 1
  30. void (*notify_event) (struct ci_hdrc *ci, unsigned event);
  31. struct regulator *reg_vbus;
  32. bool tpl_support;
  33. };
  34. /* Default offset of capability registers */
  35. #define DEF_CAPOFFSET 0x100
  36. /* Add ci hdrc device */
  37. struct platform_device *ci_hdrc_add_device(struct device *dev,
  38. struct resource *res, int nres,
  39. struct ci_hdrc_platform_data *platdata);
  40. /* Remove ci hdrc device */
  41. void ci_hdrc_remove_device(struct platform_device *pdev);
  42. #endif