Re: [PATCH 5/6] USB: s3c-hsotg: Ensure FIFOs are fully flushed after layout

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 25, 2010 at 10:06 AM, Ben Dooks <ben-linux@xxxxxxxxx> wrote:
> According to the design guide, if the FIFO layout is changed, then the
> FIFOs must be flushed to ensure all FIFO pointers are correct.
>
> Signed-off-by: Ben Dooks <ben-linux@xxxxxxxxx>
> ---
>  drivers/usb/gadget/s3c-hsotg.c |   26 ++++++++++++++++++++++++++
>  1 files changed, 26 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c
> index 8ed4f8a..0cb0462 100644
> --- a/drivers/usb/gadget/s3c-hsotg.c
> +++ b/drivers/usb/gadget/s3c-hsotg.c
> @@ -301,6 +301,7 @@ static void s3c_hsotg_init_fifo(struct s3c_hsotg *hsotg)
>        unsigned int ep;
>        unsigned int addr;
>        unsigned int size;
> +       int timeout;
>        u32 val;
>
>        /* the ryu 2.6.24 release ahs
> @@ -336,6 +337,31 @@ static void s3c_hsotg_init_fifo(struct s3c_hsotg *hsotg)
>
>                writel(val, hsotg->regs + S3C_DPTXFSIZn(ep));
>        }
> +
> +       /* according to p428 of the design guide, we need to ensure that
> +        * all fifos are flushed before continuing */

Please see Documentation/CodingStyle for multi-line comments.

> +
> +       writel(S3C_GRSTCTL_TxFNum(0x10) | S3C_GRSTCTL_TxFFlsh |
> +              S3C_GRSTCTL_RxFFlsh, hsotg->regs + S3C_GRSTCTL);
> +
> +       /* wait until the fifos are both flushed */
> +       timeout = 100;
> +       while (1) {
> +               val = readl(hsotg->regs + S3C_GRSTCTL);
> +
> +               if ((val & (S3C_GRSTCTL_TxFFlsh | S3C_GRSTCTL_RxFFlsh)) == 0)
> +                       break;
> +
> +               if (--timeout == 0) {
> +                       dev_err(hsotg->dev,
> +                               "%s: timeout flushing fifos (GRSTCTL=%08x)\n",
> +                               __func__, val);
> +               }
> +
> +               udelay(1);
> +       }
> +
> +       dev_dbg(hsotg->dev, "FIFOs reset, timeout at %d\n", timeout);
>  }

Regards,
Maulik
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux