Changeset 36431


Ignore:
Timestamp:
2013-04-25T21:02:42+02:00 (5 years ago)
Author:
blogic
Message:

ramips: sync kernel patches with the mips-next tree

Signed-off-by: John Crispin <blogic@…>

Location:
trunk/target/linux/ramips/patches-3.8
Files:
19 added
18 deleted
2 edited
19 moved

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ramips/patches-3.8/0101-MIPS-ralink-add-PCI-IRQ-handling.patch

    r36430 r36431  
    1 From e0fbc01d33265d32fe7f5f34269cb88be2a13c24 Mon Sep 17 00:00:00 2001 
     1From 16d9eaf22f30ed0b0deddfe8e11426889ccdb556 Mon Sep 17 00:00:00 2001 
    22From: Gabor Juhos <juhosg@openwrt.org> 
    3 Date: Sun, 31 Mar 2013 10:17:26 +0200 
    4 Subject: [PATCH] MIPS: ralink: handle PCI interrupts as well 
     3Date: Wed, 10 Apr 2013 09:07:27 +0200 
     4Subject: [PATCH 101/137] MIPS: ralink: add PCI IRQ handling 
    55 
     6The Ralink IRQ code was not handling the PCI IRQ yet. Add this functionaility 
     7to make PCI work on rt3883. 
     8 
     9Signed-off-by: John Crispin <blogic@openwrt.org> 
    610Signed-off-by: Gabor Juhos <juhosg@openwrt.org> 
     11Patchwork: http://patchwork.linux-mips.org/patch/5165/ 
    712--- 
    813 arch/mips/ralink/irq.c |    4 ++++ 
  • trunk/target/linux/ramips/patches-3.8/0102-MIPS-ralink-add-RT3352-register-defines.patch

    r36430 r36431  
    1 From 5157985fbc0f071276b0c3381ac8ed191878358a Mon Sep 17 00:00:00 2001 
     1From e6bcdad6f0811daedc2a448f5d7fb98c116a5241 Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    33Date: Thu, 21 Mar 2013 19:01:49 +0100 
    4 Subject: [PATCH 103/121] MIPS: ralink: add RT3352 usb register defines 
     4Subject: [PATCH 102/137] MIPS: ralink: add RT3352 register defines 
    55 
    6 Add a few missing defines that are needed to make USB work on the RT3352 
    7 and RT5350. 
     6Add a few missing defines that are needed to make USB and clock detection work 
     7on the RT3352. 
    88 
    99Signed-off-by: John Crispin <blogic@openwrt.org> 
     10Acked-by: Gabor Juhos <juhosg@openwrt.org> 
     11Patchwork: http://patchwork.linux-mips.org/patch/5166/ 
    1012--- 
    11  arch/mips/include/asm/mach-ralink/rt305x.h |   11 +++++++++++ 
    12  1 file changed, 11 insertions(+) 
     13 arch/mips/include/asm/mach-ralink/rt305x.h |   13 +++++++++++++ 
     14 1 file changed, 13 insertions(+) 
    1315 
    1416--- a/arch/mips/include/asm/mach-ralink/rt305x.h 
    1517+++ b/arch/mips/include/asm/mach-ralink/rt305x.h 
    16 @@ -144,4 +144,18 @@ static inline int soc_is_rt5350(void) 
     18@@ -136,4 +136,17 @@ static inline int soc_is_rt5350(void) 
    1719 #define RT305X_GPIO_MODE_SDRAM         BIT(8) 
    1820 #define RT305X_GPIO_MODE_RGMII         BIT(9) 
    1921  
     22+#define RT3352_SYSC_REG_SYSCFG0                0x010 
    2023+#define RT3352_SYSC_REG_SYSCFG1         0x014 
    2124+#define RT3352_SYSC_REG_CLKCFG1         0x030 
     
    2326+#define RT3352_SYSC_REG_USB_PS          0x05c 
    2427+ 
     28+#define RT3352_CLKCFG0_XTAL_SEL                BIT(20) 
    2529+#define RT3352_CLKCFG1_UPHY0_CLK_EN    BIT(18) 
    2630+#define RT3352_CLKCFG1_UPHY1_CLK_EN    BIT(20) 
     
    2933+#define RT3352_SYSCFG1_USB0_HOST_MODE  BIT(10) 
    3034+ 
    31 +#define RT3352_SYSC_REG_SYSCFG0                0x010 
    32 +#define        RT3352_CLKCFG0_XTAL_SEL         BIT(20) 
    33 + 
    3435 #endif 
  • trunk/target/linux/ramips/patches-3.8/0103-MIPS-ralink-fix-RT305x-clock-setup.patch

    r36430 r36431  
    1 From eb8d7fbba907df0a51e504930c00b2c9ec837b54 Mon Sep 17 00:00:00 2001 
     1From 845f786c561c0991d9b4088a2d77b8fd4831d487 Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    33Date: Fri, 22 Mar 2013 19:25:59 +0100 
    4 Subject: [PATCH 100/121] MIPS: ralink: fix RT305x clock setup 
     4Subject: [PATCH 103/137] MIPS: ralink: fix RT305x clock setup 
    55 
    6 Add a few missing clocks and remove the unused sys clock. 
     6Add a few missing clocks. 
    77 
    88Signed-off-by: John Crispin <blogic@openwrt.org> 
     9Acked-by: Gabor Juhos <juhosg@openwrt.org> 
     10Patchwork: http://patchwork.linux-mips.org/patch/5167/ 
    911--- 
    10  arch/mips/ralink/rt305x.c |   14 ++++++++++++++ 
    11  1 file changed, 14 insertions(+) 
     12 arch/mips/ralink/rt305x.c |   12 ++++++++++++ 
     13 1 file changed, 12 insertions(+) 
    1214 
    1315--- a/arch/mips/ralink/rt305x.c 
    1416+++ b/arch/mips/ralink/rt305x.c 
    15 @@ -125,6 +125,7 @@ void __init ralink_clk_init(void) 
     17@@ -124,6 +124,8 @@ struct ralink_pinmux gpio_pinmux = { 
     18 void __init ralink_clk_init(void) 
    1619 { 
    1720        unsigned long cpu_rate, sys_rate, wdt_rate, uart_rate; 
     21+       unsigned long wmac_rate = 40000000; 
     22+ 
    1823        u32 t = rt_sysc_r32(SYSC_REG_SYSTEM_CONFIG); 
    19 +       int wmac_20mhz = 0; 
    2024  
    2125        if (soc_is_rt305x() || soc_is_rt3350()) { 
    22                 t = (t >> RT305X_SYSCFG_CPUCLK_SHIFT) & 
    23 @@ -176,11 +177,24 @@ void __init ralink_clk_init(void) 
     26@@ -176,11 +178,21 @@ void __init ralink_clk_init(void) 
    2427                BUG(); 
    2528        } 
     
    2730+       if (soc_is_rt3352() || soc_is_rt5350()) { 
    2831+               u32 val = rt_sysc_r32(RT3352_SYSC_REG_SYSCFG0); 
    29 +               if ((val & RT3352_CLKCFG0_XTAL_SEL) == 0) 
    30 +                       wmac_20mhz = 1; 
     32+ 
     33+               if (!(val & RT3352_CLKCFG0_XTAL_SEL)) 
     34+                       wmac_rate = 20000000; 
    3135+       } 
    3236+ 
     
    3842        ralink_clk_add("10000c00.uartlite", uart_rate); 
    3943+       ralink_clk_add("10100000.ethernet", sys_rate); 
    40 + 
    41 +       if (wmac_20mhz) 
    42 +               ralink_clk_add("10180000.wmac", 20000000); 
    43 +       else 
    44 +               ralink_clk_add("10180000.wmac", 40000000); 
     44+       ralink_clk_add("10180000.wmac", wmac_rate); 
    4545 } 
    4646  
  • trunk/target/linux/ramips/patches-3.8/0104-MIPS-ralink-add-missing-comment-in-irq-driver.patch

    r36430 r36431  
    1 From 68dba842ed23c9688340444b44951c448f4ff9ba Mon Sep 17 00:00:00 2001 
     1From 2747613b1bba0d4497ed2c4a77e2011d02029153 Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    33Date: Sat, 16 Mar 2013 16:28:54 +0100 
    4 Subject: [PATCH 101/121] MIPS: ralink: add missing comment in irq driver 
     4Subject: [PATCH 104/137] MIPS: ralink: add missing comment in irq driver 
    55 
    66Trivial patch that adds a comment that makes the code more readable. 
    77 
    88Signed-off-by: John Crispin <blogic@openwrt.org> 
     9Acked-by: Gabor Juhos <juhosg@openwrt.org> 
     10Patchwork: http://patchwork.linux-mips.org/patch/5168/ 
    911--- 
    1012 arch/mips/ralink/irq.c |    1 + 
     
    1315--- a/arch/mips/ralink/irq.c 
    1416+++ b/arch/mips/ralink/irq.c 
    15 @@ -162,6 +162,7 @@ static int __init intc_of_init(struct de 
     17@@ -166,6 +166,7 @@ static int __init intc_of_init(struct de 
    1618        irq_set_chained_handler(irq, ralink_intc_irq_handler); 
    1719        irq_set_handler_data(irq, domain); 
  • trunk/target/linux/ramips/patches-3.8/0105-MIPS-ralink-add-RT5350-sdram-register-defines.patch

    r36430 r36431  
    1 From ac2614707be7ddceb0f0b623d55d200f28695d5f Mon Sep 17 00:00:00 2001 
     1From 31f4b3ca1c9bb4bcbbebbe5db5a33ac82f130d9c Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    33Date: Mon, 25 Mar 2013 11:19:58 +0100 
    4 Subject: [PATCH 102/121] MIPS: ralink: add RT5350 sdram register defines 
     4Subject: [PATCH 105/137] MIPS: ralink: add RT5350 sdram register defines 
    55 
    66Add a few missing defines that are needed to make memory detection work on the 
     
    88 
    99Signed-off-by: John Crispin <blogic@openwrt.org> 
     10Acked-by: Gabor Juhos <juhosg@openwrt.org> 
     11Patchwork: http://patchwork.linux-mips.org/patch/5169/ 
    1012--- 
    1113 arch/mips/include/asm/mach-ralink/rt305x.h |    8 ++++++++ 
  • trunk/target/linux/ramips/patches-3.8/0106-MIPS-ralink-make-early_printk-work-on-RT2880.patch

    r36430 r36431  
    1 From 3f32be8f012fb5476ea916e583e584cccc632a84 Mon Sep 17 00:00:00 2001 
     1From d83e83a544258b68b4411232a31ccce134244a19 Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    33Date: Tue, 9 Apr 2013 18:31:15 +0200 
    4 Subject: [PATCH V2 08/16] MIPS: ralink: make early_printk work on RT2880 
     4Subject: [PATCH 106/137] MIPS: ralink: make early_printk work on RT2880 
    55 
    66RT2880 has a different location for the early serial port. 
    77 
    88Signed-off-by: John Crispin <blogic@openwrt.org> 
     9Acked-by: Gabor Juhos <juhosg@openwrt.org> 
     10Patchwork: http://patchwork.linux-mips.org/patch/5170/ 
    911--- 
    1012 arch/mips/ralink/early_printk.c |    4 ++++ 
  • trunk/target/linux/ramips/patches-3.8/0111-MIPS-ralink-adds-support-for-RT2880-SoC-family.patch

    r36430 r36431  
    1 From c4429f19cc66951962c171dba90b8747f95a654e Mon Sep 17 00:00:00 2001 
     1From cccb9a7b42227a442ca42d590c838c8b6fa0eba1 Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    33Date: Sun, 27 Jan 2013 09:17:20 +0100 
    4 Subject: [PATCH V2 09/16] MIPS: ralink: adds support for RT2880 SoC family 
     4Subject: [PATCH 111/137] MIPS: ralink: adds support for RT2880 SoC family 
    55 
    66Add support code for rt2880 SOC. 
     
    99 
    1010Signed-off-by: John Crispin <blogic@openwrt.org> 
     11Signed-off-by: Gabor Juhos <juhosg@openwrt.org> 
     12Patchwork: http://patchwork.linux-mips.org/patch/5176/ 
    1113--- 
    1214 arch/mips/Kconfig                          |    2 +- 
     
    1517 arch/mips/ralink/Makefile                  |    1 + 
    1618 arch/mips/ralink/Platform                  |    5 + 
    17  arch/mips/ralink/rt288x.c                  |  143 ++++++++++++++++++++++++++++ 
    18  6 files changed, 202 insertions(+), 1 deletion(-) 
     19 arch/mips/ralink/rt288x.c                  |  139 ++++++++++++++++++++++++++++ 
     20 6 files changed, 198 insertions(+), 1 deletion(-) 
    1921 create mode 100644 arch/mips/include/asm/mach-ralink/rt288x.h 
    2022 create mode 100644 arch/mips/ralink/rt288x.c 
     
    99101@@ -8,6 +8,7 @@ 
    100102  
    101  obj-y := prom.o of.o reset.o clk.o irq.o pinmux.o 
     103 obj-y := prom.o of.o reset.o clk.o irq.o 
    102104  
    103105+obj-$(CONFIG_SOC_RT288X) += rt288x.o 
     
    121123--- /dev/null 
    122124+++ b/arch/mips/ralink/rt288x.c 
    123 @@ -0,0 +1,143 @@ 
     125@@ -0,0 +1,139 @@ 
    124126+/* 
    125127+ * This program is free software; you can redistribute it and/or modify it 
     
    144146+#include "common.h" 
    145147+ 
    146 +struct ralink_pinmux_grp mode_mux[] = { 
     148+static struct ralink_pinmux_grp mode_mux[] = { 
    147149+       { 
    148150+               .name = "i2c", 
     
    183185+}; 
    184186+ 
    185 +void rt288x_wdt_reset(void) 
     187+static void rt288x_wdt_reset(void) 
    186188+{ 
    187189+       u32 t; 
     
    193195+} 
    194196+ 
    195 +struct ralink_pinmux rt_pinmux = { 
     197+struct ralink_pinmux rt_gpio_pinmux = { 
    196198+       .mode = mode_mux, 
    197199+       .wdt_reset = rt288x_wdt_reset, 
    198200+}; 
    199 + 
    200 +void ralink_usb_platform(void) 
    201 +{ 
    202 +} 
    203201+ 
    204202+void __init ralink_clk_init(void) 
  • trunk/target/linux/ramips/patches-3.8/0112-MIPS-ralink-adds-support-for-RT3883-SoC-family.patch

    r36430 r36431  
    1 From 45a8644332a85e8b099df9d467a719ded741e749 Mon Sep 17 00:00:00 2001 
     1From 5eb4dfe5072595e0706de3364f2da45378dbaca6 Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    33Date: Sun, 27 Jan 2013 09:39:02 +0100 
    4 Subject: [PATCH 109/121] MIPS: ralink: adds support for RT3883 SoC family 
     4Subject: [PATCH 112/137] MIPS: ralink: adds support for RT3883 SoC family 
    55 
    66Add support code for rt3883 SOC. 
     
    99 
    1010Signed-off-by: John Crispin <blogic@openwrt.org> 
     11Signed-off-by: Gabor Juhos <juhosg@openwrt.org> 
     12Patchwork: http://patchwork.linux-mips.org/patch/5185/ 
    1113--- 
    1214 arch/mips/include/asm/mach-ralink/rt3883.h |  247 ++++++++++++++++++++++++++++ 
     
    1416 arch/mips/ralink/Makefile                  |    1 + 
    1517 arch/mips/ralink/Platform                  |    5 + 
    16  arch/mips/ralink/rt3883.c                  |  207 +++++++++++++++++++++++ 
    17  5 files changed, 465 insertions(+) 
     18 arch/mips/ralink/rt3883.c                  |  242 +++++++++++++++++++++++++++ 
     19 5 files changed, 500 insertions(+) 
    1820 create mode 100644 arch/mips/include/asm/mach-ralink/rt3883.h 
    1921 create mode 100644 arch/mips/ralink/rt3883.c 
     
    306308--- /dev/null 
    307309+++ b/arch/mips/ralink/rt3883.c 
    308 @@ -0,0 +1,207 @@ 
     310@@ -0,0 +1,242 @@ 
    309311+/* 
    310312+ * This program is free software; you can redistribute it and/or modify it 
     
    329331+#include "common.h" 
    330332+ 
    331 +struct ralink_pinmux_grp mode_mux[] = { 
     333+static struct ralink_pinmux_grp mode_mux[] = { 
    332334+       { 
    333335+               .name = "i2c", 
     
    383385+}; 
    384386+ 
    385 +struct ralink_pinmux_grp uart_mux[] = { 
     387+static struct ralink_pinmux_grp uart_mux[] = { 
    386388+       { 
    387389+               .name = "uartf", 
     
    407409+               .name = "pcm gpio", 
    408410+               .mask = RT3883_GPIO_MODE_PCM_GPIO, 
    409 +               .gpio_first = RT3883_GPIO_10, 
     411+               .gpio_first = RT3883_GPIO_11, 
    410412+               .gpio_last = RT3883_GPIO_14, 
    411413+       }, { 
     
    413415+               .mask = RT3883_GPIO_MODE_GPIO_UARTF, 
    414416+               .gpio_first = RT3883_GPIO_7, 
    415 +               .gpio_last = RT3883_GPIO_14, 
     417+               .gpio_last = RT3883_GPIO_10, 
    416418+       }, { 
    417419+               .name = "gpio i2s", 
    418420+               .mask = RT3883_GPIO_MODE_GPIO_I2S, 
    419421+               .gpio_first = RT3883_GPIO_7, 
    420 +               .gpio_last = RT3883_GPIO_14, 
     422+               .gpio_last = RT3883_GPIO_10, 
     423+       }, { 
     424+               .name = "gpio", 
     425+               .mask = RT3883_GPIO_MODE_GPIO, 
     426+       }, {0} 
     427+}; 
     428+ 
     429+static struct ralink_pinmux_grp pci_mux[] = { 
     430+       { 
     431+               .name = "pci-dev", 
     432+               .mask = 0, 
     433+               .gpio_first = RT3883_GPIO_PCI_AD0, 
     434+               .gpio_last = RT3883_GPIO_PCI_AD31, 
     435+       }, { 
     436+               .name = "pci-host2", 
     437+               .mask = 1, 
     438+               .gpio_first = RT3883_GPIO_PCI_AD0, 
     439+               .gpio_last = RT3883_GPIO_PCI_AD31, 
     440+       }, { 
     441+               .name = "pci-host1", 
     442+               .mask = 2, 
     443+               .gpio_first = RT3883_GPIO_PCI_AD0, 
     444+               .gpio_last = RT3883_GPIO_PCI_AD31, 
     445+       }, { 
     446+               .name = "pci-fnc", 
     447+               .mask = 3, 
     448+               .gpio_first = RT3883_GPIO_PCI_AD0, 
     449+               .gpio_last = RT3883_GPIO_PCI_AD31, 
     450+       }, { 
     451+               .name = "pci-gpio", 
     452+               .mask = 7, 
     453+               .gpio_first = RT3883_GPIO_PCI_AD0, 
     454+               .gpio_last = RT3883_GPIO_PCI_AD31, 
    421455+       }, {0} 
    422456+}; 
     
    432466+} 
    433467+ 
    434 +struct ralink_pinmux rt_pinmux = { 
     468+struct ralink_pinmux rt_gpio_pinmux = { 
    435469+       .mode = mode_mux, 
    436470+       .uart = uart_mux, 
     
    438472+       .uart_mask = RT3883_GPIO_MODE_GPIO, 
    439473+       .wdt_reset = rt3883_wdt_reset, 
     474+       .pci = pci_mux, 
     475+       .pci_shift = RT3883_GPIO_MODE_PCI_SHIFT, 
     476+       .pci_mask = RT3883_GPIO_MODE_PCI_MASK, 
    440477+}; 
    441478+ 
  • trunk/target/linux/ramips/patches-3.8/0113-MIPS-ralink-adds-support-for-MT7620-SoC-family.patch

    r36430 r36431  
    1 From 8831277e0167cdcf3dc3ecc5d5a67d4fd9d0ed77 Mon Sep 17 00:00:00 2001 
     1From a8d7045a9530d0a9e0c65c0f81852bd57ebde53c Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    33Date: Thu, 21 Mar 2013 17:49:02 +0100 
    4 Subject: [PATCH 111/121] MIPS: ralink: adds support for MT7620 SoC family 
     4Subject: [PATCH 113/137] MIPS: ralink: adds support for MT7620 SoC family 
    55 
    66Add support code for mt7620 SOC. 
     
    99 
    1010Signed-off-by: John Crispin <blogic@openwrt.org> 
     11Acked-by: Gabor Juhos <juhosg@openwrt.org> 
     12Patchwork: http://patchwork.linux-mips.org/patch/5177/ 
    1113--- 
    12  arch/mips/include/asm/mach-ralink/mt7620.h |   66 +++++++++ 
     14 arch/mips/include/asm/mach-ralink/mt7620.h |   76 ++++++++++ 
    1315 arch/mips/ralink/Kconfig                   |    3 + 
    1416 arch/mips/ralink/Makefile                  |    1 + 
    1517 arch/mips/ralink/Platform                  |    5 + 
    16  arch/mips/ralink/mt7620.c                  |  215 ++++++++++++++++++++++++++++ 
    17  5 files changed, 290 insertions(+) 
     18 arch/mips/ralink/mt7620.c                  |  214 ++++++++++++++++++++++++++++ 
     19 5 files changed, 299 insertions(+) 
    1820 create mode 100644 arch/mips/include/asm/mach-ralink/mt7620.h 
    1921 create mode 100644 arch/mips/ralink/mt7620.c 
     
    2123--- /dev/null 
    2224+++ b/arch/mips/include/asm/mach-ralink/mt7620.h 
    23 @@ -0,0 +1,66 @@ 
     25@@ -0,0 +1,76 @@ 
    2426+/* 
    2527+ * This program is free software; you can redistribute it and/or modify it 
     
    5961+#define CHIP_REV_ECO_MASK              0xf 
    6062+ 
    61 +#define MT7620_CPLL_SW_CONFIG_SHIFT    31 
    62 +#define MT7620_CPLL_SW_CONFIG_MASK     0x1 
    63 +#define MT7620_CPLL_CPU_CLK_SHIFT      24 
    64 +#define MT7620_CPLL_CPU_CLK_MASK       0x1 
     63+#define CPLL_SW_CONFIG_SHIFT           31 
     64+#define CPLL_SW_CONFIG_MASK            0x1 
     65+#define CPLL_CPU_CLK_SHIFT             24 
     66+#define CPLL_CPU_CLK_MASK              0x1 
     67+#define CPLL_MULT_RATIO_SHIFT           16 
     68+#define CPLL_MULT_RATIO                 0x7 
     69+#define CPLL_DIV_RATIO_SHIFT            10 
     70+#define CPLL_DIV_RATIO                  0x3 
     71+ 
     72+#define SYSCFG0_DRAM_TYPE_MASK         0x3 
     73+#define SYSCFG0_DRAM_TYPE_SHIFT                4 
     74+#define SYSCFG0_DRAM_TYPE_SDRAM                0 
     75+#define SYSCFG0_DRAM_TYPE_DDR1         1 
     76+#define SYSCFG0_DRAM_TYPE_DDR2         2 
    6577+ 
    6678+#define MT7620_GPIO_MODE_I2C           BIT(0) 
     
    123135--- /dev/null 
    124136+++ b/arch/mips/ralink/mt7620.c 
    125 @@ -0,0 +1,215 @@ 
     137@@ -0,0 +1,214 @@ 
    126138+/* 
    127139+ * This program is free software; you can redistribute it and/or modify it 
     
    146158+#include "common.h" 
    147159+ 
    148 + 
    149 +struct ralink_pinmux_grp mode_mux[] = { 
     160+/* does the board have sdram or ddram */ 
     161+static int dram_type; 
     162+ 
     163+/* the pll dividers */ 
     164+static u32 mt7620_clk_divider[] = { 2, 3, 4, 8 }; 
     165+ 
     166+static struct ralink_pinmux_grp mode_mux[] = { 
    150167+       { 
    151168+               .name = "i2c", 
     
    212229+}; 
    213230+ 
    214 + 
    215 +struct ralink_pinmux_grp uart_mux[] = { 
     231+static struct ralink_pinmux_grp uart_mux[] = { 
    216232+       { 
    217233+               .name = "uartf", 
     
    254270+       }, {0} 
    255271+}; 
    256 +/* 
    257 +void rt305x_wdt_reset(void) 
    258 +{ 
    259 +       u32 t; 
    260 + 
    261 +       t = rt_sysc_r32(SYSC_REG_SYSTEM_CONFIG); 
    262 +       t |= RT305X_SYSCFG_SRAM_CS0_MODE_WDT << 
    263 +               RT305X_SYSCFG_SRAM_CS0_MODE_SHIFT; 
    264 +       rt_sysc_w32(t, SYSC_REG_SYSTEM_CONFIG); 
    265 +} 
    266 +*/ 
    267 +struct ralink_pinmux rt_pinmux = { 
     272+ 
     273+struct ralink_pinmux rt_gpio_pinmux = { 
    268274+       .mode = mode_mux, 
    269275+       .uart = uart_mux, 
    270276+       .uart_shift = MT7620_GPIO_MODE_UART0_SHIFT, 
    271 +//     .wdt_reset = rt305x_wdt_reset, 
     277+       .uart_mask = MT7620_GPIO_MODE_GPIO, 
    272278+}; 
    273279+ 
     
    277283+       u32 c0 = rt_sysc_r32(SYSC_REG_CPLL_CONFIG0); 
    278284+       u32 c1 = rt_sysc_r32(SYSC_REG_CPLL_CONFIG1); 
    279 + 
    280 +       c0 = (c0 >> MT7620_CPLL_SW_CONFIG_SHIFT) & 
    281 +               MT7620_CPLL_SW_CONFIG_MASK; 
    282 +       c1 = (c1 >> MT7620_CPLL_CPU_CLK_SHIFT) & 
    283 +            MT7620_CPLL_CPU_CLK_MASK; 
    284 +       if (c1 == 0x01) { 
     285+       u32 swconfig = (c0 >> CPLL_SW_CONFIG_SHIFT) & CPLL_SW_CONFIG_MASK; 
     286+       u32 cpu_clk = (c1 >> CPLL_CPU_CLK_SHIFT) & CPLL_CPU_CLK_MASK; 
     287+ 
     288+       if (cpu_clk) { 
    285289+               cpu_rate = 480000000; 
     290+       } else if (!swconfig) { 
     291+               cpu_rate = 600000000; 
    286292+       } else { 
    287 +               if (c1 == 0x0) { 
    288 +                       cpu_rate = 600000000; 
    289 +               } else { 
    290 +                       /* TODO calculate custom clock from pll settings */ 
    291 +                       BUG(); 
    292 +               } 
     293+               u32 m = (c0 >> CPLL_MULT_RATIO_SHIFT) & CPLL_MULT_RATIO; 
     294+               u32 d = (c0 >> CPLL_DIV_RATIO_SHIFT) & CPLL_DIV_RATIO; 
     295+ 
     296+               cpu_rate = ((40 * (m + 24)) / mt7620_clk_divider[d]) * 1000000; 
    293297+       } 
    294 +       /* FIXME  SDR - 4, DDR - 3 */ 
    295 +       sys_rate = cpu_rate / 4; 
     298+ 
     299+       if (dram_type == SYSCFG0_DRAM_TYPE_SDRAM) 
     300+               sys_rate = cpu_rate / 4; 
     301+       else 
     302+               sys_rate = cpu_rate / 3; 
    296303+ 
    297304+       ralink_clk_add("cpu", cpu_rate); 
     
    303310+void __init ralink_of_remap(void) 
    304311+{ 
    305 +       rt_sysc_membase = plat_of_remap_node("ralink,mt7620-sysc"); 
    306 +       rt_memc_membase = plat_of_remap_node("ralink,mt7620-memc"); 
     312+       rt_sysc_membase = plat_of_remap_node("ralink,mt7620a-sysc"); 
     313+       rt_memc_membase = plat_of_remap_node("ralink,mt7620a-memc"); 
    307314+ 
    308315+       if (!rt_sysc_membase || !rt_memc_membase) 
     
    317324+       u32 n1; 
    318325+       u32 rev; 
     326+       u32 cfg0; 
    319327+ 
    320328+       n0 = __raw_readl(sysc + SYSC_REG_CHIP_NAME0); 
     
    328336+               soc_info->compatible = "ralink,mt7620a-soc"; 
    329337+       } else { 
    330 +               printk("mt7620: unknown SoC, n0:%08x n1:%08x\n", n0, n1); 
     338+               panic("mt7620: unknown SoC, n0:%08x n1:%08x\n", n0, n1); 
    331339+       } 
    332340+ 
     
    338346+               (rev >> CHIP_REV_VER_SHIFT) & CHIP_REV_VER_MASK, 
    339347+               (rev & CHIP_REV_ECO_MASK)); 
     348+ 
     349+       cfg0 = __raw_readl(sysc + SYSC_REG_SYSTEM_CONFIG0); 
     350+       dram_type = (cfg0 >> SYSCFG0_DRAM_TYPE_SHIFT) & SYSCFG0_DRAM_TYPE_MASK; 
    340351+} 
  • trunk/target/linux/ramips/patches-3.8/0128-MIPS-ralink-add-pinmux-driver.patch

    r36430 r36431  
    1 From 806a489c720767f63bf5046c2ccd87ded9549c1c Mon Sep 17 00:00:00 2001 
     1From 5a2079532dfaf5762f658370ee7a0afb686f066e Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    3 Date: Sat, 16 Mar 2013 00:50:57 +0100 
    4 Subject: [PATCH 104/121] MIPS: ralink: add pinmux driver 
     3Date: Mon, 22 Apr 2013 23:11:42 +0200 
     4Subject: [PATCH 128/137] MIPS: ralink: add pinmux driver 
    55 
    66Add code to setup the pinmux on ralonk SoC. The SoC has a single 32 bit register 
     
    1111--- 
    1212 arch/mips/ralink/Makefile |    2 +- 
    13  arch/mips/ralink/common.h |    5 ++- 
     13 arch/mips/ralink/common.h |    2 ++ 
    1414 arch/mips/ralink/of.c     |    2 ++ 
    1515 arch/mips/ralink/pinmux.c |   76 +++++++++++++++++++++++++++++++++++++++++++++ 
    16  arch/mips/ralink/rt305x.c |    6 ++-- 
    17  5 files changed, 85 insertions(+), 6 deletions(-) 
     16 4 files changed, 81 insertions(+), 1 deletion(-) 
    1817 create mode 100644 arch/mips/ralink/pinmux.c 
    1918 
     
    2726+obj-y := prom.o of.o reset.o clk.o irq.o pinmux.o 
    2827  
     28 obj-$(CONFIG_SOC_RT288X) += rt288x.o 
    2929 obj-$(CONFIG_SOC_RT305X) += rt305x.o 
    30   
    3130--- a/arch/mips/ralink/common.h 
    3231+++ b/arch/mips/ralink/common.h 
    33 @@ -22,9 +22,10 @@ struct ralink_pinmux { 
    34         struct ralink_pinmux_grp *mode; 
    35         struct ralink_pinmux_grp *uart; 
    36         int uart_shift; 
    37 +       u32 uart_mask; 
    38         void (*wdt_reset)(void); 
    39  }; 
    40 -extern struct ralink_pinmux gpio_pinmux; 
    41 +extern struct ralink_pinmux rt_pinmux; 
    42   
    43  struct ralink_soc_info { 
    44         unsigned char sys_type[RAMIPS_SYS_TYPE_LEN]; 
    45 @@ -41,4 +42,6 @@ extern void prom_soc_init(struct ralink_ 
     32@@ -50,4 +50,6 @@ extern void prom_soc_init(struct ralink_ 
    4633  
    4734 __iomem void *plat_of_remap_node(const char *node); 
     
    5239--- a/arch/mips/ralink/of.c 
    5340+++ b/arch/mips/ralink/of.c 
    54 @@ -101,6 +101,8 @@ static int __init plat_of_setup(void) 
     41@@ -110,6 +110,8 @@ static int __init plat_of_setup(void) 
    5542        if (of_platform_populate(NULL, of_ids, NULL, NULL)) 
    5643                panic("failed to populate DT\n"); 
     
    10390+ 
    10491+       of_property_for_each_string(np, "ralink,gpiomux", prop, pin) { 
    105 +               int m = ralink_mux_mask(pin, rt_pinmux.mode); 
     92+               int m = ralink_mux_mask(pin, rt_gpio_pinmux.mode); 
    10693+               if (m) { 
    10794+                       mode |= m; 
     
    113100+ 
    114101+       of_property_for_each_string(np, "ralink,pinmux", prop, pin) { 
    115 +               int m = ralink_mux_mask(pin, rt_pinmux.mode); 
     102+               int m = ralink_mux_mask(pin, rt_gpio_pinmux.mode); 
    116103+               if (m) { 
    117104+                       mode &= ~m; 
     
    124111+       of_property_read_string(np, "ralink,uartmux", &uart); 
    125112+       if (uart) { 
    126 +               int m = ralink_mux_mask(uart, rt_pinmux.uart); 
    127 +               mode |= rt_pinmux.uart_mask << rt_pinmux.uart_shift; 
     113+               int m = ralink_mux_mask(uart, rt_gpio_pinmux.uart); 
     114+               mode |= rt_gpio_pinmux.uart_mask << rt_gpio_pinmux.uart_shift; 
    128115+               if (m) { 
    129 +                       mode &= ~(m << rt_pinmux.uart_shift); 
     116+                       mode &= ~(m << rt_gpio_pinmux.uart_shift); 
    130117+                       pr_debug("pinmux: registered uartmux \"%s\"\n", uart); 
    131118+               } else { 
     
    135122+ 
    136123+       wdt = of_get_property(np, "ralink,wdtmux", NULL); 
    137 +       if (wdt && *wdt && rt_pinmux.wdt_reset) 
    138 +               rt_pinmux.wdt_reset(); 
     124+       if (wdt && *wdt && rt_gpio_pinmux.wdt_reset) 
     125+               rt_gpio_pinmux.wdt_reset(); 
    139126+ 
    140127+       rt_sysc_w32(mode, SYSC_REG_GPIO_MODE); 
    141128+} 
    142 --- a/arch/mips/ralink/rt305x.c 
    143 +++ b/arch/mips/ralink/rt305x.c 
    144 @@ -97,9 +97,6 @@ struct ralink_pinmux_grp uart_mux[] = { 
    145                 .mask = RT305X_GPIO_MODE_GPIO_I2S, 
    146                 .gpio_first = RT305X_GPIO_7, 
    147                 .gpio_last = RT305X_GPIO_14, 
    148 -       }, { 
    149 -               .name = "gpio", 
    150 -               .mask = RT305X_GPIO_MODE_GPIO, 
    151         }, {0} 
    152  }; 
    153   
    154 @@ -114,10 +111,11 @@ void rt305x_wdt_reset(void) 
    155         rt_sysc_w32(t, SYSC_REG_SYSTEM_CONFIG); 
    156  } 
    157   
    158 -struct ralink_pinmux gpio_pinmux = { 
    159 +struct ralink_pinmux rt_pinmux = { 
    160         .mode = mode_mux, 
    161         .uart = uart_mux, 
    162         .uart_shift = RT305X_GPIO_MODE_UART0_SHIFT, 
    163 +       .uart_mask = RT305X_GPIO_MODE_GPIO, 
    164         .wdt_reset = rt305x_wdt_reset, 
    165  }; 
    166   
  • trunk/target/linux/ramips/patches-3.8/0129-MIPS-ralink-add-support-for-periodic-timer-irq.patch

    r36430 r36431  
    1 From cdbc5a9dbd78a771edb6c211edbc677596cbd17f Mon Sep 17 00:00:00 2001 
     1From 1f307fd0fdca585d5c7c32963e8a8a6f38d8a78c Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    33Date: Sat, 23 Mar 2013 19:44:41 +0100 
    4 Subject: [PATCH 113/121] MIPS: ralink: add support for periodic timer irq 
     4Subject: [PATCH 129/137] MIPS: ralink: add support for periodic timer irq 
    55 
    66Adds a driver for the periodic timer found on Ralink SoC. 
  • trunk/target/linux/ramips/patches-3.8/0130-GPIO-MIPS-ralink-adds-ralink-gpio-support.patch

    r36430 r36431  
    1 From f22c157f44c93d61058d2e2aa5626ee2899fde5a Mon Sep 17 00:00:00 2001 
     1From 007ab7fe49bfcaa220372260eedeb4eed51f1631 Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    33Date: Tue, 22 Jan 2013 18:24:34 +0100 
    4 Subject: [PATCH 114/121] GPIO: MIPS: ralink: adds ralink gpio support 
     4Subject: [PATCH 130/137] GPIO: MIPS: ralink: adds ralink gpio support 
    55 
    66Add gpio driver for Ralink SoC. This driver makes the gpio core on 
  • trunk/target/linux/ramips/patches-3.8/0131-SPI-ralink-add-Ralink-SoC-spi-driver.patch

    r36430 r36431  
    1 e8c5ebbd743dac63178807c0f68fe1b75680474a3 Mon Sep 17 00:00:00 2001 
     1From 32c1cff4c75925a0bbd305e85ed4adb30140cd42 Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    3 Date: Wed, 30 Jan 2013 17:58:15 +0100 
    4 Subject: [PATCH 115/121] SPI: ralink: add Ralink SoC spi driver 
     3Date: Mon, 22 Apr 2013 23:16:18 +0200 
     4Subject: [PATCH 131/137] SPI: ralink: add Ralink SoC spi driver 
    55 
    66Add the driver needed to make SPI work on Ralink SoC. 
  • trunk/target/linux/ramips/patches-3.8/0132-serial-of-allow-au1x00-and-rt288x-to-load-from-OF.patch

    r36430 r36431  
    1 From 6ffb42870411ca082e8e46d96d72bc5d8881ce8d Mon Sep 17 00:00:00 2001 
     1From 15bcdbd78abacbe0986a1904d2e2b5dcfe780b5b Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    33Date: Tue, 22 Jan 2013 16:01:07 +0100 
    4 Subject: [PATCH 116/121] serial: of: allow au1x00 and rt288x to load from OF 
     4Subject: [PATCH 132/137] serial: of: allow au1x00 and rt288x to load from OF 
    55 
    66In order to make serial_8250 loadable via OF on Au1x00 and Ralink WiSoC we need 
  • trunk/target/linux/ramips/patches-3.8/0133-serial-ralink-adds-mt7620-serial.patch

    r36430 r36431  
    1 From c1e24bf32404bec0032221b9ea37d6fd8c45dbdd Mon Sep 17 00:00:00 2001 
     1From 6471ee7bbf3f8b70267ba1dc93f067e18803c246 Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    33Date: Fri, 15 Mar 2013 18:16:01 +0100 
    4 Subject: [PATCH 117/121] serial: ralink: adds mt7620 serial 
     4Subject: [PATCH 133/137] serial: ralink: adds mt7620 serial 
    55 
    66Add the config symbol for Mediatek7620 SoC to SERIAL_8250_RT288X 
  • trunk/target/linux/ramips/patches-3.8/0134-PCI-MIPS-adds-rt2880-pci-support.patch

    r36430 r36431  
    1 From 028f340b63bf722e8807b31ef955484acf2cce47 Mon Sep 17 00:00:00 2001 
     1From 55e9ae6a23cb799b7c1d402e1cfda11a6bd1e86e Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    33Date: Thu, 21 Mar 2013 18:27:29 +0100 
    4 Subject: [PATCH 118/121] PCI: MIPS: adds rt2880 pci support 
     4Subject: [PATCH 134/137] PCI: MIPS: adds rt2880 pci support 
    55 
    66Add support for the pci found on the rt2880 SoC. 
  • trunk/target/linux/ramips/patches-3.8/0135-PCI-MIPS-adds-rt3883-pci-support.patch

    r36430 r36431  
    1 --- a/arch/mips/pci/pci-rt3883.c 
     1From 2a5dccdb00d85a6ad6111d7a2b13f9f4fae35838 Mon Sep 17 00:00:00 2001 
     2From: John Crispin <blogic@openwrt.org> 
     3Date: Thu, 21 Mar 2013 17:34:08 +0100 
     4Subject: [PATCH 135/137] PCI: MIPS: adds rt3883 pci support 
     5 
     6Add support for the pcie found on the rt3883 SoC. 
     7 
     8Signed-off-by: John Crispin <blogic@openwrt.org> 
     9--- 
     10 arch/mips/pci/Makefile     |    1 + 
     11 arch/mips/pci/pci-rt3883.c |  640 ++++++++++++++++++++++++++++++++++++++++++++ 
     12 arch/mips/ralink/Kconfig   |    1 + 
     13 3 files changed, 642 insertions(+) 
     14 create mode 100644 arch/mips/pci/pci-rt3883.c 
     15 
     16--- a/arch/mips/pci/Makefile 
     17+++ b/arch/mips/pci/Makefile 
     18@@ -43,6 +43,7 @@ obj-$(CONFIG_SNI_RM)          += fixup-sni.o ops 
     19 obj-$(CONFIG_LANTIQ)           += fixup-lantiq.o 
     20 obj-$(CONFIG_PCI_LANTIQ)       += pci-lantiq.o ops-lantiq.o 
     21 obj-$(CONFIG_SOC_RT2880)       += pci-rt2880.o 
     22+obj-$(CONFIG_SOC_RT3883)       += pci-rt3883.o 
     23 obj-$(CONFIG_TANBAC_TB0219)    += fixup-tb0219.o 
     24 obj-$(CONFIG_TANBAC_TB0226)    += fixup-tb0226.o 
     25 obj-$(CONFIG_TANBAC_TB0287)    += fixup-tb0287.o 
     26--- /dev/null 
    227+++ b/arch/mips/pci/pci-rt3883.c 
    3 @@ -1,7 +1,7 @@ 
    4  /* 
    5 - *  Ralink RT3883 SoC PCI support 
     28@@ -0,0 +1,640 @@ 
     29+/* 
    630+ *  Ralink RT3662/RT3883 SoC PCI support 
    7   * 
    8 - *  Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org> 
     31+ * 
    932+ *  Copyright (C) 2011-2013 Gabor Juhos <juhosg@openwrt.org> 
    10   * 
    11   *  Parts of this file are based on Ralink's 2.6.21 BSP 
    12   * 
    13 @@ -16,52 +16,82 @@ 
    14  #include <linux/init.h> 
    15  #include <linux/delay.h> 
    16  #include <linux/interrupt.h> 
     33+ * 
     34+ *  Parts of this file are based on Ralink's 2.6.21 BSP 
     35+ * 
     36+ *  This program is free software; you can redistribute it and/or modify it 
     37+ *  under the terms of the GNU General Public License version 2 as published 
     38+ *  by the Free Software Foundation. 
     39+ */ 
     40+ 
     41+#include <linux/types.h> 
     42+#include <linux/pci.h> 
     43+#include <linux/io.h> 
     44+#include <linux/init.h> 
     45+#include <linux/delay.h> 
     46+#include <linux/interrupt.h> 
    1747+#include <linux/module.h> 
    1848+#include <linux/of.h> 
     
    2050+#include <linux/of_pci.h> 
    2151+#include <linux/platform_device.h> 
    22   
    23  #include <asm/mach-ralink/rt3883.h> 
    24 -#include <asm/mach-ralink/rt3883_regs.h> 
     52+ 
     53+#include <asm/mach-ralink/rt3883.h> 
    2554+#include <asm/mach-ralink/ralink_regs.h> 
    26   
    27  #define RT3883_MEMORY_BASE             0x00000000 
    28  #define RT3883_MEMORY_SIZE             0x02000000 
    29   
    30 -#define RT3883_PCI_MEM_BASE            0x20000000 
    31 -#define RT3883_PCI_MEM_SIZE            0x10000000 
    32 -#define RT3883_PCI_IO_BASE             0x10160000 
    33 -#define RT3883_PCI_IO_SIZE             0x00010000 
    34 - 
    35 -#define RT3883_PCI_REG_PCICFG_ADDR     0x00 
    36 -#define RT3883_PCI_REG_PCIRAW_ADDR     0x04 
    37 -#define RT3883_PCI_REG_PCIINT_ADDR     0x08 
    38 -#define RT3883_PCI_REG_PCIMSK_ADDR     0x0c 
    39 -#define   RT3833_PCI_PCIINT_PCIE       BIT(20) 
    40 -#define   RT3833_PCI_PCIINT_PCI1       BIT(19) 
    41 -#define   RT3833_PCI_PCIINT_PCI0       BIT(18) 
     55+ 
     56+#define RT3883_MEMORY_BASE             0x00000000 
     57+#define RT3883_MEMORY_SIZE             0x02000000 
     58+ 
    4259+#define RT3883_PCI_REG_PCICFG          0x00 
    4360+#define   RT3883_PCICFG_P2P_BR_DEVNUM_M 0xf 
     
    4764+#define RT3883_PCI_REG_PCIINT          0x08 
    4865+#define RT3883_PCI_REG_PCIENA          0x0c 
    49   
    50 -#define RT3883_PCI_REG_CONFIG_ADDR     0x20 
    51 -#define RT3883_PCI_REG_CONFIG_DATA     0x24 
     66+ 
    5267+#define RT3883_PCI_REG_CFGADDR         0x20 
    5368+#define RT3883_PCI_REG_CFGDATA         0x24 
    54  #define RT3883_PCI_REG_MEMBASE         0x28 
    55  #define RT3883_PCI_REG_IOBASE          0x2c 
    56  #define RT3883_PCI_REG_ARBCTL          0x80 
    57   
    58  #define RT3883_PCI_REG_BASE(_x)                (0x1000 + (_x) * 0x1000) 
    59 -#define RT3883_PCI_REG_BAR0SETUP_ADDR(_x) (RT3883_PCI_REG_BASE((_x)) + 0x10) 
    60 -#define RT3883_PCI_REG_IMBASEBAR0_ADDR(_x) (RT3883_PCI_REG_BASE((_x)) + 0x18) 
     69+#define RT3883_PCI_REG_MEMBASE         0x28 
     70+#define RT3883_PCI_REG_IOBASE          0x2c 
     71+#define RT3883_PCI_REG_ARBCTL          0x80 
     72+ 
     73+#define RT3883_PCI_REG_BASE(_x)                (0x1000 + (_x) * 0x1000) 
    6174+#define RT3883_PCI_REG_BAR0SETUP(_x)   (RT3883_PCI_REG_BASE((_x)) + 0x10) 
    6275+#define RT3883_PCI_REG_IMBASEBAR0(_x)  (RT3883_PCI_REG_BASE((_x)) + 0x18) 
    63  #define RT3883_PCI_REG_ID(_x)          (RT3883_PCI_REG_BASE((_x)) + 0x30) 
    64  #define RT3883_PCI_REG_CLASS(_x)       (RT3883_PCI_REG_BASE((_x)) + 0x34) 
    65  #define RT3883_PCI_REG_SUBID(_x)       (RT3883_PCI_REG_BASE((_x)) + 0x38) 
    66  #define RT3883_PCI_REG_STATUS(_x)      (RT3883_PCI_REG_BASE((_x)) + 0x50) 
    67   
    68 -static int (*rt3883_pci_plat_dev_init)(struct pci_dev *dev); 
    69 -static void __iomem *rt3883_pci_base; 
    70 -static DEFINE_SPINLOCK(rt3883_pci_lock); 
     76+#define RT3883_PCI_REG_ID(_x)          (RT3883_PCI_REG_BASE((_x)) + 0x30) 
     77+#define RT3883_PCI_REG_CLASS(_x)       (RT3883_PCI_REG_BASE((_x)) + 0x34) 
     78+#define RT3883_PCI_REG_SUBID(_x)       (RT3883_PCI_REG_BASE((_x)) + 0x38) 
     79+#define RT3883_PCI_REG_STATUS(_x)      (RT3883_PCI_REG_BASE((_x)) + 0x50) 
     80+ 
    7181+#define RT3883_PCI_MODE_NONE   0 
    7282+#define RT3883_PCI_MODE_PCI    BIT(0) 
    7383+#define RT3883_PCI_MODE_PCIE   BIT(1) 
    7484+#define RT3883_PCI_MODE_BOTH   (RT3883_PCI_MODE_PCI | RT3883_PCI_MODE_PCIE) 
    75   
    76 -static inline u32 rt3883_pci_rr(unsigned reg) 
     85+ 
    7786+#define RT3883_PCI_IRQ_COUNT   32 
    7887+ 
     
    95104+static inline struct rt3883_pci_controller * 
    96105+pci_bus_to_rt3883_controller(struct pci_bus *bus) 
    97  { 
    98 -       return readl(rt3883_pci_base + reg); 
     106+{ 
    99107+       struct pci_controller *hose; 
    100108+ 
     
    107115+{ 
    108116+       return ioread32(rpc->base + reg); 
    109  } 
    110   
    111 -static inline void rt3883_pci_wr(u32 val, unsigned reg) 
     117+} 
     118+ 
    112119+static inline void rt3883_pci_w32(struct rt3883_pci_controller *rpc, 
    113120+                                 u32 val, unsigned reg) 
    114  { 
    115 -       writel(val, rt3883_pci_base + reg); 
     121+{ 
    116122+       iowrite32(val, rpc->base + reg); 
    117  } 
    118   
    119  static inline u32 rt3883_pci_get_cfgaddr(unsigned int bus, unsigned int slot, 
    120 @@ -71,7 +101,8 @@ static inline u32 rt3883_pci_get_cfgaddr 
    121                 0x80000000); 
    122  } 
    123   
    124 -static u32 rt3883_pci_read_u32(unsigned bus, unsigned slot, 
     123+} 
     124+ 
     125+static inline u32 rt3883_pci_get_cfgaddr(unsigned int bus, unsigned int slot, 
     126+                                        unsigned int func, unsigned int where) 
     127+{ 
     128+       return ((bus << 16) | (slot << 11) | (func << 8) | (where & 0xfc) | 
     129+               0x80000000); 
     130+} 
     131+ 
    125132+static u32 rt3883_pci_read_cfg32(struct rt3883_pci_controller *rpc, 
    126133+                              unsigned bus, unsigned slot, 
    127                                unsigned func, unsigned reg) 
    128  { 
    129         unsigned long flags; 
    130 @@ -80,15 +111,16 @@ static u32 rt3883_pci_read_u32(unsigned 
    131   
    132         address = rt3883_pci_get_cfgaddr(bus, slot, func, reg); 
    133   
    134 -       spin_lock_irqsave(&rt3883_pci_lock, flags); 
    135 -       rt3883_pci_wr(address, RT3883_PCI_REG_CONFIG_ADDR); 
    136 -       ret = rt3883_pci_rr(RT3883_PCI_REG_CONFIG_DATA); 
    137 -       spin_unlock_irqrestore(&rt3883_pci_lock, flags); 
     134+                              unsigned func, unsigned reg) 
     135+{ 
     136+       unsigned long flags; 
     137+       u32 address; 
     138+       u32 ret; 
     139+ 
     140+       address = rt3883_pci_get_cfgaddr(bus, slot, func, reg); 
     141+ 
    138142+       spin_lock_irqsave(&rpc->lock, flags); 
    139143+       rt3883_pci_w32(rpc, address, RT3883_PCI_REG_CFGADDR); 
    140144+       ret = rt3883_pci_r32(rpc, RT3883_PCI_REG_CFGDATA); 
    141145+       spin_unlock_irqrestore(&rpc->lock, flags); 
    142   
    143         return ret; 
    144  } 
    145   
    146 -static void rt3883_pci_write_u32(unsigned bus, unsigned slot, 
     146+ 
     147+       return ret; 
     148+} 
     149+ 
    147150+static void rt3883_pci_write_cfg32(struct rt3883_pci_controller *rpc, 
    148151+                                unsigned bus, unsigned slot, 
    149                                  unsigned func, unsigned reg, u32 val) 
    150  { 
    151         unsigned long flags; 
    152 @@ -96,84 +128,61 @@ static void rt3883_pci_write_u32(unsigne 
    153   
    154         address = rt3883_pci_get_cfgaddr(bus, slot, func, reg); 
    155   
    156 -       spin_lock_irqsave(&rt3883_pci_lock, flags); 
    157 -       rt3883_pci_wr(address, RT3883_PCI_REG_CONFIG_ADDR); 
    158 -       rt3883_pci_wr(val, RT3883_PCI_REG_CONFIG_DATA); 
    159 -       spin_unlock_irqrestore(&rt3883_pci_lock, flags); 
     152+                                unsigned func, unsigned reg, u32 val) 
     153+{ 
     154+       unsigned long flags; 
     155+       u32 address; 
     156+ 
     157+       address = rt3883_pci_get_cfgaddr(bus, slot, func, reg); 
     158+ 
    160159+       spin_lock_irqsave(&rpc->lock, flags); 
    161160+       rt3883_pci_w32(rpc, address, RT3883_PCI_REG_CFGADDR); 
    162161+       rt3883_pci_w32(rpc, val, RT3883_PCI_REG_CFGDATA); 
    163162+       spin_unlock_irqrestore(&rpc->lock, flags); 
    164  } 
    165   
    166  static void rt3883_pci_irq_handler(unsigned int irq, struct irq_desc *desc) 
    167  { 
     163+} 
     164+ 
     165+static void rt3883_pci_irq_handler(unsigned int irq, struct irq_desc *desc) 
     166+{ 
    168167+       struct rt3883_pci_controller *rpc; 
    169         u32 pending; 
    170   
    171 -       pending = rt3883_pci_rr(RT3883_PCI_REG_PCIINT_ADDR) & 
    172 -                 rt3883_pci_rr(RT3883_PCI_REG_PCIMSK_ADDR); 
     168+       u32 pending; 
     169+ 
    173170+       rpc = irq_get_handler_data(irq); 
    174171+ 
    175172+       pending = rt3883_pci_r32(rpc, RT3883_PCI_REG_PCIINT) & 
    176173+                 rt3883_pci_r32(rpc, RT3883_PCI_REG_PCIENA); 
    177   
    178         if (!pending) { 
    179                 spurious_interrupt(); 
    180                 return; 
    181         } 
    182   
    183 -       if (pending & RT3833_PCI_PCIINT_PCI0) 
    184 -               generic_handle_irq(RT3883_PCI_IRQ_PCI0); 
     174+ 
     175+       if (!pending) { 
     176+               spurious_interrupt(); 
     177+               return; 
     178+       } 
     179+ 
    185180+       while (pending) { 
    186181+               unsigned bit = __ffs(pending); 
    187   
    188 -       if (pending & RT3833_PCI_PCIINT_PCI1) 
    189 -               generic_handle_irq(RT3883_PCI_IRQ_PCI1); 
     182+ 
    190183+               irq = irq_find_mapping(rpc->irq_domain, bit); 
    191184+               generic_handle_irq(irq); 
    192   
    193 -       if (pending & RT3833_PCI_PCIINT_PCIE) 
    194 -               generic_handle_irq(RT3883_PCI_IRQ_PCIE); 
     185+ 
    195186+               pending &= ~BIT(bit); 
    196187+       } 
    197  } 
    198   
    199  static void rt3883_pci_irq_unmask(struct irq_data *d) 
    200  { 
    201 -       int irq = d->irq; 
    202 -       u32 mask; 
     188+} 
     189+ 
     190+static void rt3883_pci_irq_unmask(struct irq_data *d) 
     191+{ 
    203192+       struct rt3883_pci_controller *rpc; 
    204         u32 t; 
    205   
    206 -       switch (irq) { 
    207 -       case RT3883_PCI_IRQ_PCI0: 
    208 -               mask = RT3833_PCI_PCIINT_PCI0; 
    209 -               break; 
    210 -       case RT3883_PCI_IRQ_PCI1: 
    211 -               mask = RT3833_PCI_PCIINT_PCI1; 
    212 -               break; 
    213 -       case RT3883_PCI_IRQ_PCIE: 
    214 -               mask = RT3833_PCI_PCIINT_PCIE; 
    215 -               break; 
    216 -       default: 
    217 -               BUG(); 
    218 -       } 
     193+       u32 t; 
     194+ 
    219195+       rpc = irq_data_get_irq_chip_data(d); 
    220   
    221 -       t = rt3883_pci_rr(RT3883_PCI_REG_PCIMSK_ADDR); 
    222 -       rt3883_pci_wr(t | mask, RT3883_PCI_REG_PCIMSK_ADDR); 
     196+ 
    223197+       t = rt3883_pci_r32(rpc, RT3883_PCI_REG_PCIENA); 
    224198+       rt3883_pci_w32(rpc, t | BIT(d->hwirq), RT3883_PCI_REG_PCIENA); 
    225         /* flush write */ 
    226 -       rt3883_pci_rr(RT3883_PCI_REG_PCIMSK_ADDR); 
     199+       /* flush write */ 
    227200+       rt3883_pci_r32(rpc, RT3883_PCI_REG_PCIENA); 
    228  } 
    229   
    230  static void rt3883_pci_irq_mask(struct irq_data *d) 
    231  { 
    232 -       int irq = d->irq; 
    233 -       u32 mask; 
     201+} 
     202+ 
     203+static void rt3883_pci_irq_mask(struct irq_data *d) 
     204+{ 
    234205+       struct rt3883_pci_controller *rpc; 
    235         u32 t; 
    236   
    237 -       switch (irq) { 
    238 -       case RT3883_PCI_IRQ_PCI0: 
    239 -               mask = RT3833_PCI_PCIINT_PCI0; 
    240 -               break; 
    241 -       case RT3883_PCI_IRQ_PCI1: 
    242 -               mask = RT3833_PCI_PCIINT_PCI1; 
    243 -               break; 
    244 -       case RT3883_PCI_IRQ_PCIE: 
    245 -               mask = RT3833_PCI_PCIINT_PCIE; 
    246 -               break; 
    247 -       default: 
    248 -               BUG(); 
    249 -       } 
     206+       u32 t; 
     207+ 
    250208+       rpc = irq_data_get_irq_chip_data(d); 
    251   
    252 -       t = rt3883_pci_rr(RT3883_PCI_REG_PCIMSK_ADDR); 
    253 -       rt3883_pci_wr(t & ~mask, RT3883_PCI_REG_PCIMSK_ADDR); 
     209+ 
    254210+       t = rt3883_pci_r32(rpc, RT3883_PCI_REG_PCIENA); 
    255211+       rt3883_pci_w32(rpc, t & ~BIT(d->hwirq), RT3883_PCI_REG_PCIENA); 
    256         /* flush write */ 
    257 -       rt3883_pci_rr(RT3883_PCI_REG_PCIMSK_ADDR); 
     212+       /* flush write */ 
    258213+       rt3883_pci_r32(rpc, RT3883_PCI_REG_PCIENA); 
    259  } 
    260   
    261  static struct irq_chip rt3883_pci_irq_chip = { 
    262 @@ -183,36 +192,84 @@ static struct irq_chip rt3883_pci_irq_ch 
    263         .irq_mask_ack   = rt3883_pci_irq_mask, 
    264  }; 
    265   
    266 -static void __init rt3883_pci_irq_init(void) 
     214+} 
     215+ 
     216+static struct irq_chip rt3883_pci_irq_chip = { 
     217+       .name           = "RT3883 PCI", 
     218+       .irq_mask       = rt3883_pci_irq_mask, 
     219+       .irq_unmask     = rt3883_pci_irq_unmask, 
     220+       .irq_mask_ack   = rt3883_pci_irq_mask, 
     221+}; 
     222+ 
    267223+static int rt3883_pci_irq_map(struct irq_domain *d, unsigned int irq, 
    268224+                             irq_hw_number_t hw) 
    269  { 
    270 -       int i; 
     225+{ 
    271226+       irq_set_chip_and_handler(irq, &rt3883_pci_irq_chip, handle_level_irq); 
    272227+       irq_set_chip_data(irq, d->host_data); 
     
    300255+               goto err_put_intc; 
    301256+       } 
    302   
    303         /* disable all interrupts */ 
    304 -       rt3883_pci_wr(0, RT3883_PCI_REG_PCIMSK_ADDR); 
     257+ 
     258+       /* disable all interrupts */ 
    305259+       rt3883_pci_w32(rpc, 0, RT3883_PCI_REG_PCIENA); 
    306   
    307 -       for (i = RT3883_PCI_IRQ_BASE; 
    308 -            i < RT3883_PCI_IRQ_BASE + RT3883_PCI_IRQ_COUNT; i++) { 
    309 -               irq_set_chip_and_handler(i, &rt3883_pci_irq_chip, 
    310 -                                        handle_level_irq); 
     260+ 
    311261+       rpc->irq_domain = 
    312262+               irq_domain_add_linear(intc_np, RT3883_PCI_IRQ_COUNT, 
     
    317267+               err = -ENODEV; 
    318268+               goto err_put_intc; 
    319         } 
    320   
    321 -       irq_set_chained_handler(RT3883_CPU_IRQ_PCI, rt3883_pci_irq_handler); 
     269+       } 
     270+ 
    322271+       irq_set_handler_data(irq, rpc); 
    323272+       irq_set_chained_handler(irq, rt3883_pci_irq_handler); 
     
    328277+       of_node_put(intc_np); 
    329278+       return err; 
    330  } 
    331   
    332  static int rt3883_pci_config_read(struct pci_bus *bus, unsigned int devfn, 
    333                                   int where, int size, u32 *val) 
    334  { 
     279+} 
     280+ 
     281+static int rt3883_pci_config_read(struct pci_bus *bus, unsigned int devfn, 
     282+                                 int where, int size, u32 *val) 
     283+{ 
    335284+       struct rt3883_pci_controller *rpc; 
    336         unsigned long flags; 
    337         u32 address; 
    338         u32 data; 
    339   
     285+       unsigned long flags; 
     286+       u32 address; 
     287+       u32 data; 
     288+ 
    340289+       rpc = pci_bus_to_rt3883_controller(bus); 
    341290+ 
     
    343292+               return PCIBIOS_DEVICE_NOT_FOUND; 
    344293+ 
    345         address = rt3883_pci_get_cfgaddr(bus->number, PCI_SLOT(devfn), 
    346                                          PCI_FUNC(devfn), where); 
    347   
    348 -       spin_lock_irqsave(&rt3883_pci_lock, flags); 
    349 -       rt3883_pci_wr(address, RT3883_PCI_REG_CONFIG_ADDR); 
    350 -       data = rt3883_pci_rr(RT3883_PCI_REG_CONFIG_DATA); 
    351 -       spin_unlock_irqrestore(&rt3883_pci_lock, flags); 
     294+       address = rt3883_pci_get_cfgaddr(bus->number, PCI_SLOT(devfn), 
     295+                                        PCI_FUNC(devfn), where); 
     296+ 
    352297+       spin_lock_irqsave(&rpc->lock, flags); 
    353298+       rt3883_pci_w32(rpc, address, RT3883_PCI_REG_CFGADDR); 
    354299+       data = rt3883_pci_r32(rpc, RT3883_PCI_REG_CFGDATA); 
    355300+       spin_unlock_irqrestore(&rpc->lock, flags); 
    356   
    357         switch (size) { 
    358         case 1: 
    359 @@ -232,16 +289,22 @@ static int rt3883_pci_config_read(struct 
    360  static int rt3883_pci_config_write(struct pci_bus *bus, unsigned int devfn, 
    361                                    int where, int size, u32 val) 
    362  { 
     301+ 
     302+       switch (size) { 
     303+       case 1: 
     304+               *val = (data >> ((where & 3) << 3)) & 0xff; 
     305+               break; 
     306+       case 2: 
     307+               *val = (data >> ((where & 3) << 3)) & 0xffff; 
     308+               break; 
     309+       case 4: 
     310+               *val = data; 
     311+               break; 
     312+       } 
     313+ 
     314+       return PCIBIOS_SUCCESSFUL; 
     315+} 
     316+ 
     317+static int rt3883_pci_config_write(struct pci_bus *bus, unsigned int devfn, 
     318+                                  int where, int size, u32 val) 
     319+{ 
    363320+       struct rt3883_pci_controller *rpc; 
    364         unsigned long flags; 
    365         u32 address; 
    366         u32 data; 
    367   
     321+       unsigned long flags; 
     322+       u32 address; 
     323+       u32 data; 
     324+ 
    368325+       rpc = pci_bus_to_rt3883_controller(bus); 
    369326+ 
     
    371328+               return PCIBIOS_DEVICE_NOT_FOUND; 
    372329+ 
    373         address = rt3883_pci_get_cfgaddr(bus->number, PCI_SLOT(devfn), 
    374                                          PCI_FUNC(devfn), where); 
    375   
    376 -       spin_lock_irqsave(&rt3883_pci_lock, flags); 
    377 -       rt3883_pci_wr(address, RT3883_PCI_REG_CONFIG_ADDR); 
    378 -       data = rt3883_pci_rr(RT3883_PCI_REG_CONFIG_DATA); 
     330+       address = rt3883_pci_get_cfgaddr(bus->number, PCI_SLOT(devfn), 
     331+                                        PCI_FUNC(devfn), where); 
     332+ 
    379333+       spin_lock_irqsave(&rpc->lock, flags); 
    380334+       rt3883_pci_w32(rpc, address, RT3883_PCI_REG_CFGADDR); 
    381335+       data = rt3883_pci_r32(rpc, RT3883_PCI_REG_CFGDATA); 
    382   
    383         switch (size) { 
    384         case 1: 
    385 @@ -257,8 +320,8 @@ static int rt3883_pci_config_write(struc 
    386                 break; 
    387         } 
    388   
    389 -       rt3883_pci_wr(data, RT3883_PCI_REG_CONFIG_DATA); 
    390 -       spin_unlock_irqrestore(&rt3883_pci_lock, flags); 
     336+ 
     337+       switch (size) { 
     338+       case 1: 
     339+               data = (data & ~(0xff << ((where & 3) << 3))) | 
     340+                      (val << ((where & 3) << 3)); 
     341+               break; 
     342+       case 2: 
     343+               data = (data & ~(0xffff << ((where & 3) << 3))) | 
     344+                      (val << ((where & 3) << 3)); 
     345+               break; 
     346+       case 4: 
     347+               data = val; 
     348+               break; 
     349+       } 
     350+ 
    391351+       rt3883_pci_w32(rpc, data, RT3883_PCI_REG_CFGDATA); 
    392352+       spin_unlock_irqrestore(&rpc->lock, flags); 
    393   
    394         return PCIBIOS_SUCCESSFUL; 
    395  } 
    396 @@ -268,220 +331,310 @@ static struct pci_ops rt3883_pci_ops = { 
    397         .write  = rt3883_pci_config_write, 
    398  }; 
    399   
    400 -static struct resource rt3883_pci_mem_resource = { 
    401 -       .name   = "PCI MEM space", 
    402 -       .start  = RT3883_PCI_MEM_BASE, 
    403 -       .end    = RT3883_PCI_MEM_BASE + RT3883_PCI_MEM_SIZE - 1, 
    404 -       .flags  = IORESOURCE_MEM, 
    405 -}; 
    406 - 
    407 -static struct resource rt3883_pci_io_resource = { 
    408 -       .name   = "PCI IO space", 
    409 -       .start  = RT3883_PCI_IO_BASE, 
    410 -       .end    = RT3883_PCI_IO_BASE + RT3883_PCI_IO_SIZE - 1, 
    411 -       .flags  = IORESOURCE_IO, 
    412 -}; 
    413 - 
    414 -static struct pci_controller rt3883_pci_controller = { 
    415 -       .pci_ops        = &rt3883_pci_ops, 
    416 -       .mem_resource   = &rt3883_pci_mem_resource, 
    417 -       .io_resource    = &rt3883_pci_io_resource, 
    418 -}; 
    419 - 
    420 -static void rt3883_pci_preinit(unsigned mode) 
     353+ 
     354+       return PCIBIOS_SUCCESSFUL; 
     355+} 
     356+ 
     357+static struct pci_ops rt3883_pci_ops = { 
     358+       .read   = rt3883_pci_config_read, 
     359+       .write  = rt3883_pci_config_write, 
     360+}; 
     361+ 
    421362+static void rt3883_pci_preinit(struct rt3883_pci_controller *rpc, unsigned mode) 
    422  { 
    423         u32 syscfg1; 
    424         u32 rstctrl; 
    425         u32 clkcfg1; 
     363+{ 
     364+       u32 syscfg1; 
     365+       u32 rstctrl; 
     366+       u32 clkcfg1; 
    426367+       u32 t; 
    427368+ 
     
    429370+       syscfg1 = rt_sysc_r32(RT3883_SYSC_REG_SYSCFG1); 
    430371+       clkcfg1 = rt_sysc_r32(RT3883_SYSC_REG_CLKCFG1); 
    431   
    432         if (mode & RT3883_PCI_MODE_PCIE) { 
    433 -               u32 val; 
     372+ 
     373+       if (mode & RT3883_PCI_MODE_PCIE) { 
    434374+               rstctrl |= RT3883_RSTCTRL_PCIE; 
    435375+               rt_sysc_w32(rstctrl, RT3883_SYSC_REG_RSTCTRL); 
    436   
    437 -               val = rt3883_sysc_rr(RT3883_SYSC_REG_SYSCFG1); 
    438 -               val &= ~(0x30); 
    439 -               val |= (2 << 4); 
    440 -               rt3883_sysc_wr(val, RT3883_SYSC_REG_SYSCFG1); 
    441 - 
    442 -               val = rt3883_sysc_rr(RT3883_SYSC_REG_PCIE_CLK_GEN0); 
    443 -               val &= ~BIT(31); 
    444 -               rt3883_sysc_wr(val, RT3883_SYSC_REG_PCIE_CLK_GEN0); 
    445 - 
    446 -               val = rt3883_sysc_rr(RT3883_SYSC_REG_PCIE_CLK_GEN1); 
    447 -               val &= 0x80ffffff; 
    448 -               rt3883_sysc_wr(val, RT3883_SYSC_REG_PCIE_CLK_GEN1); 
    449 - 
    450 -               val = rt3883_sysc_rr(RT3883_SYSC_REG_PCIE_CLK_GEN1); 
    451 -               val |= 0xa << 24; 
    452 -               rt3883_sysc_wr(val, RT3883_SYSC_REG_PCIE_CLK_GEN1); 
    453 - 
    454 -               val = rt3883_sysc_rr(RT3883_SYSC_REG_PCIE_CLK_GEN0); 
    455 -               val |= BIT(31); 
    456 -               rt3883_sysc_wr(val, RT3883_SYSC_REG_PCIE_CLK_GEN0); 
     376+ 
    457377+               /* setup PCI PAD drive mode */ 
    458378+               syscfg1 &= ~(0x30); 
     
    475395+               t |= BIT(31); 
    476396+               rt_sysc_w32(t, RT3883_SYSC_REG_PCIE_CLK_GEN0); 
    477   
    478                 msleep(50); 
     397+ 
     398+               msleep(50); 
    479399+ 
    480400+               rstctrl &= ~RT3883_RSTCTRL_PCIE; 
    481401+               rt_sysc_w32(rstctrl, RT3883_SYSC_REG_RSTCTRL); 
    482         } 
    483   
    484 -       syscfg1 = rt3883_sysc_rr(RT3883_SYSC_REG_SYSCFG1); 
    485 -       syscfg1 &= ~(RT3883_SYSCFG1_PCIE_RC_MODE | 
    486 -                    RT3883_SYSCFG1_PCI_HOST_MODE); 
    487 - 
    488 -       rstctrl = rt3883_sysc_rr(RT3883_SYSC_REG_RSTCTRL); 
    489 -       rstctrl |= (RT3883_RSTCTRL_PCI | RT3883_RSTCTRL_PCIE); 
    490 - 
    491 -       clkcfg1 = rt3883_sysc_rr(RT3883_SYSC_REG_CLKCFG1); 
    492 -       clkcfg1 &= ~(RT3883_CLKCFG1_PCI_CLK_EN | 
    493 -                    RT3883_CLKCFG1_PCIE_CLK_EN); 
     402+       } 
     403+ 
    494404+       syscfg1 |= (RT3883_SYSCFG1_PCIE_RC_MODE | RT3883_SYSCFG1_PCI_HOST_MODE); 
    495405+ 
    496406+       clkcfg1 &= ~(RT3883_CLKCFG1_PCI_CLK_EN | RT3883_CLKCFG1_PCIE_CLK_EN); 
    497   
    498         if (mode & RT3883_PCI_MODE_PCI) { 
    499 -               syscfg1 |= RT3883_SYSCFG1_PCI_HOST_MODE; 
    500                 clkcfg1 |= RT3883_CLKCFG1_PCI_CLK_EN; 
    501                 rstctrl &= ~RT3883_RSTCTRL_PCI; 
    502         } 
    503 + 
    504         if (mode & RT3883_PCI_MODE_PCIE) { 
    505 -               syscfg1 |= RT3883_SYSCFG1_PCI_HOST_MODE | 
    506 -                          RT3883_SYSCFG1_PCIE_RC_MODE; 
    507                 clkcfg1 |= RT3883_CLKCFG1_PCIE_CLK_EN; 
    508                 rstctrl &= ~RT3883_RSTCTRL_PCIE; 
    509         } 
    510   
    511 -       rt3883_sysc_wr(syscfg1, RT3883_SYSC_REG_SYSCFG1); 
    512 -       rt3883_sysc_wr(rstctrl, RT3883_SYSC_REG_RSTCTRL); 
    513 -       rt3883_sysc_wr(clkcfg1, RT3883_SYSC_REG_CLKCFG1); 
     407+ 
     408+       if (mode & RT3883_PCI_MODE_PCI) { 
     409+               clkcfg1 |= RT3883_CLKCFG1_PCI_CLK_EN; 
     410+               rstctrl &= ~RT3883_RSTCTRL_PCI; 
     411+       } 
     412+ 
     413+       if (mode & RT3883_PCI_MODE_PCIE) { 
     414+               clkcfg1 |= RT3883_CLKCFG1_PCIE_CLK_EN; 
     415+               rstctrl &= ~RT3883_RSTCTRL_PCIE; 
     416+       } 
     417+ 
    514418+       rt_sysc_w32(syscfg1, RT3883_SYSC_REG_SYSCFG1); 
    515419+       rt_sysc_w32(rstctrl, RT3883_SYSC_REG_RSTCTRL); 
    516420+       rt_sysc_w32(clkcfg1, RT3883_SYSC_REG_CLKCFG1); 
    517   
    518         msleep(500); 
    519 -} 
    520   
    521 -static int rt3883_pcie_ready(void) 
    522 -{ 
    523 -       u32 status; 
     421+ 
     422+       msleep(500); 
     423+ 
    524424+       /* 
    525425+        * setup the device number of the P2P bridge 
     
    528428+       t = (RT3883_P2P_BR_DEVNUM << RT3883_PCICFG_P2P_BR_DEVNUM_S); 
    529429+       rt3883_pci_w32(rpc, t, RT3883_PCI_REG_PCICFG); 
    530   
     430+ 
    531431+       /* flush write */ 
    532432+       rt3883_pci_r32(rpc, RT3883_PCI_REG_PCICFG); 
    533         msleep(500); 
    534   
    535 -       status = rt3883_pci_rr(RT3883_PCI_REG_STATUS(1)); 
    536 -       if (status & BIT(0)) 
    537 -               return 0; 
     433+       msleep(500); 
     434+ 
    538435+       if (mode & RT3883_PCI_MODE_PCIE) { 
    539436+               msleep(500); 
     
    565462+       rt3883_pci_w32(rpc, 0x79, RT3883_PCI_REG_ARBCTL); 
    566463+} 
    567   
    568 -       /* TODO: reset PCIe and turn off PCIe clock */ 
     464+ 
    569465+static inline void 
    570466+rt3883_dump_pci_config(struct rt3883_pci_controller *rpc, 
     
    575471+       for (i = 0; i < 16; i++) { 
    576472+               u32 val; 
    577   
    578 -       return -ENODEV; 
     473+ 
    579474+               val = rt3883_pci_read_cfg32(rpc, bus, slot, 0, i << 2); 
    580475+               pr_info("pci %02x:%02x.0 0x%02x = %08x\n", 
    581476+                       bus, slot, i << 2, val); 
    582477+       } 
    583  } 
    584   
    585 -void __init rt3883_pci_init(unsigned mode) 
     478+} 
     479+ 
    586480+static int rt3883_pci_probe(struct platform_device *pdev) 
    587  { 
     481+{ 
    588482+       struct rt3883_pci_controller *rpc; 
    589483+       struct device *dev = &pdev->dev; 
     
    591485+       struct resource *res; 
    592486+       struct device_node *child; 
    593         u32 val; 
    594         int err; 
     487+       u32 val; 
     488+       int err; 
    595489+       int mode; 
    596   
    597 -       rt3883_pci_preinit(mode); 
     490+ 
    598491+       rpc = devm_kzalloc(dev, sizeof(*rpc), GFP_KERNEL); 
    599492+       if (!rpc) 
     
    628521+                       continue; 
    629522+               } 
    630   
    631 -       rt3883_pci_base = ioremap(RT3883_PCI_BASE, PAGE_SIZE); 
    632 -       if (rt3883_pci_base == NULL) { 
    633 -               pr_err("failed to ioremap PCI registers\n"); 
    634 -               return; 
     523+ 
    635524+               switch (slot) { 
    636525+               case 1: 
     
    643532+                       break; 
    644533+               } 
    645         } 
    646   
    647 -       rt3883_pci_wr(0, RT3883_PCI_REG_PCICFG_ADDR); 
    648 -       if (mode & RT3883_PCI_MODE_PCI) 
    649 -               rt3883_pci_wr(BIT(16), RT3883_PCI_REG_PCICFG_ADDR); 
     534+       } 
     535+ 
    650536+       if (mode == RT3883_PCI_MODE_NONE) { 
    651537+               dev_err(dev, "unable to determine PCI mode\n"); 
     
    653539+               goto err_put_hb_node; 
    654540+       } 
    655   
    656 -       msleep(500); 
     541+ 
    657542+       dev_info(dev, "mode:%s%s\n", 
    658543+                (mode & RT3883_PCI_MODE_PCI) ? " PCI" : "", 
    659544+                (mode & RT3883_PCI_MODE_PCIE) ? " PCIe" : ""); 
    660   
    661 -       if (mode & RT3883_PCI_MODE_PCIE) { 
    662 -               err = rt3883_pcie_ready(); 
    663 -               if (err) 
    664 -                       return; 
    665 -       } 
     545+ 
    666546+       rt3883_pci_preinit(rpc, mode); 
    667   
    668 -       if (mode & RT3883_PCI_MODE_PCI) 
    669 -               rt3883_pci_wr(0x79, RT3883_PCI_REG_ARBCTL); 
     547+ 
    670548+       rpc->pci_controller.pci_ops = &rt3883_pci_ops; 
    671549+       rpc->pci_controller.io_resource = &rpc->io_res; 
    672550+       rpc->pci_controller.mem_resource = &rpc->mem_res; 
    673   
    674 -       rt3883_pci_wr(RT3883_PCI_MEM_BASE, RT3883_PCI_REG_MEMBASE); 
    675 -       rt3883_pci_wr(RT3883_PCI_IO_BASE, RT3883_PCI_REG_IOBASE); 
     551+ 
    676552+       /* Load PCI I/O and memory resources from DT */ 
    677553+       pci_load_of_ranges(&rpc->pci_controller, 
     
    683559+       ioport_resource.start = rpc->io_res.start; 
    684560+       ioport_resource.end = rpc->io_res.end; 
    685   
    686         /* PCI */ 
    687 -       rt3883_pci_wr(0x03ff0000, RT3883_PCI_REG_BAR0SETUP_ADDR(0)); 
    688 -       rt3883_pci_wr(RT3883_MEMORY_BASE, RT3883_PCI_REG_IMBASEBAR0_ADDR(0)); 
    689 -       rt3883_pci_wr(0x08021814, RT3883_PCI_REG_ID(0)); 
    690 -       rt3883_pci_wr(0x00800001, RT3883_PCI_REG_CLASS(0)); 
    691 -       rt3883_pci_wr(0x28801814, RT3883_PCI_REG_SUBID(0)); 
     561+ 
     562+       /* PCI */ 
    692563+       rt3883_pci_w32(rpc, 0x03ff0000, RT3883_PCI_REG_BAR0SETUP(0)); 
    693564+       rt3883_pci_w32(rpc, RT3883_MEMORY_BASE, RT3883_PCI_REG_IMBASEBAR0(0)); 
     
    695566+       rt3883_pci_w32(rpc, 0x00800001, RT3883_PCI_REG_CLASS(0)); 
    696567+       rt3883_pci_w32(rpc, 0x28801814, RT3883_PCI_REG_SUBID(0)); 
    697   
    698         /* PCIe */ 
    699 -       rt3883_pci_wr(0x01ff0000, RT3883_PCI_REG_BAR0SETUP_ADDR(1)); 
    700 -       rt3883_pci_wr(RT3883_MEMORY_BASE, RT3883_PCI_REG_IMBASEBAR0_ADDR(1)); 
    701 -       rt3883_pci_wr(0x08021814, RT3883_PCI_REG_ID(1)); 
    702 -       rt3883_pci_wr(0x06040001, RT3883_PCI_REG_CLASS(1)); 
    703 -       rt3883_pci_wr(0x28801814, RT3883_PCI_REG_SUBID(1)); 
    704 - 
    705 -       rt3883_pci_irq_init(); 
     568+ 
     569+       /* PCIe */ 
    706570+       rt3883_pci_w32(rpc, 0x03ff0000, RT3883_PCI_REG_BAR0SETUP(1)); 
    707571+       rt3883_pci_w32(rpc, RT3883_MEMORY_BASE, RT3883_PCI_REG_IMBASEBAR0(1)); 
     
    713577+       if (err) 
    714578+               goto err_put_hb_node; 
    715   
    716         /* PCIe */ 
    717 -       val = rt3883_pci_read_u32(0, 0x01, 0, PCI_COMMAND); 
    718 -       val |= 0x7; 
    719 -       rt3883_pci_write_u32(0, 0x01, 0, PCI_COMMAND, val); 
     579+ 
     580+       /* PCIe */ 
    720581+       val = rt3883_pci_read_cfg32(rpc, 0, 0x01, 0, PCI_COMMAND); 
    721582+       val |= PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER; 
    722583+       rt3883_pci_write_cfg32(rpc, 0, 0x01, 0, PCI_COMMAND, val); 
    723   
    724         /* PCI */ 
    725 -       val = rt3883_pci_read_u32(0, 0x00, 0, PCI_COMMAND); 
    726 -       val |= 0x7; 
    727 -       rt3883_pci_write_u32(0, 0x00, 0, PCI_COMMAND, val); 
     584+ 
     585+       /* PCI */ 
    728586+       val = rt3883_pci_read_cfg32(rpc, 0, 0x00, 0, PCI_COMMAND); 
    729587+       val |= PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER; 
     
    746604+ 
    747605+       register_pci_controller(&rpc->pci_controller); 
    748   
    749 -       ioport_resource.start = rt3883_pci_io_resource.start; 
    750 -       ioport_resource.end = rt3883_pci_io_resource.end; 
     606+ 
    751607+       return 0; 
    752   
    753 -       register_pci_controller(&rt3883_pci_controller); 
     608+ 
    754609+err_put_hb_node: 
    755610+       of_node_put(rpc->pci_controller.of_node); 
    756611+       return err; 
    757  } 
    758   
    759  int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) 
    760  { 
    761 -       int irq = -1; 
    762 - 
    763 -       switch (dev->bus->number) { 
    764 -       case 0: 
    765 -               switch (PCI_SLOT(dev->devfn)) { 
    766 -               case 0x00: 
    767 -                       rt3883_pci_wr(0x03ff0001, 
    768 -                                            RT3883_PCI_REG_BAR0SETUP_ADDR(0)); 
    769 -                       rt3883_pci_wr(0x03ff0001, 
    770 -                                            RT3883_PCI_REG_BAR0SETUP_ADDR(1)); 
    771 - 
    772 -                       rt3883_pci_write_u32(0, 0x00, 0, PCI_BASE_ADDRESS_0, 
    773 -                                            RT3883_MEMORY_BASE); 
    774 -                       rt3883_pci_read_u32(0, 0x00, 0, PCI_BASE_ADDRESS_0); 
    775 - 
    776 -                       irq = RT3883_CPU_IRQ_PCI; 
    777 -                       break; 
    778 -               case 0x01: 
    779 -                       rt3883_pci_write_u32(0, 0x01, 0, PCI_IO_BASE, 
    780 -                                            0x00000101); 
    781 -                       break; 
    782 -               case 0x11: 
    783 -                       irq = RT3883_PCI_IRQ_PCI0; 
    784 -                       break; 
    785 -               case 0x12: 
    786 -                       irq = RT3883_PCI_IRQ_PCI1; 
    787 -                       break; 
    788 -               } 
    789 -               break; 
    790 - 
    791 -       case 1: 
    792 -               irq = RT3883_PCI_IRQ_PCIE; 
    793 -               break; 
     612+} 
     613+ 
     614+int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) 
     615+{ 
    794616+       struct rt3883_pci_controller *rpc; 
    795617+       struct of_irq dev_irq; 
    796618+       int err; 
    797619+       int irq; 
    798   
    799 -       default: 
    800 -               dev_err(&dev->dev, "no IRQ specified\n"); 
    801 -               return irq; 
     620+ 
    802621+       rpc = pci_bus_to_rt3883_controller(dev->bus); 
    803622+       err = of_irq_map_pci(dev, &dev_irq); 
     
    806625+                      pci_name((struct pci_dev *) dev), err); 
    807626+               return 0; 
    808         } 
    809   
     627+       } 
     628+ 
    810629+       irq = irq_create_of_mapping(dev_irq.controller, 
    811630+                                   dev_irq.specifier, 
     
    819638+                       pci_name((struct pci_dev *) dev), irq, pin); 
    820639+ 
    821         return irq; 
    822  } 
    823   
    824 -void __init rt3883_pci_set_plat_dev_init(int (*f)(struct pci_dev *dev)) 
     640+       return irq; 
     641+} 
     642+ 
    825643+int pcibios_plat_dev_init(struct pci_dev *dev) 
    826  { 
    827 -       rt3883_pci_plat_dev_init = f; 
     644+{ 
    828645+       return 0; 
    829  } 
    830   
    831 -int pcibios_plat_dev_init(struct pci_dev *dev) 
    832 -{ 
    833 -       if (rt3883_pci_plat_dev_init) 
    834 -               return rt3883_pci_plat_dev_init(dev); 
     646+} 
     647+ 
    835648+static const struct of_device_id rt3883_pci_ids[] = { 
    836649+       { .compatible = "ralink,rt3883-pci" }, 
     
    838651+}; 
    839652+MODULE_DEVICE_TABLE(of, rt3883_pci_ids); 
    840   
    841 -       return 0; 
     653+ 
    842654+static struct platform_driver rt3883_pci_driver = { 
    843655+       .probe = rt3883_pci_probe, 
     
    852664+{ 
    853665+       return platform_driver_register(&rt3883_pci_driver); 
    854  } 
     666+} 
    855667+ 
    856668+postcore_initcall(rt3883_pci_init); 
     669--- a/arch/mips/ralink/Kconfig 
     670+++ b/arch/mips/ralink/Kconfig 
     671@@ -20,6 +20,7 @@ choice 
     672                bool "RT3883" 
     673                select USB_ARCH_HAS_OHCI 
     674                select USB_ARCH_HAS_EHCI 
     675+               select HW_HAS_PCI 
     676  
     677        config SOC_MT7620 
     678                bool "MT7620" 
  • trunk/target/linux/ramips/patches-3.8/0136-NET-MIPS-add-ralink-SoC-ethernet-driver.patch

    r36430 r36431  
    1 From 1c31c288bc1e853e3226ba593a13a0492b39c9e8 Mon Sep 17 00:00:00 2001 
     1From 34fc7d26c01ba594be347aefcc31f55b36c06a72 Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    3 Date: Fri, 15 Mar 2013 19:07:05 +0100 
    4 Subject: [PATCH 120/121] NET: MIPS: add ralink SoC ethernet driver 
     3Date: Mon, 22 Apr 2013 23:20:03 +0200 
     4Subject: [PATCH 136/137] NET: MIPS: add ralink SoC ethernet driver 
    55 
    66Add support for Ralink FE and ESW. 
     
    1515 drivers/net/ethernet/ramips/Makefile               |    9 + 
    1616 drivers/net/ethernet/ramips/ramips_debugfs.c       |  127 ++ 
    17  drivers/net/ethernet/ramips/ramips_esw.c           | 1220 +++++++++++++++++++ 
     17 drivers/net/ethernet/ramips/ramips_esw.c           | 1221 +++++++++++++++++++ 
    1818 drivers/net/ethernet/ramips/ramips_eth.h           |  375 ++++++ 
    19  drivers/net/ethernet/ramips/ramips_main.c          | 1285 ++++++++++++++++++++ 
    20  10 files changed, 3064 insertions(+) 
     19 drivers/net/ethernet/ramips/ramips_main.c          | 1281 ++++++++++++++++++++ 
     20 10 files changed, 3061 insertions(+) 
    2121 create mode 100644 arch/mips/include/asm/mach-ralink/rt305x_esw_platform.h 
    2222 create mode 100644 drivers/net/ethernet/ramips/Kconfig 
     
    5959--- a/arch/mips/ralink/rt305x.c 
    6060+++ b/arch/mips/ralink/rt305x.c 
    61 @@ -182,6 +182,7 @@ void __init ralink_clk_init(void) 
     61@@ -221,6 +221,7 @@ void __init ralink_clk_init(void) 
    6262        } 
    6363  
     
    18541854--- /dev/null 
    18551855+++ b/drivers/net/ethernet/ramips/ramips_main.c 
    1856 @@ -0,0 +1,1285 @@ 
     1856@@ -0,0 +1,1281 @@ 
    18571857+/* 
    18581858+ *   This program is free software; you can redistribute it and/or modify 
     
    18851885+#include <linux/clk.h> 
    18861886+#include <linux/of_net.h> 
     1887+#include <linux/of_mdio.h> 
    18871888+ 
    18881889+#include "ramips_eth.h" 
     
    22632264+ramips_mdio_init(struct raeth_priv *re) 
    22642265+{ 
     2266+       struct device_node *mii_np; 
    22652267+       int err; 
    2266 +       int i; 
     2268+ 
     2269+       mii_np = of_get_child_by_name(re->of_node, "mdio-bus"); 
     2270+       if (!mii_np) { 
     2271+               dev_err(re->parent, "no %s child node found", "mdio-bus"); 
     2272+               return -ENODEV; 
     2273+       } 
     2274+ 
     2275+       if (!of_device_is_available(mii_np)) { 
     2276+               err = 0; 
     2277+               goto err_put_node; 
     2278+       } 
    22672279+ 
    22682280+       re->mii_bus = mdiobus_alloc(); 
    2269 +       if (re->mii_bus == NULL) 
    2270 +               return -ENOMEM; 
     2281+       if (re->mii_bus == NULL) { 
     2282+               err = -ENOMEM; 
     2283+               goto err_put_node; 
     2284+       } 
    22712285+ 
    22722286+       re->mii_bus->name = "ramips_mdio"; 
     
    22792293+ 
    22802294+       snprintf(re->mii_bus->id, MII_BUS_ID_SIZE, "%s", "ramips_mdio"); 
    2281 +       re->mii_bus->phy_mask = 0; 
    2282 + 
    2283 +       for (i = 0; i < PHY_MAX_ADDR; i++) 
    2284 +               re->mii_irq[i] = PHY_POLL; 
    2285 + 
    2286 +       err = mdiobus_register(re->mii_bus); 
     2295+       err = of_mdiobus_register(re->mii_bus, mii_np); 
    22872296+       if (err) 
    22882297+               goto err_free_bus; 
     
    22922301+err_free_bus: 
    22932302+       kfree(re->mii_bus); 
     2303+err_put_node: 
     2304+       of_node_put(mii_np); 
     2305+       re->mii_bus = NULL; 
    22942306+       return err; 
    22952307+} 
     
    22982310+ramips_mdio_cleanup(struct raeth_priv *re) 
    22992311+{ 
     2312+       if (!re->mii_bus) 
     2313+               return; 
     2314+ 
    23002315+       mdiobus_unregister(re->mii_bus); 
     2316+       of_node_put(re->mii_bus->dev.of_node); 
    23012317+       kfree(re->mii_bus); 
    23022318+} 
     
    23312347+ 
    23322348+static int 
    2333 +ramips_phy_connect_multi(struct raeth_priv *re) 
    2334 +{ 
    2335 +       struct net_device *netdev = re->netdev; 
    2336 +       struct phy_device *phydev = NULL; 
    2337 +       int phy_addr; 
    2338 +       int ret = 0; 
    2339 + 
    2340 +       for (phy_addr = 0; phy_addr < PHY_MAX_ADDR; phy_addr++) { 
    2341 +               if (!(re->phy_mask & (1 << phy_addr))) 
    2342 +                       continue; 
    2343 + 
    2344 +               if (re->mii_bus->phy_map[phy_addr] == NULL) 
    2345 +                       continue; 
    2346 + 
    2347 +               RADEBUG("%s: PHY found at %s, uid=%08x\n", 
    2348 +                       netdev->name, 
    2349 +                       dev_name(&re->mii_bus->phy_map[phy_addr]->dev), 
    2350 +                       re->mii_bus->phy_map[phy_addr]->phy_id); 
    2351 + 
    2352 +               if (phydev == NULL) 
    2353 +                       phydev = re->mii_bus->phy_map[phy_addr]; 
    2354 +       } 
    2355 + 
    2356 +       if (!phydev) { 
    2357 +               netdev_err(netdev, "no PHY found with phy_mask=%08x\n", 
    2358 +                          re->phy_mask); 
    2359 +               return -ENODEV; 
    2360 +       } 
    2361 + 
    2362 +       re->phy_dev = phy_connect(netdev, dev_name(&phydev->dev), 
    2363 +                                 ramips_phy_link_adjust, 0, re->phy_if_mode); 
    2364 + 
    2365 +       if (IS_ERR(re->phy_dev)) { 
    2366 +               netdev_err(netdev, "could not connect to PHY at %s\n", 
    2367 +                          dev_name(&phydev->dev)); 
     2349+ramips_phy_connect_by_node(struct raeth_priv *re, struct device_node *phy_node) 
     2350+{ 
     2351+       struct phy_device *phydev; 
     2352+       int phy_mode; 
     2353+ 
     2354+       phy_mode = of_get_phy_mode(re->of_node); 
     2355+       if (phy_mode < 0) { 
     2356+               dev_err(re->parent, "incorrect phy-mode\n"); 
     2357+               return -EINVAL; 
     2358+       } 
     2359+ 
     2360+       phydev = of_phy_connect(re->netdev, phy_node, ramips_phy_link_adjust, 
     2361+                               0, phy_mode); 
     2362+       if (IS_ERR(phydev)) { 
     2363+               dev_err(re->parent, "could not connect to PHY\n"); 
    23682364+               return PTR_ERR(re->phy_dev); 
    23692365+       } 
     
    23722368+       phydev->advertising = phydev->supported; 
    23732369+ 
    2374 +       RADEBUG("%s: connected to PHY at %s [uid=%08x, driver=%s]\n", 
    2375 +               netdev->name, dev_name(&phydev->dev), 
    2376 +               phydev->phy_id, phydev->drv->name); 
    2377 + 
     2370+       dev_info(re->parent, 
     2371+                "connected to PHY at %s [uid=%08x, driver=%s]\n", 
     2372+                dev_name(&phydev->dev), phydev->phy_id, 
     2373+                phydev->drv->name); 
     2374+ 
     2375+       re->phy_dev = phydev; 
    23782376+       re->link = 0; 
    23792377+       re->speed = 0; 
     
    23822380+       re->tx_fc = 0; 
    23832381+ 
    2384 +       return ret; 
    2385 +} 
    2386 + 
    2387 +static int 
    2388 +ramips_phy_connect_fixed(struct raeth_priv *re) 
    2389 +{ 
    2390 +       if (!re->speed) { 
    2391 +               const __be32 *link; 
    2392 +               int size; 
    2393 + 
    2394 +               link = of_get_property(re->of_node, 
    2395 +                                       "ralink,fixed-link", &size); 
    2396 +               if (!link || size != (4 * sizeof(*link))) 
    2397 +                       return -ENOENT; 
    2398 + 
    2399 +               re->speed = be32_to_cpup(link++); 
    2400 +               re->duplex = be32_to_cpup(link++); 
    2401 +               re->tx_fc = be32_to_cpup(link++); 
    2402 +               re->rx_fc = be32_to_cpup(link++); 
    2403 +       } 
     2382+       return 0; 
     2383+} 
     2384+ 
     2385+static int 
     2386+ramips_phy_connect_fixed(struct raeth_priv *re, const __be32 *link, int size) 
     2387+{ 
     2388+       if (size != (4 * sizeof(*link))) { 
     2389+               dev_err(re->parent, "invalid fixed-link property\n"); 
     2390+               return -EINVAL; 
     2391+       } 
     2392+ 
     2393+       re->speed = be32_to_cpup(link++); 
     2394+       re->duplex = be32_to_cpup(link++); 
     2395+       re->tx_fc = be32_to_cpup(link++); 
     2396+       re->rx_fc = be32_to_cpup(link++); 
    24042397+ 
    24052398+       switch (re->speed) { 
     
    24092402+               break; 
    24102403+       default: 
    2411 +               netdev_err(re->netdev, "invalid speed specified\n"); 
     2404+               dev_err(re->parent, "invalid link speed: %d\n", re->speed); 
    24122405+               return -EINVAL; 
    24132406+       } 
    24142407+ 
    2415 +       pr_info("%s: using fixed link parameters\n", re->netdev->name); 
     2408+       dev_info(re->parent, "using fixed link parameters\n"); 
    24162409+       return 0; 
    24172410+} 
     
    24202413+ramips_phy_connect(struct raeth_priv *re) 
    24212414+{ 
    2422 +       const __be32 *mask; 
    2423 + 
    2424 +       mask = of_get_property(re->of_node, "ralink,phy-mask", NULL); 
    2425 +       re->phy_if_mode = of_get_phy_mode(re->of_node); 
    2426 + 
    2427 +       if (!re->phy_if_mode || !mask) 
    2428 +               return ramips_phy_connect_fixed(re); 
    2429 + 
    2430 +       re->phy_mask = be32_to_cpup(mask); 
    2431 +       return ramips_phy_connect_multi(re); 
    2432 + 
     2415+       struct device_node *phy_node; 
     2416+       const __be32 *p32; 
     2417+       int size; 
     2418+ 
     2419+       phy_node = of_parse_phandle(re->of_node, "phy-handle", 0); 
     2420+       if (phy_node) 
     2421+               return ramips_phy_connect_by_node(re, phy_node); 
     2422+ 
     2423+       p32 = of_get_property(re->of_node, "ralink,fixed-link", &size); 
     2424+       if (p32) 
     2425+               return ramips_phy_connect_fixed(re, p32, size); 
     2426+ 
     2427+       dev_err(re->parent, "unable to get connection type\n"); 
     2428+       return -EINVAL; 
    24332429+} 
    24342430+ 
  • trunk/target/linux/ramips/patches-3.8/0137-watchdog-adds-ralink-wdt.patch

    r36430 r36431  
    1 From 8dd2c6ae6d9c858d9c4c4d55aa4bf180669ddfe9 Mon Sep 17 00:00:00 2001 
     1From 14c1b064274d28cf88113a685c58374a515f3018 Mon Sep 17 00:00:00 2001 
    22From: John Crispin <blogic@openwrt.org> 
    3 Date: Tue, 22 Jan 2013 18:23:50 +0100 
    4 Subject: [PATCH 121/121] watchdog: adds ralink wdt 
     3Date: Mon, 22 Apr 2013 23:23:07 +0200 
     4Subject: [PATCH 137/137] watchdog: adds ralink wdt 
    55 
    66Adds the watchdog driver for ralink SoC. 
  • trunk/target/linux/ramips/patches-3.8/0204-owrt-MIPS-ralink-add-usb-platform-support.patch

    r36260 r36431  
    3535--- a/arch/mips/ralink/common.h 
    3636+++ b/arch/mips/ralink/common.h 
    37 @@ -46,5 +46,6 @@ extern void prom_soc_init(struct ralink_ 
     37@@ -51,5 +51,6 @@ extern void prom_soc_init(struct ralink_ 
    3838 __iomem void *plat_of_remap_node(const char *node); 
    3939  
     
    4444--- a/arch/mips/ralink/mt7620.c 
    4545+++ b/arch/mips/ralink/mt7620.c 
    46 @@ -146,6 +146,11 @@ struct ralink_pinmux rt_pinmux = { 
    47  //     .wdt_reset = rt305x_wdt_reset, 
     46@@ -140,6 +140,11 @@ struct ralink_pinmux rt_gpio_pinmux = { 
     47        .uart_mask = MT7620_GPIO_MODE_GPIO, 
    4848 }; 
    4949  
     
    5858--- a/arch/mips/ralink/of.c 
    5959+++ b/arch/mips/ralink/of.c 
    60 @@ -102,6 +102,7 @@ static int __init plat_of_setup(void) 
     60@@ -111,6 +111,7 @@ static int __init plat_of_setup(void) 
    6161                panic("failed to populate DT\n"); 
    6262  
  • trunk/target/linux/ramips/patches-3.8/0205-owrt-MIPS-add-OWRTDTB-secion.patch

    r36215 r36431  
    3333--- a/arch/mips/ralink/of.c 
    3434+++ b/arch/mips/ralink/of.c 
    35 @@ -76,6 +76,8 @@ void __init device_tree_init(void) 
     35@@ -77,6 +77,8 @@ void __init device_tree_init(void) 
    3636        free_bootmem(base, size); 
    3737 } 
     
    4242 { 
    4343        set_io_port_base(KSEG1); 
    44 @@ -84,7 +86,7 @@ void __init plat_mem_setup(void) 
     44@@ -85,7 +87,7 @@ void __init plat_mem_setup(void) 
    4545         * Load the builtin devicetree. This causes the chosen node to be 
    4646         * parsed resulting in our memory appearing 
     
    4848-       __dt_setup_arch(&__dtb_start); 
    4949+       __dt_setup_arch(&__image_dtb); 
    50  } 
    5150  
    52  static int __init plat_of_setup(void) 
     51        if (soc_info.mem_size) 
     52                add_memory_region(soc_info.mem_base, soc_info.mem_size, 
Note: See TracChangeset for help on using the changeset viewer.