All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Vasut <marek.vasut@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 1/1] tegra: usb: Fix device enumeration problem of USB1
Date: Thu, 21 Jun 2012 12:16:15 +0200	[thread overview]
Message-ID: <201206211216.15818.marek.vasut@gmail.com> (raw)
In-Reply-To: <4B9C9637D5087840A465BDCB251780E9E2D6EDA3E6@HKMAIL02.nvidia.com>

Dear Jim Lin,

> A known hardware issue of USB1 port where bit 1 (connect status
> change) of PORTSC register will be set after issuing Port Reset
> (like "usb reset" in u-boot command line).
> This will be treated as an error and stops later device enumeration.
> 
> Therefore we clear that bit after Port Reset in order to proceed
> later device enumeration.
> 
> Signed-off-by: Jim Lin <jilin@nvidia.com>
> ---
> To reproduce this issue, you can modify board .dts file to set
> as the following to build u-boot binary.
> "
>  usb0 = "/usb at c5000000";
>  usb1 = "/usb at c5008000";
> "
> Install device on USB1 port (address at 0xc5000000).
> And run "usb reset" in u-boot console to enumerate device.
> 
> Before adding this patch, we could see problem every time.
> After adding, tried 10 times of "usb reset", "usb tree", "usb stop"
> , without seeing issue.
> 
> Changes in v4:
> - Add comment to describe replacing weak function ehci_powerup_fixup of
> ehci-hcd.c - Remove using variable my_reg
> 
> Changes in v3:
> - Move patch for USB1 controller into ehci_powerup_fixup of ehci-tegra.c
> - Update copyright year to 2012
> 
> Changes in v2:
> - Change config name
> - Add a callback function at the end of ehci_submit_root() function
> 
>  drivers/usb/host/ehci-tegra.c |   18 +++++++++++++++++-
>  1 files changed, 17 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c
> index a7e105b..6646d3a 100644
> --- a/drivers/usb/host/ehci-tegra.c
> +++ b/drivers/usb/host/ehci-tegra.c
> @@ -1,5 +1,5 @@
>  /*
> - * Copyright (c) 2009 NVIDIA Corporation
> + * Copyright (c) 2009-2012 NVIDIA Corporation
>   *
>   * See file CREDITS for list of people who contributed to this
>   * project.
> @@ -29,6 +29,22 @@
>  #include <asm/errno.h>
>  #include <asm/arch/usb.h>
> 
> +/*
> + * A known hardware issue where Connect Status Change bit of PORTSC
> register + * of USB1 controller will be set after Port Reset.
> + * We have to clear it in order for later device enumeration to proceed.
> + * This ehci_powerup_fixup overrides the weak function ehci_powerup_fixup
> + * in "ehci-hcd.c".
> + */
> +void ehci_powerup_fixup(uint32_t *status_reg, uint32_t *reg)

So it was even enough to use the already preinstalled callback? :-)

> +{
> +	mdelay(50);
> +	if (((u32) status_reg & 0xFFFFC000) != TEGRA_USB1_BASE)

What's this magic number here?

> +		return;
> +	/* For EHCI_PS_CSC to be cleared in ehci_hcd.c */
> +	if (ehci_readl(status_reg) & EHCI_PS_CSC)
> +		*reg |= EHCI_PS_CSC;

writel()

> +}
> 
>  /*
>   * Create the appropriate control structures to manage

Best regards,
Marek Vasut

  parent reply	other threads:[~2012-06-21 10:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-21  3:24 [U-Boot] [PATCH v4 1/1] tegra: usb: Fix device enumeration problem of USB1 Jim Lin
2012-06-21  5:41 ` Stephen Warren
2012-06-21 10:16 ` Marek Vasut [this message]
2012-06-21 10:42   ` Jim Lin
2012-06-21 16:57     ` Marek Vasut

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201206211216.15818.marek.vasut@gmail.com \
    --to=marek.vasut@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.