Skip to content

Commit 5573472

Browse files
committed
fix(port/musb/usb_hc_musb): fix musb_write_packet size with urb->transfer_buffer_length
Signed-off-by: sakumisu <1203593632@qq.com>
1 parent fd033f2 commit 5573472

File tree

1 file changed

+4
-12
lines changed

1 file changed

+4
-12
lines changed

port/musb/usb_hc_musb.c

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -869,12 +869,7 @@ void handle_ep0(struct usbh_bus *bus)
869869
break;
870870
case USB_EP0_STATE_IN_DATA:
871871
if (ep0_status & USB_CSRL0_RXRDY) {
872-
size = urb->transfer_buffer_length;
873-
if (size > USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize)) {
874-
size = USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize);
875-
}
876-
877-
size = MIN(size, HWREGH(USB_BASE + MUSB_IND_RXCOUNT_OFFSET));
872+
size = HWREGH(USB_BASE + MUSB_IND_RXCOUNT_OFFSET);
878873
musb_read_packet(bus, 0, urb->transfer_buffer, size);
879874
HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) &= ~USB_CSRL0_RXRDY;
880875
urb->transfer_buffer += size;
@@ -933,6 +928,7 @@ void USBH_IRQHandler(uint8_t busid)
933928
uint8_t ep_idx;
934929
uint8_t old_ep_idx;
935930
struct usbh_bus *bus;
931+
uint32_t size;
936932

937933
bus = &g_usbhost_bus[busid];
938934

@@ -1024,7 +1020,7 @@ void USBH_IRQHandler(uint8_t busid)
10241020
urb->errorcode = 0;
10251021
musb_urb_waitup(urb);
10261022
} else {
1027-
musb_write_packet(bus, ep_idx, urb->transfer_buffer, size);
1023+
musb_write_packet(bus, ep_idx, urb->transfer_buffer, MIN(urb->transfer_buffer_length, USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize)));
10281024
HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) = USB_TXCSRL1_TXRDY;
10291025
}
10301026
}
@@ -1056,11 +1052,7 @@ void USBH_IRQHandler(uint8_t busid)
10561052
urb->errorcode = -USB_ERR_STALL;
10571053
musb_urb_waitup(urb);
10581054
} else if (ep_csrl_status & USB_RXCSRL1_RXRDY) {
1059-
uint32_t size = urb->transfer_buffer_length;
1060-
if (size > USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize)) {
1061-
size = USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize);
1062-
}
1063-
size = MIN(size, HWREGH(USB_BASE + MUSB_IND_RXCOUNT_OFFSET));
1055+
size = HWREGH(USB_BASE + MUSB_IND_RXCOUNT_OFFSET);
10641056

10651057
musb_read_packet(bus, ep_idx, urb->transfer_buffer, size);
10661058

0 commit comments

Comments
 (0)