All of lore.kernel.org
 help / color / mirror / Atom feed
From: sebastian.hesselbarth@gmail.com (Sebastian Hesselbarth)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/8] ARM: mvebu: Add USB3 UTMI support
Date: Fri, 18 Apr 2014 13:19:41 +0200	[thread overview]
Message-ID: <53510A4D.8050706@gmail.com> (raw)
In-Reply-To: <1397816563-9000-5-git-send-email-gregory.clement@free-electrons.com>

On 04/18/2014 12:22 PM, Gregory CLEMENT wrote:
> The usb3-utmi registers allow to configure the internal USB PHY of the
> Armada 380/385 SoCs. A small initialization is needed to be able to use
> the USB3 ports.
> 
> Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
> ---
>  arch/arm/mach-mvebu/Makefile   |  2 +-
>  arch/arm/mach-mvebu/usb-utmi.c | 64 ++++++++++++++++++++++++++++++++++++++++++

Gregory,

there is the generic PHY framework, that could possibly be used to
avoid adding more code to arch/arm/mach-mvebu.

>  2 files changed, 65 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/mach-mvebu/usb-utmi.c
> 
> diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile
> index a63e43b6b451..2d98a3eeecf6 100644
> --- a/arch/arm/mach-mvebu/Makefile
> +++ b/arch/arm/mach-mvebu/Makefile
> @@ -4,7 +4,7 @@ ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \
>  AFLAGS_coherency_ll.o		:= -Wa,-march=armv7-a
>  
>  obj-y				 += system-controller.o mvebu-soc-id.o
> -obj-$(CONFIG_MACH_MVEBU_V7)      += board-v7.o
> +obj-$(CONFIG_MACH_MVEBU_V7)      += board-v7.o  usb-utmi.o
>  obj-$(CONFIG_MACH_DOVE)		 += dove.o
>  obj-$(CONFIG_ARCH_MVEBU)	 += coherency.o coherency_ll.o pmsu.o
>  obj-$(CONFIG_SMP)                += platsmp.o headsmp.o
> diff --git a/arch/arm/mach-mvebu/usb-utmi.c b/arch/arm/mach-mvebu/usb-utmi.c
> new file mode 100644
> index 000000000000..e91e86f85eb4
> --- /dev/null
> +++ b/arch/arm/mach-mvebu/usb-utmi.c
> @@ -0,0 +1,64 @@
> +/*
> + * USB UTMI support for Armada 38x platform.
> + *
> + * Copyright (C) 2014 Marvell
> + *
> + * Gregory CLEMENT <gregory.clement@free-electrons.com>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + *
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/init.h>
> +#include <linux/of_address.h>
> +#include <linux/io.h>
> +#include <linux/slab.h>

nit: sort alphabetically

> +#define USB_UTMI_PHY_CTRL_STATUS(i)	(0x20+i*4)
> +#define		USB_UTMI_TX_BITSTUFF_EN BIT(1)
> +#define		USB_UTMI_PU_PHY		BIT(5)
> +#define		USB_UTMI_VBUS_ON_PHY	BIT(6)

nit: two TABs in front of the defines above.

> +static struct of_device_id of_usb_utmi_table[] = {
> +	{ .compatible = "marvell,armada-380-usb-utmi", },
> +	{ /* end of list */ },
> +};
> +
> +static int __init mvebu_usb_utmi_init(void)
> +{
> +	struct device_node *np;
> +
> +	np = of_find_matching_node(NULL, of_usb_utmi_table);
> +	if (np) {
> +		void __iomem *usb_utmi_base, *utmi_base;
> +
> +		usb_utmi_base = of_iomap(np, 0);
> +		BUG_ON(!usb_utmi_base);
> +
> +		utmi_base = of_iomap(np, 1);
> +		BUG_ON(!utmi_base);
> +
> +		writel(USB_UTMI_TX_BITSTUFF_EN |
> +			   USB_UTMI_PU_PHY |
> +			   USB_UTMI_VBUS_ON_PHY,
> +			   usb_utmi_base + USB_UTMI_PHY_CTRL_STATUS(0));
> +
> +		/*
> +		 * Magic init... the registers and their value are not
> +		 * documented
> +		 */
> +		writel(0x40605205, utmi_base);
> +		writel(0x409, utmi_base + 4);
> +		writel(0x1be7f6f, utmi_base + 0xc);

nit: decimal/hexadecimal offsets, also IMHO filling the values
written with leading zeros improves readability of "magic init"
alot :)

Sebastian

> +
> +		of_node_put(np);
> +		iounmap(utmi_base);
> +		iounmap(usb_utmi_base);
> +	}
> +
> +	return 0;
> +}
> +postcore_initcall(mvebu_usb_utmi_init);
> 

WARNING: multiple messages have this Message-ID (diff)
From: Sebastian Hesselbarth <sebastian.hesselbarth-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Gregory CLEMENT
	<gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Mathias Nyman
	<mathias.nyman-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Greg Kroah-Hartman
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
	linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Jason Cooper <jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>,
	Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
Cc: Thomas Petazzoni
	<thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Ezequiel Garcia
	<ezequiel.garcia-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	Lior Amsalem <alior-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org>,
	Tawfik Bayouk <tawfik-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org>,
	Nadav Haklai <nadavh-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org>,
	Grant Likely
	<grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 4/8] ARM: mvebu: Add USB3 UTMI support
Date: Fri, 18 Apr 2014 13:19:41 +0200	[thread overview]
Message-ID: <53510A4D.8050706@gmail.com> (raw)
In-Reply-To: <1397816563-9000-5-git-send-email-gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>

On 04/18/2014 12:22 PM, Gregory CLEMENT wrote:
> The usb3-utmi registers allow to configure the internal USB PHY of the
> Armada 380/385 SoCs. A small initialization is needed to be able to use
> the USB3 ports.
> 
> Signed-off-by: Gregory CLEMENT <gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
> ---
>  arch/arm/mach-mvebu/Makefile   |  2 +-
>  arch/arm/mach-mvebu/usb-utmi.c | 64 ++++++++++++++++++++++++++++++++++++++++++

Gregory,

there is the generic PHY framework, that could possibly be used to
avoid adding more code to arch/arm/mach-mvebu.

>  2 files changed, 65 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/mach-mvebu/usb-utmi.c
> 
> diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile
> index a63e43b6b451..2d98a3eeecf6 100644
> --- a/arch/arm/mach-mvebu/Makefile
> +++ b/arch/arm/mach-mvebu/Makefile
> @@ -4,7 +4,7 @@ ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \
>  AFLAGS_coherency_ll.o		:= -Wa,-march=armv7-a
>  
>  obj-y				 += system-controller.o mvebu-soc-id.o
> -obj-$(CONFIG_MACH_MVEBU_V7)      += board-v7.o
> +obj-$(CONFIG_MACH_MVEBU_V7)      += board-v7.o  usb-utmi.o
>  obj-$(CONFIG_MACH_DOVE)		 += dove.o
>  obj-$(CONFIG_ARCH_MVEBU)	 += coherency.o coherency_ll.o pmsu.o
>  obj-$(CONFIG_SMP)                += platsmp.o headsmp.o
> diff --git a/arch/arm/mach-mvebu/usb-utmi.c b/arch/arm/mach-mvebu/usb-utmi.c
> new file mode 100644
> index 000000000000..e91e86f85eb4
> --- /dev/null
> +++ b/arch/arm/mach-mvebu/usb-utmi.c
> @@ -0,0 +1,64 @@
> +/*
> + * USB UTMI support for Armada 38x platform.
> + *
> + * Copyright (C) 2014 Marvell
> + *
> + * Gregory CLEMENT <gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + *
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/init.h>
> +#include <linux/of_address.h>
> +#include <linux/io.h>
> +#include <linux/slab.h>

nit: sort alphabetically

> +#define USB_UTMI_PHY_CTRL_STATUS(i)	(0x20+i*4)
> +#define		USB_UTMI_TX_BITSTUFF_EN BIT(1)
> +#define		USB_UTMI_PU_PHY		BIT(5)
> +#define		USB_UTMI_VBUS_ON_PHY	BIT(6)

nit: two TABs in front of the defines above.

> +static struct of_device_id of_usb_utmi_table[] = {
> +	{ .compatible = "marvell,armada-380-usb-utmi", },
> +	{ /* end of list */ },
> +};
> +
> +static int __init mvebu_usb_utmi_init(void)
> +{
> +	struct device_node *np;
> +
> +	np = of_find_matching_node(NULL, of_usb_utmi_table);
> +	if (np) {
> +		void __iomem *usb_utmi_base, *utmi_base;
> +
> +		usb_utmi_base = of_iomap(np, 0);
> +		BUG_ON(!usb_utmi_base);
> +
> +		utmi_base = of_iomap(np, 1);
> +		BUG_ON(!utmi_base);
> +
> +		writel(USB_UTMI_TX_BITSTUFF_EN |
> +			   USB_UTMI_PU_PHY |
> +			   USB_UTMI_VBUS_ON_PHY,
> +			   usb_utmi_base + USB_UTMI_PHY_CTRL_STATUS(0));
> +
> +		/*
> +		 * Magic init... the registers and their value are not
> +		 * documented
> +		 */
> +		writel(0x40605205, utmi_base);
> +		writel(0x409, utmi_base + 4);
> +		writel(0x1be7f6f, utmi_base + 0xc);

nit: decimal/hexadecimal offsets, also IMHO filling the values
written with leading zeros improves readability of "magic init"
alot :)

Sebastian

> +
> +		of_node_put(np);
> +		iounmap(utmi_base);
> +		iounmap(usb_utmi_base);
> +	}
> +
> +	return 0;
> +}
> +postcore_initcall(mvebu_usb_utmi_init);
> 

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
To: Gregory CLEMENT <gregory.clement@free-electrons.com>,
	Mathias Nyman <mathias.nyman@intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
	Jason Cooper <jason@lakedaemon.net>, Andrew Lunn <andrew@lunn.ch>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Ezequiel Garcia <ezequiel.garcia@free-electrons.com>,
	linux-arm-kernel@lists.infradead.org,
	Lior Amsalem <alior@marvell.com>,
	Tawfik Bayouk <tawfik@marvell.com>,
	Nadav Haklai <nadavh@marvell.com>,
	Grant Likely <grant.likely@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	devicetree@vger.kernel.org
Subject: Re: [PATCH 4/8] ARM: mvebu: Add USB3 UTMI support
Date: Fri, 18 Apr 2014 13:19:41 +0200	[thread overview]
Message-ID: <53510A4D.8050706@gmail.com> (raw)
In-Reply-To: <1397816563-9000-5-git-send-email-gregory.clement@free-electrons.com>

On 04/18/2014 12:22 PM, Gregory CLEMENT wrote:
> The usb3-utmi registers allow to configure the internal USB PHY of the
> Armada 380/385 SoCs. A small initialization is needed to be able to use
> the USB3 ports.
> 
> Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
> ---
>  arch/arm/mach-mvebu/Makefile   |  2 +-
>  arch/arm/mach-mvebu/usb-utmi.c | 64 ++++++++++++++++++++++++++++++++++++++++++

Gregory,

there is the generic PHY framework, that could possibly be used to
avoid adding more code to arch/arm/mach-mvebu.

>  2 files changed, 65 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/mach-mvebu/usb-utmi.c
> 
> diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile
> index a63e43b6b451..2d98a3eeecf6 100644
> --- a/arch/arm/mach-mvebu/Makefile
> +++ b/arch/arm/mach-mvebu/Makefile
> @@ -4,7 +4,7 @@ ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \
>  AFLAGS_coherency_ll.o		:= -Wa,-march=armv7-a
>  
>  obj-y				 += system-controller.o mvebu-soc-id.o
> -obj-$(CONFIG_MACH_MVEBU_V7)      += board-v7.o
> +obj-$(CONFIG_MACH_MVEBU_V7)      += board-v7.o  usb-utmi.o
>  obj-$(CONFIG_MACH_DOVE)		 += dove.o
>  obj-$(CONFIG_ARCH_MVEBU)	 += coherency.o coherency_ll.o pmsu.o
>  obj-$(CONFIG_SMP)                += platsmp.o headsmp.o
> diff --git a/arch/arm/mach-mvebu/usb-utmi.c b/arch/arm/mach-mvebu/usb-utmi.c
> new file mode 100644
> index 000000000000..e91e86f85eb4
> --- /dev/null
> +++ b/arch/arm/mach-mvebu/usb-utmi.c
> @@ -0,0 +1,64 @@
> +/*
> + * USB UTMI support for Armada 38x platform.
> + *
> + * Copyright (C) 2014 Marvell
> + *
> + * Gregory CLEMENT <gregory.clement@free-electrons.com>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2.  This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + *
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/init.h>
> +#include <linux/of_address.h>
> +#include <linux/io.h>
> +#include <linux/slab.h>

nit: sort alphabetically

> +#define USB_UTMI_PHY_CTRL_STATUS(i)	(0x20+i*4)
> +#define		USB_UTMI_TX_BITSTUFF_EN BIT(1)
> +#define		USB_UTMI_PU_PHY		BIT(5)
> +#define		USB_UTMI_VBUS_ON_PHY	BIT(6)

nit: two TABs in front of the defines above.

> +static struct of_device_id of_usb_utmi_table[] = {
> +	{ .compatible = "marvell,armada-380-usb-utmi", },
> +	{ /* end of list */ },
> +};
> +
> +static int __init mvebu_usb_utmi_init(void)
> +{
> +	struct device_node *np;
> +
> +	np = of_find_matching_node(NULL, of_usb_utmi_table);
> +	if (np) {
> +		void __iomem *usb_utmi_base, *utmi_base;
> +
> +		usb_utmi_base = of_iomap(np, 0);
> +		BUG_ON(!usb_utmi_base);
> +
> +		utmi_base = of_iomap(np, 1);
> +		BUG_ON(!utmi_base);
> +
> +		writel(USB_UTMI_TX_BITSTUFF_EN |
> +			   USB_UTMI_PU_PHY |
> +			   USB_UTMI_VBUS_ON_PHY,
> +			   usb_utmi_base + USB_UTMI_PHY_CTRL_STATUS(0));
> +
> +		/*
> +		 * Magic init... the registers and their value are not
> +		 * documented
> +		 */
> +		writel(0x40605205, utmi_base);
> +		writel(0x409, utmi_base + 4);
> +		writel(0x1be7f6f, utmi_base + 0xc);

nit: decimal/hexadecimal offsets, also IMHO filling the values
written with leading zeros improves readability of "magic init"
alot :)

Sebastian

> +
> +		of_node_put(np);
> +		iounmap(utmi_base);
> +		iounmap(usb_utmi_base);
> +	}
> +
> +	return 0;
> +}
> +postcore_initcall(mvebu_usb_utmi_init);
> 


  reply	other threads:[~2014-04-18 11:19 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-18 10:22 [PATCH 0/8] USB3 support for Armada 38x Gregory CLEMENT
2014-04-18 10:22 ` Gregory CLEMENT
2014-04-18 10:22 ` Gregory CLEMENT
2014-04-18 10:22 ` [PATCH 1/8] usb: host: xhci-plat: Allow to register glue code using the device tree Gregory CLEMENT
2014-04-18 10:22   ` Gregory CLEMENT
2014-04-20  3:15   ` Felipe Balbi
2014-04-20  3:15     ` Felipe Balbi
2014-04-20  3:15     ` Felipe Balbi
2014-04-18 10:22 ` [PATCH 2/8] usb: host: xhci-plat: Add support for the Armada 38x glue code Gregory CLEMENT
2014-04-18 10:22   ` Gregory CLEMENT
2014-04-18 10:22   ` Gregory CLEMENT
2014-04-18 11:13   ` Sebastian Hesselbarth
2014-04-18 11:13     ` Sebastian Hesselbarth
2014-04-18 11:13     ` Sebastian Hesselbarth
2014-04-18 11:43     ` Gregory CLEMENT
2014-04-18 11:43       ` Gregory CLEMENT
2014-04-18 11:47       ` Sebastian Hesselbarth
2014-04-18 11:47         ` Sebastian Hesselbarth
2014-04-18 11:47         ` Sebastian Hesselbarth
2014-04-20  3:20   ` Felipe Balbi
2014-04-20  3:20     ` Felipe Balbi
2014-04-20  3:20     ` Felipe Balbi
2014-04-23  7:44     ` Gregory CLEMENT
2014-04-23  7:44       ` Gregory CLEMENT
2014-04-23  7:44       ` Gregory CLEMENT
2014-04-23 15:22       ` Felipe Balbi
2014-04-23 15:22         ` Felipe Balbi
2014-04-23 15:22         ` Felipe Balbi
2014-04-18 10:22 ` [PATCH 3/8] xhci-platform: Add a new controller using xhci: Armada 38x Gregory CLEMENT
2014-04-18 10:22   ` Gregory CLEMENT
2014-04-18 10:22   ` Gregory CLEMENT
2014-04-20  3:21   ` Felipe Balbi
2014-04-20  3:21     ` Felipe Balbi
2014-04-20  3:21     ` Felipe Balbi
2014-04-18 10:22 ` [PATCH 4/8] ARM: mvebu: Add USB3 UTMI support Gregory CLEMENT
2014-04-18 10:22   ` Gregory CLEMENT
2014-04-18 10:22   ` Gregory CLEMENT
2014-04-18 11:19   ` Sebastian Hesselbarth [this message]
2014-04-18 11:19     ` Sebastian Hesselbarth
2014-04-18 11:19     ` Sebastian Hesselbarth
2014-04-18 12:19     ` Gregory CLEMENT
2014-04-18 12:19       ` Gregory CLEMENT
2014-04-18 12:19       ` Gregory CLEMENT
2014-04-20  3:22   ` Felipe Balbi
2014-04-20  3:22     ` Felipe Balbi
2014-04-20  3:22     ` Felipe Balbi
2014-04-18 10:22 ` [PATCH 5/8] ARM: mvebu: Add Device Tree description of xHCI hosts on Armada 38x Gregory CLEMENT
2014-04-18 10:22   ` Gregory CLEMENT
2014-04-18 11:23   ` Sebastian Hesselbarth
2014-04-18 11:23     ` Sebastian Hesselbarth
2014-04-18 11:23     ` Sebastian Hesselbarth
2014-04-18 11:45     ` Gregory CLEMENT
2014-04-18 11:45       ` Gregory CLEMENT
2014-04-18 11:45       ` Gregory CLEMENT
2014-04-18 10:22 ` [PATCH 6/8] ARM: mvebu: Add USB3 support for " Gregory CLEMENT
2014-04-18 10:22   ` Gregory CLEMENT
2014-04-18 10:22 ` [PATCH 7/8] ARM: configs: Add usb_xhci_mvebu to mvebu_v7_defconfig Gregory CLEMENT
2014-04-18 10:22   ` Gregory CLEMENT
2014-04-18 10:22   ` Gregory CLEMENT
2014-04-18 10:22 ` [PATCH 8/8] ARM: configs: Add usb_xhci_mvebu to multi_v7_defconfig Gregory CLEMENT
2014-04-18 10:22   ` Gregory CLEMENT
2014-04-18 10:22   ` Gregory CLEMENT

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=53510A4D.8050706@gmail.com \
    --to=sebastian.hesselbarth@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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.