diff options
27 files changed, 1434 insertions, 197 deletions
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig index dbbcfeb919db..1a11f1ed216d 100644 --- a/arch/arm/mach-msm/Kconfig +++ b/arch/arm/mach-msm/Kconfig | |||
| @@ -44,6 +44,7 @@ config ARCH_MSM8X60 | |||
| 44 | select CPU_V7 | 44 | select CPU_V7 |
| 45 | select MSM_V2_TLMM | 45 | select MSM_V2_TLMM |
| 46 | select MSM_GPIOMUX | 46 | select MSM_GPIOMUX |
| 47 | select IOMMU_API | ||
| 47 | 48 | ||
| 48 | endchoice | 49 | endchoice |
| 49 | 50 | ||
| @@ -122,6 +123,10 @@ config MACH_MSM8X60_FFA | |||
| 122 | 123 | ||
| 123 | endmenu | 124 | endmenu |
| 124 | 125 | ||
| 126 | config IOMMU_PGTABLES_L2 | ||
| 127 | def_bool y | ||
| 128 | depends on ARCH_MSM8X60 && MMU && SMP && CPU_DCACHE_DISABLE=n | ||
| 129 | |||
| 125 | config MSM_DEBUG_UART | 130 | config MSM_DEBUG_UART |
| 126 | int | 131 | int |
| 127 | default 1 if MSM_DEBUG_UART1 | 132 | default 1 if MSM_DEBUG_UART1 |
| @@ -162,4 +167,7 @@ config MSM_GPIOMUX | |||
| 162 | 167 | ||
| 163 | config MSM_V2_TLMM | 168 | config MSM_V2_TLMM |
| 164 | bool | 169 | bool |
| 170 | |||
| 171 | config IOMMU_API | ||
| 172 | bool | ||
| 165 | endif | 173 | endif |
diff --git a/arch/arm/mach-msm/Makefile b/arch/arm/mach-msm/Makefile index b5a7b07a44f5..59646bbd6195 100644 --- a/arch/arm/mach-msm/Makefile +++ b/arch/arm/mach-msm/Makefile | |||
| @@ -20,6 +20,7 @@ obj-$(CONFIG_MSM_SMD) += smd.o smd_debug.o | |||
| 20 | obj-$(CONFIG_MSM_SMD) += last_radio_log.o | 20 | obj-$(CONFIG_MSM_SMD) += last_radio_log.o |
| 21 | 21 | ||
| 22 | obj-$(CONFIG_MACH_TROUT) += board-trout.o board-trout-gpio.o board-trout-mmc.o devices-msm7x00.o | 22 | obj-$(CONFIG_MACH_TROUT) += board-trout.o board-trout-gpio.o board-trout-mmc.o devices-msm7x00.o |
| 23 | obj-$(CONFIG_MACH_TROUT) += board-trout.o board-trout-gpio.o board-trout-mmc.o board-trout-panel.o devices-msm7x00.o | ||
| 23 | obj-$(CONFIG_MACH_HALIBUT) += board-halibut.o devices-msm7x00.o | 24 | obj-$(CONFIG_MACH_HALIBUT) += board-halibut.o devices-msm7x00.o |
| 24 | obj-$(CONFIG_ARCH_MSM7X30) += board-msm7x30.o devices-msm7x30.o | 25 | obj-$(CONFIG_ARCH_MSM7X30) += board-msm7x30.o devices-msm7x30.o |
| 25 | obj-$(CONFIG_ARCH_QSD8X50) += board-qsd8x50.o devices-qsd8x50.o | 26 | obj-$(CONFIG_ARCH_QSD8X50) += board-qsd8x50.o devices-qsd8x50.o |
| @@ -28,6 +29,8 @@ obj-$(CONFIG_ARCH_MSM8X60) += board-msm8x60.o | |||
| 28 | obj-$(CONFIG_ARCH_MSM7X30) += gpiomux-7x30.o gpiomux-v1.o gpiomux.o | 29 | obj-$(CONFIG_ARCH_MSM7X30) += gpiomux-7x30.o gpiomux-v1.o gpiomux.o |
| 29 | obj-$(CONFIG_ARCH_QSD8X50) += gpiomux-8x50.o gpiomux-v1.o gpiomux.o | 30 | obj-$(CONFIG_ARCH_QSD8X50) += gpiomux-8x50.o gpiomux-v1.o gpiomux.o |
| 30 | obj-$(CONFIG_ARCH_MSM8X60) += gpiomux-8x60.o gpiomux-v2.o gpiomux.o | 31 | obj-$(CONFIG_ARCH_MSM8X60) += gpiomux-8x60.o gpiomux-v2.o gpiomux.o |
| 31 | ifndef CONFIG_MSM_V2_TLMM | 32 | ifdef CONFIG_MSM_V2_TLMM |
| 33 | obj-y += gpio-v2.o | ||
| 34 | else | ||
| 32 | obj-y += gpio.o | 35 | obj-y += gpio.o |
| 33 | endif | 36 | endif |
diff --git a/arch/arm/mach-msm/board-msm7x30.c b/arch/arm/mach-msm/board-msm7x30.c index 05241df3f9b6..6f3b9735e970 100644 --- a/arch/arm/mach-msm/board-msm7x30.c +++ b/arch/arm/mach-msm/board-msm7x30.c | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
| 23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
| 24 | #include <linux/smsc911x.h> | 24 | #include <linux/smsc911x.h> |
| 25 | #include <linux/usb/msm_hsusb.h> | ||
| 25 | 26 | ||
| 26 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
| 27 | #include <asm/mach/arch.h> | 28 | #include <asm/mach/arch.h> |
| @@ -39,11 +40,26 @@ | |||
| 39 | 40 | ||
| 40 | extern struct sys_timer msm_timer; | 41 | extern struct sys_timer msm_timer; |
| 41 | 42 | ||
| 43 | static int hsusb_phy_init_seq[] = { | ||
| 44 | 0x30, 0x32, /* Enable and set Pre-Emphasis Depth to 20% */ | ||
| 45 | 0x02, 0x36, /* Disable CDR Auto Reset feature */ | ||
| 46 | -1 | ||
| 47 | }; | ||
| 48 | |||
| 49 | static struct msm_otg_platform_data msm_otg_pdata = { | ||
| 50 | .phy_init_seq = hsusb_phy_init_seq, | ||
| 51 | .mode = USB_PERIPHERAL, | ||
| 52 | .otg_control = OTG_PHY_CONTROL, | ||
| 53 | }; | ||
| 54 | |||
| 42 | static struct platform_device *devices[] __initdata = { | 55 | static struct platform_device *devices[] __initdata = { |
| 43 | #if defined(CONFIG_SERIAL_MSM) || defined(CONFIG_MSM_SERIAL_DEBUGGER) | 56 | #if defined(CONFIG_SERIAL_MSM) || defined(CONFIG_MSM_SERIAL_DEBUGGER) |
| 44 | &msm_device_uart2, | 57 | &msm_device_uart2, |
| 45 | #endif | 58 | #endif |
| 46 | &msm_device_smd, | 59 | &msm_device_smd, |
| 60 | &msm_device_otg, | ||
| 61 | &msm_device_hsusb, | ||
| 62 | &msm_device_hsusb_host, | ||
| 47 | }; | 63 | }; |
| 48 | 64 | ||
| 49 | static void __init msm7x30_init_irq(void) | 65 | static void __init msm7x30_init_irq(void) |
| @@ -53,6 +69,10 @@ static void __init msm7x30_init_irq(void) | |||
| 53 | 69 | ||
| 54 | static void __init msm7x30_init(void) | 70 | static void __init msm7x30_init(void) |
| 55 | { | 71 | { |
| 72 | msm_device_otg.dev.platform_data = &msm_otg_pdata; | ||
| 73 | msm_device_hsusb.dev.parent = &msm_device_otg.dev; | ||
| 74 | msm_device_hsusb_host.dev.parent = &msm_device_otg.dev; | ||
| 75 | |||
| 56 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 76 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
| 57 | } | 77 | } |
| 58 | 78 | ||
diff --git a/arch/arm/mach-msm/board-qsd8x50.c b/arch/arm/mach-msm/board-qsd8x50.c index ed2af4ad97ed..2e8391307f55 100644 --- a/arch/arm/mach-msm/board-qsd8x50.c +++ b/arch/arm/mach-msm/board-qsd8x50.c | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | #include <linux/gpio.h> | 20 | #include <linux/gpio.h> |
| 21 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
| 22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
| 23 | #include <linux/usb/msm_hsusb.h> | ||
| 23 | 24 | ||
| 24 | #include <asm/mach-types.h> | 25 | #include <asm/mach-types.h> |
| 25 | #include <asm/mach/arch.h> | 26 | #include <asm/mach/arch.h> |
| @@ -74,9 +75,24 @@ static int __init msm_init_smc91x(void) | |||
| 74 | } | 75 | } |
| 75 | module_init(msm_init_smc91x); | 76 | module_init(msm_init_smc91x); |
| 76 | 77 | ||
| 78 | static int hsusb_phy_init_seq[] = { | ||
| 79 | 0x08, 0x31, /* Increase HS Driver Amplitude */ | ||
| 80 | 0x20, 0x32, /* Enable and set Pre-Emphasis Depth to 10% */ | ||
| 81 | -1 | ||
| 82 | }; | ||
| 83 | |||
| 84 | static struct msm_otg_platform_data msm_otg_pdata = { | ||
| 85 | .phy_init_seq = hsusb_phy_init_seq, | ||
| 86 | .mode = USB_PERIPHERAL, | ||
| 87 | .otg_control = OTG_PHY_CONTROL, | ||
| 88 | }; | ||
| 89 | |||
| 77 | static struct platform_device *devices[] __initdata = { | 90 | static struct platform_device *devices[] __initdata = { |
| 78 | &msm_device_uart3, | 91 | &msm_device_uart3, |
| 79 | &msm_device_smd, | 92 | &msm_device_smd, |
| 93 | &msm_device_otg, | ||
| 94 | &msm_device_hsusb, | ||
| 95 | &msm_device_hsusb_host, | ||
| 80 | }; | 96 | }; |
| 81 | 97 | ||
| 82 | static void __init qsd8x50_map_io(void) | 98 | static void __init qsd8x50_map_io(void) |
| @@ -93,6 +109,9 @@ static void __init qsd8x50_init_irq(void) | |||
