]> git.karo-electronics.de Git - linux-beck.git/commitdiff
ARM: mmp: add usb host support for PXA168
authorNeil Zhang <zhangwm@marvell.com>
Thu, 3 May 2012 06:19:15 +0000 (14:19 +0800)
committerHaojian Zhuang <haojian.zhuang@gmail.com>
Thu, 3 May 2012 07:06:05 +0000 (15:06 +0800)
The ehci-mv can support PXA168, PXA910 and PXA920, use this driver to
support pxa168 SPH usb.

Signed-off-by: Neil Zhang <zhangwm@marvell.com>
Signed-off-by: Haojian Zhuang <haojian.zhuang@gmail.com>
arch/arm/mach-mmp/devices.c
arch/arm/mach-mmp/include/mach/pxa168.h
arch/arm/mach-mmp/pxa168.c

index 262179f451097b9284192a370c2a7fd111d21c11..dd2d8b103cc8e4416f3e6575524898548d104d4b 100644 (file)
@@ -114,7 +114,7 @@ static void u2o_write(void __iomem *base, unsigned int offset,
 
 #if defined(CONFIG_USB_MV_UDC) || defined(CONFIG_USB_EHCI_MV)
 
-#if defined(CONFIG_CPU_PXA910)
+#if defined(CONFIG_CPU_PXA910) || defined(CONFIG_CPU_PXA168)
 
 static DEFINE_MUTEX(phy_lock);
 static int phy_init_cnt;
index dc03d580a06d64737dab0962bcab81ffa296eddd..09dcd6e2b6a8431a5f64528631fd0c92a809cdbe 100644 (file)
@@ -16,6 +16,7 @@ extern void pxa168_clear_keypad_wakeup(void);
 #include <plat/pxa27x_keypad.h>
 #include <mach/cputype.h>
 #include <linux/pxa168_eth.h>
+#include <linux/platform_data/mv_usb.h>
 
 extern struct pxa_device_desc pxa168_device_uart1;
 extern struct pxa_device_desc pxa168_device_uart2;
@@ -36,12 +37,9 @@ extern struct pxa_device_desc pxa168_device_fb;
 extern struct pxa_device_desc pxa168_device_keypad;
 extern struct pxa_device_desc pxa168_device_eth;
 
-struct pxa168_usb_pdata {
-       /* If NULL, default phy init routine for PXA168 would be called */
-       int (*phy_init)(void __iomem *usb_phy_reg_base);
-};
 /* pdata can be NULL */
-int __init pxa168_add_usb_host(struct pxa168_usb_pdata *pdata);
+extern int __init pxa168_add_usb_host(struct mv_usb_platform_data *pdata);
+
 
 extern struct platform_device pxa168_device_gpio;
 
index b24d2c32cba984c1b72a3b2f20761c944d24ced5..62d787c3447569da2815025accced28a6379b17c 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/io.h>
 #include <linux/clk.h>
 #include <linux/platform_device.h>
+#include <linux/platform_data/mv_usb.h>
 
 #include <asm/mach/time.h>
 #include <asm/system_misc.h>
@@ -27,6 +28,7 @@
 #include <mach/mfp.h>
 #include <linux/dma-mapping.h>
 #include <mach/pxa168.h>
+#include <mach/regs-usb.h>
 
 #include "common.h"
 #include "clock.h"
@@ -93,7 +95,7 @@ static struct clk_lookup pxa168_clkregs[] = {
        INIT_CLKREG(&clk_gpio, "pxa-gpio", NULL),
        INIT_CLKREG(&clk_keypad, "pxa27x-keypad", NULL),
        INIT_CLKREG(&clk_eth, "pxa168-eth", "MFUCLK"),
-       INIT_CLKREG(&clk_usb, "pxa168-ehci", "PXA168-USBCLK"),
+       INIT_CLKREG(&clk_usb, NULL, "PXA168-USBCLK"),
        INIT_CLKREG(&clk_rtc, "sa1100-rtc", NULL),
 };
 
@@ -184,17 +186,17 @@ struct platform_device pxa168_device_gpio = {
 struct resource pxa168_usb_host_resources[] = {
        /* USB Host conroller register base */
        [0] = {
-               .start  = 0xd4209000,
-               .end    = 0xd4209000 + 0x200,
+               .start  = PXA168_U2H_REGBASE + U2x_CAPREGS_OFFSET,
+               .end    = PXA168_U2H_REGBASE + USB_REG_RANGE,
                .flags  = IORESOURCE_MEM,
-               .name   = "pxa168-usb-host",
+               .name   = "capregs",
        },
        /* USB PHY register base */
        [1] = {
-               .start  = 0xd4206000,
-               .end    = 0xd4206000 + 0xff,
+               .start  = PXA168_U2H_PHYBASE,
+               .end    = PXA168_U2H_PHYBASE + USB_PHY_RANGE,
                .flags  = IORESOURCE_MEM,
-               .name   = "pxa168-usb-phy",
+               .name   = "phyregs",
        },
        [2] = {
                .start  = IRQ_PXA168_USB2,
@@ -205,7 +207,7 @@ struct resource pxa168_usb_host_resources[] = {
 
 static u64 pxa168_usb_host_dmamask = DMA_BIT_MASK(32);
 struct platform_device pxa168_device_usb_host = {
-       .name = "pxa168-ehci",
+       .name = "pxa-sph",
        .id   = -1,
        .dev  = {
                .dma_mask = &pxa168_usb_host_dmamask,
@@ -216,7 +218,7 @@ struct platform_device pxa168_device_usb_host = {
        .resource      = pxa168_usb_host_resources,
 };
 
-int __init pxa168_add_usb_host(struct pxa168_usb_pdata *pdata)
+int __init pxa168_add_usb_host(struct mv_usb_platform_data *pdata)
 {
        pxa168_device_usb_host.dev.platform_data = pdata;
        return platform_device_register(&pxa168_device_usb_host);