Dear Benoît Thébaudeau,

> Signed-off-by: Benoît Thébaudeau <benoit.thebaud...@advansee.com>
> Cc: Marek Vasut <ma...@denx.de>
> Cc: Ilya Yanok <ilya.ya...@cogentembedded.com>
> Cc: Stefan Herbrechtsmeier <ste...@herbrechtsmeier.net>
> ---
> Changes for v2: N/A.
> Changes for v3:
>  - New patch.
> 
>  .../drivers/usb/host/ehci-hcd.c                    |  135
> +++++++++++--------- .../drivers/usb/host/ehci.h                        | 
>  75 ++++++++++- 2 files changed, 150 insertions(+), 60 deletions(-)
> 
> diff --git u-boot-usb-8d5fb14.orig/drivers/usb/host/ehci-hcd.c
> u-boot-usb-8d5fb14/drivers/usb/host/ehci-hcd.c index 5b3b906..1977c28
> 100644
> --- u-boot-usb-8d5fb14.orig/drivers/usb/host/ehci-hcd.c
> +++ u-boot-usb-8d5fb14/drivers/usb/host/ehci-hcd.c
> @@ -163,7 +163,7 @@ static int ehci_reset(void)
> 
>  #ifdef CONFIG_USB_EHCI_TXFIFO_THRESH
>       cmd = ehci_readl(&hcor->or_txfilltuning);
> -     cmd &= ~TXFIFO_THRESH(0x3f);
> +     cmd &= ~TXFIFO_THRESH_MASK;
>       cmd |= TXFIFO_THRESH(CONFIG_USB_EHCI_TXFIFO_THRESH);
>       ehci_writel(&hcor->or_txfilltuning, cmd);
>  #endif
> @@ -186,7 +186,7 @@ static int ehci_td_buffer(struct qTD *td, void *buf,
> size_t sz) while (idx < QT_BUFFER_CNT) {
>               td->qt_buffer[idx] = cpu_to_hc32(addr);
>               td->qt_buffer_hi[idx] = 0;
> -             next = (addr + 4096) & ~4095;
> +             next = (addr + EHCI_PAGE_SIZE) & ~(EHCI_PAGE_SIZE - 1);
>               delta = next - addr;
>               if (delta >= sz)
>                       break;
> @@ -208,7 +208,8 @@ ehci_submit_async(struct usb_device *dev, unsigned long
> pipe, void *buffer, int length, struct devrequest *req)
>  {
>       ALLOC_ALIGN_BUFFER(struct QH, qh, 1, USB_DMA_MINALIGN);
> -     ALLOC_ALIGN_BUFFER(struct qTD, qtd, 3, USB_DMA_MINALIGN);
> +#define QTD_COUNT    3
> +     ALLOC_ALIGN_BUFFER(struct qTD, qtd, QTD_COUNT, USB_DMA_MINALIGN);
>       int qtd_counter = 0;
> 
>       volatile struct qTD *vtd;
> @@ -230,7 +231,7 @@ ehci_submit_async(struct usb_device *dev, unsigned long
> pipe, void *buffer, le16_to_cpu(req->index));
> 
>       memset(qh, 0, sizeof(struct QH));
> -     memset(qtd, 0, 3 * sizeof(*qtd));
> +     memset(qtd, 0, QTD_COUNT * sizeof(*qtd));
> 
>       toggle = usb_gettoggle(dev, usb_pipeendpoint(pipe), usb_pipeout(pipe));
> 
> @@ -246,19 +247,20 @@ ehci_submit_async(struct usb_device *dev, unsigned
> long pipe, void *buffer, */
>       qh->qh_link = cpu_to_hc32((uint32_t)qh_list | QH_LINK_TYPE_QH);
>       c = (usb_pipespeed(pipe) != USB_SPEED_HIGH &&
> -          usb_pipeendpoint(pipe) == 0) ? 1 : 0;
> -     endpt = (8 << 28) |
> -         (c << 27) |
> -         (usb_maxpacket(dev, pipe) << 16) |
> -         (0 << 15) |
> -         (1 << 14) |
> -         (usb_pipespeed(pipe) << 12) |
> -         (usb_pipeendpoint(pipe) << 8) |
> -         (0 << 7) | (usb_pipedevice(pipe) << 0);
> +          usb_pipeendpoint(pipe) == 0);
> +     endpt = (8 << QH_ENDPT1_RL) |
> +         (c << QH_ENDPT1_C) |

Maybe define it as #deifne QH_ENDPT1(x) ((x) << SEOMTHING) ?
[...]

> @@ -398,50 +408,53 @@ ehci_submit_async(struct usb_device *dev, unsigned
> long pipe, void *buffer, ALIGN((uint32_t)buffer + length,
> ARCH_DMA_MINALIGN));
> 
>       /* Check that the TD processing happened */
> -     if (token & 0x80) {
> +     if (token & (QT_TOKEN_STATUS_ACTIVE << QT_TOKEN_STATUS))
>               printf("EHCI timed out on TD - token=%#x\n", token);
> -     }
> 
>       /* Disable async schedule. */
>       cmd = ehci_readl(&hcor->or_usbcmd);
>       cmd &= ~CMD_ASE;
>       ehci_writel(&hcor->or_usbcmd, cmd);
> 
> -     ret = handshake((uint32_t *)&hcor->or_usbsts, STD_ASS, 0,
> +     ret = handshake((uint32_t *)&hcor->or_usbsts, STS_ASS, 0,

Ooooh, nice catch :)

[...]
The rest is cool.

btw when (I hope you will) resubmitting next time, just submit the whole series 
under 0/8 patch (or 1/8) of the old one to make it a nice thread.
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to