aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-mx5
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2011-01-03 05:30:28 -0500
committerSascha Hauer <s.hauer@pengutronix.de>2011-02-11 02:40:45 -0500
commit4bd597b633ae630e09d58957bd99870eac35fcb4 (patch)
tree39b829bee667531ac41ea48d7f392ecb9258f956 /arch/arm/mach-mx5
parentcb07625d1f84fb48e6849cb530762ffcc6f8e458 (diff)
ARM i.MX ehci: do ehci init in board specific functions
The mxc-ehci driver calls SoC specific phy initialization right after calling board specific initialization. To offer greater flexibility for boards to setup the phy and to get rid of some unnecessary flags in platform data this patch lets the boards call the SoC specific phy initialization and remove it from the driver. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-mx5')
-rw-r--r--arch/arm/mach-mx5/board-cpuimx51.c13
-rw-r--r--arch/arm/mach-mx5/board-cpuimx51sd.c13
-rw-r--r--arch/arm/mach-mx5/board-mx51_babbage.c13
-rw-r--r--arch/arm/mach-mx5/board-mx51_efikamx.c6
4 files changed, 31 insertions, 14 deletions
diff --git a/arch/arm/mach-mx5/board-cpuimx51.c b/arch/arm/mach-mx5/board-cpuimx51.c
index 2d4199d3790..d0296a94c47 100644
--- a/arch/arm/mach-mx5/board-cpuimx51.c
+++ b/arch/arm/mach-mx5/board-cpuimx51.c
@@ -184,7 +184,10 @@ static int initialize_otg_port(struct platform_device *pdev)
184 v |= MX51_USB_PLL_DIV_19_2_MHZ; 184 v |= MX51_USB_PLL_DIV_19_2_MHZ;
185 __raw_writel(v, usbother_base + MXC_USB_PHY_CTR_FUNC2_OFFSET); 185 __raw_writel(v, usbother_base + MXC_USB_PHY_CTR_FUNC2_OFFSET);
186 iounmap(usb_base); 186 iounmap(usb_base);
187 return 0; 187
188 mdelay(10);
189
190 return mx51_initialize_usb_hw(0, MXC_EHCI_INTERNAL_PHY);
188} 191}
189 192
190static int initialize_usbh1_port(struct platform_device *pdev) 193static int initialize_usbh1_port(struct platform_device *pdev)
@@ -202,13 +205,16 @@ static int initialize_usbh1_port(struct platform_device *pdev)
202 v = __raw_readl(usbother_base + MX51_USB_CTRL_1_OFFSET); 205 v = __raw_readl(usbother_base + MX51_USB_CTRL_1_OFFSET);
203 __raw_writel(v | MX51_USB_CTRL_UH1_EXT_CLK_EN, usbother_base + MX51_USB_CTRL_1_OFFSET); 206 __raw_writel(v | MX51_USB_CTRL_UH1_EXT_CLK_EN, usbother_base + MX51_USB_CTRL_1_OFFSET);
204 iounmap(usb_base); 207 iounmap(usb_base);
205 return 0; 208
209 mdelay(10);
210
211 return mx51_initialize_usb_hw(1, MXC_EHCI_POWER_PINS_ENABLED |
212 MXC_EHCI_ITC_NO_THRESHOLD);
206} 213}
207 214
208static struct mxc_usbh_platform_data dr_utmi_config = { 215static struct mxc_usbh_platform_data dr_utmi_config = {
209 .init = initialize_otg_port, 216 .init = initialize_otg_port,
210 .portsc = MXC_EHCI_UTMI_16BIT, 217 .portsc = MXC_EHCI_UTMI_16BIT,
211 .flags = MXC_EHCI_INTERNAL_PHY,
212}; 218};
213 219
214static struct fsl_usb2_platform_data usb_pdata = { 220static struct fsl_usb2_platform_data usb_pdata = {
@@ -219,7 +225,6 @@ static struct fsl_usb2_platform_data usb_pdata = {
219static struct mxc_usbh_platform_data usbh1_config = { 225static struct mxc_usbh_platform_data usbh1_config = {
220 .init = initialize_usbh1_port, 226 .init = initialize_usbh1_port,
221 .portsc = MXC_EHCI_MODE_ULPI, 227 .portsc = MXC_EHCI_MODE_ULPI,
222 .flags = (MXC_EHCI_POWER_PINS_ENABLED | MXC_EHCI_ITC_NO_THRESHOLD),
223}; 228};
224 229
225static int otg_mode_host; 230static int otg_mode_host;
diff --git a/arch/arm/mach-mx5/board-cpuimx51sd.c b/arch/arm/mach-mx5/board-cpuimx51sd.c
index 6c3b445e395..f38b341ac40 100644
--- a/arch/arm/mach-mx5/board-cpuimx51sd.c
+++ b/arch/arm/mach-mx5/board-cpuimx51sd.c
@@ -167,7 +167,10 @@ static int initialize_otg_port(struct platform_device *pdev)
167 v |= MX51_USB_PLL_DIV_19_2_MHZ; 167 v |= MX51_USB_PLL_DIV_19_2_MHZ;
168 __raw_writel(v, usbother_base + MXC_USB_PHY_CTR_FUNC2_OFFSET); 168 __raw_writel(v, usbother_base + MXC_USB_PHY_CTR_FUNC2_OFFSET);
169 iounmap(usb_base); 169 iounmap(usb_base);
170 return 0; 170
171 mdelay(10);
172
173 return mx51_initialize_usb_hw(0, MXC_EHCI_INTERNAL_PHY);
171} 174}
172 175
173static int initialize_usbh1_port(struct platform_device *pdev) 176static int initialize_usbh1_port(struct platform_device *pdev)
@@ -186,13 +189,16 @@ static int initialize_usbh1_port(struct platform_device *pdev)
186 __raw_writel(v | MX51_USB_CTRL_UH1_EXT_CLK_EN, 189 __raw_writel(v | MX51_USB_CTRL_UH1_EXT_CLK_EN,
187 usbother_base + MX51_USB_CTRL_1_OFFSET); 190 usbother_base + MX51_USB_CTRL_1_OFFSET);
188 iounmap(usb_base); 191 iounmap(usb_base);
189 return 0; 192
193 mdelay(10);
194
195 return mx51_initialize_usb_hw(1, MXC_EHCI_POWER_PINS_ENABLED |
196 MXC_EHCI_ITC_NO_THRESHOLD);
190} 197}
191 198
192static struct mxc_usbh_platform_data dr_utmi_config = { 199static struct mxc_usbh_platform_data dr_utmi_config = {
193 .init = initialize_otg_port, 200 .init = initialize_otg_port,
194 .portsc = MXC_EHCI_UTMI_16BIT, 201 .portsc = MXC_EHCI_UTMI_16BIT,
195 .flags = MXC_EHCI_INTERNAL_PHY,
196}; 202};
197 203
198static struct fsl_usb2_platform_data usb_pdata = { 204static struct fsl_usb2_platform_data usb_pdata = {
@@ -203,7 +209,6 @@ static struct fsl_usb2_platform_data usb_pdata = {
203static struct mxc_usbh_platform_data usbh1_config = { 209static struct mxc_usbh_platform_data usbh1_config = {
204 .init = initialize_usbh1_port, 210 .init = initialize_usbh1_port,
205 .portsc = MXC_EHCI_MODE_ULPI, 211 .portsc = MXC_EHCI_MODE_ULPI,
206 .flags = (MXC_EHCI_POWER_PINS_ENABLED | MXC_EHCI_ITC_NO_THRESHOLD),
207}; 212};
208 213
209static int otg_mode_host; 214static int otg_mode_host;
diff --git a/arch/arm/mach-mx5/board-mx51_babbage.c b/arch/arm/mach-mx5/board-mx51_babbage.c
index 2bd9c9e4e6b..7874bcd41db 100644
--- a/arch/arm/mach-mx5/board-mx51_babbage.c
+++ b/arch/arm/mach-mx5/board-mx51_babbage.c
@@ -259,7 +259,10 @@ static int initialize_otg_port(struct platform_device *pdev)
259 v |= MX51_USB_PLL_DIV_19_2_MHZ; 259 v |= MX51_USB_PLL_DIV_19_2_MHZ;
260 __raw_writel(v, usbother_base + MXC_USB_PHY_CTR_FUNC2_OFFSET); 260 __raw_writel(v, usbother_base + MXC_USB_PHY_CTR_FUNC2_OFFSET);
261 iounmap(usb_base); 261 iounmap(usb_base);
262 return 0; 262
263 mdelay(10);
264
265 return mx51_initialize_usb_hw(0, MXC_EHCI_INTERNAL_PHY);
263} 266}
264 267
265static int initialize_usbh1_port(struct platform_device *pdev) 268static int initialize_usbh1_port(struct platform_device *pdev)
@@ -277,13 +280,16 @@ static int initialize_usbh1_port(struct platform_device *pdev)
277 v = __raw_readl(usbother_base + MX51_USB_CTRL_1_OFFSET); 280 v = __raw_readl(usbother_base + MX51_USB_CTRL_1_OFFSET);
278 __raw_writel(v | MX51_USB_CTRL_UH1_EXT_CLK_EN, usbother_base + MX51_USB_CTRL_1_OFFSET); 281 __raw_writel(v | MX51_USB_CTRL_UH1_EXT_CLK_EN, usbother_base + MX51_USB_CTRL_1_OFFSET);
279 iounmap(usb_base); 282 iounmap(usb_base);
280 return 0; 283
284 mdelay(10);
285
286 return mx51_initialize_usb_hw(1, MXC_EHCI_POWER_PINS_ENABLED |
287 MXC_EHCI_ITC_NO_THRESHOLD);
281} 288}
282 289
283static struct mxc_usbh_platform_data dr_utmi_config = { 290static struct mxc_usbh_platform_data dr_utmi_config = {
284 .init = initialize_otg_port, 291 .init = initialize_otg_port,
285 .portsc = MXC_EHCI_UTMI_16BIT, 292 .portsc = MXC_EHCI_UTMI_16BIT,
286 .flags = MXC_EHCI_INTERNAL_PHY,
287}; 293};
288 294
289static struct fsl_usb2_platform_data usb_pdata = { 295static struct fsl_usb2_platform_data usb_pdata = {
@@ -294,7 +300,6 @@ static struct fsl_usb2_platform_data usb_pdata = {
294static struct mxc_usbh_platform_data usbh1_config = { 300static struct mxc_usbh_platform_data usbh1_config = {
295 .init = initialize_usbh1_port, 301 .init = initialize_usbh1_port,
296 .portsc = MXC_EHCI_MODE_ULPI, 302 .portsc = MXC_EHCI_MODE_ULPI,
297 .flags = (MXC_EHCI_POWER_PINS_ENABLED | MXC_EHCI_ITC_NO_THRESHOLD),
298}; 303};
299 304
300static int otg_mode_host; 305static int otg_mode_host;
diff --git a/arch/arm/mach-mx5/board-mx51_efikamx.c b/arch/arm/mach-mx5/board-mx51_efikamx.c
index 2aac4c5b7b5..b0fa55327c3 100644
--- a/arch/arm/mach-mx5/board-mx51_efikamx.c
+++ b/arch/arm/mach-mx5/board-mx51_efikamx.c
@@ -145,13 +145,15 @@ static int initialize_otg_port(struct platform_device *pdev)
145 v |= MX51_USB_PLL_DIV_24_MHZ; 145 v |= MX51_USB_PLL_DIV_24_MHZ;
146 __raw_writel(v, usbother_base + MXC_USB_PHY_CTR_FUNC2_OFFSET); 146 __raw_writel(v, usbother_base + MXC_USB_PHY_CTR_FUNC2_OFFSET);
147 iounmap(usb_base); 147 iounmap(usb_base);
148 return 0; 148
149 mdelay(10);
150
151 return mx51_initialize_usb_hw(0, MXC_EHCI_INTERNAL_PHY);
149} 152}
150 153
151static struct mxc_usbh_platform_data dr_utmi_config = { 154static struct mxc_usbh_platform_data dr_utmi_config = {
152 .init = initialize_otg_port, 155 .init = initialize_otg_port,
153 .portsc = MXC_EHCI_UTMI_16BIT, 156 .portsc = MXC_EHCI_UTMI_16BIT,
154 .flags = MXC_EHCI_INTERNAL_PHY,
155}; 157};
156 158
157/* PCBID2 PCBID1 PCBID0 STATE 159/* PCBID2 PCBID1 PCBID0 STATE