--- zzzz-none-000/linux-3.10.107/arch/mips/ath79/dev-usb.c 2017-06-27 09:49:32.000000000 +0000 +++ vr9-7490-729/linux-3.10.107/arch/mips/ath79/dev-usb.c 2021-11-10 11:53:53.000000000 +0000 @@ -21,24 +21,33 @@ #include #include -#include +#include #include "common.h" #include "dev-usb.h" +#if (defined CONFIG_SOC_AR724X || defined CONFIG_SOC_AR913X || defined CONFIG_SOC_AR933X || defined CONFIG_SOC_AR934X || defined CONFIG_SOC_QCA953X || defined CONFIG_SOC_QCA955X || defined CONFIG_SOC_QCA956X) static u64 ath79_usb_dmamask = DMA_BIT_MASK(32); +#endif +#if (defined CONFIG_SOC_AR71XX || defined CONFIG_SOC_AR724X) static struct usb_ohci_pdata ath79_ohci_pdata = { }; +#endif +#if (defined CONFIG_SOC_AR71XX) static struct usb_ehci_pdata ath79_ehci_pdata_v1 = { .has_synopsys_hc_bug = 1, }; +#endif +#if (defined CONFIG_SOC_AR71XX || defined CONFIG_SOC_AR724X || defined CONFIG_SOC_AR913X || defined CONFIG_SOC_AR933X || defined CONFIG_SOC_AR934X || defined CONFIG_SOC_QCA953X || defined CONFIG_SOC_QCA955X || defined CONFIG_SOC_QCA956X) static struct usb_ehci_pdata ath79_ehci_pdata_v2 = { .caps_offset = 0x100, .has_tt = 1, }; +#endif +#if (defined CONFIG_SOC_AR724X || defined CONFIG_SOC_AR913X || defined CONFIG_SOC_AR933X || defined CONFIG_SOC_AR934X || defined CONFIG_SOC_QCA953X || defined CONFIG_SOC_QCA955X || defined CONFIG_SOC_QCA956X) static void __init ath79_usb_register(const char *name, int id, unsigned long base, unsigned long size, int irq, const void *data, @@ -70,6 +79,9 @@ pdev->dev.dma_mask = &ath79_usb_dmamask; pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); } +#endif + +#if (defined CONFIG_SOC_AR724X) #define AR71XX_USB_RESET_MASK (AR71XX_RESET_USB_HOST | \ AR71XX_RESET_USB_PHY | \ @@ -105,7 +117,9 @@ ATH79_CPU_IRQ(3), &ath79_ehci_pdata_v1, sizeof(ath79_ehci_pdata_v1)); } +#endif +#if (defined CONFIG_SOC_AR724X) static void __init ar7240_usb_setup(void) { void __iomem *usb_ctrl_base; @@ -147,7 +161,9 @@ ATH79_CPU_IRQ(3), &ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2)); } +#endif +#if (defined CONFIG_SOC_AR913X) static void __init ar913x_usb_setup(void) { ath79_device_reset_set(AR913X_RESET_USBSUS_OVERRIDE); @@ -164,7 +180,9 @@ ATH79_CPU_IRQ(3), &ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2)); } +#endif +#if (defined CONFIG_SOC_AR933X) static void __init ar933x_usb_setup(void) { ath79_device_reset_set(AR933X_RESET_USBSUS_OVERRIDE); @@ -181,7 +199,9 @@ ATH79_CPU_IRQ(3), &ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2)); } +#endif +#if (defined CONFIG_SOC_AR934X) static void __init ar934x_usb_setup(void) { u32 bootstrap; @@ -207,36 +227,123 @@ ATH79_CPU_IRQ(3), &ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2)); } +#endif + +#if (defined CONFIG_SOC_QCA953X) +static void __init qca953x_usb_setup(void) +{ + u32 bootstrap; + + bootstrap = ath79_reset_rr (QCA953X_REGOFS__RESET__RST_BOOTSTRAP); + + ath79_device_reset_set (BIT (QCA953X_SSB__RESET__RST_RESET__USB_PHY_SUSPEND_OVERRIDE)); + udelay(1000); + + ath79_device_reset_clear (BIT (QCA953X_SSB__RESET__RST_RESET__USB_PHY_RESET)); + udelay(1000); + + ath79_device_reset_clear (BIT (QCA953X_SSB__RESET__RST_RESET__USB_PHY_ARESET)); + udelay(1000); + + ath79_device_reset_clear (BIT (QCA953X_SSB__RESET__RST_RESET__USB_HOST_RESET)); + udelay(1000); + + ath79_usb_register ( + "ehci-platform", -1, + QCA953X_EHCI_BASE, QCA953X_EHCI_SIZE, + ATH79_CPU_IRQ(3), + &ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2)); +} +#endif +#if (defined CONFIG_SOC_QCA955X) static void __init qca955x_usb_setup(void) { - ath79_usb_register("ehci-platform", 0, - QCA955X_EHCI0_BASE, QCA955X_EHCI_SIZE, - ATH79_IP3_IRQ(0), - &ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2)); + ath79_usb_register( + "ehci-platform", 0, + QCA955X_EHCI0_BASE, QCA955X_EHCI_SIZE, + ATH79_IP3_IRQ(0), + &ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2)); + + ath79_usb_register( + "ehci-platform", 1, + QCA955X_EHCI1_BASE, QCA955X_EHCI_SIZE, + ATH79_IP3_IRQ(1), + &ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2)); +} +#endif - ath79_usb_register("ehci-platform", 1, - QCA955X_EHCI1_BASE, QCA955X_EHCI_SIZE, - ATH79_IP3_IRQ(1), - &ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2)); +#if (defined CONFIG_SOC_QCA956X) +static void __init qca956x_usb_setup(void) +{ + ath79_usb_register( + "ehci-platform", 0, + QCA956X_EHCI0_BASE, QCA956X_EHCI_SIZE, + ATH79_IP3_IRQ(0), + &ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2)); + + ath79_usb_register( + "ehci-platform", 1, + QCA956X_EHCI1_BASE, QCA956X_EHCI_SIZE, + ATH79_IP3_IRQ(1), + &ath79_ehci_pdata_v2, sizeof(ath79_ehci_pdata_v2)); } +#endif void __init ath79_register_usb(void) { - if (soc_is_ar71xx()) +#if (defined CONFIG_SOC_AR724X) + if (soc_is_ar71xx()) { ath79_usb_setup(); - else if (soc_is_ar7240()) + } + else +#endif +#if (defined CONFIG_SOC_AR724X) + if (soc_is_ar7240()) { ar7240_usb_setup(); - else if (soc_is_ar7241() || soc_is_ar7242()) + } + else + if (soc_is_ar7241() || soc_is_ar7242()) { ar724x_usb_setup(); - else if (soc_is_ar913x()) + } + else +#endif +#if (defined CONFIG_SOC_AR913X) + if (soc_is_ar913x()) { ar913x_usb_setup(); - else if (soc_is_ar933x()) + } + else +#endif +#if (defined CONFIG_SOC_AR933X) + if (soc_is_ar933x()) { ar933x_usb_setup(); - else if (soc_is_ar934x()) + } + else +#endif +#if (defined CONFIG_SOC_AR934X) + if (soc_is_ar934x()) { ar934x_usb_setup(); - else if (soc_is_qca955x()) - qca955x_usb_setup(); - else - BUG(); + } + else +#endif +#if (defined CONFIG_SOC_QCA953X) + if (soc_is_qca953x()) { + qca953x_usb_setup(); + } + else +#endif +#if (defined CONFIG_SOC_QCA955X) + if (soc_is_qca955x()) { + qca955x_usb_setup(); + } + else +#endif +#if (defined CONFIG_SOC_QCA956X) + if (soc_is_qca956x()) { + qca956x_usb_setup(); + } + else +#endif + BUG(); } +