chipidea.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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_REQUIRE_TRANSCEIVER BIT(1)
  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. enum usb_dr_mode dr_mode;
  29. #define CI_HDRC_CONTROLLER_RESET_EVENT 0
  30. #define CI_HDRC_CONTROLLER_STOPPED_EVENT 1
  31. void (*notify_event) (struct ci_hdrc *ci, unsigned event);
  32. struct regulator *reg_vbus;
  33. bool tpl_support;
  34. };
  35. /* Default offset of capability registers */
  36. #define DEF_CAPOFFSET 0x100
  37. /* Add ci hdrc device */
  38. struct platform_device *ci_hdrc_add_device(struct device *dev,
  39. struct resource *res, int nres,
  40. struct ci_hdrc_platform_data *platdata);
  41. /* Remove ci hdrc device */
  42. void ci_hdrc_remove_device(struct platform_device *pdev);
  43. #endif