aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2011-11-12 10:54:20 +0000
committerGabor Juhos <juhosg@openwrt.org>2011-11-12 10:54:20 +0000
commita9216bb76e49254eafb93d3a5fa1e24ab3589b3c (patch)
tree881457272a4d2fb4391772670bd283a882f30be0 /target/linux
parent346e44105a97a044b5e4f35a4c8090027af47ab2 (diff)
downloadupstream-a9216bb76e49254eafb93d3a5fa1e24ab3589b3c.tar.gz
upstream-a9216bb76e49254eafb93d3a5fa1e24ab3589b3c.tar.bz2
upstream-a9216bb76e49254eafb93d3a5fa1e24ab3589b3c.zip
ar71xx: add AR934x specific USB setup
SVN-Revision: 28980
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/ar71xx/files/arch/mips/ar71xx/dev-usb.c33
1 files changed, 30 insertions, 3 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-usb.c b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-usb.c
index f673571323..57c7ef292c 100644
--- a/target/linux/ar71xx/files/arch/mips/ar71xx/dev-usb.c
+++ b/target/linux/ar71xx/files/arch/mips/ar71xx/dev-usb.c
@@ -182,6 +182,30 @@ static void __init ar933x_usb_setup(void)
platform_device_register(&ar71xx_ehci_device);
}
+static void __init ar934x_usb_setup(void)
+{
+ u32 bootstrap;
+
+ bootstrap = ar71xx_reset_rr(AR934X_RESET_REG_BOOTSTRAP);
+ if (bootstrap & AR934X_BOOTSTRAP_USB_MODE_DEVICE)
+ return;
+
+ ar71xx_device_stop(AR934X_RESET_USBSUS_OVERRIDE);
+ udelay(1000);
+
+ ar71xx_device_start(AR934X_RESET_USB_PHY);
+ udelay(1000);
+
+ ar71xx_device_start(AR934X_RESET_USB_PHY_ANALOG);
+ udelay(1000);
+
+ ar71xx_device_start(AR934X_RESET_USB_HOST);
+ udelay(1000);
+
+ ar71xx_ehci_data.is_ar91xx = 1;
+ platform_device_register(&ar71xx_ehci_device);
+}
+
void __init ar71xx_add_device_usb(void)
{
switch (ar71xx_soc) {
@@ -202,9 +226,6 @@ void __init ar71xx_add_device_usb(void)
case AR71XX_SOC_AR9130:
case AR71XX_SOC_AR9132:
- case AR71XX_SOC_AR9341:
- case AR71XX_SOC_AR9342:
- case AR71XX_SOC_AR9344:
ar91xx_usb_setup();
break;
@@ -213,6 +234,12 @@ void __init ar71xx_add_device_usb(void)
ar933x_usb_setup();
break;
+ case AR71XX_SOC_AR9341:
+ case AR71XX_SOC_AR9342:
+ case AR71XX_SOC_AR9344:
+ ar934x_usb_setup();
+ break;
+
default:
BUG();
}