aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx
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-imx
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-imx')
-rw-r--r--arch/arm/mach-imx/mach-cpuimx27.c14
-rw-r--r--arch/arm/mach-imx/mach-eukrea_cpuimx25.c16
-rw-r--r--arch/arm/mach-imx/mach-imx27_visstrim_m10.c7
-rw-r--r--arch/arm/mach-imx/mach-mx25_3ds.c7
-rw-r--r--arch/arm/mach-imx/mach-mx27_3ds.c6
-rw-r--r--arch/arm/mach-imx/mach-pca100.c12
-rw-r--r--arch/arm/mach-imx/mach-pcm038.c8
7 files changed, 56 insertions, 14 deletions
diff --git a/arch/arm/mach-imx/mach-cpuimx27.c b/arch/arm/mach-imx/mach-cpuimx27.c
index cabb800adbb6..6b724c2ed0a7 100644
--- a/arch/arm/mach-imx/mach-cpuimx27.c
+++ b/arch/arm/mach-imx/mach-cpuimx27.c
@@ -210,14 +210,24 @@ static struct platform_device serial_device = {
210#endif 210#endif
211 211
212#if defined(CONFIG_USB_ULPI) 212#if defined(CONFIG_USB_ULPI)
213static int eukrea_cpuimx27_otg_init(struct platform_device *pdev)
214{
215 return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_INTERFACE_DIFF_UNI);
216}
217
213static struct mxc_usbh_platform_data otg_pdata __initdata = { 218static struct mxc_usbh_platform_data otg_pdata __initdata = {
219 .init = eukrea_cpuimx27_otg_init,
214 .portsc = MXC_EHCI_MODE_ULPI, 220 .portsc = MXC_EHCI_MODE_ULPI,
215 .flags = MXC_EHCI_INTERFACE_DIFF_UNI,
216}; 221};
217 222
223static int eukrea_cpuimx27_usbh2_init(struct platform_device *pdev)
224{
225 return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_INTERFACE_DIFF_UNI);
226}
227
218static struct mxc_usbh_platform_data usbh2_pdata __initdata = { 228static struct mxc_usbh_platform_data usbh2_pdata __initdata = {
229 .init = eukrea_cpuimx27_usbh2_init,
219 .portsc = MXC_EHCI_MODE_ULPI, 230 .portsc = MXC_EHCI_MODE_ULPI,
220 .flags = MXC_EHCI_INTERFACE_DIFF_UNI,
221}; 231};
222#endif 232#endif
223 233
diff --git a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c
index 439167dbe8f6..9da8d18eeb00 100644
--- a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c
+++ b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c
@@ -84,15 +84,25 @@ static struct i2c_board_info eukrea_cpuimx25_i2c_devices[] = {
84 }, 84 },
85}; 85};
86 86
87static int eukrea_cpuimx25_otg_init(struct platform_device *pdev)
88{
89 return mx25_initialize_usb_hw(pdev->id, MXC_EHCI_INTERFACE_DIFF_UNI);
90}
91
87static const struct mxc_usbh_platform_data otg_pdata __initconst = { 92static const struct mxc_usbh_platform_data otg_pdata __initconst = {
93 .init = eukrea_cpuimx25_otg_init,
88 .portsc = MXC_EHCI_MODE_UTMI, 94 .portsc = MXC_EHCI_MODE_UTMI,
89 .flags = MXC_EHCI_INTERFACE_DIFF_UNI,
90}; 95};
91 96
97static int eukrea_cpuimx25_usbh2_init(struct platform_device *pdev)
98{
99 return mx25_initialize_usb_hw(pdev->id, MXC_EHCI_INTERFACE_SINGLE_UNI |
100 MXC_EHCI_INTERNAL_PHY | MXC_EHCI_IPPUE_DOWN);
101}
102
92static const struct mxc_usbh_platform_data usbh2_pdata __initconst = { 103static const struct mxc_usbh_platform_data usbh2_pdata __initconst = {
104 .init = eukrea_cpuimx25_usbh2_init,
93 .portsc = MXC_EHCI_MODE_SERIAL, 105 .portsc = MXC_EHCI_MODE_SERIAL,
94 .flags = MXC_EHCI_INTERFACE_SINGLE_UNI | MXC_EHCI_INTERNAL_PHY |
95 MXC_EHCI_IPPUE_DOWN,
96}; 106};
97 107
98static const struct fsl_usb2_platform_data otg_device_pdata __initconst = { 108static const struct fsl_usb2_platform_data otg_device_pdata __initconst = {
diff --git a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
index 494723bf7ea7..ffff2d03f782 100644
--- a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
+++ b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
@@ -30,6 +30,7 @@
30#include <linux/gpio_keys.h> 30#include <linux/gpio_keys.h>
31#include <linux/input.h> 31#include <linux/input.h>
32#include <linux/gpio.h> 32#include <linux/gpio.h>
33#include <linux/delay.h>
33#include <asm/mach-types.h> 34#include <asm/mach-types.h>
34#include <asm/mach/arch.h> 35#include <asm/mach/arch.h>
35#include <asm/mach/time.h> 36#include <asm/mach/time.h>
@@ -210,14 +211,16 @@ static struct i2c_board_info visstrim_m10_i2c_devices[] = {
210static int otg_phy_init(struct platform_device *pdev) 211static int otg_phy_init(struct platform_device *pdev)
211{ 212{
212 gpio_set_value(OTG_PHY_CS_GPIO, 0); 213 gpio_set_value(OTG_PHY_CS_GPIO, 0);
213 return 0; 214
215 mdelay(10);
216
217 return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_POWER_PINS_ENABLED);
214} 218}
215 219
216static const struct mxc_usbh_platform_data 220static const struct mxc_usbh_platform_data
217visstrim_m10_usbotg_pdata __initconst = { 221visstrim_m10_usbotg_pdata __initconst = {
218 .init = otg_phy_init, 222 .init = otg_phy_init,
219 .portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT, 223 .portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT,
220 .flags = MXC_EHCI_POWER_PINS_ENABLED,
221}; 224};
222 225
223static void __init visstrim_m10_board_init(void) 226static void __init visstrim_m10_board_init(void)
diff --git a/arch/arm/mach-imx/mach-mx25_3ds.c b/arch/arm/mach-imx/mach-mx25_3ds.c
index cd18a0c91b83..aafc6f7f1816 100644
--- a/arch/arm/mach-imx/mach-mx25_3ds.c
+++ b/arch/arm/mach-imx/mach-mx25_3ds.c
@@ -185,9 +185,14 @@ static const struct matrix_keymap_data mx25pdk_keymap_data __initconst = {
185 .keymap_size = ARRAY_SIZE(mx25pdk_keymap), 185 .keymap_size = ARRAY_SIZE(mx25pdk_keymap),
186}; 186};
187 187
188static int mx25pdk_usbh2_init(struct platform_device *pdev)
189{
190 return mx25_initialize_usb_hw(pdev->id, MXC_EHCI_INTERNAL_PHY);
191}
192
188static const struct mxc_usbh_platform_data usbh2_pdata __initconst = { 193static const struct mxc_usbh_platform_data usbh2_pdata __initconst = {
194 .init = mx25pdk_usbh2_init,
189 .portsc = MXC_EHCI_MODE_SERIAL, 195 .portsc = MXC_EHCI_MODE_SERIAL,
190 .flags = MXC_EHCI_INTERNAL_PHY,
191}; 196};
192 197
193static const struct fsl_usb2_platform_data otg_device_pdata __initconst = { 198static const struct fsl_usb2_platform_data otg_device_pdata __initconst = {
diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c
index 4e0e225ca4a2..ba88417345ab 100644
--- a/arch/arm/mach-imx/mach-mx27_3ds.c
+++ b/arch/arm/mach-imx/mach-mx27_3ds.c
@@ -160,10 +160,14 @@ static int otg_phy_init(void)
160} 160}
161 161
162#if defined(CONFIG_USB_ULPI) 162#if defined(CONFIG_USB_ULPI)
163static int mx27_3ds_otg_init(struct platform_device *pdev)
164{
165 return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_INTERFACE_DIFF_UNI);
166}
163 167
164static struct mxc_usbh_platform_data otg_pdata __initdata = { 168static struct mxc_usbh_platform_data otg_pdata __initdata = {
169 .init = mx27_3ds_otg_init,
165 .portsc = MXC_EHCI_MODE_ULPI, 170 .portsc = MXC_EHCI_MODE_ULPI,
166 .flags = MXC_EHCI_INTERFACE_DIFF_UNI,
167}; 171};
168#endif 172#endif
169 173
diff --git a/arch/arm/mach-imx/mach-pca100.c b/arch/arm/mach-imx/mach-pca100.c
index 3514178caeda..f754bab040b6 100644
--- a/arch/arm/mach-imx/mach-pca100.c
+++ b/arch/arm/mach-imx/mach-pca100.c
@@ -271,25 +271,29 @@ static const struct imxmmc_platform_data sdhc_pdata __initconst = {
271static int otg_phy_init(struct platform_device *pdev) 271static int otg_phy_init(struct platform_device *pdev)
272{ 272{
273 gpio_set_value(OTG_PHY_CS_GPIO, 0); 273 gpio_set_value(OTG_PHY_CS_GPIO, 0);
274 return 0; 274
275 mdelay(10);
276
277 return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_INTERFACE_DIFF_UNI);
275} 278}
276 279
277static struct mxc_usbh_platform_data otg_pdata __initdata = { 280static struct mxc_usbh_platform_data otg_pdata __initdata = {
278 .init = otg_phy_init, 281 .init = otg_phy_init,
279 .portsc = MXC_EHCI_MODE_ULPI, 282 .portsc = MXC_EHCI_MODE_ULPI,
280 .flags = MXC_EHCI_INTERFACE_DIFF_UNI,
281}; 283};
282 284
283static int usbh2_phy_init(struct platform_device *pdev) 285static int usbh2_phy_init(struct platform_device *pdev)
284{ 286{
285 gpio_set_value(USBH2_PHY_CS_GPIO, 0); 287 gpio_set_value(USBH2_PHY_CS_GPIO, 0);
286 return 0; 288
289 mdelay(10);
290
291 return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_INTERFACE_DIFF_UNI);
287} 292}
288 293
289static struct mxc_usbh_platform_data usbh2_pdata __initdata = { 294static struct mxc_usbh_platform_data usbh2_pdata __initdata = {
290 .init = usbh2_phy_init, 295 .init = usbh2_phy_init,
291 .portsc = MXC_EHCI_MODE_ULPI, 296 .portsc = MXC_EHCI_MODE_ULPI,
292 .flags = MXC_EHCI_INTERFACE_DIFF_UNI,
293}; 297};
294#endif 298#endif
295 299
diff --git a/arch/arm/mach-imx/mach-pcm038.c b/arch/arm/mach-imx/mach-pcm038.c
index 9656ef38ca96..38c77084b615 100644
--- a/arch/arm/mach-imx/mach-pcm038.c
+++ b/arch/arm/mach-imx/mach-pcm038.c
@@ -281,9 +281,15 @@ static struct spi_board_info pcm038_spi_board_info[] __initdata = {
281 } 281 }
282}; 282};
283 283
284static int pcm038_usbh2_init(struct platform_device *pdev)
285{
286 return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_POWER_PINS_ENABLED |
287 MXC_EHCI_INTERFACE_DIFF_UNI);
288}
289
284static const struct mxc_usbh_platform_data usbh2_pdata __initconst = { 290static const struct mxc_usbh_platform_data usbh2_pdata __initconst = {
291 .init = pcm038_usbh2_init,
285 .portsc = MXC_EHCI_MODE_ULPI, 292 .portsc = MXC_EHCI_MODE_ULPI,
286 .flags = MXC_EHCI_POWER_PINS_ENABLED | MXC_EHCI_INTERFACE_DIFF_UNI,
287}; 293};
288 294
289static void __init pcm038_init(void) 295static void __init pcm038_init(void)