It appears to work now.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@15081 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
Giovanni Di Sirio 2021-11-14 14:43:54 +00:00
parent 89eeeb4648
commit 4f3719663c
1 changed files with 8 additions and 10 deletions

View File

@ -500,7 +500,7 @@ OSAL_IRQ_HANDLER(STM32_USB1_HP_HANDLER) {
/* Endpoint events handling.*/ /* Endpoint events handling.*/
istr = usbp->usb->ISTR; istr = usbp->usb->ISTR;
while ((istr & USB_ISTR_SOF) != 0U) { while ((istr & USB_ISTR_CTR) != 0U) {
usb_serve_endpoints(usbp, istr); usb_serve_endpoints(usbp, istr);
istr = usbp->usb->ISTR; istr = usbp->usb->ISTR;
} }
@ -565,7 +565,7 @@ OSAL_IRQ_HANDLER(STM32_USB1_LP_HANDLER) {
} }
/* Endpoint events handling.*/ /* Endpoint events handling.*/
while ((istr & USB_ISTR_SOF) != 0U) { while ((istr & USB_ISTR_CTR) != 0U) {
usb_serve_endpoints(usbp, istr); usb_serve_endpoints(usbp, istr);
istr = usbp->usb->ISTR; istr = usbp->usb->ISTR;
} }
@ -887,15 +887,13 @@ usbepstatus_t usb_lld_get_status_in(USBDriver *usbp, usbep_t ep) {
void usb_lld_read_setup(USBDriver *usbp, usbep_t ep, uint8_t *buf) { void usb_lld_read_setup(USBDriver *usbp, usbep_t ep, uint8_t *buf) {
uint32_t *pmap; uint32_t *pmap;
USB_DRD_PMABuffDescTypeDef *udp; USB_DRD_PMABuffDescTypeDef *udp;
uint32_t n;
(void)usbp; (void)usbp;
udp = USB_GET_DESCRIPTOR(ep); udp = USB_GET_DESCRIPTOR(ep);
pmap = USB_GET_RX_BUFFER(udp); pmap = USB_GET_RX_BUFFER(udp);
for (n = 0; n < 4; n++) { *(uint32_t *)(void *)(buf + 0) = *pmap++;
*(uint16_t *)(void *)buf = (uint16_t)*pmap++; *(uint32_t *)(void *)(buf + 4) = *pmap++;
buf += 2;
}
} }
/** /**
@ -910,10 +908,10 @@ void usb_lld_start_out(USBDriver *usbp, usbep_t ep) {
USBOutEndpointState *osp = usbp->epc[ep]->out_state; USBOutEndpointState *osp = usbp->epc[ep]->out_state;
/* Transfer initialization.*/ /* Transfer initialization.*/
if (osp->rxsize == 0) /* Special case for zero sized packets.*/ if (osp->rxsize == 0U) /* Special case for zero sized packets.*/
osp->rxpkts = 1; osp->rxpkts = 1U;
else else
osp->rxpkts = (uint16_t)((osp->rxsize + usbp->epc[ep]->out_maxsize - 1) / osp->rxpkts = (uint16_t)((osp->rxsize + usbp->epc[ep]->out_maxsize - 1U)/
usbp->epc[ep]->out_maxsize); usbp->epc[ep]->out_maxsize);
CHEPR_SET_STATRX(usbp, ep, USB_EP_RX_VALID); CHEPR_SET_STATRX(usbp, ep, USB_EP_RX_VALID);