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
next prev 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).