diff options
Diffstat (limited to 'arch/arm/mach-msm')
-rw-r--r-- | arch/arm/mach-msm/board-qsd8x50.c | 19 | ||||
-rw-r--r-- | arch/arm/mach-msm/devices-qsd8x50.c | 71 | ||||
-rw-r--r-- | arch/arm/mach-msm/devices.h | 2 |
3 files changed, 92 insertions, 0 deletions
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) | |||
93 | 109 | ||
94 | static void __init qsd8x50_init(void) | 110 | static void __init qsd8x50_init(void) |
95 | { | 111 | { |
112 | msm_device_otg.dev.platform_data = &msm_otg_pdata; | ||
113 | msm_device_hsusb.dev.parent = &msm_device_otg.dev; | ||
114 | msm_device_hsusb_host.dev.parent = &msm_device_otg.dev; | ||
96 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 115 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
97 | } | 116 | } |
98 | 117 | ||
diff --git a/arch/arm/mach-msm/devices-qsd8x50.c b/arch/arm/mach-msm/devices-qsd8x50.c index 6fe67c5d1ae0..a4b798f20ccb 100644 --- a/arch/arm/mach-msm/devices-qsd8x50.c +++ b/arch/arm/mach-msm/devices-qsd8x50.c | |||
@@ -53,6 +53,77 @@ struct platform_device msm_device_smd = { | |||
53 | .id = -1, | 53 | .id = -1, |
54 | }; | 54 | }; |
55 | 55 | ||
56 | static struct resource resources_otg[] = { | ||
57 | { | ||
58 | .start = MSM_HSUSB_PHYS, | ||
59 | .end = MSM_HSUSB_PHYS + MSM_HSUSB_SIZE, | ||
60 | .flags = IORESOURCE_MEM, | ||
61 | }, | ||
62 | { | ||
63 | .start = INT_USB_HS, | ||
64 | .end = INT_USB_HS, | ||
65 | .flags = IORESOURCE_IRQ, | ||
66 | }, | ||
67 | }; | ||
68 | |||
69 | struct platform_device msm_device_otg = { | ||
70 | .name = "msm_otg", | ||
71 | .id = -1, | ||
72 | .num_resources = ARRAY_SIZE(resources_otg), | ||
73 | .resource = resources_otg, | ||
74 | .dev = { | ||
75 | .coherent_dma_mask = 0xffffffff, | ||
76 | }, | ||
77 | }; | ||
78 | |||
79 | static struct resource resources_hsusb[] = { | ||
80 | { | ||
81 | .start = MSM_HSUSB_PHYS, | ||
82 | .end = MSM_HSUSB_PHYS + MSM_HSUSB_SIZE, | ||
83 | .flags = IORESOURCE_MEM, | ||
84 | }, | ||
85 | { | ||
86 | .start = INT_USB_HS, | ||
87 | .end = INT_USB_HS, | ||
88 | .flags = IORESOURCE_IRQ, | ||
89 | }, | ||
90 | }; | ||
91 | |||
92 | struct platform_device msm_device_hsusb = { | ||
93 | .name = "msm_hsusb", | ||
94 | .id = -1, | ||
95 | .num_resources = ARRAY_SIZE(resources_hsusb), | ||
96 | .resource = resources_hsusb, | ||
97 | .dev = { | ||
98 | .coherent_dma_mask = 0xffffffff, | ||
99 | }, | ||
100 | }; | ||
101 | |||
102 | static u64 dma_mask = 0xffffffffULL; | ||
103 | static struct resource resources_hsusb_host[] = { | ||
104 | { | ||
105 | .start = MSM_HSUSB_PHYS, | ||
106 | .end = MSM_HSUSB_PHYS + MSM_HSUSB_SIZE, | ||
107 | .flags = IORESOURCE_MEM, | ||
108 | }, | ||
109 | { | ||
110 | .start = INT_USB_HS, | ||
111 | .end = INT_USB_HS, | ||
112 | .flags = IORESOURCE_IRQ, | ||
113 | }, | ||
114 | }; | ||
115 | |||
116 | struct platform_device msm_device_hsusb_host = { | ||
117 | .name = "msm_hsusb_host", | ||
118 | .id = -1, | ||
119 | .num_resources = ARRAY_SIZE(resources_hsusb_host), | ||
120 | .resource = resources_hsusb_host, | ||
121 | .dev = { | ||
122 | .dma_mask = &dma_mask, | ||
123 | .coherent_dma_mask = 0xffffffffULL, | ||
124 | }, | ||
125 | }; | ||
126 | |||
56 | struct clk msm_clocks_8x50[] = { | 127 | struct clk msm_clocks_8x50[] = { |
57 | CLK_PCOM("adm_clk", ADM_CLK, NULL, 0), | 128 | CLK_PCOM("adm_clk", ADM_CLK, NULL, 0), |
58 | CLK_PCOM("ebi1_clk", EBI1_CLK, NULL, CLK_MIN), | 129 | CLK_PCOM("ebi1_clk", EBI1_CLK, NULL, CLK_MIN), |
diff --git a/arch/arm/mach-msm/devices.h b/arch/arm/mach-msm/devices.h index 68b8075f8ca4..87c70bfce2bd 100644 --- a/arch/arm/mach-msm/devices.h +++ b/arch/arm/mach-msm/devices.h | |||
@@ -28,6 +28,8 @@ extern struct platform_device msm_device_sdc3; | |||
28 | extern struct platform_device msm_device_sdc4; | 28 | extern struct platform_device msm_device_sdc4; |
29 | 29 | ||
30 | extern struct platform_device msm_device_hsusb; | 30 | extern struct platform_device msm_device_hsusb; |
31 | extern struct platform_device msm_device_otg; | ||
32 | extern struct platform_device msm_device_hsusb_host; | ||
31 | 33 | ||
32 | extern struct platform_device msm_device_i2c; | 34 | extern struct platform_device msm_device_i2c; |
33 | 35 | ||