usb_defines.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /*!
  2. \file usb_defines.h
  3. \brief USB core defines
  4. */
  5. /*
  6. Copyright (C) 2017 GigaDevice
  7. 2017-02-10, V1.0.0, firmware for GD32F30x
  8. */
  9. #ifndef USB_DEFINES_H
  10. #define USB_DEFINES_H
  11. #include "usb_conf.h"
  12. #ifndef NULL
  13. #define NULL (void *)0 /*!< USB null marco value*/
  14. #endif /* NULL */
  15. #define USB_CORE_SPEED_HIGH 0U /* USB core speed is high-speed */
  16. #define USB_CORE_SPEED_FULL 1U /* USB core speed is full-speed */
  17. #define USBFS_MAX_PACKET_SIZE 64U /* USBFS max packet size */
  18. #define USBFS_MAX_HOST_CHANNELCOUNT 8U /* USBFS host channel count */
  19. #define USBFS_MAX_DEV_EPCOUNT 4U /* USBFS device endpoint count */
  20. #define USBFS_MAX_FIFO_WORDLEN 320U /* USBFS max fifo size in words */
  21. #define USBHS_MAX_PACKET_SIZE 512U /* USBHS max packet size */
  22. #define USBHS_MAX_HOST_CHANNELCOUNT 12U /* USBHS host channel count */
  23. #define USBHS_MAX_DEV_EPCOUNT 6U /* USBHS device endpoint count */
  24. #define USBHS_MAX_FIFO_WORDLEN 1280U /* USBHS max fifo size in words */
  25. #define USB_CORE_ULPI_PHY 1U /* USB core use external ULPI PHY */
  26. #define USB_CORE_EMBEDDED_PHY 2U /* USB core use embedded PHY */
  27. #define DSTAT_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ 0U /* USB enumerate speed use high-speed PHY clock in 30MHz or 60MHz */
  28. #define DSTAT_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ 1U /* USB enumerate speed use full-speed PHY clock in 30MHz or 60MHz */
  29. #define DSTAT_ENUMSPD_LS_PHY_6MHZ 2U /* USB enumerate speed use low-speed PHY clock in 6MHz */
  30. #define DSTAT_ENUMSPD_FS_PHY_48MHZ 3U /* USB enumerate speed use full-speed PHY clock in 48MHz */
  31. #define GRSTATR_RPCKST_IN 2U /* IN data packet received */
  32. #define GRSTATR_RPCKST_IN_XFER_COMP 3U /* IN transfer completed (generates an interrupt if poped) */
  33. #define GRSTATR_RPCKST_DATA_TOGGLE_ERR 5U /* data toggle error (generates an interrupt if poped) */
  34. #define GRSTATR_RPCKST_CH_HALTED 7U /* channel halted (generates an interrupt if poped) */
  35. #define DEVICE_MODE 0U /* USB core in device mode */
  36. #define HOST_MODE 1U /* USB core in host mode */
  37. #define OTG_MODE 2U /* USB core in OTG mode */
  38. #define USB_EPTYPE_CTRL 0U /* USB control endpoint type */
  39. #define USB_EPTYPE_ISOC 1U /* USB synchronous endpoint type */
  40. #define USB_EPTYPE_BULK 2U /* USB bulk endpoint type */
  41. #define USB_EPTYPE_INTR 3U /* USB interrupt endpoint type */
  42. #define USB_EPTYPE_MASK 3U /* USB endpoint type mask */
  43. #define RXSTAT_GOUT_NAK 1U /* global OUT NAK (triggers an interrupt) */
  44. #define RXSTAT_DATA_UPDT 2U /* OUT data packet received */
  45. #define RXSTAT_XFER_COMP 3U /* OUT transfer completed (triggers an interrupt) */
  46. #define RXSTAT_SETUP_COMP 4U /* SETUP transaction completed (triggers an interrupt) */
  47. #define RXSTAT_SETUP_UPDT 6U /* SETUP data packet received */
  48. #define DPID_DATA0 0U /* device endpoint data PID is DATA0 */
  49. #define DPID_DATA1 2U /* device endpoint data PID is DATA1 */
  50. #define DPID_DATA2 1U /* device endpoint data PID is DATA2 */
  51. #define DPID_MDATA 3U /* device endpoint data PID is MDATA */
  52. #define HC_PID_DATA0 0U /* host channel data PID is DATA0 */
  53. #define HC_PID_DATA2 1U /* host channel data PID is DATA2 */
  54. #define HC_PID_DATA1 2U /* host channel data PID is DATA1 */
  55. #define HC_PID_SETUP 3U /* host channel data PID is SETUP */
  56. #define HPRT_PRTSPD_HIGH_SPEED 0U /* host port speed use high speed */
  57. #define HPRT_PRTSPD_FULL_SPEED 1U /* host port speed use full speed */
  58. #define HPRT_PRTSPD_LOW_SPEED 2U /* host port speed use low speed */
  59. #define HCTLR_30_60_MHZ 0U /* USB PHY(ULPI) clock is 60MHz */
  60. #define HCTLR_48_MHZ 1U /* USB PHY(embedded full-speed) clock is 48MHz */
  61. #define HCTLR_6_MHZ 2U /* USB PHY(embedded low-speed) clock is 6MHz */
  62. #define HCCHAR_CTRL 0U /* control channel type */
  63. #define HCCHAR_ISOC 1U /* synchronous channel type */
  64. #define HCCHAR_BULK 2U /* bulk channel type */
  65. #define HCCHAR_INTR 3U /* interrupt channel type */
  66. typedef enum
  67. {
  68. USB_HS_CORE_ID = 0,
  69. USB_FS_CORE_ID = 1
  70. }usb_core_id_enum;
  71. typedef enum
  72. {
  73. USB_SPEED_UNKNOWN = 0,
  74. USB_SPEED_LOW,
  75. USB_SPEED_FULL,
  76. USB_SPEED_HIGH
  77. }usb_speed_enum;
  78. #endif /* USB_DEFINES_H */