diff options
Diffstat (limited to 'drivers/usb/host/ohci-nxp.c')
-rw-r--r-- | drivers/usb/host/ohci-nxp.c | 84 |
1 files changed, 1 insertions, 83 deletions
diff --git a/drivers/usb/host/ohci-nxp.c b/drivers/usb/host/ohci-nxp.c index c60066a6360..e068f034cb9 100644 --- a/drivers/usb/host/ohci-nxp.c +++ b/drivers/usb/host/ohci-nxp.c | |||
@@ -2,7 +2,6 @@ | |||
2 | * driver for NXP USB Host devices | 2 | * driver for NXP USB Host devices |
3 | * | 3 | * |
4 | * Currently supported OHCI host devices: | 4 | * Currently supported OHCI host devices: |
5 | * - Philips PNX4008 | ||
6 | * - NXP LPC32xx | 5 | * - NXP LPC32xx |
7 | * | 6 | * |
8 | * Authors: Dmitry Chigirev <source@mvista.com> | 7 | * Authors: Dmitry Chigirev <source@mvista.com> |
@@ -66,38 +65,6 @@ static struct clk *usb_pll_clk; | |||
66 | static struct clk *usb_dev_clk; | 65 | static struct clk *usb_dev_clk; |
67 | static struct clk *usb_otg_clk; | 66 | static struct clk *usb_otg_clk; |
68 | 67 | ||
69 | static void isp1301_configure_pnx4008(void) | ||
70 | { | ||
71 | /* PNX4008 only supports DAT_SE0 USB mode */ | ||
72 | /* PNX4008 R2A requires setting the MAX603 to output 3.6V */ | ||
73 | /* Power up externel charge-pump */ | ||
74 | |||
75 | i2c_smbus_write_byte_data(isp1301_i2c_client, | ||
76 | ISP1301_I2C_MODE_CONTROL_1, MC1_DAT_SE0 | MC1_SPEED_REG); | ||
77 | i2c_smbus_write_byte_data(isp1301_i2c_client, | ||
78 | ISP1301_I2C_MODE_CONTROL_1 | ISP1301_I2C_REG_CLEAR_ADDR, | ||
79 | ~(MC1_DAT_SE0 | MC1_SPEED_REG)); | ||
80 | i2c_smbus_write_byte_data(isp1301_i2c_client, | ||
81 | ISP1301_I2C_MODE_CONTROL_2, | ||
82 | MC2_BI_DI | MC2_PSW_EN | MC2_SPD_SUSP_CTRL); | ||
83 | i2c_smbus_write_byte_data(isp1301_i2c_client, | ||
84 | ISP1301_I2C_MODE_CONTROL_2 | ISP1301_I2C_REG_CLEAR_ADDR, | ||
85 | ~(MC2_BI_DI | MC2_PSW_EN | MC2_SPD_SUSP_CTRL)); | ||
86 | i2c_smbus_write_byte_data(isp1301_i2c_client, | ||
87 | ISP1301_I2C_OTG_CONTROL_1, OTG1_DM_PULLDOWN | OTG1_DP_PULLDOWN); | ||
88 | i2c_smbus_write_byte_data(isp1301_i2c_client, | ||
89 | ISP1301_I2C_OTG_CONTROL_1 | ISP1301_I2C_REG_CLEAR_ADDR, | ||
90 | ~(OTG1_DM_PULLDOWN | OTG1_DP_PULLDOWN)); | ||
91 | i2c_smbus_write_byte_data(isp1301_i2c_client, | ||
92 | ISP1301_I2C_INTERRUPT_LATCH | ISP1301_I2C_REG_CLEAR_ADDR, 0xFF); | ||
93 | i2c_smbus_write_byte_data(isp1301_i2c_client, | ||
94 | ISP1301_I2C_INTERRUPT_FALLING | ISP1301_I2C_REG_CLEAR_ADDR, | ||
95 | 0xFF); | ||
96 | i2c_smbus_write_byte_data(isp1301_i2c_client, | ||
97 | ISP1301_I2C_INTERRUPT_RISING | ISP1301_I2C_REG_CLEAR_ADDR, | ||
98 | 0xFF); | ||
99 | } | ||
100 | |||
101 | static void isp1301_configure_lpc32xx(void) | 68 | static void isp1301_configure_lpc32xx(void) |
102 | { | 69 | { |
103 | /* LPC32XX only supports DAT_SE0 USB mode */ | 70 | /* LPC32XX only supports DAT_SE0 USB mode */ |
@@ -149,10 +116,7 @@ static void isp1301_configure_lpc32xx(void) | |||
149 | 116 | ||
150 | static void isp1301_configure(void) | 117 | static void isp1301_configure(void) |
151 | { | 118 | { |
152 | if (machine_is_pnx4008()) | 119 | isp1301_configure_lpc32xx(); |
153 | isp1301_configure_pnx4008(); | ||
154 | else | ||
155 | isp1301_configure_lpc32xx(); | ||
156 | } | 120 | } |
157 | 121 | ||
158 | static inline void isp1301_vbus_on(void) | 122 | static inline void isp1301_vbus_on(void) |
@@ -241,47 +205,6 @@ static const struct hc_driver ohci_nxp_hc_driver = { | |||
241 | .start_port_reset = ohci_start_port_reset, | 205 | .start_port_reset = ohci_start_port_reset, |
242 | }; | 206 | }; |
243 | 207 | ||
244 | static void nxp_set_usb_bits(void) | ||
245 | { | ||
246 | if (machine_is_pnx4008()) { | ||
247 | start_int_set_falling_edge(SE_USB_OTG_ATX_INT_N); | ||
248 | start_int_ack(SE_USB_OTG_ATX_INT_N); | ||
249 | start_int_umask(SE_USB_OTG_ATX_INT_N); | ||
250 | |||
251 | start_int_set_rising_edge(SE_USB_OTG_TIMER_INT); | ||
252 | start_int_ack(SE_USB_OTG_TIMER_INT); | ||
253 | start_int_umask(SE_USB_OTG_TIMER_INT); | ||
254 | |||
255 | start_int_set_rising_edge(SE_USB_I2C_INT); | ||
256 | start_int_ack(SE_USB_I2C_INT); | ||
257 | start_int_umask(SE_USB_I2C_INT); | ||
258 | |||
259 | start_int_set_rising_edge(SE_USB_INT); | ||
260 | start_int_ack(SE_USB_INT); | ||
261 | start_int_umask(SE_USB_INT); | ||
262 | |||
263 | start_int_set_rising_edge(SE_USB_NEED_CLK_INT); | ||
264 | start_int_ack(SE_USB_NEED_CLK_INT); | ||
265 | start_int_umask(SE_USB_NEED_CLK_INT); | ||
266 | |||
267 | start_int_set_rising_edge(SE_USB_AHB_NEED_CLK_INT); | ||
268 | start_int_ack(SE_USB_AHB_NEED_CLK_INT); | ||
269 | start_int_umask(SE_USB_AHB_NEED_CLK_INT); | ||
270 | } | ||
271 | } | ||
272 | |||
273 | static void nxp_unset_usb_bits(void) | ||
274 | { | ||
275 | if (machine_is_pnx4008()) { | ||
276 | start_int_mask(SE_USB_OTG_ATX_INT_N); | ||
277 | start_int_mask(SE_USB_OTG_TIMER_INT); | ||
278 | start_int_mask(SE_USB_I2C_INT); | ||
279 | start_int_mask(SE_USB_INT); | ||
280 | start_int_mask(SE_USB_NEED_CLK_INT); | ||
281 | start_int_mask(SE_USB_AHB_NEED_CLK_INT); | ||
282 | } | ||
283 | } | ||
284 | |||
285 | static int __devinit usb_hcd_nxp_probe(struct platform_device *pdev) | 208 | static int __devinit usb_hcd_nxp_probe(struct platform_device *pdev) |
286 | { | 209 | { |
287 | struct usb_hcd *hcd = 0; | 210 | struct usb_hcd *hcd = 0; |
@@ -376,9 +299,6 @@ static int __devinit usb_hcd_nxp_probe(struct platform_device *pdev) | |||
376 | goto out8; | 299 | goto out8; |
377 | } | 300 | } |
378 | 301 | ||
379 | /* Set all USB bits in the Start Enable register */ | ||
380 | nxp_set_usb_bits(); | ||
381 | |||
382 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 302 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
383 | if (!res) { | 303 | if (!res) { |
384 | dev_err(&pdev->dev, "Failed to get MEM resource\n"); | 304 | dev_err(&pdev->dev, "Failed to get MEM resource\n"); |
@@ -413,7 +333,6 @@ static int __devinit usb_hcd_nxp_probe(struct platform_device *pdev) | |||
413 | 333 | ||
414 | nxp_stop_hc(); | 334 | nxp_stop_hc(); |
415 | out8: | 335 | out8: |
416 | nxp_unset_usb_bits(); | ||
417 | usb_put_hcd(hcd); | 336 | usb_put_hcd(hcd); |
418 | out7: | 337 | out7: |
419 | clk_disable(usb_otg_clk); | 338 | clk_disable(usb_otg_clk); |
@@ -441,7 +360,6 @@ static int usb_hcd_nxp_remove(struct platform_device *pdev) | |||
441 | nxp_stop_hc(); | 360 | nxp_stop_hc(); |
442 | release_mem_region(hcd->rsrc_start, hcd->rsrc_len); | 361 | release_mem_region(hcd->rsrc_start, hcd->rsrc_len); |
443 | usb_put_hcd(hcd); | 362 | usb_put_hcd(hcd); |
444 | nxp_unset_usb_bits(); | ||
445 | clk_disable(usb_pll_clk); | 363 | clk_disable(usb_pll_clk); |
446 | clk_put(usb_pll_clk); | 364 | clk_put(usb_pll_clk); |
447 | clk_disable(usb_dev_clk); | 365 | clk_disable(usb_dev_clk); |