summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRonen Shitrit <rshitrit@marvell.com>2008-09-17 10:08:05 +0300
committerNicolas Pitre <nico@cam.org>2008-12-04 01:28:14 -0500
commitfb6f552930e52699c8ac452c5a79ec3e97e6fc73 (patch)
tree77bbbfc5168695ec20c525eb53094d6d0b45e0ce /drivers
parent061e41fdb5047b1fb161e89664057835935ca1d2 (diff)
downloadop-kernel-dev-fb6f552930e52699c8ac452c5a79ec3e97e6fc73.zip
op-kernel-dev-fb6f552930e52699c8ac452c5a79ec3e97e6fc73.tar.gz
[ARM] Orion: add the option to support different ehci phy initialization
The Orion ehci driver serves the Orion, kirkwood and DD Soc families. Since each of those integrate a different USB phy we should have the ability to use few initialization sequences or to leave the boot loader phy settings as is. Signed-off-by: Ronen Shitrit <rshitrit@marvell.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/host/ehci-orion.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/drivers/usb/host/ehci-orion.c b/drivers/usb/host/ehci-orion.c
index 5416cf9..9d48790 100644
--- a/drivers/usb/host/ehci-orion.c
+++ b/drivers/usb/host/ehci-orion.c
@@ -33,8 +33,9 @@
/*
* Implement Orion USB controller specification guidelines
*/
-static void orion_usb_setup(struct usb_hcd *hcd)
+static void orion_usb_phy_v1_setup(struct usb_hcd *hcd)
{
+ /* The below GLs are according to the Orion Errata document */
/*
* Clear interrupt cause and mask
*/
@@ -258,9 +259,19 @@ static int __init ehci_orion_drv_probe(struct platform_device *pdev)
ehci_orion_conf_mbus_windows(hcd, pd->dram);
/*
- * setup Orion USB controller
+ * setup Orion USB controller.
*/
- orion_usb_setup(hcd);
+ switch (pd->phy_version) {
+ case EHCI_PHY_NA: /* dont change USB phy settings */
+ break;
+ case EHCI_PHY_ORION:
+ orion_usb_phy_v1_setup(hcd);
+ break;
+ case EHCI_PHY_DD:
+ case EHCI_PHY_KW:
+ default:
+ printk(KERN_WARNING "Orion ehci -USB phy version isn't supported.\n");
+ }
err = usb_add_hcd(hcd, irq, IRQF_SHARED | IRQF_DISABLED);
if (err)
OpenPOWER on IntegriCloud