Clean up
This commit is contained in:
		| @@ -149,7 +149,7 @@ static uint16_t ep0_pending[2];     // Index determines direction as tusb_dir_t | |||||||
|  |  | ||||||
| // TX FIFO RAM allocation so far in words - RX FIFO size is readily available from usb_otg->GRXFSIZ | // TX FIFO RAM allocation so far in words - RX FIFO size is readily available from usb_otg->GRXFSIZ | ||||||
| static uint16_t _allocated_fifo_words_tx;         // TX FIFO size in words (IN EPs) | static uint16_t _allocated_fifo_words_tx;         // TX FIFO size in words (IN EPs) | ||||||
| static bool _rx_ep_closed; | static bool _rx_ep_closed;                        // Flag to check if RX FIFO size needs an update (reduce its size) | ||||||
|  |  | ||||||
| // Setup the control endpoint 0. | // Setup the control endpoint 0. | ||||||
| static void bus_reset(uint8_t rhport) | static void bus_reset(uint8_t rhport) | ||||||
| @@ -563,15 +563,15 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt) | |||||||
|   if(dir == TUSB_DIR_OUT) |   if(dir == TUSB_DIR_OUT) | ||||||
|   { |   { | ||||||
|     // Calculate required size of RX FIFO |     // Calculate required size of RX FIFO | ||||||
|     uint16_t size_rx = 15 + 2*fifo_size + 2*EP_MAX; |     uint16_t const sz = 15 + 2*fifo_size + 2*EP_MAX; | ||||||
|  |  | ||||||
|     // If size_rx needs to be extended check if possible and if so enlarge it |     // If size_rx needs to be extended check if possible and if so enlarge it | ||||||
|     if (usb_otg->GRXFSIZ < size_rx) |     if (usb_otg->GRXFSIZ < sz) | ||||||
|     { |     { | ||||||
|       TU_ASSERT(size_rx + _allocated_fifo_words_tx <= EP_FIFO_SIZE/4); |       TU_ASSERT(sz + _allocated_fifo_words_tx <= EP_FIFO_SIZE/4); | ||||||
|  |  | ||||||
|       // Enlarge RX FIFO |       // Enlarge RX FIFO | ||||||
|       usb_otg->GRXFSIZ = size_rx; |       usb_otg->GRXFSIZ = sz; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     out_ep[epnum].DOEPCTL |= (1 << USB_OTG_DOEPCTL_USBAEP_Pos) | |     out_ep[epnum].DOEPCTL |= (1 << USB_OTG_DOEPCTL_USBAEP_Pos) | | ||||||
| @@ -736,6 +736,10 @@ void dcd_edpt_close (uint8_t rhport, uint8_t ep_addr) | |||||||
|   uint8_t const dir   = tu_edpt_dir(ep_addr); |   uint8_t const dir   = tu_edpt_dir(ep_addr); | ||||||
|  |  | ||||||
|   dcd_edpt_disable(rhport, ep_addr, false); |   dcd_edpt_disable(rhport, ep_addr, false); | ||||||
|  |  | ||||||
|  |   // Update max_size | ||||||
|  |   xfer_status[epnum][dir].max_size = 0;  // max_size = 0 marks a disabled EP - required for changing FIFO allocation | ||||||
|  |  | ||||||
|   if (dir == TUSB_DIR_IN) |   if (dir == TUSB_DIR_IN) | ||||||
|   { |   { | ||||||
|     uint16_t const fifo_size = (usb_otg->DIEPTXF[epnum - 1] & USB_OTG_DIEPTXF_INEPTXFD_Msk) >> USB_OTG_DIEPTXF_INEPTXFD_Pos; |     uint16_t const fifo_size = (usb_otg->DIEPTXF[epnum - 1] & USB_OTG_DIEPTXF_INEPTXFD_Msk) >> USB_OTG_DIEPTXF_INEPTXFD_Pos; | ||||||
| @@ -746,11 +750,7 @@ void dcd_edpt_close (uint8_t rhport, uint8_t ep_addr) | |||||||
|   } |   } | ||||||
|   else |   else | ||||||
|   { |   { | ||||||
|     // Update max_size |     _rx_ep_closed = true;     // Set flag such that RX FIFO gets reduced in size once RX FIFO is empty | ||||||
|     xfer_status[epnum][TUSB_DIR_OUT].max_size = 0; |  | ||||||
|  |  | ||||||
|     // Set flag such that RX FIFO gets reduced in size one RX FIFO is empty |  | ||||||
|     _rx_ep_closed = true; |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Reinhard Panhuber
					Reinhard Panhuber