diff options
Diffstat (limited to 'target/linux')
| -rw-r--r-- | target/linux/ar71xx/files/arch/mips/ar71xx/dev-usb.c | 33 | 
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 f67357132..57c7ef292 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();  	} | 
