All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ARM: mach-shmobile: G4EVM USBHS support
@ 2010-02-12  8:11 NISHIMOTO Hiroki
  0 siblings, 0 replies; only message in thread
From: NISHIMOTO Hiroki @ 2010-02-12  8:11 UTC (permalink / raw)
  To: linux-sh

Add G4EVM platform data and a magic setup sequence to
initialize the r8a66597 block aka USBHS in sh7377.

Signed-off-by: NISHIMOTO Hiroki <nishimoto.hiroki@renesas.com>
---
 arch/arm/mach-shmobile/board-g4evm.c |   59 ++++++++++++++++++++++++++++++++++
 1 files changed, 59 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-shmobile/board-g4evm.c b/arch/arm/mach-shmobile/board-g4evm.c
index ef4b0f5..5acd623 100644
--- a/arch/arm/mach-shmobile/board-g4evm.c
+++ b/arch/arm/mach-shmobile/board-g4evm.c
@@ -26,6 +26,7 @@
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
 #include <linux/mtd/physmap.h>
+#include <linux/usb/r8a66597.h>
 #include <linux/io.h>
 #include <linux/gpio.h>
 #include <mach/sh7377.h>
@@ -86,9 +87,50 @@ static struct platform_device nor_flash_device = {
 	.resource	= nor_flash_resources,
 };
 
+/* USBHS */
+void usb_host_port_power(int port, int power)
+{
+	if (!power) /* only power-on supported for now */
+		return;
+
+	/* set VBOUT/PWEN and EXTLP0 in DVSTCTR */
+	__raw_writew(__raw_readw(0xe6890008) | 0x600, 0xe6890008);
+}
+
+static struct r8a66597_platdata usb_host_data = {
+	.on_chip = 1,
+	.port_power = usb_host_port_power,
+};
+
+static struct resource usb_host_resources[] = {
+	[0] = {
+		.name	= "USBHS",
+		.start	= 0xe6890000,
+		.end	= 0xe68900e5,
+		.flags	= IORESOURCE_MEM,
+	},
+	[1] = {
+		.start	= 65,
+		.end	= 65,
+		.flags	= IORESOURCE_IRQ,
+	},
+};
+
+static struct platform_device usb_host_device = {
+	.name		= "r8a66597_hcd",
+	.id		= 0,
+	.dev = {
+		.platform_data		= &usb_host_data,
+		.dma_mask		= NULL,
+		.coherent_dma_mask	= 0xffffffff,
+	},
+	.num_resources	= ARRAY_SIZE(usb_host_resources),
+	.resource	= usb_host_resources,
+};
 
 static struct platform_device *g4evm_devices[] __initdata = {
 	&nor_flash_device,
+	&usb_host_device,
 };
 
 static struct map_desc g4evm_io_desc[] __initdata = {
@@ -137,6 +179,23 @@ static void __init g4evm_init(void)
 	gpio_direction_output(GPIO_PORT113, 1);
 	gpio_export(GPIO_PORT113, 1);
 
+	/* USBHS */
+	gpio_request(GPIO_FN_VBUS_0, NULL);
+	gpio_request(GPIO_FN_PWEN, NULL);
+	gpio_request(GPIO_FN_OVCN, NULL);
+	gpio_request(GPIO_FN_OVCN2, NULL);
+	gpio_request(GPIO_FN_EXTLP, NULL);
+	gpio_request(GPIO_FN_IDIN, NULL);
+
+	/* enable clock in SMSTPCR3 */
+	__raw_writel(__raw_readl(0xe615013c) & ~(1 << 22), 0xe615013c);
+
+	/* setup USB phy */
+	__raw_writew(0x0200, 0xe605810a);       /* USBCR1 */
+	__raw_writew(0x00e0, 0xe60581c0);       /* CPFCH */
+	__raw_writew(0x6010, 0xe60581c6);       /* CGPOSR */
+	__raw_writew(0x8a0a, 0xe605810c);       /* USBCR2 */
+
 	sh7377_add_standard_devices();
 
 	platform_add_devices(g4evm_devices, ARRAY_SIZE(g4evm_devices));
-- 
1.6.3.3





^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2010-02-12  8:11 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-12  8:11 [PATCH] ARM: mach-shmobile: G4EVM USBHS support NISHIMOTO Hiroki

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.