diff options
author | Pavankumar Kondeti <pkondeti@codeaurora.org> | 2010-12-08 03:07:07 -0500 |
---|---|---|
committer | David Brown <davidb@codeaurora.org> | 2010-12-16 16:53:39 -0500 |
commit | 7032d512cff979319f308e02223d0cf39b6e9a91 (patch) | |
tree | 871c5da649467110403a97f2a873449d72e74b91 /arch/arm/mach-msm/devices-qsd8x50.c | |
parent | 50bc0ef42c76879f5d68a88c7063603dc0c9789b (diff) |
MSM: Add USB suport for QSD8x50
OTG driver takes care of putting hardware into low power mode. Hence
make peripheral and host devices as children of OTG device and let
runtime PM takes care of notifying peripheral and host state to
OTG device. VBUS power up and shutdown routines are implemented by
modem processor. As RPC infrastructure is not available, configure
USB in peripheral only mode.
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
Diffstat (limited to 'arch/arm/mach-msm/devices-qsd8x50.c')
-rw-r--r-- | arch/arm/mach-msm/devices-qsd8x50.c | 71 |
1 files changed, 71 insertions, 0 deletions
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), |