Re: [PATCH 3/6] USB: s3c-hsotg: Ensure TX FIFO addresses setup when initialising FIFOs

[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:
> Some versions of the S3C HS OtG block startup with overlapping TX FIFO
> information, so change the fifo_init code to ensure that known values
> are set into the FIFO registers at initialisation/reset time.
>
> This also ensures that the FIFO RAM pointers are in a known state
> before use.
>
> Signed-off-by: Ben Dooks <ben-linux@xxxxxxxxx>
> ---
>  drivers/usb/gadget/s3c-hsotg.c |   25 +++++++++++++++++++++++++
>  1 files changed, 25 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c
> index dce9366..2ee75a7 100644
> --- a/drivers/usb/gadget/s3c-hsotg.c
> +++ b/drivers/usb/gadget/s3c-hsotg.c
> @@ -298,6 +298,11 @@ static void s3c_hsotg_ctrl_epint(struct s3c_hsotg *hsotg,
>  */
>  static void s3c_hsotg_init_fifo(struct s3c_hsotg *hsotg)
>  {
> +       unsigned int ep;
> +       unsigned int addr;
> +       unsigned int size;
> +       u32 val;
> +
>        /* the ryu 2.6.24 release ahs
>           writel(0x1C0, hsotg->regs + S3C_GRXFSIZ);
>           writel(S3C_GNPTXFSIZ_NPTxFStAddr(0x200) |
> @@ -311,6 +316,26 @@ static void s3c_hsotg_init_fifo(struct s3c_hsotg *hsotg)
>        writel(S3C_GNPTXFSIZ_NPTxFStAddr(2048) |
>               S3C_GNPTXFSIZ_NPTxFDep(0x1C0),
>               hsotg->regs + S3C_GNPTXFSIZ);
> +
> +       /* arange all the rest of the TX FIFOs, as some versions of this
> +        * block have overlapping default addresses. This also ensures
> +        * that if the settings have been changed, then they are set to
> +        * known values. */

Please see Documentation/CodingStyle for multi-line comments.

> +
> +       /* start at the end of the GNPTXFSIZ, rounded up */
> +       addr = 2048 + 1024;
> +       size = 768;
> +
> +       /* currently we allocate TX FIFOs for all possible endpoints,
> +        * and assume that they are all the same size. */

Same here.

> +
> +       for (ep = 0; ep <= 15; ep++) {
> +               val = addr;
> +               val |= size << S3C_DPTXFSIZn_DPTxFSize_SHIFT;
> +               addr += size;
> +
> +               writel(val, hsotg->regs + S3C_DPTXFSIZn(ep));
> +       }
>  }

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