]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
usb: musb: Ensure that we set musb dynamic FIFO buffer for every endpoint
authorPali Rohár <pali@kernel.org>
Sun, 7 Feb 2021 13:50:10 +0000 (14:50 +0100)
committerMarek Vasut <marex@denx.de>
Wed, 3 Mar 2021 03:12:46 +0000 (04:12 +0100)
If we do not set FIFO buffer address and size for some endpoint which is in
use then default programmed address 0x0 would be used which is in conflict
with address of FIFO buffer for endpoint 0. Moreover address of FIFO buffer
for endpoint 0 cannot be programmed, it is fixed to 0x0. Sharing address
space between more endpoints cause data loss and unexpected errors.

This patch is fixing transmission of characters over usbtty serial console
and allows using of usbtty for debugging purposes on Nokia N900.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Acked-by: Pavel Machek <pavel@ucw.cz>
drivers/usb/musb/musb_udc.c

index 8d48056f087c903657f91da06106eb03dca3385a..b9510e304599d596f652af76e54fdc592b4bac45 100644 (file)
@@ -875,18 +875,8 @@ void udc_setup_ep(struct usb_device_instance *device, unsigned int id,
                ep0_endpoint->endpoint_address = 0xff;
                ep0_urb = usbd_alloc_urb(device, endpoint);
        } else if (MAX_ENDPOINT >= id) {
-               int ep_addr;
-
-               /* Check the direction */
-               ep_addr = endpoint->endpoint_address;
-               if (USB_DIR_IN == (ep_addr & USB_ENDPOINT_DIR_MASK)) {
-                       /* IN */
-                       epinfo[(id * 2) + 1].epsize = endpoint->tx_packetSize;
-               } else {
-                       /* OUT */
-                       epinfo[id * 2].epsize = endpoint->rcv_packetSize;
-               }
-
+               epinfo[(id * 2) + 0].epsize = endpoint->rcv_packetSize;
+               epinfo[(id * 2) + 1].epsize = endpoint->tx_packetSize;
                musb_configure_ep(&epinfo[0], ARRAY_SIZE(epinfo));
        } else {
                if (debug_level > 0)