Changeset 47981


Ignore:
Timestamp:
2015-12-23T15:44:44+01:00 (2 years ago)
Author:
blogic
Message:

ar71xx: update QCA956x support

  • separate qca956x and tp9343 (they use different IDs)
  • rename qca9561->qca956x for consistency
  • add missing bits (device reset, gpio output select)
  • fix wmac setup

Signed-off-by: Roman Yeryomin <roman@…>

Location:
trunk/target/linux/ar71xx/patches-4.1
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/patches-4.1/621-MIPS-ath79-add-support-for-QCA956x-SoC.patch

    r47363 r47981  
    130130        else if (soc_is_qca955x()) 
    131131                qca955x_clocks_init(); 
    132 +       else if (soc_is_qca956x()) 
     132+       else if (soc_is_qca956x() || soc_is_tp9343()) 
    133133+               qca956x_clocks_init(); 
    134134        else 
     
    141141        else if (soc_is_qca955x()) 
    142142                reg = QCA955X_RESET_REG_RESET_MODULE; 
    143 +       else if (soc_is_qca956x()) 
     143+       else if (soc_is_qca956x() || soc_is_tp9343()) 
    144144+               reg = QCA956X_RESET_REG_RESET_MODULE; 
    145145        else 
     
    150150        else if (soc_is_qca955x()) 
    151151                reg = QCA955X_RESET_REG_RESET_MODULE; 
    152 +       else if (soc_is_qca956x()) 
     152+       else if (soc_is_qca956x() || soc_is_tp9343()) 
    153153+               reg = QCA956X_RESET_REG_RESET_MODULE; 
    154154        else 
    155155                panic("Reset register not defined for this SOC"); 
     156  
     157@@ -133,6 +137,8 @@ u32 ath79_device_reset_get(u32 mask) 
     158                reg = AR933X_RESET_REG_RESET_MODULE; 
     159        else if (soc_is_ar934x()) 
     160                reg = AR934X_RESET_REG_RESET_MODULE; 
     161+       else if (soc_is_qca956x() || soc_is_tp9343()) 
     162+               reg = QCA956X_RESET_REG_RESET_MODULE; 
     163        else 
     164                BUG(); 
    156165  
    157166--- a/arch/mips/ath79/dev-common.c 
    158167+++ b/arch/mips/ath79/dev-common.c 
    159 @@ -94,7 +94,8 @@ void __init ath79_register_uart(void) 
     168@@ -94,7 +94,9 @@ void __init ath79_register_uart(void) 
    160169            soc_is_ar913x() || 
    161170            soc_is_ar934x() || 
     
    163172-           soc_is_qca955x()) { 
    164173+           soc_is_qca955x() || 
    165 +           soc_is_qca956x()) { 
     174+           soc_is_qca956x() || 
     175+           soc_is_tp9343()) { 
    166176                ath79_uart_data[0].uartclk = uart_clk_rate; 
    167177                platform_device_register(&ath79_uart_device); 
     
    193203        else if (soc_is_qca955x()) 
    194204                qca955x_usb_setup(); 
    195 +       else if (soc_is_qca9561()) 
     205+       else if (soc_is_qca956x()) 
    196206+               qca956x_usb_setup(); 
    197207        else 
     
    200210--- a/arch/mips/ath79/dev-wmac.c 
    201211+++ b/arch/mips/ath79/dev-wmac.c 
    202 @@ -189,6 +189,24 @@ static void qca955x_wmac_setup(void) 
     212@@ -189,6 +189,26 @@ static void qca955x_wmac_setup(void) 
    203213                ath79_wmac_data.is_clk_25mhz = true; 
    204214 } 
     
    220230+       else 
    221231+               ath79_wmac_data.is_clk_25mhz = true; 
     232+ 
     233+       ath79_wmac_data.get_mac_revision = ar93xx_get_soc_revision; 
    222234+} 
    223235+ 
     
    229241        else if (soc_is_qca955x()) 
    230242                qca955x_wmac_setup(); 
    231 +       else if (soc_is_qca956x()) 
     243+       else if (soc_is_qca956x() || soc_is_tp9343()) 
    232244+               qca956x_wmac_setup(); 
    233245        else 
     
    241253        case REV_ID_MAJOR_QCA9558: 
    242254+       case REV_ID_MAJOR_TP9343: 
    243 +       case REV_ID_MAJOR_QCA9561: 
     255+       case REV_ID_MAJOR_QCA956X: 
    244256                _prom_putchar = prom_putchar_ar71xx; 
    245257                break; 
     
    247259--- a/arch/mips/ath79/gpio.c 
    248260+++ b/arch/mips/ath79/gpio.c 
    249 @@ -148,7 +148,8 @@ static void __iomem *ath79_gpio_get_func 
     261@@ -148,7 +148,10 @@ static void __iomem *ath79_gpio_get_func 
    250262            soc_is_ar913x() || 
    251263            soc_is_ar933x()) 
     
    253265-       else if (soc_is_ar934x() || soc_is_qca953x()) 
    254266+       else if (soc_is_ar934x() || 
    255 +                soc_is_qca953x() || soc_is_qca956x()) 
     267+                soc_is_qca953x() || 
     268+                soc_is_qca956x() || 
     269+                soc_is_tp9343()) 
    256270                reg = AR934X_GPIO_REG_FUNC; 
    257271        else 
    258272                BUG(); 
    259 @@ -228,12 +229,15 @@ void __init ath79_gpio_init(void) 
     273@@ -187,7 +190,7 @@ void __init ath79_gpio_output_select(uns 
     274        unsigned int reg; 
     275        u32 t, s; 
     276  
     277-       BUG_ON(!soc_is_ar934x() && !soc_is_qca953x()); 
     278+       BUG_ON(!soc_is_ar934x() && !soc_is_qca953x() && !soc_is_qca956x()); 
     279  
     280        if (gpio >= AR934X_GPIO_COUNT) 
     281                return; 
     282@@ -228,12 +231,15 @@ void __init ath79_gpio_init(void) 
    260283                ath79_gpio_count = QCA953X_GPIO_COUNT; 
    261284        else if (soc_is_qca955x()) 
    262285                ath79_gpio_count = QCA955X_GPIO_COUNT; 
    263 +       else if (soc_is_qca956x()) 
     286+       else if (soc_is_qca956x() || soc_is_tp9343()) 
    264287+               ath79_gpio_count = QCA956X_GPIO_COUNT; 
    265288        else 
     
    270293-       if (soc_is_ar934x() || soc_is_qca953x() || soc_is_qca955x()) { 
    271294+       if (soc_is_ar934x() || soc_is_qca953x() || soc_is_qca955x() || 
    272 +           soc_is_qca956x()) { 
     295+           soc_is_qca956x() || soc_is_tp9343()) { 
    273296                ath79_gpio_chip.direction_input = ar934x_gpio_direction_input; 
    274297                ath79_gpio_chip.direction_output = ar934x_gpio_direction_output; 
     
    276299--- a/arch/mips/ath79/irq.c 
    277300+++ b/arch/mips/ath79/irq.c 
    278 @@ -107,7 +107,8 @@ static void __init ath79_misc_irq_init(v 
     301@@ -107,7 +107,9 @@ static void __init ath79_misc_irq_init(v 
    279302                 soc_is_ar933x() || 
    280303                 soc_is_ar934x() || 
     
    282305-                soc_is_qca955x()) 
    283306+                soc_is_qca955x() || 
    284 +                soc_is_qca956x()) 
     307+                soc_is_qca956x() || 
     308+                soc_is_tp9343()) 
    285309                ath79_misc_irq_chip.irq_ack = ar724x_misc_irq_ack; 
    286310        else 
    287311                BUG(); 
    288 @@ -268,6 +269,97 @@ static void qca955x_irq_init(void) 
     312@@ -268,6 +270,97 @@ static void qca955x_irq_init(void) 
    289313        irq_set_chained_handler(ATH79_CPU_IRQ(3), qca955x_ip3_irq_dispatch); 
    290314 } 
     
    384408 { 
    385409        unsigned long pending; 
    386 @@ -397,6 +489,9 @@ void __init arch_init_irq(void) 
     410@@ -397,6 +490,9 @@ void __init arch_init_irq(void) 
    387411        } else if (soc_is_qca955x()) { 
    388412                ath79_ip2_handler = ath79_default_ip2_handler; 
    389413                ath79_ip3_handler = ath79_default_ip3_handler; 
    390 +       } else if (soc_is_qca956x()) { 
     414+       } else if (soc_is_qca956x() || soc_is_tp9343()) { 
    391415+               ath79_ip2_handler = ath79_default_ip2_handler; 
    392416+               ath79_ip3_handler = ath79_default_ip3_handler; 
     
    394418                BUG(); 
    395419        } 
    396 @@ -410,4 +505,6 @@ void __init arch_init_irq(void) 
     420@@ -410,4 +506,6 @@ void __init arch_init_irq(void) 
    397421                qca953x_irq_init(); 
    398422        else if (soc_is_qca955x()) 
    399423                qca955x_irq_init(); 
    400 +       else if (soc_is_qca956x()) 
     424+       else if (soc_is_qca956x() || soc_is_tp9343()) 
    401425+               qca956x_irq_init(); 
    402426 } 
     
    429453                        ath79_pci_irq_map = qca955x_pci_irq_map; 
    430454                        ath79_pci_nr_irqs = ARRAY_SIZE(qca955x_pci_irq_map); 
    431 +               } else if (soc_is_qca9561()) { 
     455+               } else if (soc_is_qca956x()) { 
    432456+                       ath79_pci_irq_map = qca956x_pci_irq_map; 
    433457+                       ath79_pci_nr_irqs = ARRAY_SIZE(qca956x_pci_irq_map); 
     
    439463                                                 1, 
    440464                                                 ATH79_IP3_IRQ(2)); 
    441 +       } else if (soc_is_qca9561()) { 
     465+       } else if (soc_is_qca956x()) { 
    442466+               pdev = ath79_register_pci_ar724x(0, 
    443467+                                                QCA956X_PCI_CFG_BASE1, 
     
    457481                break; 
    458482  
     483+       case REV_ID_MAJOR_QCA956X: 
     484+               ath79_soc = ATH79_SOC_QCA956X; 
     485+               chip = "956X"; 
     486+               rev = id & QCA956X_REV_ID_REVISION_MASK; 
     487+               break; 
     488+ 
    459489+       case REV_ID_MAJOR_TP9343: 
    460490+               ath79_soc = ATH79_SOC_TP9343; 
    461491+               chip = "9343"; 
    462 +               rev = id & QCA956X_REV_ID_REVISION_MASK; 
    463 +               break; 
    464 + 
    465 +       case REV_ID_MAJOR_QCA9561: 
    466 +               ath79_soc = ATH79_SOC_QCA9561; 
    467 +               chip = "9561"; 
    468492+               rev = id & QCA956X_REV_ID_REVISION_MASK; 
    469493+               break; 
     
    477501  
    478502-       if (soc_is_qca953x() || soc_is_qca955x()) 
    479 +       if (soc_is_qca953x() || soc_is_qca955x() || soc_is_qca9561()) 
     503+       if (soc_is_qca953x() || soc_is_qca955x() || soc_is_qca956x()) 
    480504                sprintf(ath79_sys_type, "Qualcomm Atheros QCA%s ver %u rev %u", 
    481505                        chip, ver, rev); 
     
    512536 #define AR9300_OTP_STATUS      0x15f18 
    513537 #define AR9300_OTP_STATUS_TYPE         0x7 
    514 @@ -375,6 +392,49 @@ 
     538@@ -152,6 +169,13 @@ 
     539 #define AR9300_OTP_READ_DATA   0x15f1c 
     540  
     541 /* 
     542+ * Hidden Registers 
     543+ */ 
     544+#define QCA956X_DAM_RESET_OFFSET       0xb90001bc 
     545+#define QCA956X_DAM_RESET_SIZE         0x4 
     546+#define QCA956X_INLINE_CHKSUM_ENG      BIT(27) 
     547+ 
     548+/* 
     549  * DDR_CTRL block 
     550  */ 
     551 #define AR71XX_DDR_REG_PCI_WIN0                0x7c 
     552@@ -375,6 +399,49 @@ 
    515553 #define QCA955X_PLL_CLK_CTRL_DDRCLK_FROM_DDRPLL                BIT(21) 
    516554 #define QCA955X_PLL_CLK_CTRL_AHBCLK_FROM_DDRPLL                BIT(24) 
     
    562600  * USB_CONFIG block 
    563601  */ 
    564 @@ -422,6 +482,11 @@ 
     602@@ -422,6 +489,11 @@ 
    565603 #define QCA955X_RESET_REG_BOOTSTRAP            0xb0 
    566604 #define QCA955X_RESET_REG_EXT_INT_STATUS       0xac 
     
    574612 #define MISC_INT_TIMER4                        BIT(10) 
    575613 #define MISC_INT_TIMER3                        BIT(9) 
    576 @@ -596,6 +661,8 @@ 
     614@@ -596,6 +668,8 @@ 
    577615  
    578616 #define QCA955X_BOOTSTRAP_REF_CLK_40   BIT(4) 
     
    583621 #define AR934X_PCIE_WMAC_INT_WMAC_TX           BIT(1) 
    584622 #define AR934X_PCIE_WMAC_INT_WMAC_RXLP         BIT(2) 
    585 @@ -663,6 +730,37 @@ 
     623@@ -663,6 +737,37 @@ 
    586624         QCA955X_EXT_INT_PCIE_RC2_INT1 | QCA955X_EXT_INT_PCIE_RC2_INT2 | \ 
    587625         QCA955X_EXT_INT_PCIE_RC2_INT3) 
     
    621659 #define REV_ID_MAJOR_AR71XX            0x00a0 
    622660 #define REV_ID_MAJOR_AR913X            0x00b0 
    623 @@ -678,6 +776,8 @@ 
     661@@ -678,6 +783,8 @@ 
    624662 #define REV_ID_MAJOR_QCA9533_V2                0x0160 
    625663 #define REV_ID_MAJOR_QCA9556           0x0130 
    626664 #define REV_ID_MAJOR_QCA9558           0x1130 
    627665+#define REV_ID_MAJOR_TP9343            0x0150 
    628 +#define REV_ID_MAJOR_QCA9561           0x1150 
     666+#define REV_ID_MAJOR_QCA956X           0x1150 
    629667  
    630668 #define AR71XX_REV_ID_MINOR_MASK       0x3 
    631669 #define AR71XX_REV_ID_MINOR_AR7130     0x0 
    632 @@ -702,6 +802,8 @@ 
     670@@ -702,6 +809,8 @@ 
    633671  
    634672 #define QCA955X_REV_ID_REVISION_MASK   0xf 
     
    639677  * SPI block 
    640678  */ 
    641 @@ -766,6 +868,19 @@ 
     679@@ -766,6 +875,19 @@ 
    642680 #define QCA953X_GPIO_OUT_MUX_LED_LINK4         44 
    643681 #define QCA953X_GPIO_OUT_MUX_LED_LINK5         45 
     
    659697 #define AR7240_GPIO_COUNT              18 
    660698 #define AR7241_GPIO_COUNT              20 
    661 @@ -774,6 +889,7 @@ 
     699@@ -774,6 +896,7 @@ 
    662700 #define AR934X_GPIO_COUNT              23 
    663701 #define QCA953X_GPIO_COUNT             18 
     
    674712        ATH79_SOC_QCA9558, 
    675713+       ATH79_SOC_TP9343, 
    676 +       ATH79_SOC_QCA9561, 
     714+       ATH79_SOC_QCA956X, 
    677715 }; 
    678716  
    679717 extern enum ath79_soc_type ath79_soc; 
    680 @@ -126,6 +128,21 @@ static inline int soc_is_qca955x(void) 
     718@@ -126,6 +128,26 @@ static inline int soc_is_qca955x(void) 
    681719        return soc_is_qca9556() || soc_is_qca9558(); 
    682720 } 
     
    686724+       return ath79_soc == ATH79_SOC_TP9343; 
    687725+} 
    688 +  
     726+ 
    689727+static inline int soc_is_qca9561(void) 
    690728+{ 
    691 +       return ath79_soc == ATH79_SOC_QCA9561; 
     729+       return ath79_soc == ATH79_SOC_QCA956X; 
     730+} 
     731+ 
     732+static inline int soc_is_qca9563(void) 
     733+{ 
     734+       return ath79_soc == ATH79_SOC_QCA956X; 
    692735+} 
    693736+ 
    694737+static inline int soc_is_qca956x(void) 
    695738+{ 
    696 +       return soc_is_tp9343() || soc_is_qca9561(); 
     739+       return soc_is_qca9561() || soc_is_qca9563(); 
    697740+} 
    698741+ 
  • trunk/target/linux/ar71xx/patches-4.1/739-MIPS-ath79-add-gpio-func-register-for-QCA955x-SoC.patch

    r46560 r47981  
    11--- a/arch/mips/ath79/gpio.c 
    22+++ b/arch/mips/ath79/gpio.c 
    3 @@ -221,15 +221,27 @@ void __init ath79_gpio_output_select(uns 
     3@@ -221,15 +221,30 @@ void __init ath79_gpio_output_select(uns 
    44 { 
    55        void __iomem *base = ath79_gpio_base; 
     
    1010        u32 t, s; 
    1111  
    12 -       BUG_ON(!soc_is_ar934x() && !soc_is_qca953x()); 
     12-       BUG_ON(!soc_is_ar934x() && !soc_is_qca953x() && !soc_is_qca956x()); 
    1313+       if (soc_is_ar934x()) { 
    1414+               gpio_count = AR934X_GPIO_COUNT; 
     
    2020+               gpio_count = QCA955X_GPIO_COUNT; 
    2121+               reg_base = QCA955X_GPIO_REG_OUT_FUNC0; 
     22+       } else if (soc_is_qca956x()) { 
     23+               gpio_count = QCA956X_GPIO_COUNT; 
     24+               reg_base = QCA956X_GPIO_REG_OUT_FUNC0; 
    2225+       } else { 
    2326+               BUG(); 
Note: See TracChangeset for help on using the changeset viewer.