linux-sh.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
To: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>,
	mathias.nyman@intel.com,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>
Cc: SH-Linux <linux-sh@vger.kernel.org>,
	Magnus Damm <magnus.damm@gmail.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Grant Likely <grant.likely@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: Re: [PATCH 2/3] usb: host: xhci-plat: add support for the R-Car H2 and M2 xHCI controllers
Date: Mon, 19 May 2014 12:14:52 +0000	[thread overview]
Message-ID: <5379F5BC.6010204@cogentembedded.com> (raw)
In-Reply-To: <5379D805.3070002@renesas.com>

Hello.

On 19-05-2014 14:08, Yoshihiro Shimoda wrote:

> The R-Car H2 and M2 SoCs come with an xHCI controller that requires
> some specific initilization related to the firmware downloading and
> some specific registers. This patch adds the support for this special
> configuration as an xHCI quirk executed during probe and start.

> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
[...]

> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
> index 561d07e..3a2da1f 100644
> --- a/drivers/usb/host/xhci-plat.c
> +++ b/drivers/usb/host/xhci-plat.c
> @@ -20,6 +20,7 @@
>
>   #include "xhci.h"
>   #include "xhci-mvebu.h"
> +#include "xhci-rcar.h"
>
>   static void xhci_plat_quirks(struct device *dev, struct xhci_hcd *xhci)
>   {
> @@ -39,6 +40,12 @@ static int xhci_plat_setup(struct usb_hcd *hcd)
>
>   static int xhci_plat_start(struct usb_hcd *hcd)
>   {
> +	struct device_node *of_node = hcd->self.controller->of_node;
> +
> +	if (of_device_is_compatible(of_node, "renesas,r8a7790-xhci") ||
> +	    of_device_is_compatible(of_node, "renesas,r8a7790-xhci"))

    Perhaps "renesas,r8a7791-xhci"?

> +		xhci_rcar_start(hcd);
> +
>   	return xhci_run(hcd);
>   }
>
[...]
> diff --git a/drivers/usb/host/xhci-rcar.c b/drivers/usb/host/xhci-rcar.c
> new file mode 100644
> index 0000000..3c0bfae
> --- /dev/null
> +++ b/drivers/usb/host/xhci-rcar.c
> @@ -0,0 +1,182 @@
> +/*
> + * xHCI host controller driver for R-Car SoCs
> + *
> + * Copyright (C) 2014 Renesas Electronics Corporation
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * version 2 as published by the Free Software Foundation.
> + */
> +
> +#include <linux/firmware.h>
> +#include <linux/module.h>
> +#include <linux/platform_device.h>
> +#include <linux/usb/phy.h>
> +
> +#include "xhci.h"
> +#include "xhci-rcar.h"
> +
> +#define FIRMWARE_NAME		"r8a779x_usb3_v1.dlmem"
> +
> +/*** Register Offset ***/
> +#define RCAR_USB3_INT_ENA	0x224	/* Interrupt Enable */
> +#define RCAR_USB3_DL_CTRL	0x250	/* FW Download Control & Status */
> +#define RCAR_USB3_FW_DATA0	0x258	/* FW Data0 */
> +
> +#define RCAR_USB3_LCLK		0xa44	/* LCLK Select */
> +#define RCAR_USB3_CONF1		0xa48	/* USB3.0 Configuration1 */
> +#define RCAR_USB3_CONF2		0xa5c	/* USB3.0 Configuration2 */
> +#define RCAR_USB3_CONF3		0xaa8	/* USB3.0 Configuration3 */
> +#define RCAR_USB3_RX_POL	0xab0	/* USB3.0 RX Polarity */
> +#define RCAR_USB3_TX_POL	0xab8	/* USB3.0 TX Polarity */
> +
> +/*** Register Settings ***/
> +/* Interrupt Enable */
> +#define RCAR_USB3_INT_XHC_ENA	0x00000001
> +#define RCAR_USB3_INT_PME_ENA	0x00000002
> +#define RCAR_USB3_INT_HSE_ENA	0x00000004
> +#define RCAR_USB3_INT_ENA_VAL	(RCAR_USB3_INT_XHC_ENA | \
> +				RCAR_USB3_INT_PME_ENA | RCAR_USB3_INT_HSE_ENA)
> +
> +/* FW Download Control & Status */
> +#define RCAR_USB3_DL_CTRL		0x250

    Already #define'd.

> +/* USB3.0 Configuraion */

    Configuration.

> +int xhci_rcar_start(struct usb_hcd *hcd)
> +{
> +	if (hcd->regs != NULL) {
> +		u32 temp;

    Need empty line here... and should perhaps return error if hcd->regs NULL?

> +		/* Interrupt Enable */
> +		temp = readl(hcd->regs + RCAR_USB3_INT_ENA);
> +		temp |= RCAR_USB3_INT_ENA_VAL;
> +		writel(temp, hcd->regs + RCAR_USB3_INT_ENA);
> +		/* LCLK Select */
> +		writel(RCAR_USB3_LCLK_ENA_VAL, hcd->regs + RCAR_USB3_LCLK);
> +		/* USB3.0 Configuration */
> +		writel(RCAR_USB3_CONF1_VAL, hcd->regs + RCAR_USB3_CONF1);
> +		writel(RCAR_USB3_CONF2_VAL, hcd->regs + RCAR_USB3_CONF2);
> +		writel(RCAR_USB3_CONF3_VAL, hcd->regs + RCAR_USB3_CONF3);
> +		/* USB3.0 Polariy */
> +		writel(RCAR_USB3_RX_POL_VAL, hcd->regs + RCAR_USB3_RX_POL);
> +		writel(RCAR_USB3_TX_POL_VAL, hcd->regs + RCAR_USB3_TX_POL);
> +	}
> +
> +	return 0;
> +}
[...]

WBR, Sergei


  parent reply	other threads:[~2014-05-19 12:14 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-19 10:08 [PATCH 2/3] usb: host: xhci-plat: add support for the R-Car H2 and M2 xHCI controllers Yoshihiro Shimoda
     [not found] ` <5379D805.3070002-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2014-05-19 10:21   ` Magnus Damm
2014-05-20  9:34     ` Yoshihiro Shimoda
2014-05-19 11:58 ` Geert Uytterhoeven
2014-05-20  9:35   ` Yoshihiro Shimoda
     [not found]     ` <537B21CA.6080702-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2014-05-20 10:14       ` Geert Uytterhoeven
2014-05-21  7:54         ` Yoshihiro Shimoda
2014-05-19 12:14 ` Sergei Shtylyov [this message]
2014-05-20  9:35   ` Yoshihiro Shimoda
2014-05-20 10:11 ` Arnd Bergmann
2014-05-21  7:54   ` Yoshihiro Shimoda
     [not found]     ` <537C5B98.7060401-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2014-05-21  8:04       ` Arnd Bergmann
2014-05-21  8:16         ` Yoshihiro Shimoda

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=5379F5BC.6010204@cogentembedded.com \
    --to=sergei.shtylyov@cogentembedded.com \
    --cc=devicetree@vger.kernel.org \
    --cc=geert@linux-m68k.org \
    --cc=grant.likely@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --cc=mathias.nyman@intel.com \
    --cc=robh+dt@kernel.org \
    --cc=yoshihiro.shimoda.uh@renesas.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).