All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Horman <horms@verge.net.au>
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 08/11] ARM: shmobile: marzen: add USB EHCI driver support
Date: Fri, 31 Aug 2012 01:28:19 +0000	[thread overview]
Message-ID: <1346376502-12114-9-git-send-email-horms@verge.net.au> (raw)
In-Reply-To: <1346376502-12114-1-git-send-email-horms@verge.net.au>

From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

This patch supports CN21/CN22 USB 2.0 (port 0/1/2),
and enable USB momery on defconfig

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
---
 arch/arm/configs/marzen_defconfig     |  6 +++
 arch/arm/mach-shmobile/Kconfig        |  1 +
 arch/arm/mach-shmobile/board-marzen.c | 88 +++++++++++++++++++++++++++++++++++
 3 files changed, 95 insertions(+)

diff --git a/arch/arm/configs/marzen_defconfig b/arch/arm/configs/marzen_defconfig
index cd2dc21..61d1c55 100644
--- a/arch/arm/configs/marzen_defconfig
+++ b/arch/arm/configs/marzen_defconfig
@@ -47,6 +47,8 @@ CONFIG_DEVTMPFS_MOUNT=y
 # CONFIG_STANDALONE is not set
 # CONFIG_PREVENT_FIRMWARE_BUILD is not set
 # CONFIG_FW_LOADER is not set
+CONFIG_SCSI=y
+CONFIG_BLK_DEV_SD=y
 CONFIG_NETDEVICES=y
 # CONFIG_NET_VENDOR_BROADCOM is not set
 # CONFIG_NET_VENDOR_FARADAY is not set
@@ -75,6 +77,10 @@ CONFIG_SSB=y
 # CONFIG_USB_SUPPORT is not set
 CONFIG_MMC=y
 CONFIG_MMC_SDHI=y
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_USB_STORAGE=y
 CONFIG_UIO=y
 CONFIG_UIO_PDRV_GENIRQ=y
 # CONFIG_IOMMU_SUPPORT is not set
diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
index 4cacc2d..8937d69 100644
--- a/arch/arm/mach-shmobile/Kconfig
+++ b/arch/arm/mach-shmobile/Kconfig
@@ -41,6 +41,7 @@ config ARCH_R8A7779
 	select SH_CLK_CPG
 	select ARM_GIC
 	select ARCH_WANT_OPTIONAL_GPIOLIB
+	select USB_ARCH_HAS_EHCI
 
 config ARCH_EMEV2
 	bool "Emma Mobile EV2"
diff --git a/arch/arm/mach-shmobile/board-marzen.c b/arch/arm/mach-shmobile/board-marzen.c
index dec3ffc..0249c0e 100644
--- a/arch/arm/mach-shmobile/board-marzen.c
+++ b/arch/arm/mach-shmobile/board-marzen.c
@@ -32,6 +32,8 @@
 #include <linux/smsc911x.h>
 #include <linux/mmc/sh_mobile_sdhi.h>
 #include <linux/mfd/tmio.h>
+#include <linux/usb/ehci_pdriver.h>
+#include <linux/pm_runtime.h>
 #include <mach/hardware.h>
 #include <mach/r8a7779.h>
 #include <mach/common.h>
@@ -116,6 +118,80 @@ static struct platform_device *marzen_devices[] __initdata = {
 	&sdhi0_device,
 };
 
+/* USB */
+static int xhci_power_on(struct platform_device *pdev)
+{
+	pm_runtime_enable(&pdev->dev);
+	pm_runtime_get_sync(&pdev->dev);
+
+	return 0;
+}
+
+static void xhci_power_off(struct platform_device *pdev)
+{
+	pm_runtime_put_sync(&pdev->dev);
+	pm_runtime_disable(&pdev->dev);
+}
+
+static struct usb_ehci_pdata ehcix_pdata = {
+	.power_on	= xhci_power_on,
+	.power_off	= xhci_power_off,
+	.power_suspend	= xhci_power_off,
+};
+
+static struct resource ehci0_resources[] = {
+	[0] = {
+		.start	= 0xffe70000,
+		.end	= 0xffe70400 - 1,
+		.flags	= IORESOURCE_MEM,
+	},
+	[1] = {
+		.start	= gic_spi(44),
+		.flags	= IORESOURCE_IRQ,
+	},
+};
+
+static struct platform_device ehci0_device = {
+	.name	= "ehci-platform",
+	.id	= 0,
+	.dev	= {
+		.dma_mask		= &ehci0_device.dev.coherent_dma_mask,
+		.coherent_dma_mask	= 0xffffffff,
+		.platform_data		= &ehcix_pdata,
+	},
+	.num_resources	= ARRAY_SIZE(ehci0_resources),
+	.resource	= ehci0_resources,
+};
+
+static struct resource ehci1_resources[] = {
+	[0] = {
+		.start	= 0xfff70000,
+		.end	= 0xfff70400 - 1,
+		.flags	= IORESOURCE_MEM,
+	},
+	[1] = {
+		.start	= gic_spi(45),
+		.flags	= IORESOURCE_IRQ,
+	},
+};
+
+static struct platform_device ehci1_device = {
+	.name	= "ehci-platform",
+	.id	= 1,
+	.dev	= {
+		.dma_mask		= &ehci1_device.dev.coherent_dma_mask,
+		.coherent_dma_mask	= 0xffffffff,
+		.platform_data		= &ehcix_pdata,
+	},
+	.num_resources	= ARRAY_SIZE(ehci1_resources),
+	.resource	= ehci1_resources,
+};
+
+static struct platform_device *marzen_usb_devices[] __initdata = {
+	&ehci0_device,
+	&ehci1_device,
+};
+
 static void __init marzen_init(void)
 {
 	regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers,
@@ -147,8 +223,20 @@ static void __init marzen_init(void)
 	gpio_request(GPIO_FN_SD0_CD, NULL);
 	gpio_request(GPIO_FN_SD0_WP, NULL);
 
+	/* USB (CN21) */
+	gpio_request(GPIO_FN_USB_OVC0, NULL);
+	gpio_request(GPIO_FN_USB_OVC1, NULL);
+	gpio_request(GPIO_FN_USB_OVC2, NULL);
+
+	/* USB (CN22) */
+	gpio_request(GPIO_FN_USB_PENC2, NULL);
+
 	r8a7779_add_standard_devices();
 	platform_add_devices(marzen_devices, ARRAY_SIZE(marzen_devices));
+
+	if (0 = r8a7779_usb_phy_init(0))
+		platform_add_devices(marzen_usb_devices,
+				     ARRAY_SIZE(marzen_usb_devices));
 }
 
 MACHINE_START(MARZEN, "marzen")
-- 
1.7.10.2.484.gcd07cc5


WARNING: multiple messages have this Message-ID (diff)
From: horms@verge.net.au (Simon Horman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 08/11] ARM: shmobile: marzen: add USB EHCI driver support
Date: Fri, 31 Aug 2012 10:28:19 +0900	[thread overview]
Message-ID: <1346376502-12114-9-git-send-email-horms@verge.net.au> (raw)
In-Reply-To: <1346376502-12114-1-git-send-email-horms@verge.net.au>

From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

This patch supports CN21/CN22 USB 2.0 (port 0/1/2),
and enable USB momery on defconfig

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
---
 arch/arm/configs/marzen_defconfig     |  6 +++
 arch/arm/mach-shmobile/Kconfig        |  1 +
 arch/arm/mach-shmobile/board-marzen.c | 88 +++++++++++++++++++++++++++++++++++
 3 files changed, 95 insertions(+)

diff --git a/arch/arm/configs/marzen_defconfig b/arch/arm/configs/marzen_defconfig
index cd2dc21..61d1c55 100644
--- a/arch/arm/configs/marzen_defconfig
+++ b/arch/arm/configs/marzen_defconfig
@@ -47,6 +47,8 @@ CONFIG_DEVTMPFS_MOUNT=y
 # CONFIG_STANDALONE is not set
 # CONFIG_PREVENT_FIRMWARE_BUILD is not set
 # CONFIG_FW_LOADER is not set
+CONFIG_SCSI=y
+CONFIG_BLK_DEV_SD=y
 CONFIG_NETDEVICES=y
 # CONFIG_NET_VENDOR_BROADCOM is not set
 # CONFIG_NET_VENDOR_FARADAY is not set
@@ -75,6 +77,10 @@ CONFIG_SSB=y
 # CONFIG_USB_SUPPORT is not set
 CONFIG_MMC=y
 CONFIG_MMC_SDHI=y
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_USB_STORAGE=y
 CONFIG_UIO=y
 CONFIG_UIO_PDRV_GENIRQ=y
 # CONFIG_IOMMU_SUPPORT is not set
diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
index 4cacc2d..8937d69 100644
--- a/arch/arm/mach-shmobile/Kconfig
+++ b/arch/arm/mach-shmobile/Kconfig
@@ -41,6 +41,7 @@ config ARCH_R8A7779
 	select SH_CLK_CPG
 	select ARM_GIC
 	select ARCH_WANT_OPTIONAL_GPIOLIB
+	select USB_ARCH_HAS_EHCI
 
 config ARCH_EMEV2
 	bool "Emma Mobile EV2"
diff --git a/arch/arm/mach-shmobile/board-marzen.c b/arch/arm/mach-shmobile/board-marzen.c
index dec3ffc..0249c0e 100644
--- a/arch/arm/mach-shmobile/board-marzen.c
+++ b/arch/arm/mach-shmobile/board-marzen.c
@@ -32,6 +32,8 @@
 #include <linux/smsc911x.h>
 #include <linux/mmc/sh_mobile_sdhi.h>
 #include <linux/mfd/tmio.h>
+#include <linux/usb/ehci_pdriver.h>
+#include <linux/pm_runtime.h>
 #include <mach/hardware.h>
 #include <mach/r8a7779.h>
 #include <mach/common.h>
@@ -116,6 +118,80 @@ static struct platform_device *marzen_devices[] __initdata = {
 	&sdhi0_device,
 };
 
+/* USB */
+static int xhci_power_on(struct platform_device *pdev)
+{
+	pm_runtime_enable(&pdev->dev);
+	pm_runtime_get_sync(&pdev->dev);
+
+	return 0;
+}
+
+static void xhci_power_off(struct platform_device *pdev)
+{
+	pm_runtime_put_sync(&pdev->dev);
+	pm_runtime_disable(&pdev->dev);
+}
+
+static struct usb_ehci_pdata ehcix_pdata = {
+	.power_on	= xhci_power_on,
+	.power_off	= xhci_power_off,
+	.power_suspend	= xhci_power_off,
+};
+
+static struct resource ehci0_resources[] = {
+	[0] = {
+		.start	= 0xffe70000,
+		.end	= 0xffe70400 - 1,
+		.flags	= IORESOURCE_MEM,
+	},
+	[1] = {
+		.start	= gic_spi(44),
+		.flags	= IORESOURCE_IRQ,
+	},
+};
+
+static struct platform_device ehci0_device = {
+	.name	= "ehci-platform",
+	.id	= 0,
+	.dev	= {
+		.dma_mask		= &ehci0_device.dev.coherent_dma_mask,
+		.coherent_dma_mask	= 0xffffffff,
+		.platform_data		= &ehcix_pdata,
+	},
+	.num_resources	= ARRAY_SIZE(ehci0_resources),
+	.resource	= ehci0_resources,
+};
+
+static struct resource ehci1_resources[] = {
+	[0] = {
+		.start	= 0xfff70000,
+		.end	= 0xfff70400 - 1,
+		.flags	= IORESOURCE_MEM,
+	},
+	[1] = {
+		.start	= gic_spi(45),
+		.flags	= IORESOURCE_IRQ,
+	},
+};
+
+static struct platform_device ehci1_device = {
+	.name	= "ehci-platform",
+	.id	= 1,
+	.dev	= {
+		.dma_mask		= &ehci1_device.dev.coherent_dma_mask,
+		.coherent_dma_mask	= 0xffffffff,
+		.platform_data		= &ehcix_pdata,
+	},
+	.num_resources	= ARRAY_SIZE(ehci1_resources),
+	.resource	= ehci1_resources,
+};
+
+static struct platform_device *marzen_usb_devices[] __initdata = {
+	&ehci0_device,
+	&ehci1_device,
+};
+
 static void __init marzen_init(void)
 {
 	regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers,
@@ -147,8 +223,20 @@ static void __init marzen_init(void)
 	gpio_request(GPIO_FN_SD0_CD, NULL);
 	gpio_request(GPIO_FN_SD0_WP, NULL);
 
+	/* USB (CN21) */
+	gpio_request(GPIO_FN_USB_OVC0, NULL);
+	gpio_request(GPIO_FN_USB_OVC1, NULL);
+	gpio_request(GPIO_FN_USB_OVC2, NULL);
+
+	/* USB (CN22) */
+	gpio_request(GPIO_FN_USB_PENC2, NULL);
+
 	r8a7779_add_standard_devices();
 	platform_add_devices(marzen_devices, ARRAY_SIZE(marzen_devices));
+
+	if (0 == r8a7779_usb_phy_init(0))
+		platform_add_devices(marzen_usb_devices,
+				     ARRAY_SIZE(marzen_usb_devices));
 }
 
 MACHINE_START(MARZEN, "marzen")
-- 
1.7.10.2.484.gcd07cc5

  parent reply	other threads:[~2012-08-31  1:28 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-31  1:28 [GIT PULL v2] Renesas ARM-based SoC: Marzen and r8a7779 for 3.7 Simon Horman
2012-08-31  1:28 ` Simon Horman
2012-08-31  1:28 ` [PATCH 01/11] r8a7779: add SDHI clock support Simon Horman
2012-08-31  1:28   ` Simon Horman
2012-08-31  1:28 ` [PATCH 02/11] marzen: add SDHI0 support Simon Horman
2012-08-31  1:28   ` Simon Horman
2012-08-31  1:28 ` [PATCH 03/11] ARM: mach-shmobile: marzen: defconfig update Simon Horman
2012-08-31  1:28   ` Simon Horman
2012-08-31  1:28 ` [PATCH 04/11] ARM: shmobile: r8a7779: PFC rename PENCx -> USB_PENCx Simon Horman
2012-08-31  1:28   ` Simon Horman
2012-08-31  1:28 ` [PATCH 05/11] ARM: shmobile: r8a7779: add USB common phy initializer Simon Horman
2012-08-31  1:28   ` Simon Horman
2012-09-03 21:38   ` Arnd Bergmann
2012-09-03 21:38     ` Arnd Bergmann
2012-09-04  0:21     ` Kuninori Morimoto
2012-09-04  0:21       ` Kuninori Morimoto
2012-09-04  0:34       ` Simon Horman
2012-09-04  0:34         ` Simon Horman
2012-09-04  4:50         ` [PATCH] ARM: shmobile: r8a7779: remove USB " Kuninori Morimoto
2012-09-04  4:50           ` Kuninori Morimoto
2012-09-05  1:20           ` Simon Horman
2012-09-05  1:20             ` Simon Horman
2012-09-05  1:23             ` Simon Horman
2012-09-05  1:23               ` Simon Horman
2012-09-05  2:00               ` Kuninori Morimoto
2012-09-05  2:00                 ` Kuninori Morimoto
2012-09-05  8:13                 ` Simon Horman
2012-09-05  8:13                   ` Simon Horman
2012-09-12  5:16                   ` Simon Horman
2012-09-12  5:16                     ` Simon Horman
2012-09-12  5:31                     ` Kuninori Morimoto
2012-09-12  5:31                       ` Kuninori Morimoto
2012-09-12  6:30                       ` Felipe Balbi
2012-09-12  6:30                         ` Felipe Balbi
2012-09-12  7:16                         ` Kuninori Morimoto
2012-09-12  7:16                           ` Kuninori Morimoto
2012-09-12  7:19                           ` Simon Horman
2012-09-12  7:19                             ` Simon Horman
2013-11-06  6:48           ` [PATCH] ARM: shmobile: r8a7779: Remove unused clock constants Simon Horman
2013-11-06  6:48             ` Simon Horman
2013-11-06 12:59             ` Laurent Pinchart
2013-11-06 12:59               ` Laurent Pinchart
2013-11-07  8:52               ` Simon Horman
2013-11-07  8:52                 ` Simon Horman
2014-01-08  4:34           ` Simon Horman
2014-01-08  4:34             ` Simon Horman
2014-01-08  7:52             ` Laurent Pinchart
2014-01-08  7:52               ` Laurent Pinchart
2014-01-09  5:10               ` Simon Horman
2014-01-09  5:10                 ` Simon Horman
2012-08-31  1:28 ` [PATCH 06/11] ARM: shmobile: r8a7779: add USB EHCI clock support Simon Horman
2012-08-31  1:28   ` Simon Horman
2012-08-31  1:28 ` [PATCH 07/11] ARM: shmobile: r8a7779: add USB OHCI " Simon Horman
2012-08-31  1:28   ` Simon Horman
2012-08-31  1:28 ` Simon Horman [this message]
2012-08-31  1:28   ` [PATCH 08/11] ARM: shmobile: marzen: add USB EHCI driver support Simon Horman
2012-08-31  1:28 ` [PATCH 09/11] ARM: shmobile: marzen: fixup regulator id for smsc911x Simon Horman
2012-08-31  1:28   ` Simon Horman
2012-08-31  1:28 ` [PATCH 10/11] ARM: shmobile: marzen: enable thermal sensor Simon Horman
2012-08-31  1:28   ` Simon Horman
2012-08-31  1:28 ` [PATCH 11/11] ARM: shmobile: marzen: add USB OHCI driver support Simon Horman
2012-08-31  1:28   ` Simon Horman
2012-08-31  6:24 ` [GIT PULL v2] Renesas ARM-based SoC: Marzen and r8a7779 for 3.7 Simon Horman
2012-08-31  6:24   ` Simon Horman

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=1346376502-12114-9-git-send-email-horms@verge.net.au \
    --to=horms@verge.net.au \
    --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.