remove ep descriptor wMaxPacketSize bitfield due to endian issue
This commit is contained in:
@@ -914,7 +914,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
|
||||
|
||||
TU_ASSERT(epnum < EP_MAX);
|
||||
|
||||
xfer->max_packet_size = desc_edpt->wMaxPacketSize.size;
|
||||
xfer->max_packet_size = tu_edpt_packet_size(desc_edpt);
|
||||
xfer->ep_addr = desc_edpt->bEndpointAddress;
|
||||
xfer->data1 = 0;
|
||||
xfer->iso = 0;
|
||||
|
||||
@@ -802,7 +802,7 @@ static void qhd_init(ehci_qhd_t *p_qhd, uint8_t dev_addr, tusb_desc_endpoint_t c
|
||||
p_qhd->ep_speed = devtree_info.speed;
|
||||
p_qhd->data_toggle_control= (xfer_type == TUSB_XFER_CONTROL) ? 1 : 0;
|
||||
p_qhd->head_list_flag = (dev_addr == 0) ? 1 : 0; // addr0's endpoint is the static asyn list head
|
||||
p_qhd->max_packet_size = ep_desc->wMaxPacketSize.size;
|
||||
p_qhd->max_packet_size = tu_edpt_packet_size(ep_desc);
|
||||
p_qhd->fl_ctrl_ep_flag = ((xfer_type == TUSB_XFER_CONTROL) && (p_qhd->ep_speed != TUSB_SPEED_HIGH)) ? 1 : 0;
|
||||
p_qhd->nak_reload = 0;
|
||||
|
||||
|
||||
@@ -256,17 +256,16 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const *desc_edpt)
|
||||
uint8_t const epnum = tu_edpt_number(desc_edpt->bEndpointAddress);
|
||||
uint8_t const dir = tu_edpt_dir(desc_edpt->bEndpointAddress);
|
||||
|
||||
TU_ASSERT(desc_edpt->wMaxPacketSize.size <= 64);
|
||||
TU_ASSERT(epnum < EP_MAX);
|
||||
|
||||
xfer_ctl_t *xfer = XFER_CTL_BASE(epnum, dir);
|
||||
xfer->max_size = desc_edpt->wMaxPacketSize.size;
|
||||
xfer->max_size = tu_edpt_packet_size(desc_edpt);
|
||||
|
||||
if (dir == TUSB_DIR_OUT) {
|
||||
out_ep[epnum].doepctl |= USB_USBACTEP1_M |
|
||||
desc_edpt->bmAttributes.xfer << USB_EPTYPE1_S |
|
||||
(desc_edpt->bmAttributes.xfer != TUSB_XFER_ISOCHRONOUS ? USB_DO_SETD0PID1_M : 0) |
|
||||
desc_edpt->wMaxPacketSize.size << USB_MPS1_S;
|
||||
xfer->max_size << USB_MPS1_S;
|
||||
USB0.daintmsk |= (1 << (16 + epnum));
|
||||
} else {
|
||||
// "USB Data FIFOs" section in reference manual
|
||||
@@ -300,7 +299,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const *desc_edpt)
|
||||
fifo_num << USB_D_TXFNUM1_S |
|
||||
desc_edpt->bmAttributes.xfer << USB_D_EPTYPE1_S |
|
||||
(desc_edpt->bmAttributes.xfer != TUSB_XFER_ISOCHRONOUS ? (1 << USB_DI_SETD0PID1_S) : 0) |
|
||||
desc_edpt->wMaxPacketSize.size << 0;
|
||||
xfer->max_size << 0;
|
||||
|
||||
USB0.daintmsk |= (1 << (0 + epnum));
|
||||
|
||||
|
||||
@@ -214,14 +214,14 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
|
||||
UsbDeviceDescBank* bank = &sram_registers[epnum][dir];
|
||||
uint32_t size_value = 0;
|
||||
while (size_value < 7) {
|
||||
if (1 << (size_value + 3) == desc_edpt->wMaxPacketSize.size) {
|
||||
if (1 << (size_value + 3) == tu_edpt_packet_size(desc_edpt)) {
|
||||
break;
|
||||
}
|
||||
size_value++;
|
||||
}
|
||||
|
||||
// unsupported endpoint size
|
||||
if ( size_value == 7 && desc_edpt->wMaxPacketSize.size != 1023 ) return false;
|
||||
if ( size_value == 7 && tu_edpt_packet_size(desc_edpt) != 1023 ) return false;
|
||||
|
||||
bank->PCKSIZE.bit.SIZE = size_value;
|
||||
|
||||
|
||||
@@ -258,7 +258,7 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * ep_desc)
|
||||
// Must not already enabled
|
||||
TU_ASSERT((UDP->UDP_CSR[epnum] & UDP_CSR_EPEDS_Msk) == 0);
|
||||
|
||||
xfer_epsize_set(&_dcd_xfer[epnum], ep_desc->wMaxPacketSize.size);
|
||||
xfer_epsize_set(&_dcd_xfer[epnum], tu_edpt_packet_size(ep_desc));
|
||||
|
||||
// Configure type and enable EP
|
||||
csr_write(epnum, UDP_CSR_EPEDS_Msk | UDP_CSR_EPTYPE(ep_desc->bmAttributes.xfer + 4*dir));
|
||||
|
||||
@@ -460,7 +460,7 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * ep_desc)
|
||||
(void) rhport;
|
||||
uint8_t const epnum = tu_edpt_number(ep_desc->bEndpointAddress);
|
||||
uint8_t const dir = tu_edpt_dir(ep_desc->bEndpointAddress);
|
||||
uint16_t const epMaxPktSize = ep_desc->wMaxPacketSize.size;
|
||||
uint16_t const epMaxPktSize = tu_edpt_packet_size(ep_desc);
|
||||
tusb_xfer_type_t const eptype = (tusb_xfer_type_t)ep_desc->bmAttributes.xfer;
|
||||
uint8_t fifoSize = 0; // FIFO size
|
||||
uint16_t defaultEndpointSize = 8; // Default size of Endpoint
|
||||
|
||||
@@ -323,7 +323,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * ep_desc)
|
||||
/* No support for control transfer */
|
||||
TU_ASSERT(epn && (xfer != TUSB_XFER_CONTROL));
|
||||
|
||||
ep->max_packet_size = ep_desc->wMaxPacketSize.size;
|
||||
ep->max_packet_size = tu_edpt_packet_size(ep_desc);
|
||||
unsigned val = USB_ENDPT_EPCTLDIS_MASK;
|
||||
val |= (xfer != TUSB_XFER_ISOCHRONOUS) ? USB_ENDPT_EPHSHK_MASK: 0;
|
||||
val |= dir ? USB_ENDPT_EPTXEN_MASK : USB_ENDPT_EPRXEN_MASK;
|
||||
|
||||
@@ -311,7 +311,7 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
|
||||
uint8_t const epnum = tu_edpt_number(ep_addr);
|
||||
uint8_t const dir = tu_edpt_dir(ep_addr);
|
||||
|
||||
_dcd.xfer[epnum][dir].mps = desc_edpt->wMaxPacketSize.size;
|
||||
_dcd.xfer[epnum][dir].mps = tu_edpt_packet_size(desc_edpt);
|
||||
|
||||
if (desc_edpt->bmAttributes.xfer != TUSB_XFER_ISOCHRONOUS)
|
||||
{
|
||||
|
||||
@@ -251,7 +251,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * p_endpoint_desc)
|
||||
|
||||
/* mine the data for the information we need */
|
||||
int const dir = tu_edpt_dir(p_endpoint_desc->bEndpointAddress);
|
||||
int const size = p_endpoint_desc->wMaxPacketSize.size;
|
||||
int const size = tu_edpt_packet_size(p_endpoint_desc);
|
||||
tusb_xfer_type_t const type = (tusb_xfer_type_t) p_endpoint_desc->bmAttributes.xfer;
|
||||
struct xfer_ctl_t *xfer = &xfer_table[ep - USBD->EP];
|
||||
|
||||
|
||||
@@ -279,7 +279,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * p_endpoint_desc)
|
||||
|
||||
/* mine the data for the information we need */
|
||||
int const dir = tu_edpt_dir(p_endpoint_desc->bEndpointAddress);
|
||||
int const size = p_endpoint_desc->wMaxPacketSize.size;
|
||||
int const size = tu_edpt_packet_size(p_endpoint_desc);
|
||||
tusb_xfer_type_t const type = (tusb_xfer_type_t) p_endpoint_desc->bmAttributes.xfer;
|
||||
struct xfer_ctl_t *xfer = &xfer_table[ep - USBD->EP];
|
||||
|
||||
|
||||
@@ -327,7 +327,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * p_endpoint_desc)
|
||||
|
||||
/* mine the data for the information we need */
|
||||
int const dir = tu_edpt_dir(p_endpoint_desc->bEndpointAddress);
|
||||
int const size = p_endpoint_desc->wMaxPacketSize.size;
|
||||
int const size = tu_edpt_packet_size(p_endpoint_desc);
|
||||
tusb_xfer_type_t const type = p_endpoint_desc->bmAttributes.xfer;
|
||||
struct xfer_ctl_t *xfer = &xfer_table[ep - USBD->EP];
|
||||
|
||||
|
||||
@@ -346,7 +346,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * ep_desc)
|
||||
/* No support for control transfer */
|
||||
TU_ASSERT(epn && (xfer != TUSB_XFER_CONTROL));
|
||||
|
||||
ep->max_packet_size = ep_desc->wMaxPacketSize.size;
|
||||
ep->max_packet_size = tu_edpt_packet_size(ep_desc);
|
||||
unsigned val = USB_ENDPT_EPCTLDIS_MASK;
|
||||
val |= (xfer != TUSB_XFER_ISOCHRONOUS) ? USB_ENDPT_EPHSHK_MASK: 0;
|
||||
val |= dir ? USB_ENDPT_EPTXEN_MASK : USB_ENDPT_EPRXEN_MASK;
|
||||
|
||||
@@ -311,14 +311,15 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * p_endpoint_desc)
|
||||
}
|
||||
|
||||
//------------- Realize Endpoint with Max Packet Size -------------//
|
||||
set_ep_size(ep_id, p_endpoint_desc->wMaxPacketSize.size);
|
||||
const uint16_t ep_size = tu_edpt_packet_size(p_endpoint_desc);
|
||||
set_ep_size(ep_id, ep_size);
|
||||
|
||||
//------------- first DD prepare -------------//
|
||||
dma_desc_t* const dd = &_dcd.dd[ep_id];
|
||||
tu_memclr(dd, sizeof(dma_desc_t));
|
||||
|
||||
dd->isochronous = (p_endpoint_desc->bmAttributes.xfer == TUSB_XFER_ISOCHRONOUS) ? 1 : 0;
|
||||
dd->max_packet_size = p_endpoint_desc->wMaxPacketSize.size;
|
||||
dd->max_packet_size = ep_size;
|
||||
dd->retired = 1; // invalid at first
|
||||
|
||||
sie_write(SIE_CMDCODE_ENDPOINT_SET_STATUS + ep_id, 1, 0); // clear all endpoint status
|
||||
|
||||
@@ -365,7 +365,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * p_endpoint_desc)
|
||||
tu_memclr(p_qhd, sizeof(dcd_qhd_t));
|
||||
|
||||
p_qhd->zero_length_termination = 1;
|
||||
p_qhd->max_packet_size = p_endpoint_desc->wMaxPacketSize.size;
|
||||
p_qhd->max_packet_size = tu_edpt_packet_size(p_endpoint_desc);
|
||||
if (p_endpoint_desc->bmAttributes.xfer == TUSB_XFER_ISOCHRONOUS)
|
||||
{
|
||||
p_qhd->iso_mult = 1;
|
||||
|
||||
@@ -412,7 +412,7 @@ bool hcd_edpt_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const
|
||||
}
|
||||
TU_ASSERT(p_ed);
|
||||
|
||||
ed_init( p_ed, dev_addr, ep_desc->wMaxPacketSize.size, ep_desc->bEndpointAddress,
|
||||
ed_init( p_ed, dev_addr, tu_edpt_packet_size(ep_desc), ep_desc->bEndpointAddress,
|
||||
ep_desc->bmAttributes.xfer, ep_desc->bInterval );
|
||||
|
||||
// control of dev0 is used as static async head
|
||||
|
||||
@@ -426,7 +426,7 @@ void dcd_edpt0_status_complete(uint8_t rhport, tusb_control_request_t const * re
|
||||
bool dcd_edpt_open (__unused uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
|
||||
{
|
||||
assert(rhport == 0);
|
||||
hw_endpoint_init(desc_edpt->bEndpointAddress, desc_edpt->wMaxPacketSize.size, desc_edpt->bmAttributes.xfer);
|
||||
hw_endpoint_init(desc_edpt->bEndpointAddress, tu_edpt_packet_size(desc_edpt), desc_edpt->bmAttributes.xfer);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -454,7 +454,7 @@ bool hcd_edpt_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const
|
||||
_hw_endpoint_init(ep,
|
||||
dev_addr,
|
||||
ep_desc->bEndpointAddress,
|
||||
ep_desc->wMaxPacketSize.size,
|
||||
tu_edpt_packet_size(ep_desc),
|
||||
ep_desc->bmAttributes.xfer,
|
||||
ep_desc->bInterval);
|
||||
|
||||
|
||||
@@ -695,7 +695,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * ep_desc)
|
||||
const unsigned dir = tu_edpt_dir(ep_addr);
|
||||
const unsigned xfer = ep_desc->bmAttributes.xfer;
|
||||
|
||||
const unsigned mps = tu_le16toh(ep_desc->wMaxPacketSize.size);
|
||||
const unsigned mps = tu_edpt_packet_size(ep_desc);
|
||||
if (xfer == TUSB_XFER_ISOCHRONOUS && mps > 256) {
|
||||
/* USBa supports up to 256 bytes */
|
||||
return false;
|
||||
|
||||
@@ -393,18 +393,17 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * p_endpoint_desc)
|
||||
uint8_t const epnum = tu_edpt_number(p_endpoint_desc->bEndpointAddress);
|
||||
uint8_t const dir = tu_edpt_dir(p_endpoint_desc->bEndpointAddress);
|
||||
|
||||
TU_ASSERT(p_endpoint_desc->wMaxPacketSize.size <= 64);
|
||||
TU_ASSERT(epnum < EP_COUNT);
|
||||
TU_ASSERT(epnum != 0);
|
||||
|
||||
xfer_ctl_t *xfer = XFER_CTL_BASE(epnum, dir);
|
||||
xfer->max_size = p_endpoint_desc->wMaxPacketSize.size;
|
||||
xfer->max_size = tu_edpt_packet_size(p_endpoint_desc);
|
||||
|
||||
if(dir == TUSB_DIR_OUT)
|
||||
{
|
||||
USB->DOEP[epnum - 1].CTL |= USB_DOEP_CTL_USBACTEP |
|
||||
(p_endpoint_desc->bmAttributes.xfer << _USB_DOEP_CTL_EPTYPE_SHIFT) |
|
||||
(p_endpoint_desc->wMaxPacketSize.size << _USB_DOEP_CTL_MPS_SHIFT);
|
||||
(xfer->max_size << _USB_DOEP_CTL_MPS_SHIFT);
|
||||
USB->DAINTMSK |= (1 << (_USB_DAINTMSK_OUTEPMSK0_SHIFT + epnum));
|
||||
}
|
||||
else
|
||||
@@ -417,7 +416,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * p_endpoint_desc)
|
||||
(fifo_num << _USB_DIEP_CTL_TXFNUM_SHIFT) |
|
||||
(p_endpoint_desc->bmAttributes.xfer << _USB_DIEP_CTL_EPTYPE_SHIFT) |
|
||||
((p_endpoint_desc->bmAttributes.xfer != TUSB_XFER_ISOCHRONOUS) ? USB_DIEP_CTL_SETD0PIDEF : 0) |
|
||||
(p_endpoint_desc->wMaxPacketSize.size << 0);
|
||||
(xfer->max_size << 0);
|
||||
|
||||
USB->DAINTMSK |= (1 << epnum);
|
||||
|
||||
|
||||
@@ -257,6 +257,8 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const *p_endpoint_desc)
|
||||
uint8_t epnum = tu_edpt_number(p_endpoint_desc->bEndpointAddress);
|
||||
uint8_t const dir = tu_edpt_dir(p_endpoint_desc->bEndpointAddress);
|
||||
uint8_t xfrtype = 0;
|
||||
uint16_t const ep_mps = tu_edpt_packet_size(p_endpoint_desc);
|
||||
|
||||
struct usb_epdesc_s epdesc;
|
||||
|
||||
if (epnum >= CXD56_EPNUM)
|
||||
@@ -287,7 +289,7 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const *p_endpoint_desc)
|
||||
usbdcd_driver.req[epnum] = EP_ALLOCREQ(usbdcd_driver.ep[epnum]);
|
||||
if (usbdcd_driver.req[epnum] != NULL)
|
||||
{
|
||||
usbdcd_driver.req[epnum]->len = p_endpoint_desc->wMaxPacketSize.size;
|
||||
usbdcd_driver.req[epnum]->len = ep_mps;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -300,8 +302,8 @@ bool dcd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const *p_endpoint_desc)
|
||||
epdesc.type = p_endpoint_desc->bDescriptorType;
|
||||
epdesc.addr = p_endpoint_desc->bEndpointAddress;
|
||||
epdesc.attr = xfrtype;
|
||||
epdesc.mxpacketsize[0] = LSBYTE(p_endpoint_desc->wMaxPacketSize.size);
|
||||
epdesc.mxpacketsize[1] = MSBYTE(p_endpoint_desc->wMaxPacketSize.size);
|
||||
epdesc.mxpacketsize[0] = LSBYTE(ep_mps);
|
||||
epdesc.mxpacketsize[1] = MSBYTE(ep_mps);
|
||||
epdesc.interval = p_endpoint_desc->bInterval;
|
||||
|
||||
if (EP_CONFIGURE(usbdcd_driver.ep[epnum], &epdesc, false) < 0)
|
||||
|
||||
@@ -394,7 +394,7 @@ static const tusb_desc_endpoint_t ep0OUT_desc =
|
||||
|
||||
.bEndpointAddress = 0x00,
|
||||
.bmAttributes = { .xfer = TUSB_XFER_CONTROL },
|
||||
.wMaxPacketSize = { .size = CFG_TUD_ENDPOINT0_SIZE },
|
||||
.wMaxPacketSize = CFG_TUD_ENDPOINT0_SIZE,
|
||||
.bInterval = 0
|
||||
};
|
||||
|
||||
@@ -405,7 +405,7 @@ static const tusb_desc_endpoint_t ep0IN_desc =
|
||||
|
||||
.bEndpointAddress = 0x80,
|
||||
.bmAttributes = { .xfer = TUSB_XFER_CONTROL },
|
||||
.wMaxPacketSize = { .size = CFG_TUD_ENDPOINT0_SIZE },
|
||||
.wMaxPacketSize = CFG_TUD_ENDPOINT0_SIZE,
|
||||
.bInterval = 0
|
||||
};
|
||||
|
||||
@@ -741,7 +741,7 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * p_endpoint_desc
|
||||
(void)rhport;
|
||||
uint8_t const epnum = tu_edpt_number(p_endpoint_desc->bEndpointAddress);
|
||||
uint8_t const dir = tu_edpt_dir(p_endpoint_desc->bEndpointAddress);
|
||||
const uint16_t epMaxPktSize = p_endpoint_desc->wMaxPacketSize.size;
|
||||
const uint16_t epMaxPktSize = tu_edpt_packet_size(p_endpoint_desc);
|
||||
uint16_t pma_addr;
|
||||
uint32_t wType;
|
||||
|
||||
@@ -778,19 +778,19 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * p_endpoint_desc
|
||||
// or being double-buffered (bulk endpoints)
|
||||
pcd_clear_ep_kind(USB,0);
|
||||
|
||||
pma_addr = dcd_pma_alloc(p_endpoint_desc->bEndpointAddress, p_endpoint_desc->wMaxPacketSize.size);
|
||||
pma_addr = dcd_pma_alloc(p_endpoint_desc->bEndpointAddress, epMaxPktSize);
|
||||
|
||||
if(dir == TUSB_DIR_IN)
|
||||
{
|
||||
*pcd_ep_tx_address_ptr(USB, epnum) = pma_addr;
|
||||
pcd_set_ep_tx_cnt(USB, epnum, p_endpoint_desc->wMaxPacketSize.size);
|
||||
pcd_set_ep_tx_cnt(USB, epnum, epMaxPktSize);
|
||||
pcd_clear_tx_dtog(USB, epnum);
|
||||
pcd_set_ep_tx_status(USB,epnum,USB_EP_TX_NAK);
|
||||
}
|
||||
else
|
||||
{
|
||||
*pcd_ep_rx_address_ptr(USB, epnum) = pma_addr;
|
||||
pcd_set_ep_rx_cnt(USB, epnum, p_endpoint_desc->wMaxPacketSize.size);
|
||||
pcd_set_ep_rx_cnt(USB, epnum, epMaxPktSize);
|
||||
pcd_clear_rx_dtog(USB, epnum);
|
||||
pcd_set_ep_rx_status(USB, epnum, USB_EP_RX_NAK);
|
||||
}
|
||||
|
||||
@@ -622,10 +622,10 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
|
||||
TU_ASSERT(epnum < EP_MAX);
|
||||
|
||||
xfer_ctl_t * xfer = XFER_CTL_BASE(epnum, dir);
|
||||
xfer->max_size = desc_edpt->wMaxPacketSize.size;
|
||||
xfer->max_size = tu_edpt_packet_size(desc_edpt);
|
||||
xfer->interval = desc_edpt->bInterval;
|
||||
|
||||
uint16_t const fifo_size = (desc_edpt->wMaxPacketSize.size + 3) / 4; // Round up to next full word
|
||||
uint16_t const fifo_size = (xfer->max_size + 3) / 4; // Round up to next full word
|
||||
|
||||
if(dir == TUSB_DIR_OUT)
|
||||
{
|
||||
@@ -644,7 +644,7 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
|
||||
out_ep[epnum].DOEPCTL |= (1 << USB_OTG_DOEPCTL_USBAEP_Pos) |
|
||||
(desc_edpt->bmAttributes.xfer << USB_OTG_DOEPCTL_EPTYP_Pos) |
|
||||
(desc_edpt->bmAttributes.xfer != TUSB_XFER_ISOCHRONOUS ? USB_OTG_DOEPCTL_SD0PID_SEVNFRM : 0) |
|
||||
(desc_edpt->wMaxPacketSize.size << USB_OTG_DOEPCTL_MPSIZ_Pos);
|
||||
(xfer->max_size << USB_OTG_DOEPCTL_MPSIZ_Pos);
|
||||
|
||||
dev->DAINTMSK |= (1 << (USB_OTG_DAINTMSK_OEPM_Pos + epnum));
|
||||
}
|
||||
@@ -686,7 +686,7 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
|
||||
(epnum << USB_OTG_DIEPCTL_TXFNUM_Pos) |
|
||||
(desc_edpt->bmAttributes.xfer << USB_OTG_DIEPCTL_EPTYP_Pos) |
|
||||
(desc_edpt->bmAttributes.xfer != TUSB_XFER_ISOCHRONOUS ? USB_OTG_DIEPCTL_SD0PID_SEVNFRM : 0) |
|
||||
(desc_edpt->wMaxPacketSize.size << USB_OTG_DIEPCTL_MPSIZ_Pos);
|
||||
(xfer->max_size << USB_OTG_DIEPCTL_MPSIZ_Pos);
|
||||
|
||||
dev->DAINTMSK |= (1 << (USB_OTG_DAINTMSK_IEPM_Pos + epnum));
|
||||
}
|
||||
|
||||
@@ -242,7 +242,7 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
|
||||
}
|
||||
|
||||
xfer_ctl_t * xfer = XFER_CTL_BASE(epnum, dir);
|
||||
xfer->max_size = desc_edpt->wMaxPacketSize.size;
|
||||
xfer->max_size = tu_edpt_packet_size(desc_edpt);
|
||||
|
||||
// Buffer allocation scheme:
|
||||
// For simplicity, only single buffer for now, since tinyusb currently waits
|
||||
@@ -275,7 +275,7 @@ bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
|
||||
// Also, DBUF got set on OUT EP 2 while debugging. Only OUT EPs seem to be
|
||||
// affected at this time. USB RAM directly precedes main RAM; perhaps I'm
|
||||
// overwriting registers via buffer overflow w/ my debugging code?
|
||||
ep_regs[SIZXY] = desc_edpt->wMaxPacketSize.size;
|
||||
ep_regs[SIZXY] = tu_edpt_packet_size(desc_edpt);
|
||||
ep_regs[BCTX] |= NAK;
|
||||
ep_regs[BBAX] = buf_base;
|
||||
ep_regs[CNF] &= ~(TOGGLE | STALL | DBUF); // ISO xfers not supported on
|
||||
|
||||
Reference in New Issue
Block a user