rename to ep_read/write(), drop USBx argument
This commit is contained in:
		| @@ -227,7 +227,7 @@ void dcd_init(uint8_t rhport) { | ||||
|   // Reset endpoints to disabled | ||||
|   for (uint32_t i = 0; i < FSDEV_EP_COUNT; i++) { | ||||
|     // This doesn't clear all bits since some bits are "toggle", but does set the type to DISABLED. | ||||
|     pcd_set_endpoint(USB, i, 0u); | ||||
|     ep_write(i, 0u); | ||||
|   } | ||||
|  | ||||
|   USB->CNTR |= USB_CNTR_RESETM | USB_CNTR_ESOFM | USB_CNTR_CTRM | USB_CNTR_SUSPM | USB_CNTR_WKUPM; | ||||
| @@ -286,7 +286,7 @@ static void handle_bus_reset(uint8_t rhport) { | ||||
|  | ||||
| // Handle CTR interrupt for the TX/IN direction | ||||
| static void dcd_ep_ctr_tx_handler(uint32_t ep_id) { | ||||
|   uint32_t ep_reg = pcd_get_endpoint(USB, ep_id) & USB_EPREG_MASK; | ||||
|   uint32_t ep_reg = ep_read(ep_id) & USB_EPREG_MASK; | ||||
|  | ||||
|   // Verify the CTR bit is set. This was in the ST Micro code, but I'm not sure it's actually necessary? | ||||
|   TU_VERIFY(ep_reg & USB_EP_CTR_TX, ); | ||||
| @@ -314,7 +314,7 @@ static void dcd_ep_ctr_tx_handler(uint32_t ep_id) { | ||||
|     // Clear CTR TX and reserved CTR RX | ||||
|     ep_reg = (ep_reg & ~USB_EP_CTR_TX) | USB_EP_CTR_RX; | ||||
|  | ||||
|     pcd_set_endpoint(USB, ep_id, ep_reg); | ||||
|     ep_write(ep_id, ep_reg); | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -341,7 +341,7 @@ static void dcd_ep_ctr_rx_handler(uint32_t ep_id) { | ||||
|   } | ||||
| #endif | ||||
|  | ||||
|   uint32_t ep_reg = pcd_get_endpoint(USB, ep_id); | ||||
|   uint32_t ep_reg = ep_read(ep_id); | ||||
|  | ||||
|   // Verify the CTR bit is set. This was in the ST Micro code, but I'm not sure it's actually necessary? | ||||
|   TU_VERIFY(ep_reg & USB_EP_CTR_RX, ); | ||||
| @@ -413,7 +413,7 @@ static void dcd_ep_ctr_rx_handler(uint32_t ep_id) { | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   pcd_set_endpoint(USB, ep_id, ep_reg); | ||||
|   ep_write(ep_id, ep_reg); | ||||
| } | ||||
|  | ||||
| static void dcd_ep_ctr_handler(void) { | ||||
| @@ -599,7 +599,7 @@ void edpt0_open(uint8_t rhport) { | ||||
|   // prepare for setup packet | ||||
|   btable_set_rx_bufsize(0, BTABLE_BUF_RX, CFG_TUD_ENDPOINT0_SIZE); | ||||
|  | ||||
|   pcd_set_endpoint(USB, 0, ep_reg); | ||||
|   ep_write(0, ep_reg); | ||||
| } | ||||
|  | ||||
| bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const *desc_ep) { | ||||
| @@ -644,7 +644,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const *desc_ep) { | ||||
|     ep_reg &= ~(USB_EPTX_STAT | USB_EP_DTOG_TX); | ||||
|   } | ||||
|  | ||||
|   pcd_set_endpoint(USB, ep_idx, ep_reg); | ||||
|   ep_write(ep_idx, ep_reg); | ||||
|  | ||||
|   return true; | ||||
| } | ||||
| @@ -655,7 +655,7 @@ void dcd_edpt_close_all(uint8_t rhport) | ||||
|  | ||||
|   for (uint32_t i = 1; i < FSDEV_EP_COUNT; i++) { | ||||
|     // Reset endpoint | ||||
|     pcd_set_endpoint(USB, i, 0); | ||||
|     ep_write(i, 0); | ||||
|     // Clear EP allocation status | ||||
|     ep_alloc_status[i].ep_num = 0xFF; | ||||
|     ep_alloc_status[i].ep_type = 0xFF; | ||||
| @@ -703,7 +703,7 @@ bool dcd_edpt_iso_activate(uint8_t rhport, tusb_desc_endpoint_t const *desc_ep) | ||||
|   ep_reg = ep_add_dtog(ep_reg, dir, 0); | ||||
|   ep_reg = ep_add_dtog(ep_reg, 1-dir, 1); | ||||
|  | ||||
|   pcd_set_endpoint(USB, ep_idx, ep_reg); | ||||
|   ep_write(ep_idx, ep_reg); | ||||
|  | ||||
|   return true; | ||||
| } | ||||
| @@ -711,7 +711,7 @@ bool dcd_edpt_iso_activate(uint8_t rhport, tusb_desc_endpoint_t const *desc_ep) | ||||
| // Currently, single-buffered, and only 64 bytes at a time (max) | ||||
| static void dcd_transmit_packet(xfer_ctl_t *xfer, uint16_t ep_ix) { | ||||
|   uint16_t len = tu_min16(xfer->total_len - xfer->queued_len, xfer->max_packet_size); | ||||
|   uint16_t ep_reg = pcd_get_endpoint(USB, ep_ix) | EP_CTR_TXRX; | ||||
|   uint16_t ep_reg = ep_read(ep_ix) | EP_CTR_TXRX; | ||||
|   bool const is_iso = ep_is_iso(ep_reg); | ||||
|  | ||||
|   uint8_t buf_id; | ||||
| @@ -735,7 +735,7 @@ static void dcd_transmit_packet(xfer_ctl_t *xfer, uint16_t ep_ix) { | ||||
|   ep_reg = ep_clear_ctr(ep_reg, TUSB_DIR_IN); | ||||
|  | ||||
|   dcd_int_disable(0); | ||||
|   pcd_set_endpoint(USB, ep_ix, ep_reg); | ||||
|   ep_write(ep_ix, ep_reg); | ||||
|   if (is_iso) { | ||||
|     xfer->iso_in_sending = true; | ||||
|   } | ||||
| @@ -753,7 +753,7 @@ static bool edpt_xfer(uint8_t rhport, uint8_t ep_addr) { | ||||
|     dcd_transmit_packet(xfer, ep_idx); | ||||
|   } else { | ||||
|     uint32_t cnt = (uint32_t) tu_min16(xfer->total_len, xfer->max_packet_size); | ||||
|     uint16_t ep_reg = pcd_get_endpoint(USB, ep_idx) | USB_EP_CTR_TX; | ||||
|     uint16_t ep_reg = ep_read(ep_idx) | USB_EP_CTR_TX; | ||||
|     ep_reg &= USB_EPREG_MASK | EP_STAT_MASK(dir); // keep CTR TX, clear CTR RX | ||||
|     ep_reg = ep_add_status(ep_reg, dir, EP_STAT_VALID); | ||||
|  | ||||
| @@ -764,7 +764,7 @@ static bool edpt_xfer(uint8_t rhport, uint8_t ep_addr) { | ||||
|       btable_set_rx_bufsize(ep_idx, BTABLE_BUF_RX, cnt); | ||||
|     } | ||||
|  | ||||
|     pcd_set_endpoint(USB, ep_idx, ep_reg); | ||||
|     ep_write(ep_idx, ep_reg); | ||||
|   } | ||||
|  | ||||
|   return true; | ||||
| @@ -797,12 +797,12 @@ void dcd_edpt_stall(uint8_t rhport, uint8_t ep_addr) { | ||||
|   uint8_t const ep_idx = xfer->ep_idx; | ||||
|   uint8_t const dir = tu_edpt_dir(ep_addr); | ||||
|  | ||||
|   uint32_t ep_reg = pcd_get_endpoint(USB, ep_idx); | ||||
|   uint32_t ep_reg = ep_read(ep_idx); | ||||
|   ep_reg |= USB_EP_CTR_RX | USB_EP_CTR_TX; // reserve CTR bits | ||||
|   ep_reg &= USB_EPREG_MASK | EP_STAT_MASK(dir); | ||||
|   ep_reg = ep_add_status(ep_reg, dir, EP_STAT_STALL); | ||||
|  | ||||
|   pcd_set_endpoint(USB, ep_idx, ep_reg); | ||||
|   ep_write(ep_idx, ep_reg); | ||||
| } | ||||
|  | ||||
| void dcd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr) { | ||||
| @@ -811,7 +811,7 @@ void dcd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr) { | ||||
|   xfer_ctl_t *xfer = xfer_ctl_ptr(ep_addr); | ||||
|   uint8_t const ep_idx = xfer->ep_idx; | ||||
|   uint8_t const dir = tu_edpt_dir(ep_addr); | ||||
|   uint32_t ep_reg = pcd_get_endpoint(USB, ep_idx); | ||||
|   uint32_t ep_reg = ep_read(ep_idx); | ||||
|   ep_reg |= USB_EP_CTR_RX | USB_EP_CTR_TX; // reserve CTR bits | ||||
|   ep_reg &= USB_EPREG_MASK | EP_STAT_MASK(dir) | EP_DTOG_MASK(dir); | ||||
|  | ||||
| @@ -820,7 +820,7 @@ void dcd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr) { | ||||
|   } | ||||
|   ep_reg = ep_add_dtog(ep_reg, dir, 0); // Reset to DATA0 | ||||
|  | ||||
|   pcd_set_endpoint(USB, ep_idx, ep_reg); | ||||
|   ep_write(ep_idx, ep_reg); | ||||
| } | ||||
|  | ||||
| #ifdef FSDEV_BUS_32BIT | ||||
|   | ||||
| @@ -165,6 +165,43 @@ typedef enum { | ||||
| #define EP_STAT_MASK(_dir)  (3u << (USB_EPTX_STAT_Pos + ((_dir) == TUSB_DIR_IN ? 0 : 8))) | ||||
| #define EP_DTOG_MASK(_dir)  (1u << (USB_EP_DTOG_TX_Pos + ((_dir) == TUSB_DIR_IN ? 0 : 8))) | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // Endpoint | ||||
| //--------------------------------------------------------------------+ | ||||
|  | ||||
| TU_ATTR_ALWAYS_INLINE static inline void ep_write(uint32_t ep_id, uint32_t value) { | ||||
|   FSDEV_REG->ep[ep_id].reg = (fsdev_bus_t) value; | ||||
| } | ||||
|  | ||||
| // write ep register with clear CTR_RX and CTR_TX mask (0 is no clear) | ||||
| //TU_ATTR_ALWAYS_INLINE static inline void ep_write_with_clear_ctr(uint32_t ep_id, uint32_t value, uint32_t clear_ctr_mask) { | ||||
| //  value |= USB_EP_CTR_RX | USB_EP_CTR_TX; | ||||
| //  if (clear_ctr_mask) { | ||||
| //    value &= ~clear_ctr_mask; | ||||
| //  } | ||||
| //  FSDEV_REG->ep[ep_id].reg = (fsdev_bus_t) value; | ||||
| //} | ||||
|  | ||||
| TU_ATTR_ALWAYS_INLINE static inline uint32_t ep_read(uint32_t ep_id) { | ||||
|   return FSDEV_REG->ep[ep_id].reg; | ||||
| } | ||||
|  | ||||
| TU_ATTR_ALWAYS_INLINE static inline uint32_t ep_add_status(uint32_t reg, tusb_dir_t dir, ep_stat_t state) { | ||||
|   return reg ^ (state << (USB_EPTX_STAT_Pos + (dir == TUSB_DIR_IN ? 0 : 8))); | ||||
| } | ||||
|  | ||||
| TU_ATTR_ALWAYS_INLINE static inline uint32_t ep_add_dtog(uint32_t reg, tusb_dir_t dir, uint8_t state) { | ||||
|   return reg ^ (state << (USB_EP_DTOG_TX_Pos + (dir == TUSB_DIR_IN ? 0 : 8))); | ||||
| } | ||||
|  | ||||
| TU_ATTR_ALWAYS_INLINE static inline uint32_t ep_clear_ctr(uint32_t reg, tusb_dir_t dir) { | ||||
|   return reg & ~(1 << (USB_EP_CTR_TX_Pos + (dir == TUSB_DIR_IN ? 0 : 8))); | ||||
| } | ||||
|  | ||||
| TU_ATTR_ALWAYS_INLINE static inline bool ep_is_iso(uint32_t reg) { | ||||
|   return (reg & USB_EP_TYPE_MASK) == USB_EP_ISOCHRONOUS; | ||||
| } | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // BTable | ||||
| //--------------------------------------------------------------------+ | ||||
| @@ -243,45 +280,6 @@ TU_ATTR_ALWAYS_INLINE static inline void btable_set_rx_bufsize(uint32_t ep_id, u | ||||
| #endif | ||||
| } | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // Endpoint | ||||
| //--------------------------------------------------------------------+ | ||||
|  | ||||
| TU_ATTR_ALWAYS_INLINE static inline void pcd_set_endpoint(USB_TypeDef * USBx, uint32_t ep_id, uint32_t value) { | ||||
|   (void) USBx; | ||||
|   FSDEV_REG->ep[ep_id].reg = (fsdev_bus_t) value; | ||||
| } | ||||
|  | ||||
| // write ep register with clear CTR_RX and CTR_TX mask (0 is no clear) | ||||
| //TU_ATTR_ALWAYS_INLINE static inline void ep_write_with_clear_ctr(uint32_t ep_id, uint32_t value, uint32_t clear_ctr_mask) { | ||||
| //  value |= USB_EP_CTR_RX | USB_EP_CTR_TX; | ||||
| //  if (clear_ctr_mask) { | ||||
| //    value &= ~clear_ctr_mask; | ||||
| //  } | ||||
| //  FSDEV_REG->ep[ep_id].reg = (fsdev_bus_t) value; | ||||
| //} | ||||
|  | ||||
| TU_ATTR_ALWAYS_INLINE static inline uint32_t pcd_get_endpoint(USB_TypeDef * USBx, uint32_t ep_id) { | ||||
|   (void) USBx; | ||||
|   return FSDEV_REG->ep[ep_id].reg; | ||||
| } | ||||
|  | ||||
| TU_ATTR_ALWAYS_INLINE static inline uint32_t ep_add_status(uint32_t reg, tusb_dir_t dir, ep_stat_t state) { | ||||
|   return reg ^ (state << (USB_EPTX_STAT_Pos + (dir == TUSB_DIR_IN ? 0 : 8))); | ||||
| } | ||||
|  | ||||
| TU_ATTR_ALWAYS_INLINE static inline uint32_t ep_add_dtog(uint32_t reg, tusb_dir_t dir, uint8_t state) { | ||||
|   return reg ^ (state << (USB_EP_DTOG_TX_Pos + (dir == TUSB_DIR_IN ? 0 : 8))); | ||||
| } | ||||
|  | ||||
| TU_ATTR_ALWAYS_INLINE static inline uint32_t ep_clear_ctr(uint32_t reg, tusb_dir_t dir) { | ||||
|   return reg & ~(1 << (USB_EP_CTR_TX_Pos + (dir == TUSB_DIR_IN ? 0 : 8))); | ||||
| } | ||||
|  | ||||
| TU_ATTR_ALWAYS_INLINE static inline bool ep_is_iso(uint32_t reg) { | ||||
|   return (reg & USB_EP_TYPE_MASK) == USB_EP_ISOCHRONOUS; | ||||
| } | ||||
|  | ||||
| #ifdef __cplusplus | ||||
|  } | ||||
| #endif | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 hathach
					hathach