diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2011-01-03 05:30:28 -0500 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2011-02-11 02:40:45 -0500 |
commit | 4bd597b633ae630e09d58957bd99870eac35fcb4 (patch) | |
tree | 39b829bee667531ac41ea48d7f392ecb9258f956 /arch/arm/mach-mx5 | |
parent | cb07625d1f84fb48e6849cb530762ffcc6f8e458 (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.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-mx5/board-cpuimx51sd.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-mx5/board-mx51_babbage.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-mx5/board-mx51_efikamx.c | 6 |
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 2d4199d37905..d0296a94c475 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 | ||
190 | static int initialize_usbh1_port(struct platform_device *pdev) | 193 | static 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 | ||
208 | static struct mxc_usbh_platform_data dr_utmi_config = { | 215 | static 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 | ||
214 | static struct fsl_usb2_platform_data usb_pdata = { | 220 | static struct fsl_usb2_platform_data usb_pdata = { |
@@ -219,7 +225,6 @@ static struct fsl_usb2_platform_data usb_pdata = { | |||
219 | static struct mxc_usbh_platform_data usbh1_config = { | 225 | static 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 | ||
225 | static int otg_mode_host; | 230 | static int otg_mode_host; |
diff --git a/arch/arm/mach-mx5/board-cpuimx51sd.c b/arch/arm/mach-mx5/board-cpuimx51sd.c index 6c3b445e3951..f38b341ac405 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 | ||
173 | static int initialize_usbh1_port(struct platform_device *pdev) | 176 | static 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 | ||
192 | static struct mxc_usbh_platform_data dr_utmi_config = { | 199 | static 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 | ||
198 | static struct fsl_usb2_platform_data usb_pdata = { | 204 | static struct fsl_usb2_platform_data usb_pdata = { |
@@ -203,7 +209,6 @@ static struct fsl_usb2_platform_data usb_pdata = { | |||
203 | static struct mxc_usbh_platform_data usbh1_config = { | 209 | static 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 | ||
209 | static int otg_mode_host; | 214 | static 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 2bd9c9e4e6ba..7874bcd41db5 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 | ||
265 | static int initialize_usbh1_port(struct platform_device *pdev) | 268 | static 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 | ||
283 | static struct mxc_usbh_platform_data dr_utmi_config = { | 290 | static 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 | ||
289 | static struct fsl_usb2_platform_data usb_pdata = { | 295 | static struct fsl_usb2_platform_data usb_pdata = { |
@@ -294,7 +300,6 @@ static struct fsl_usb2_platform_data usb_pdata = { | |||
294 | static struct mxc_usbh_platform_data usbh1_config = { | 300 | static 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 | ||
300 | static int otg_mode_host; | 305 | static 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 2aac4c5b7b51..b0fa55327c37 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 | ||
151 | static struct mxc_usbh_platform_data dr_utmi_config = { | 154 | static 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 |