Ticket #6525: ar71xx-2.6.33-r19392.patch

File ar71xx-2.6.33-r19392.patch, 51.7 KB (added by acoul <alex at ozo.com>, 7 years ago)

2.6.33-rc6 patches against r19392

  • 001-ar71xx_core.patch

    diff -Nru ar71xx/patches-2.6..33.nope/001-ar71xx_core.patch ar71xx/patches-2.6.33/001-ar71xx_core.patch
    old new  
     1--- a/arch/mips/Kconfig 2010-01-30 08:35:21.681049373 +0200 
     2+++ b/arch/mips/Kconfig 2010-01-30 08:42:42.054049390 +0200 
     3@@ -48,6 +48,23 @@ 
     4          Support for the Texas Instruments AR7 System-on-a-Chip 
     5          family: TNETD7100, 7200 and 7300. 
     6  
     7+config ATHEROS_AR71XX 
     8+       bool "Atheros AR71xx based boards" 
     9+       select CEVT_R4K 
     10+       select CSRC_R4K 
     11+       select DMA_NONCOHERENT 
     12+       select HW_HAS_PCI 
     13+       select IRQ_CPU 
     14+       select ARCH_REQUIRE_GPIOLIB 
     15+       select SYS_HAS_CPU_MIPS32_R1 
     16+       select SYS_HAS_CPU_MIPS32_R2 
     17+       select SYS_SUPPORTS_32BIT_KERNEL 
     18+       select SYS_SUPPORTS_BIG_ENDIAN 
     19+       select SYS_HAS_EARLY_PRINTK 
     20+       select MIPS_MACHINE 
     21+       help 
     22+        Support for Atheros AR71xx based boards. 
     23+ 
     24 config BCM47XX 
     25        bool "BCM47XX based boards" 
     26        select CEVT_R4K 
     27@@ -682,6 +699,7 @@ 
     28 endchoice 
     29  
     30 source "arch/mips/alchemy/Kconfig" 
     31+source "arch/mips/ar71xx/Kconfig" 
     32 source "arch/mips/bcm63xx/Kconfig" 
     33 source "arch/mips/jazz/Kconfig" 
     34 source "arch/mips/lasat/Kconfig" 
     35--- a/arch/mips/Makefile        2010-01-30 08:35:23.000000000 +0200 
     36+++ b/arch/mips/Makefile        2010-01-30 08:40:36.768174456 +0200 
     37@@ -637,6 +637,13 @@ 
     38 load-$(CONFIG_CPU_CAVIUM_OCTEON)       += 0xffffffff81100000 
     39 endif 
     40  
     41+# 
     42+# Atheros AR71xx 
     43+# 
     44+core-$(CONFIG_ATHEROS_AR71XX)  += arch/mips/ar71xx/ 
     45+cflags-$(CONFIG_ATHEROS_AR71XX)        += -I$(srctree)/arch/mips/include/asm/mach-ar71xx 
     46+load-$(CONFIG_ATHEROS_AR71XX)  += 0xffffffff80060000 
     47+ 
     48 # temporary until string.h is fixed 
     49 cflags-y += -ffreestanding 
     50  
  • 002-ar71xx_pci.patch

    diff -Nru ar71xx/patches-2.6..33.nope/002-ar71xx_pci.patch ar71xx/patches-2.6.33/002-ar71xx_pci.patch
    old new  
     1--- a/arch/mips/pci/Makefile 
     2+++ b/arch/mips/pci/Makefile 
     3@@ -18,6 +18,7 @@ obj-$(CONFIG_PCI_TX4927)      += ops-tx4927.o 
     4 obj-$(CONFIG_BCM47XX)          += pci-bcm47xx.o 
     5 obj-$(CONFIG_BCM63XX)          += pci-bcm63xx.o fixup-bcm63xx.o \ 
     6                                        ops-bcm63xx.o 
     7+obj-$(CONFIG_ATHEROS_AR71XX)   += pci-ar71xx.o pci-ar724x.o 
     8  
     9 # 
     10 # These are still pretty much in the old state, watch, go blind. 
  • 003-ar71xx_usb_host.patch

    diff -Nru ar71xx/patches-2.6..33.nope/003-ar71xx_usb_host.patch ar71xx/patches-2.6.33/003-ar71xx_usb_host.patch
    old new  
     1--- a/drivers/usb/host/Kconfig 
     2+++ b/drivers/usb/host/Kconfig 
     3@@ -98,6 +98,13 @@ config USB_EHCI_BIG_ENDIAN_DESC 
     4        depends on USB_EHCI_HCD && (440EPX || ARCH_IXP4XX) 
     5        default y 
     6  
     7+config USB_EHCI_AR71XX 
     8+       bool "USB EHCI support for AR71xx" 
     9+       depends on USB_EHCI_HCD && ATHEROS_AR71XX 
     10+       default y 
     11+       help 
     12+         Support for Atheros AR71xx built-in EHCI controller 
     13+ 
     14 config USB_EHCI_FSL 
     15        bool "Support for Freescale on-chip EHCI USB controller" 
     16        depends on USB_EHCI_HCD && FSL_SOC 
     17@@ -189,6 +196,13 @@ config USB_OHCI_HCD 
     18          To compile this driver as a module, choose M here: the 
     19          module will be called ohci-hcd. 
     20  
     21+config USB_OHCI_AR71XX 
     22+       bool "USB OHCI support for Atheros AR71xx" 
     23+       depends on USB_OHCI_HCD && ATHEROS_AR71XX 
     24+       default y 
     25+       help 
     26+         Support for Atheros AR71xx built-in OHCI controller 
     27+ 
     28 config USB_OHCI_HCD_PPC_SOC 
     29        bool "OHCI support for on-chip PPC USB controller" 
     30        depends on USB_OHCI_HCD && (STB03xxx || PPC_MPC52xx) 
     31--- a/drivers/usb/host/ehci-hcd.c 
     32+++ b/drivers/usb/host/ehci-hcd.c 
     33@@ -1141,6 +1141,11 @@ MODULE_LICENSE ("GPL"); 
     34 #define        PLATFORM_DRIVER         ehci_atmel_driver 
     35 #endif 
     36  
     37+#ifdef CONFIG_USB_EHCI_AR71XX 
     38+#include "ehci-ar71xx.c" 
     39+#define PLATFORM_DRIVER                ehci_ar71xx_driver 
     40+#endif 
     41+ 
     42 #if !defined(PCI_DRIVER) && !defined(PLATFORM_DRIVER) && \ 
     43     !defined(PS3_SYSTEM_BUS_DRIVER) && !defined(OF_PLATFORM_DRIVER) 
     44 #error "missing bus glue for ehci-hcd" 
     45--- a/drivers/usb/host/ohci-hcd.c 
     46+++ b/drivers/usb/host/ohci-hcd.c 
     47@@ -1085,6 +1085,11 @@ MODULE_LICENSE ("GPL"); 
     48 #define TMIO_OHCI_DRIVER       ohci_hcd_tmio_driver 
     49 #endif 
     50  
     51+#ifdef CONFIG_USB_OHCI_AR71XX 
     52+#include "ohci-ar71xx.c" 
     53+#define PLATFORM_DRIVER                ohci_hcd_ar71xx_driver 
     54+#endif 
     55+ 
     56 #if    !defined(PCI_DRIVER) &&         \ 
     57        !defined(PLATFORM_DRIVER) &&    \ 
     58        !defined(OF_PLATFORM_DRIVER) && \ 
  • 004-ar71xx_spi_controller.patch

    diff -Nru ar71xx/patches-2.6..33.nope/004-ar71xx_spi_controller.patch ar71xx/patches-2.6.33/004-ar71xx_spi_controller.patch
    old new  
     1--- a/drivers/spi/Kconfig 
     2+++ b/drivers/spi/Kconfig 
     3@@ -53,6 +53,13 @@ if SPI_MASTER 
     4  
     5 comment "SPI Master Controller Drivers" 
     6  
     7+config SPI_AR71XX 
     8+       tristate "Atheros AR71xx SPI Controller" 
     9+       depends on SPI_MASTER && ATHEROS_AR71XX 
     10+       select SPI_BITBANG 
     11+       help 
     12+         This is the SPI contoller driver for Atheros AR71xx. 
     13+ 
     14 config SPI_ATMEL 
     15        tristate "Atmel SPI Controller" 
     16        depends on (ARCH_AT91 || AVR32) 
     17--- a/drivers/spi/Makefile 
     18+++ b/drivers/spi/Makefile 
     19@@ -11,6 +11,7 @@ endif 
     20 obj-$(CONFIG_SPI_MASTER)               += spi.o 
     21  
     22 # SPI master controller drivers (bus) 
     23+obj-$(CONFIG_SPI_AR71XX)               += ar71xx_spi.o 
     24 obj-$(CONFIG_SPI_ATMEL)                        += atmel_spi.o 
     25 obj-$(CONFIG_SPI_BFIN)                 += spi_bfin5xx.o 
     26 obj-$(CONFIG_SPI_BITBANG)              += spi_bitbang.o 
  • 005-ar71xx_mac_driver.patch

    diff -Nru ar71xx/patches-2.6..33.nope/005-ar71xx_mac_driver.patch ar71xx/patches-2.6.33/005-ar71xx_mac_driver.patch
    old new  
     1--- a/drivers/net/Kconfig 
     2+++ b/drivers/net/Kconfig 
     3@@ -2126,6 +2126,8 @@ config ACENIC_OMIT_TIGON_I 
     4  
     5          The safe and default value for this is N. 
     6  
     7+source drivers/net/ag71xx/Kconfig 
     8+ 
     9 config DL2K 
     10        tristate "DL2000/TC902x-based Gigabit Ethernet support" 
     11        depends on PCI 
     12--- a/drivers/net/Makefile 
     13+++ b/drivers/net/Makefile 
     14@@ -106,6 +106,7 @@ obj-$(CONFIG_STMMAC_ETH) += stmmac/ 
     15 # end link order section 
     16 # 
     17  
     18+obj-$(CONFIG_AG71XX) += ag71xx/ 
     19 obj-$(CONFIG_SUNDANCE) += sundance.o 
     20 obj-$(CONFIG_HAMACHI) += hamachi.o 
     21 obj-$(CONFIG_NET) += Space.o loopback.o 
  • 006-ar71xx_wdt_driver.patch

    diff -Nru ar71xx/patches-2.6..33.nope/006-ar71xx_wdt_driver.patch ar71xx/patches-2.6.33/006-ar71xx_wdt_driver.patch
    old new  
     1--- a/drivers/watchdog/Kconfig 
     2+++ b/drivers/watchdog/Kconfig 
     3@@ -850,6 +850,13 @@ config TXX9_WDT 
     4        help 
     5          Hardware driver for the built-in watchdog timer on TXx9 MIPS SoCs. 
     6  
     7+config AR71XX_WDT 
     8+       tristate "Atheros AR71xx Watchdog Timer" 
     9+       depends on ATHEROS_AR71XX 
     10+       help 
     11+         Hardware driver for the built-in watchdog timer on the Atheros 
     12+         AR71xx SoCs. 
     13+ 
     14 # PARISC Architecture 
     15  
     16 # POWERPC Architecture 
     17--- a/drivers/watchdog/Makefile 
     18+++ b/drivers/watchdog/Makefile 
     19@@ -113,6 +113,7 @@ obj-$(CONFIG_WDT_RM9K_GPI) += rm9k_wdt.o 
     20 obj-$(CONFIG_SIBYTE_WDOG) += sb_wdog.o 
     21 obj-$(CONFIG_AR7_WDT) += ar7_wdt.o 
     22 obj-$(CONFIG_TXX9_WDT) += txx9wdt.o 
     23+obj-$(CONFIG_AR71XX_WDT) += ar71xx_wdt.o 
     24  
     25 # PARISC Architecture 
     26  
  • 007-ar91xx_flash_driver.patch

    diff -Nru ar71xx/patches-2.6..33.nope/007-ar91xx_flash_driver.patch ar71xx/patches-2.6.33/007-ar91xx_flash_driver.patch
    old new  
     1--- a/drivers/mtd/maps/Kconfig 
     2+++ b/drivers/mtd/maps/Kconfig 
     3@@ -259,6 +259,13 @@ config MTD_ALCHEMY 
     4        help 
     5          Flash memory access on AMD Alchemy Pb/Db/RDK Reference Boards 
     6  
     7+config MTD_AR91XX_FLASH 
     8+       tristate "Atheros AR91xx parallel flash support" 
     9+       depends on ATHEROS_AR71XX 
     10+       select MTD_COMPLEX_MAPPINGS 
     11+       help 
     12+         Parallel flash driver for the Atheros AR91xx based boards. 
     13+ 
     14 config MTD_DILNETPC 
     15        tristate "CFI Flash device mapped on DIL/Net PC" 
     16        depends on X86 && MTD_CONCAT && MTD_PARTITIONS && MTD_CFI_INTELEXT && BROKEN 
     17--- a/drivers/mtd/maps/Makefile 
     18+++ b/drivers/mtd/maps/Makefile 
     19@@ -41,6 +41,7 @@ obj-$(CONFIG_MTD_DBOX2)               += dbox2-flash. 
     20 obj-$(CONFIG_MTD_SOLUTIONENGINE)+= solutionengine.o 
     21 obj-$(CONFIG_MTD_PCI)          += pci.o 
     22 obj-$(CONFIG_MTD_ALCHEMY)       += alchemy-flash.o 
     23+obj-$(CONFIG_MTD_AR91XX_FLASH) += ar91xx_flash.o 
     24 obj-$(CONFIG_MTD_AUTCPU12)     += autcpu12-nvram.o 
     25 obj-$(CONFIG_MTD_EDB7312)      += edb7312.o 
     26 obj-$(CONFIG_MTD_IMPA7)                += impa7.o 
  • 100-mtd_m25p80_add_pm25lv_flash_support.patch

    diff -Nru ar71xx/patches-2.6..33.nope/100-mtd_m25p80_add_pm25lv_flash_support.patch ar71xx/patches-2.6.33/100-mtd_m25p80_add_pm25lv_flash_support.patch
    old new  
     1--- a/drivers/mtd/devices/m25p80.c 
     2+++ b/drivers/mtd/devices/m25p80.c 
     3@@ -626,6 +626,10 @@ static struct flash_info __devinitdata m 
     4        { "mx25l12805d", 0xc22018, 0, 64 * 1024, 256, }, 
     5        { "mx25l12855e", 0xc22618, 0, 64 * 1024, 256, }, 
     6  
     7+       /* PMC -- pm25x "blocks" are 32K, sectors are 4K */ 
     8+       { "pm25lv512",         0, 32 * 1024, 2, SECT_4K }, 
     9+       { "pm25lv010",         0, 32 * 1024, 4, SECT_4K }, 
     10+ 
     11        /* Spansion -- single (large) sector size only, at least 
     12         * for the chips listed here (without boot sectors). 
     13         */ 
  • 101-ksz8041_phy_driver.patch

    diff -Nru ar71xx/patches-2.6..33.nope/101-ksz8041_phy_driver.patch ar71xx/patches-2.6.33/101-ksz8041_phy_driver.patch
    old new  
     1--- a/drivers/net/phy/Kconfig 
     2+++ b/drivers/net/phy/Kconfig 
     3@@ -114,6 +114,11 @@ config RTL8306_PHY 
     4        tristate "Driver for Realtek RTL8306S switches" 
     5        select SWCONFIG 
     6  
     7+config MICREL_PHY 
     8+       tristate "Drivers for Micrel/Kendin PHYs" 
     9+       ---help--- 
     10+         Currently has a driver for the KSZ8041 
     11+ 
     12 config FIXED_PHY 
     13        bool "Driver for MDIO Bus/PHY emulation with fixed speed/link PHYs" 
     14        depends on PHYLIB=y 
     15--- a/drivers/net/phy/Makefile 
     16+++ b/drivers/net/phy/Makefile 
     17@@ -23,6 +23,7 @@ obj-$(CONFIG_RTL8306_PHY)     += rtl8306.o 
     18 obj-$(CONFIG_RTL8366_SMI)      += rtl8366_smi.o 
     19 obj-$(CONFIG_RTL8366S_PHY)     += rtl8366s.o 
     20 obj-$(CONFIG_LSI_ET1011C_PHY)  += et1011c.o 
     21+obj-$(CONFIG_MICREL)           += micrel.o 
     22 obj-$(CONFIG_FIXED_PHY)                += fixed.o 
     23 obj-$(CONFIG_MDIO_BITBANG)     += mdio-bitbang.o 
     24 obj-$(CONFIG_MDIO_GPIO)                += mdio-gpio.o 
  • 102-mtd_m25p80_add_myloader_parser.patch

    diff -Nru ar71xx/patches-2.6..33.nope/102-mtd_m25p80_add_myloader_parser.patch ar71xx/patches-2.6.33/102-mtd_m25p80_add_myloader_parser.patch
    old new  
     1--- a/drivers/mtd/devices/m25p80.c 
     2+++ b/drivers/mtd/devices/m25p80.c 
     3@@ -856,6 +856,16 @@ static int __devinit m25p_probe(struct s 
     4                                        part_probes, &parts, 0); 
     5                } 
     6  
     7+#ifdef CONFIG_MTD_MYLOADER_PARTS 
     8+               if (nr_parts <= 0) { 
     9+                       static const char *part_probes[] 
     10+                                       = { "MyLoader", NULL, }; 
     11+ 
     12+                       nr_parts = parse_mtd_partitions(&flash->mtd, 
     13+                                       part_probes, &parts, 0); 
     14+               } 
     15+#endif 
     16+ 
     17                if (nr_parts <= 0 && data && data->parts) { 
     18                        parts = data->parts; 
     19                        nr_parts = data->nr_parts; 
  • 103-mtd_m25p80_add_en25pxx_support.patch

    diff -Nru ar71xx/patches-2.6..33.nope/103-mtd_m25p80_add_en25pxx_support.patch ar71xx/patches-2.6.33/103-mtd_m25p80_add_en25pxx_support.patch
    old new  
     1--- a/drivers/mtd/devices/m25p80.c 
     2+++ b/drivers/mtd/devices/m25p80.c 
     3@@ -626,6 +626,10 @@ static struct flash_info __devinitdata m 
     4        { "mx25l12805d", 0xc22018, 0, 64 * 1024, 256, }, 
     5        { "mx25l12855e", 0xc22618, 0, 64 * 1024, 256, }, 
     6  
     7+       /* EON -- en25pxx */ 
     8+       { "en25p32", 0x1c2016, 0, 64 * 1024,  64, }, 
     9+       { "en25p64", 0x1c2017, 0, 64 * 1024, 128, }, 
     10+ 
     11        /* PMC -- pm25x "blocks" are 32K, sectors are 4K */ 
     12        { "pm25lv512",         0, 32 * 1024, 2, SECT_4K }, 
     13        { "pm25lv010",         0, 32 * 1024, 4, SECT_4K }, 
  • 104-mtd_m25p80_add_redboot_parser.patch

    diff -Nru ar71xx/patches-2.6..33.nope/104-mtd_m25p80_add_redboot_parser.patch ar71xx/patches-2.6.33/104-mtd_m25p80_add_redboot_parser.patch
    old new  
     1--- a/drivers/mtd/devices/m25p80.c 
     2+++ b/drivers/mtd/devices/m25p80.c 
     3@@ -870,6 +870,15 @@ static int __devinit m25p_probe(struct s 
     4                } 
     5 #endif 
     6  
     7+#ifdef CONFIG_MTD_REDBOOT_PARTS 
     8+               if (nr_parts <= 0) { 
     9+                       static const char *part_probes[] 
     10+                                       = { "RedBoot", NULL, }; 
     11+ 
     12+                       nr_parts = parse_mtd_partitions(&flash->mtd, 
     13+                                       part_probes, &parts, 0); 
     14+               } 
     15+#endif 
     16                if (nr_parts <= 0 && data && data->parts) { 
     17                        parts = data->parts; 
     18                        nr_parts = data->nr_parts; 
  • 105-mtd_m25p80_add_mx25lxxx_support.patch

    diff -Nru ar71xx/patches-2.6..33.nope/105-mtd_m25p80_add_mx25lxxx_support.patch ar71xx/patches-2.6.33/105-mtd_m25p80_add_mx25lxxx_support.patch
    old new  
     1--- a/drivers/mtd/devices/m25p80.c 
     2+++ b/drivers/mtd/devices/m25p80.c 
     3@@ -630,6 +630,11 @@ static struct flash_info __devinitdata m 
     4        { "en25p32", 0x1c2016, 0, 64 * 1024,  64, }, 
     5        { "en25p64", 0x1c2017, 0, 64 * 1024, 128, }, 
     6  
     7+       /* Macronix -- mx25lxxx */ 
     8+       { "mx25l32",  0xc22016, 0, 64 * 1024,  64, }, 
     9+       { "mx25l64",  0xc22017, 0, 64 * 1024, 128, }, 
     10+       { "mx25l128", 0xc22018, 0, 64 * 1024, 256, }, 
     11+ 
     12        /* PMC -- pm25x "blocks" are 32K, sectors are 4K */ 
     13        { "pm25lv512",         0, 32 * 1024, 2, SECT_4K }, 
     14        { "pm25lv010",         0, 32 * 1024, 4, SECT_4K }, 
  • 106-mtd_m25p80_add_xxxs33b_support.patch

    diff -Nru ar71xx/patches-2.6..33.nope/106-mtd_m25p80_add_xxxs33b_support.patch ar71xx/patches-2.6.33/106-mtd_m25p80_add_xxxs33b_support.patch
    old new  
     1--- a/drivers/mtd/devices/m25p80.c 
     2+++ b/drivers/mtd/devices/m25p80.c 
     3@@ -654,6 +654,11 @@ 
     4        { "mx25l64",  0xc22017, 0, 64 * 1024, 128, }, 
     5        { "mx25l128", 0xc22018, 0, 64 * 1024, 256, }, 
     6  
     7+       /* Numonyx -- xxxs33b */ 
     8+       { "160s33b",  0x898911, 0, 64 * 1024,  64, }, 
     9+       { "320s33b",  0x898912, 0, 64 * 1024, 128, }, 
     10+       { "640s33b",  0x898913, 0, 64 * 1024, 256, }, 
     11+ 
     12        /* PMC -- pm25x "blocks" are 32K, sectors are 4K */ 
     13        { "pm25lv512",         0, 32 * 1024, 2, SECT_4K }, 
     14        { "pm25lv010",         0, 32 * 1024, 4, SECT_4K }, 
     15@@ -838,11 +843,12 @@ 
     16        dev_set_drvdata(&spi->dev, flash); 
     17  
     18        /* 
     19-        * Atmel and SST serial flash tend to power 
     20-        * up with the software protection bits set 
     21+        * Atmel, Intel/Numonyx and SST serial flash tend 
     22+        * to power up with the software protection bits set 
     23         */ 
     24  
     25        if (info->jedec_id >> 16 == 0x1f || 
     26+           info->jedec_id >> 16 == 0x89 || 
     27            info->jedec_id >> 16 == 0xbf) { 
     28                write_enable(flash); 
     29                write_sr(flash, 0); 
  • 107-mtd-SST39VF6401B-support.patch

    diff -Nru ar71xx/patches-2.6..33.nope/107-mtd-SST39VF6401B-support.patch ar71xx/patches-2.6.33/107-mtd-SST39VF6401B-support.patch
    old new  
     1--- a/drivers/mtd/chips/jedec_probe.c 
     2+++ b/drivers/mtd/chips/jedec_probe.c 
     3@@ -166,6 +166,7 @@ 
     4 #define SST39LF160     0x2782 
     5 #define SST39VF1601    0x234b 
     6 #define SST39VF3201    0x235b 
     7+#define SST39VF6401B   0x236d 
     8 #define SST39LF512     0x00D4 
     9 #define SST39LF010     0x00D5 
     10 #define SST39LF020     0x00D6 
     11@@ -1556,6 +1557,18 @@ static const struct amd_flash_info jedec 
     12                        ERASEINFO(0x10000,64), 
     13                } 
     14        }, { 
     15+               .mfr_id         = MANUFACTURER_SST, 
     16+               .dev_id         = SST39VF6401B, 
     17+               .name           = "SST 39VF6401B", 
     18+               .devtypes       = CFI_DEVICETYPE_X16, 
     19+               .uaddr          = MTD_UADDR_0xAAAA_0x5555, 
     20+               .dev_size       = SIZE_8MiB, 
     21+               .cmd_set        = P_ID_AMD_STD, 
     22+               .nr_regions     = 1, 
     23+               .regions        = { 
     24+                       ERASEINFO(0x10000,128) 
     25+               } 
     26+       }, { 
     27                .mfr_id         = MANUFACTURER_ST, 
     28                .dev_id         = M29F800AB, 
     29                .name           = "ST M29F800AB", 
  • 108-mtd_fix_cfi_cmdset_0002_erase_status_check.patch

    diff -Nru ar71xx/patches-2.6..33.nope/108-mtd_fix_cfi_cmdset_0002_erase_status_check.patch ar71xx/patches-2.6.33/108-mtd_fix_cfi_cmdset_0002_erase_status_check.patch
    old new  
     1--- a/drivers/mtd/chips/cfi_cmdset_0002.c 
     2+++ b/drivers/mtd/chips/cfi_cmdset_0002.c 
     3@@ -1568,7 +1568,7 @@ static int __xipram do_erase_chip(struct 
     4                        chip->erase_suspended = 0; 
     5                } 
     6  
     7-               if (chip_ready(map, adr)) 
     8+               if (chip_good(map, adr, map_word_ff(map))) 
     9                        break; 
     10  
     11                if (time_after(jiffies, timeo)) { 
     12@@ -1656,7 +1656,7 @@ static int __xipram do_erase_oneblock(st 
     13                        chip->erase_suspended = 0; 
     14                } 
     15  
     16-               if (chip_ready(map, adr)) { 
     17+               if (chip_good(map, adr, map_word_ff(map))) { 
     18                        xip_enable(map, chip, adr); 
     19                        break; 
     20                } 
  • 108-mtd_fix_cfi_cmdset_0002_status_check.patch

    diff -Nru ar71xx/patches-2.6..33.nope/108-mtd_fix_cfi_cmdset_0002_status_check.patch ar71xx/patches-2.6.33/108-mtd_fix_cfi_cmdset_0002_status_check.patch
    old new  
     1--- a/drivers/mtd/chips/cfi_cmdset_0002.c 
     2+++ b/drivers/mtd/chips/cfi_cmdset_0002.c 
     3@@ -1130,8 +1130,8 @@ 
     4                        break; 
     5                } 
     6  
     7-               if (chip_ready(map, adr)) 
     8-                       break; 
     9+               if (chip_good(map, adr, datum)) 
     10+                       goto enable_xip; 
     11  
     12                /* Latency issues. Drop the lock, wait a while and retry */ 
     13                UDELAY(map, chip, adr, 1); 
     14@@ -1147,6 +1147,8 @@ 
     15  
     16                ret = -EIO; 
     17        } 
     18+ 
     19+ enable_xip: 
     20        xip_enable(map, chip, adr); 
     21  op_done: 
     22        chip->state = FL_READY; 
     23@@ -1493,7 +1495,6 @@ 
     24        return 0; 
     25 } 
     26  
     27- 
     28 /* 
     29  * Handle devices with one erase region, that only implement 
     30  * the chip erase command. 
     31@@ -1558,7 +1559,7 @@ 
     32                } 
     33  
     34                if (chip_good(map, adr, map_word_ff(map))) 
     35-                       break; 
     36+                       goto op_done; 
     37  
     38                if (time_after(jiffies, timeo)) { 
     39                        printk(KERN_WARNING "MTD %s(): software timeout\n", 
     40@@ -1578,6 +1579,7 @@ 
     41                ret = -EIO; 
     42        } 
     43  
     44+ op_done: 
     45        chip->state = FL_READY; 
     46        xip_enable(map, chip, adr); 
     47        put_chip(map, chip, adr); 
     48@@ -1647,7 +1649,7 @@ 
     49  
     50                if (chip_good(map, adr, map_word_ff(map))) { 
     51                        xip_enable(map, chip, adr); 
     52-                       break; 
     53+                       goto op_done; 
     54                } 
     55  
     56                if (time_after(jiffies, timeo)) { 
     57@@ -1669,6 +1671,7 @@ 
     58                ret = -EIO; 
     59        } 
     60  
     61+ op_done: 
     62        chip->state = FL_READY; 
     63        put_chip(map, chip, adr); 
     64        spin_unlock(chip->mutex); 
  • 109-mtd-wrt160nl-trx-parser.patch

    diff -Nru ar71xx/patches-2.6..33.nope/109-mtd-wrt160nl-trx-parser.patch ar71xx/patches-2.6.33/109-mtd-wrt160nl-trx-parser.patch
    old new  
     1--- a/drivers/mtd/devices/m25p80.c 
     2+++ b/drivers/mtd/devices/m25p80.c 
     3@@ -890,6 +890,16 @@ static int __devinit m25p_probe(struct s 
     4                                        part_probes, &parts, 0); 
     5                } 
     6 #endif 
     7+ 
     8+#ifdef CONFIG_MTD_WRT160NL_PARTS 
     9+               if (nr_parts <= 0) { 
     10+                       static const char *part_probes[] 
     11+                                       = { "wrt160nl", NULL, }; 
     12+ 
     13+                       nr_parts = parse_mtd_partitions(&flash->mtd, 
     14+                                       part_probes, &parts, 0); 
     15+               } 
     16+#endif 
     17                if (nr_parts <= 0 && data && data->parts) { 
     18                        parts = data->parts; 
     19                        nr_parts = data->nr_parts; 
     20--- a/drivers/mtd/Kconfig 
     21+++ b/drivers/mtd/Kconfig 
     22@@ -181,6 +181,12 @@ config MTD_AR7_PARTS 
     23        ---help--- 
     24          TI AR7 partitioning support 
     25  
     26+config MTD_WRT160NL_PARTS 
     27+       tristate "Linksys WRT160NL partitioning support" 
     28+       depends on MTD_PARTITIONS && AR71XX_MACH_WRT160NL 
     29+       ---help--- 
     30+          Linksys WRT160NL partitioning support 
     31+ 
     32 config MTD_MYLOADER_PARTS 
     33        tristate "MyLoader partition parsing" 
     34        depends on MTD_PARTITIONS && (ADM5120 || ATHEROS_AR231X || ATHEROS_AR71XX) 
     35--- a/drivers/mtd/Makefile 
     36+++ b/drivers/mtd/Makefile 
     37@@ -12,6 +12,7 @@ obj-$(CONFIG_MTD_REDBOOT_PARTS) += redbo 
     38 obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o 
     39 obj-$(CONFIG_MTD_AFS_PARTS)    += afs.o 
     40 obj-$(CONFIG_MTD_AR7_PARTS)    += ar7part.o 
     41+obj-$(CONFIG_MTD_WRT160NL_PARTS) += wrt160nl_part.o 
     42 obj-$(CONFIG_MTD_OF_PARTS)      += ofpart.o 
     43 obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o 
     44  
  • 110-usb-ehci-add-war-for-synopsys-hc-bug.patch

    diff -Nru ar71xx/patches-2.6..33.nope/110-usb-ehci-add-war-for-synopsys-hc-bug.patch ar71xx/patches-2.6.33/110-usb-ehci-add-war-for-synopsys-hc-bug.patch
    old new  
     1--- a/drivers/usb/host/ehci-q.c 
     2+++ b/drivers/usb/host/ehci-q.c 
     3@@ -1172,6 +1172,9 @@ static void end_unlink_async (struct ehc 
     4                ehci->reclaim = NULL; 
     5                start_unlink_async (ehci, next); 
     6        } 
     7+ 
     8+       if (ehci->has_synopsys_hc_bug) 
     9+               writel((u32)ehci->async->qh_dma, &ehci->regs->async_next); 
     10 } 
     11  
     12 /* makes sure the async qh will become idle */ 
     13--- a/drivers/usb/host/ehci.h 
     14+++ b/drivers/usb/host/ehci.h 
     15@@ -129,6 +129,7 @@ struct ehci_hcd {                   /* one per controlle 
     16        unsigned                has_amcc_usb23:1; 
     17        unsigned                need_io_watchdog:1; 
     18        unsigned                broken_periodic:1; 
     19+       unsigned                has_synopsys_hc_bug:1; /* Synopsys HC */ 
     20  
     21        /* required for usb32 quirk */ 
     22        #define OHCI_CTRL_HCFS          (3 << 6) 
  • 111-mtd-cfi_cmdset_0002-force-word-write.patch

    diff -Nru ar71xx/patches-2.6..33.nope/111-mtd-cfi_cmdset_0002-force-word-write.patch ar71xx/patches-2.6.33/111-mtd-cfi_cmdset_0002-force-word-write.patch
    old new  
     1--- a/drivers/mtd/chips/cfi_cmdset_0002.c 
     2+++ b/drivers/mtd/chips/cfi_cmdset_0002.c 
     3@@ -39,7 +39,7 @@ 
     4 #include <linux/mtd/xip.h> 
     5  
     6 #define AMD_BOOTLOC_BUG 
     7-#define FORCE_WORD_WRITE 0 
     8+#define FORCE_WORD_WRITE 1 
     9  
     10 #define MAX_WORD_RETRIES 3 
     11  
     12@@ -55,7 +55,9 @@ 
     13  
     14 static int cfi_amdstd_read (struct mtd_info *, loff_t, size_t, size_t *, u_char *); 
     15 static int cfi_amdstd_write_words(struct mtd_info *, loff_t, size_t, size_t *, const u_char *); 
     16+#if !FORCE_WORD_WRITE 
     17 static int cfi_amdstd_write_buffers(struct mtd_info *, loff_t, size_t, size_t *, const u_char *); 
     18+#endif 
     19 static int cfi_amdstd_erase_chip(struct mtd_info *, struct erase_info *); 
     20 static int cfi_amdstd_erase_varsize(struct mtd_info *, struct erase_info *); 
     21 static void cfi_amdstd_sync (struct mtd_info *); 
     22@@ -190,6 +192,7 @@ static void fixup_amd_bootblock(struct m 
     23 } 
     24 #endif 
     25  
     26+#if !FORCE_WORD_WRITE 
     27 static void fixup_use_write_buffers(struct mtd_info *mtd, void *param) 
     28 { 
     29        struct map_info *map = mtd->priv; 
     30@@ -199,6 +202,7 @@ static void fixup_use_write_buffers(stru 
     31                mtd->write = cfi_amdstd_write_buffers; 
     32        } 
     33 } 
     34+#endif /* !FORCE_WORD_WRITE */ 
     35  
     36 /* Atmel chips don't use the same PRI format as AMD chips */ 
     37 static void fixup_convert_atmel_pri(struct mtd_info *mtd, void *param) 
     38@@ -1315,6 +1319,7 @@ static int cfi_amdstd_write_words(struct 
     39 /* 
     40  * FIXME: interleaved mode not tested, and probably not supported! 
     41  */ 
     42+#if !FORCE_WORD_WRITE 
     43 static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip, 
     44                                    unsigned long adr, const u_char *buf, 
     45                                    int len) 
     46@@ -1426,7 +1431,6 @@ static int __xipram do_write_buffer(stru 
     47        return ret; 
     48 } 
     49  
     50- 
     51 static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len, 
     52                                    size_t *retlen, const u_char *buf) 
     53 { 
     54@@ -1505,6 +1509,7 @@ static int cfi_amdstd_write_buffers(stru 
     55  
     56        return 0; 
     57 } 
     58+#endif /* !FORCE_WORD_WRITE */ 
     59  
     60 /* 
     61  * Handle devices with one erase region, that only implement 
  • 120-dsa-trailer-tag-validation-fix.patch

    diff -Nru ar71xx/patches-2.6..33.nope/120-dsa-trailer-tag-validation-fix.patch ar71xx/patches-2.6.33/120-dsa-trailer-tag-validation-fix.patch
    old new  
     1--- a/net/dsa/tag_trailer.c 
     2+++ b/net/dsa/tag_trailer.c 
     3@@ -86,7 +86,7 @@ static int trailer_rcv(struct sk_buff *s 
     4  
     5        trailer = skb_tail_pointer(skb) - 4; 
     6        if (trailer[0] != 0x80 || (trailer[1] & 0xf8) != 0x00 || 
     7-           (trailer[3] & 0xef) != 0x00 || trailer[3] != 0x00) 
     8+           (trailer[2] & 0xef) != 0x00 || (trailer[3] & 0xfe) != 0x00) 
     9                goto out_drop; 
     10  
     11        source_port = trailer[1] & 7; 
  • 121-dsa-add-88e6063-driver.patch

    diff -Nru ar71xx/patches-2.6..33.nope/121-dsa-add-88e6063-driver.patch ar71xx/patches-2.6.33/121-dsa-add-88e6063-driver.patch
    old new  
     1--- a/net/dsa/Kconfig 
     2+++ b/net/dsa/Kconfig 
     3@@ -36,6 +36,13 @@ config NET_DSA_MV88E6060 
     4          This enables support for the Marvell 88E6060 ethernet switch 
     5          chip. 
     6  
     7+config NET_DSA_MV88E6063 
     8+       bool "Marvell 88E6063 ethernet switch chip support" 
     9+       select NET_DSA_TAG_TRAILER 
     10+       ---help--- 
     11+         This enables support for the Marvell 88E6063 ethernet switch 
     12+         chip 
     13+ 
     14 config NET_DSA_MV88E6XXX_NEED_PPU 
     15        bool 
     16        default n 
     17--- a/net/dsa/Makefile 
     18+++ b/net/dsa/Makefile 
     19@@ -6,6 +6,7 @@ obj-$(CONFIG_NET_DSA_TAG_TRAILER) += tag 
     20 # switch drivers 
     21 obj-$(CONFIG_NET_DSA_MV88E6XXX) += mv88e6xxx.o 
     22 obj-$(CONFIG_NET_DSA_MV88E6060) += mv88e6060.o 
     23+obj-$(CONFIG_NET_DSA_MV88E6063) += mv88e6063.o 
     24 obj-$(CONFIG_NET_DSA_MV88E6123_61_65) += mv88e6123_61_65.o 
     25 obj-$(CONFIG_NET_DSA_MV88E6131) += mv88e6131.o 
     26  
  • 140-redboot_partition_scan.patch

    diff -Nru ar71xx/patches-2.6..33.nope/140-redboot_partition_scan.patch ar71xx/patches-2.6.33/140-redboot_partition_scan.patch
    old new  
     1--- a/drivers/mtd/redboot.c 
     2+++ b/drivers/mtd/redboot.c 
     3@@ -60,31 +60,32 @@ static int parse_redboot_partitions(stru 
     4        static char nullstring[] = "unallocated"; 
     5 #endif 
     6  
     7+       buf = vmalloc(master->erasesize); 
     8+       if (!buf) 
     9+               return -ENOMEM; 
     10+ 
     11+ restart: 
     12        if ( directory < 0 ) { 
     13                offset = master->size + directory * master->erasesize; 
     14-               while (master->block_isbad &&  
     15+               while (master->block_isbad && 
     16                       master->block_isbad(master, offset)) { 
     17                        if (!offset) { 
     18                        nogood: 
     19                                printk(KERN_NOTICE "Failed to find a non-bad block to check for RedBoot partition table\n"); 
     20+                               vfree(buf); 
     21                                return -EIO; 
     22                        } 
     23                        offset -= master->erasesize; 
     24                } 
     25        } else { 
     26                offset = directory * master->erasesize; 
     27-               while (master->block_isbad &&  
     28+               while (master->block_isbad && 
     29                       master->block_isbad(master, offset)) { 
     30                        offset += master->erasesize; 
     31                        if (offset == master->size) 
     32                                goto nogood; 
     33                } 
     34        } 
     35-       buf = vmalloc(master->erasesize); 
     36- 
     37-       if (!buf) 
     38-               return -ENOMEM; 
     39- 
     40        printk(KERN_NOTICE "Searching for RedBoot partition table in %s at offset 0x%lx\n", 
     41               master->name, offset); 
     42  
     43@@ -156,6 +157,11 @@ static int parse_redboot_partitions(stru 
     44        } 
     45        if (i == numslots) { 
     46                /* Didn't find it */ 
     47+               if (offset + master->erasesize < master->size) { 
     48+                       /* not at the end of the flash yet, maybe next block :) */ 
     49+                       directory++; 
     50+                       goto restart; 
     51+               } 
     52                printk(KERN_NOTICE "No RedBoot partition table detected in %s\n", 
     53                       master->name); 
     54                ret = 0; 
  • 200-rb4xx_nand_driver.patch

    diff -Nru ar71xx/patches-2.6..33.nope/200-rb4xx_nand_driver.patch ar71xx/patches-2.6.33/200-rb4xx_nand_driver.patch
    old new  
     1--- a/drivers/mtd/nand/Kconfig 
     2+++ b/drivers/mtd/nand/Kconfig 
     3@@ -482,4 +482,8 @@ config MTD_NAND_W90P910 
     4          This enables the driver for the NAND Flash on evaluation board based 
     5          on w90p910. 
     6  
     7+config MTD_NAND_RB4XX 
     8+       tristate "NAND flash driver for RouterBoard 4xx series" 
     9+       depends on MTD_NAND && ATHEROS_AR71XX 
     10+ 
     11 endif # MTD_NAND 
     12--- a/drivers/mtd/nand/Makefile 
     13+++ b/drivers/mtd/nand/Makefile 
     14@@ -31,6 +31,7 @@ obj-$(CONFIG_MTD_NAND_BASLER_EXCITE)  +=  
     15 obj-$(CONFIG_MTD_NAND_PXA3xx)          += pxa3xx_nand.o 
     16 obj-$(CONFIG_MTD_NAND_TMIO)            += tmio_nand.o 
     17 obj-$(CONFIG_MTD_NAND_PLATFORM)                += plat_nand.o 
     18+obj-$(CONFIG_MTD_NAND_RB4XX)           += rb4xx_nand.o 
     19 obj-$(CONFIG_MTD_ALAUDA)               += alauda.o 
     20 obj-$(CONFIG_MTD_NAND_PASEMI)          += pasemi_nand.o 
     21 obj-$(CONFIG_MTD_NAND_ORION)           += orion_nand.o 
  • 201-ap83_spi_controller.patch

    diff -Nru ar71xx/patches-2.6..33.nope/201-ap83_spi_controller.patch ar71xx/patches-2.6.33/201-ap83_spi_controller.patch
    old new  
     1--- a/drivers/spi/Makefile 
     2+++ b/drivers/spi/Makefile 
     3@@ -11,6 +11,7 @@ endif 
     4 obj-$(CONFIG_SPI_MASTER)               += spi.o 
     5  
     6 # SPI master controller drivers (bus) 
     7+obj-$(CONFIG_SPI_AP83)                 += ap83_spi.o 
     8 obj-$(CONFIG_SPI_AR71XX)               += ar71xx_spi.o 
     9 obj-$(CONFIG_SPI_ATMEL)                        += atmel_spi.o 
     10 obj-$(CONFIG_SPI_BFIN)                 += spi_bfin5xx.o 
     11--- a/drivers/spi/Kconfig 
     12+++ b/drivers/spi/Kconfig 
     13@@ -53,6 +53,14 @@ if SPI_MASTER 
     14  
     15 comment "SPI Master Controller Drivers" 
     16  
     17+config SPI_AP83 
     18+       tristate "Atheros AP83 specific SPI Controller" 
     19+       depends on SPI_MASTER && AR71XX_MACH_AP83 
     20+       select SPI_BITBANG 
     21+       help 
     22+         This is a specific SPI controller driver for the Atheros AP83 
     23+         reference board. 
     24+ 
     25 config SPI_AR71XX 
     26        tristate "Atheros AR71xx SPI Controller" 
     27        depends on SPI_MASTER && ATHEROS_AR71XX 
  • 202-spi_vsc7385_driver.patch

    diff -Nru ar71xx/patches-2.6..33.nope/202-spi_vsc7385_driver.patch ar71xx/patches-2.6.33/202-spi_vsc7385_driver.patch
    old new  
     1--- a/drivers/spi/Kconfig 
     2+++ b/drivers/spi/Kconfig 
     3@@ -296,6 +296,11 @@ config SPI_TLE62X0 
     4          sysfs interface, with each line presented as a kind of GPIO 
     5          exposing both switch control and diagnostic feedback. 
     6  
     7+config SPI_VSC7385 
     8+       tristate "Vitesse VSC7385 ethernet switch driver" 
     9+       help 
     10+         SPI driver for the Vitesse VSC7385 ethernet switch. 
     11+ 
     12 # 
     13 # Add new SPI protocol masters in alphabetical order above this line 
     14 # 
     15--- a/drivers/spi/Makefile 
     16+++ b/drivers/spi/Makefile 
     17@@ -40,6 +40,7 @@ obj-$(CONFIG_SPI_STMP3XXX)            += spi_stmp. 
     18  
     19 # SPI protocol drivers (device/link on bus) 
     20 obj-$(CONFIG_SPI_SPIDEV)       += spidev.o 
     21+obj-$(CONFIG_SPI_VSC7385)      += spi_vsc7385.o 
     22 obj-$(CONFIG_SPI_TLE62X0)      += tle62x0.o 
     23 #      ... add above this line ... 
     24  
  • 203-pb44_spi_controller.patch

    diff -Nru ar71xx/patches-2.6..33.nope/203-pb44_spi_controller.patch ar71xx/patches-2.6.33/203-pb44_spi_controller.patch
    old new  
     1--- a/drivers/spi/Kconfig 
     2+++ b/drivers/spi/Kconfig 
     3@@ -68,6 +68,14 @@ config SPI_AR71XX 
     4        help 
     5          This is the SPI contoller driver for Atheros AR71xx. 
     6  
     7+config SPI_PB44 
     8+       tristate "Atheros PB44 board specific SPI controller" 
     9+       depends on SPI_MASTER && AR71XX_MACH_PB44 
     10+       select SPI_BITBANG 
     11+       help 
     12+         This is a specific SPI controller driver for the Atheros PB44 
     13+         reference board. 
     14+ 
     15 config SPI_ATMEL 
     16        tristate "Atmel SPI Controller" 
     17        depends on (ARCH_AT91 || AVR32) 
     18--- a/drivers/spi/Makefile 
     19+++ b/drivers/spi/Makefile 
     20@@ -22,6 +22,7 @@ obj-$(CONFIG_SPI_GPIO)                        += spi_gpio.o 
     21 obj-$(CONFIG_SPI_GPIO_OLD)             += spi_gpio_old.o 
     22 obj-$(CONFIG_SPI_IMX)                  += spi_imx.o 
     23 obj-$(CONFIG_SPI_LM70_LLP)             += spi_lm70llp.o 
     24+obj-$(CONFIG_SPI_PB44)                 += pb44_spi.o 
     25 obj-$(CONFIG_SPI_PXA2XX)               += pxa2xx_spi.o 
     26 obj-$(CONFIG_SPI_OMAP_UWIRE)           += omap_uwire.o 
     27 obj-$(CONFIG_SPI_OMAP24XX)             += omap2_mcspi.o 
  • 205-wndr3700-usb-led-driver.patch

    diff -Nru ar71xx/patches-2.6..33.nope/205-wndr3700-usb-led-driver.patch ar71xx/patches-2.6.33/205-wndr3700-usb-led-driver.patch
    old new  
     1--- a/drivers/leds/Kconfig      2010-01-30 09:09:47.000000000 +0200 
     2+++ b/drivers/leds/Kconfig      2010-01-30 09:10:14.790052238 +0200 
     3@@ -269,6 +269,13 @@ 
     4          To compile this driver as a module, choose M here: the module will 
     5          be called leds-adp5520. 
     6  
     7+config LEDS_WNDR3700_USB 
     8+       tristate "NETGEAR WNDR3700 USB LED driver" 
     9+       depends on LEDS_CLASS && AR71XX_MACH_WNDR3700 
     10+       help 
     11+         This option enables support for the USB LED found on the 
     12+         NETGEAR WNDR3700 board. 
     13+ 
     14 comment "LED Triggers" 
     15  
     16 config LEDS_TRIGGERS 
     17--- a/drivers/leds/Makefile     2010-01-30 09:09:47.000000000 +0200 
     18+++ b/drivers/leds/Makefile     2010-01-30 09:11:40.055174358 +0200 
     19@@ -33,6 +33,7 @@ 
     20 obj-$(CONFIG_LEDS_INTEL_SS4200)                += leds-ss4200.o 
     21 obj-$(CONFIG_LEDS_LT3593)              += leds-lt3593.o 
     22 obj-$(CONFIG_LEDS_ADP5520)             += leds-adp5520.o 
     23+obj-${CONFIG_LEDS_WNDR3700_USB}                += leds-wndr3700-usb.o 
     24  
     25 # LED SPI Drivers 
     26 obj-$(CONFIG_LEDS_DAC124S085)          += leds-dac124s085.o 
  • 206-nxp-74hc153-gpio-chip-driver.patch

    diff -Nru ar71xx/patches-2.6..33.nope/206-nxp-74hc153-gpio-chip-driver.patch ar71xx/patches-2.6.33/206-nxp-74hc153-gpio-chip-driver.patch
    old new  
     1--- a/drivers/gpio/Kconfig 
     2+++ b/drivers/gpio/Kconfig 
     3@@ -230,4 +230,12 @@ config GPIO_UCB1400 
     4          To compile this driver as a module, choose M here: the 
     5          module will be called ucb1400_gpio. 
     6  
     7+comment "Other GPIO expanders" 
     8+ 
     9+config GPIO_NXP_74HC153 
     10+       tristate "NXP 74HC153 Dual 4-input multiplexer" 
     11+       help 
     12+         Platform driver for NXP 74HC153 Dual 4-input Multiplexer. This 
     13+         provides a GPIO interface supporting inputs. 
     14+ 
     15 endif 
     16--- a/drivers/gpio/Makefile 
     17+++ b/drivers/gpio/Makefile 
     18@@ -10,6 +10,7 @@ obj-$(CONFIG_GPIO_MAX7301)    += max7301.o 
     19 obj-$(CONFIG_GPIO_MAX732X)     += max732x.o 
     20 obj-$(CONFIG_GPIO_MC33880)     += mc33880.o 
     21 obj-$(CONFIG_GPIO_MCP23S08)    += mcp23s08.o 
     22+obj-$(CONFIG_GPIO_NXP_74HC153) += nxp_74hc153.o 
     23 obj-$(CONFIG_GPIO_PCA953X)     += pca953x.o 
     24 obj-$(CONFIG_GPIO_PCF857X)     += pcf857x.o 
     25 obj-$(CONFIG_GPIO_PL061)       += pl061.o 
  • 300-mips_fw_myloader.patch

    diff -Nru ar71xx/patches-2.6..33.nope/300-mips_fw_myloader.patch ar71xx/patches-2.6.33/300-mips_fw_myloader.patch
    old new  
     1--- a/arch/mips/Makefile 
     2+++ b/arch/mips/Makefile 
     3@@ -169,6 +169,7 @@ endif 
     4 # 
     5 libs-$(CONFIG_ARC)             += arch/mips/fw/arc/ 
     6 libs-$(CONFIG_CFE)             += arch/mips/fw/cfe/ 
     7+libs-$(CONFIG_MYLOADER)                += arch/mips/fw/myloader/ 
     8 libs-$(CONFIG_SNIPROM)         += arch/mips/fw/sni/ 
     9 libs-y                         += arch/mips/fw/lib/ 
     10  
     11--- a/arch/mips/Kconfig 
     12+++ b/arch/mips/Kconfig 
     13@@ -880,6 +880,9 @@ config MIPS_NILE4 
     14 config MIPS_DISABLE_OBSOLETE_IDE 
     15        bool 
     16  
     17+config MYLOADER 
     18+       bool 
     19+ 
     20 config SYNC_R4K 
     21        bool 
     22  
  • 400-mips-multi-machine-update.patch

    diff -Nru ar71xx/patches-2.6..33.nope/400-mips-multi-machine-update.patch ar71xx/patches-2.6.33/400-mips-multi-machine-update.patch
    old new  
     1--- a/arch/mips/include/asm/mips_machine.h      2010-01-30 09:14:48.000000000 +0200 
     2+++ b/arch/mips/include/asm/mips_machine.h      2010-01-30 09:15:17.987113997 +0200 
     3@@ -13,25 +13,33 @@ 
     4 #include <linux/init.h> 
     5 #include <linux/list.h> 
     6  
     7+#include <asm/bootinfo.h> 
     8+ 
     9 struct mips_machine { 
     10        unsigned long           mach_type; 
     11-       void                    (*mach_setup)(void); 
     12+       char                    *mach_id; 
     13        char                    *mach_name; 
     14+       void                    (*mach_setup)(void); 
     15        struct list_head        list; 
     16 }; 
     17  
     18 void mips_machine_register(struct mips_machine *) __init; 
     19-void mips_machine_setup(unsigned long machtype) __init; 
     20+void mips_machine_setup(void) __init; 
     21+int  mips_machtype_setup(char *id) __init; 
     22 void mips_machine_set_name(char *name) __init; 
     23  
     24 extern char *mips_machine_name; 
     25  
     26-#define MIPS_MACHINE(_type, _name, _setup)                     \ 
     27-static char machine_name_##_type[] __initdata = _name;         \ 
     28+#define MIPS_MACHINE(_type, _id, _name, _setup)                \ 
     29+static const char machine_name_##_type[] __initconst           \ 
     30+                       __aligned(1) = _name;                   \ 
     31+static const char machine_id_##_type[] __initconst             \ 
     32+                       __aligned(1) = _id;                     \ 
     33 static struct mips_machine machine_##_type __initdata =                \ 
     34 {                                                              \ 
     35        .mach_type      = _type,                                \ 
     36-       .mach_name      = machine_name_##_type,                 \ 
     37+       .mach_id        = (char *) machine_id_##_type,          \ 
     38+       .mach_name      = (char *) machine_name_##_type,        \ 
     39        .mach_setup     = _setup,                               \ 
     40 };                                                             \ 
     41                                                                \ 
     42@@ -44,4 +52,3 @@ 
     43 pure_initcall(register_machine_##_type) 
     44  
     45 #endif /* __ASM_MIPS_MACHINE_H */ 
     46- 
     47--- a/arch/mips/kernel/mips_machine.c   2010-01-30 09:14:48.000000000 +0200 
     48+++ b/arch/mips/kernel/mips_machine.c   2010-01-30 09:17:34.994049379 +0200 
     49@@ -7,12 +7,13 @@ 
     50  * 
     51  */ 
     52 #include <linux/mm.h> 
     53+#include <linux/string.h> 
     54  
     55 #include <asm-mips/mips_machine.h> 
     56-#include <asm/bootinfo.h> 
     57  
     58 static struct list_head mips_machines __initdata = 
     59                LIST_HEAD_INIT(mips_machines); 
     60+static char *mips_machid __initdata; 
     61  
     62 char *mips_machine_name = "Unknown"; 
     63  
     64@@ -55,20 +56,65 @@ 
     65        } 
     66 } 
     67  
     68-void __init mips_machine_setup(unsigned long machtype) 
     69+void __init mips_machine_setup(void) 
     70 { 
     71        struct mips_machine *mach; 
     72  
     73-       mach = mips_machine_find(machtype); 
     74+       mach = mips_machine_find(mips_machtype); 
     75        if (!mach) { 
     76-               printk(KERN_ALERT "MIPS: no machine registered for " 
     77-                       "machtype %lu\n", machtype); 
     78+               printk(KERN_WARNING "MIPS: no machine registered for " 
     79+                       "machtype %lu\n", mips_machtype); 
     80                return; 
     81        } 
     82  
     83        mips_machine_set_name(mach->mach_name); 
     84-       printk(KERN_INFO "MIPS: machine is %s\n", mips_machine_name); 
     85+       printk(KERN_NOTICE "MIPS: machine is %s\n", mips_machine_name); 
     86  
     87        if (mach->mach_setup) 
     88                mach->mach_setup(); 
     89 } 
     90+ 
     91+int __init mips_machtype_setup(char *id) 
     92+{ 
     93+       if (mips_machid == NULL) 
     94+               mips_machid = id; 
     95+ 
     96+       return 1; 
     97+} 
     98+ 
     99+__setup("machtype=", mips_machtype_setup); 
     100+ 
     101+static int __init mips_machtype_init(void) 
     102+{ 
     103+       struct list_head *this; 
     104+       struct mips_machine *mach; 
     105+ 
     106+       if (mips_machid == NULL) 
     107+               return 0; 
     108+ 
     109+       list_for_each(this, &mips_machines) { 
     110+               mach = list_entry(this, struct mips_machine, list); 
     111+               if (mach->mach_id == NULL) 
     112+                       continue; 
     113+ 
     114+               if (strcmp(mach->mach_id, mips_machid) == 0) { 
     115+                       mips_machtype = mach->mach_type; 
     116+                       return 0; 
     117+               } 
     118+       } 
     119+ 
     120+       printk(KERN_WARNING 
     121+              "MIPS: no machine found for id: '%s', registered machines:\n", 
     122+              mips_machid); 
     123+       printk(KERN_WARNING "%32s %s\n", "id", "name"); 
     124+ 
     125+       list_for_each(this, &mips_machines) { 
     126+               mach = list_entry(this, struct mips_machine, list); 
     127+               printk(KERN_WARNING "%32s %s\n", 
     128+                      mach->mach_id ? mach->mach_id : "", mach->mach_name); 
     129+       } 
     130+ 
     131+       return 0; 
     132+} 
     133+ 
     134+core_initcall(mips_machtype_init); 
  • 901-get_c0_compare_irq_function.patch

    diff -Nru ar71xx/patches-2.6..33.nope/901-get_c0_compare_irq_function.patch ar71xx/patches-2.6.33/901-get_c0_compare_irq_function.patch
    old new  
     1--- a/arch/mips/include/asm/time.h      2010-01-29 23:57:50.000000000 +0200 
     2+++ b/arch/mips/include/asm/time.h      2010-01-30 09:21:43.642174475 +0200 
     3@@ -52,6 +52,7 @@ 
     4  */ 
     5 #ifdef CONFIG_CEVT_R4K_LIB 
     6 extern unsigned int __weak get_c0_compare_int(void); 
     7+extern unsigned int __weak get_c0_compare_irq(void); 
     8 extern int r4k_clockevent_init(void); 
     9 #endif 
     10  
     11--- a/arch/mips/kernel/traps.c  2010-01-29 23:57:50.000000000 +0200 
     12+++ b/arch/mips/kernel/traps.c  2010-01-30 09:24:25.878174376 +0200 
     13@@ -50,6 +50,7 @@ 
     14 #include <asm/types.h> 
     15 #include <asm/stacktrace.h> 
     16 #include <asm/irq.h> 
     17+#include <asm/time.h> 
     18  
     19 extern void check_wait(void); 
     20 extern asmlinkage void r4k_wait(void); 
     21@@ -1496,6 +1497,8 @@ 
     22        if (cpu_has_mips_r2) { 
     23                cp0_compare_irq_shift = CAUSEB_TI - CAUSEB_IP; 
     24                cp0_compare_irq = (read_c0_intctl() >> INTCTLB_IPTI) & 7; 
     25+               if (get_c0_compare_irq) 
     26+                       cp0_compare_irq = get_c0_compare_irq(); 
     27                cp0_perfcount_irq = (read_c0_intctl() >> INTCTLB_IPPCI) & 7; 
     28                if (cp0_perfcount_irq == cp0_compare_irq) 
     29                        cp0_perfcount_irq = -1; 
  • 902-mips_clocksource_init_war.patch

    diff -Nru ar71xx/patches-2.6..33.nope/902-mips_clocksource_init_war.patch ar71xx/patches-2.6.33/902-mips_clocksource_init_war.patch
    old new  
     1--- a/arch/mips/kernel/cevt-r4k.c 
     2+++ b/arch/mips/kernel/cevt-r4k.c 
     3@@ -16,6 +16,22 @@ 
     4 #include <asm/cevt-r4k.h> 
     5  
     6 /* 
     7+ * Compare interrupt can be routed and latched outside the core, 
     8+ * so a single execution hazard barrier may not be enough to give 
     9+ * it time to clear as seen in the Cause register.  4 time the 
     10+ * pipeline depth seems reasonably conservative, and empirically 
     11+ * works better in configurations with high CPU/bus clock ratios. 
     12+ */ 
     13+ 
     14+#define compare_change_hazard() \ 
     15+       do { \ 
     16+               irq_disable_hazard(); \ 
     17+               irq_disable_hazard(); \ 
     18+               irq_disable_hazard(); \ 
     19+               irq_disable_hazard(); \ 
     20+       } while (0) 
     21+ 
     22+/* 
     23  * The SMTC Kernel for the 34K, 1004K, et. al. replaces several 
     24  * of these routines with SMTC-specific variants. 
     25  */ 
     26@@ -31,6 +47,7 @@ static int mips_next_event(unsigned long 
     27        cnt = read_c0_count(); 
     28        cnt += delta; 
     29        write_c0_compare(cnt); 
     30+       compare_change_hazard(); 
     31        res = ((int)(read_c0_count() - cnt) > 0) ? -ETIME : 0; 
     32        return res; 
     33 } 
     34@@ -100,22 +117,6 @@ static int c0_compare_int_pending(void) 
     35        return (read_c0_cause() >> cp0_compare_irq) & 0x100; 
     36 } 
     37  
     38-/* 
     39- * Compare interrupt can be routed and latched outside the core, 
     40- * so a single execution hazard barrier may not be enough to give 
     41- * it time to clear as seen in the Cause register.  4 time the 
     42- * pipeline depth seems reasonably conservative, and empirically 
     43- * works better in configurations with high CPU/bus clock ratios. 
     44- */ 
     45- 
     46-#define compare_change_hazard() \ 
     47-       do { \ 
     48-               irq_disable_hazard(); \ 
     49-               irq_disable_hazard(); \ 
     50-               irq_disable_hazard(); \ 
     51-               irq_disable_hazard(); \ 
     52-       } while (0) 
     53- 
     54 int c0_compare_int_usable(void) 
     55 { 
     56        unsigned int delta; 
  • 960-ar8216-add-register-debug.patch

    diff -Nru ar71xx/patches-2.6..33.nope/960-ar8216-add-register-debug.patch ar71xx/patches-2.6.33/960-ar8216-add-register-debug.patch
    old new  
     1--- a/drivers/net/phy/ar8216.c 
     2+++ b/drivers/net/phy/ar8216.c 
     3@@ -563,10 +563,227 @@ ar8216_config_aneg(struct phy_device *ph 
     4        return 0; 
     5 } 
     6  
     7+#define ar8216_dbg(fmt, args...) printk(KERN_DEBUG "ar8216: " fmt, ## args) 
     8+ 
     9+static inline const char *ctrl_state_str(u32 ctrl) 
     10+{ 
     11+       switch (ctrl & AR8216_PORT_CTRL_STATE) { 
     12+       case AR8216_PORT_STATE_DISABLED: 
     13+               return "disabled"; 
     14+       case AR8216_PORT_STATE_BLOCK: 
     15+               return "block"; 
     16+       case AR8216_PORT_STATE_LISTEN: 
     17+               return "listen"; 
     18+       case AR8216_PORT_STATE_LEARN: 
     19+               return "learn"; 
     20+       case AR8216_PORT_STATE_FORWARD: 
     21+               return "forward"; 
     22+       default: 
     23+               break; 
     24+       } 
     25+ 
     26+       return "????"; 
     27+} 
     28+ 
     29+static inline const char *ctrl_vlanmode_str(u32 ctrl) 
     30+{ 
     31+       u32 vlan_mode; 
     32+ 
     33+       vlan_mode = (ctrl & AR8216_PORT_CTRL_VLAN_MODE) >> 
     34+                   AR8216_PORT_CTRL_VLAN_MODE_S; 
     35+       switch (vlan_mode)  { 
     36+       case AR8216_OUT_KEEP: 
     37+               return "keep"; 
     38+       case AR8216_OUT_STRIP_VLAN: 
     39+               return "strip vlan"; 
     40+       case AR8216_OUT_ADD_VLAN: 
     41+               return "add_vlan"; 
     42+       default: 
     43+               break; 
     44+       } 
     45+ 
     46+       return "????"; 
     47+} 
     48+ 
     49+static inline const char *vlan_vlanmode_str(u32 vlan) 
     50+{ 
     51+       u32 vlan_mode; 
     52+ 
     53+       vlan_mode = (vlan & AR8216_PORT_VLAN_MODE) >> 
     54+                   AR8216_PORT_VLAN_MODE_S; 
     55+       switch (vlan_mode)  { 
     56+       case AR8216_IN_PORT_ONLY: 
     57+               return "port only"; 
     58+       case AR8216_IN_PORT_FALLBACK: 
     59+               return "port fallback"; 
     60+       case AR8216_IN_VLAN_ONLY: 
     61+               return "VLAN only"; 
     62+       case AR8216_IN_SECURE: 
     63+               return "secure"; 
     64+       default: 
     65+               break; 
     66+       } 
     67+ 
     68+       return "????"; 
     69+} 
     70+ 
     71+static void 
     72+ar8216_dump_regs(struct ar8216_priv *ap) 
     73+{ 
     74+       unsigned int i; 
     75+       u32 t; 
     76+ 
     77+       t = ar8216_mii_read(ap, AR8216_REG_CTRL); 
     78+       ar8216_dbg("CTRL\t\t: %08x\n", t); 
     79+       ar8216_dbg("  version\t: %u\n", (t & 0xff00) >> 8); 
     80+       ar8216_dbg("  revision\t: %u\n", (t & 0xff)); 
     81+ 
     82+       ar8216_dbg("POWER_ON\t: %08x\n", 
     83+                  ar8216_mii_read(ap, 0x04)); 
     84+       ar8216_dbg("INT\t\t: %08x\n", 
     85+                  ar8216_mii_read(ap, 0x10)); 
     86+       ar8216_dbg("INT_MASK\t: %08x\n", 
     87+                  ar8216_mii_read(ap, 0x14)); 
     88+       ar8216_dbg("MAC_ADDR0\t: %08x\n", 
     89+                  ar8216_mii_read(ap, 0x20)); 
     90+       ar8216_dbg("MAC_ADDR1\t: %08x\n", 
     91+               ar8216_mii_read(ap, 0x24)); 
     92+       ar8216_dbg("FLOOD_MASK\t: %08x\n", 
     93+               ar8216_mii_read(ap, 0x2c)); 
     94+ 
     95+       t = ar8216_mii_read(ap, AR8216_REG_GLOBAL_CTRL); 
     96+       ar8216_dbg("GLOBAL_CTRL\t: %08x\n", t); 
     97+       ar8216_dbg("  mtu\t\t: %lu\n", t & AR8216_GCTRL_MTU); 
     98+ 
     99+       ar8216_dbg("FLOW_CONTROL0\t: %08x\n", 
     100+               ar8216_mii_read(ap, 0x34)); 
     101+       ar8216_dbg("FLOW_CONTROL1\t: %08x\n", 
     102+               ar8216_mii_read(ap, 0x38)); 
     103+       ar8216_dbg("QM_CONTROL\t: %08x\n", 
     104+               ar8216_mii_read(ap, 0x3c)); 
     105+       ar8216_dbg("VLAN_TABLE0\t: %08x\n", 
     106+               ar8216_mii_read(ap, AR8216_REG_VTU)); 
     107+       ar8216_dbg("VLAN_TABLE1\t: %08x\n", 
     108+               ar8216_mii_read(ap, AR8216_REG_VTU_DATA)); 
     109+       ar8216_dbg("ADDR_TABLE0\t: %08x\n", 
     110+               ar8216_mii_read(ap, AR8216_REG_ATU)); 
     111+       ar8216_dbg("ADDR_TABLE1\t: %08x\n", 
     112+               ar8216_mii_read(ap, AR8216_REG_ATU_DATA)); 
     113+       ar8216_dbg("ADDR_TABLE2\t: %08x\n", 
     114+               ar8216_mii_read(ap, 0x58)); 
     115+       ar8216_dbg("ADDR_CTRL\t: %08x\n", 
     116+               ar8216_mii_read(ap, 0x5c)); 
     117+       ar8216_dbg("IP_PRIO0\t: %08x\n", 
     118+               ar8216_mii_read(ap, 0x60)); 
     119+       ar8216_dbg("IP_PRIO1\t: %08x\n", 
     120+               ar8216_mii_read(ap, 0x64)); 
     121+       ar8216_dbg("IP_PRIO2\t: %08x\n", 
     122+               ar8216_mii_read(ap, 0x68)); 
     123+       ar8216_dbg("IP_PRIO3\t: %08x\n", 
     124+               ar8216_mii_read(ap, 0x6c)); 
     125+       ar8216_dbg("TAG_PRIO\t: %08x\n", 
     126+               ar8216_mii_read(ap, 0x70)); 
     127+       ar8216_dbg("SERVICE_TAG\t: %08x\n", 
     128+               ar8216_mii_read(ap, 0x74)); 
     129+       ar8216_dbg("CPU_PORT\t: %08x\n", 
     130+               ar8216_mii_read(ap, 0x78)); 
     131+       ar8216_dbg("MIB_FUNC\t: %08x\n", 
     132+               ar8216_mii_read(ap, 0x80)); 
     133+       ar8216_dbg("MDIO\t\t: %08x\n", 
     134+               ar8216_mii_read(ap, 0x98)); 
     135+       ar8216_dbg("LED0\t\t: %08x\n", 
     136+               ar8216_mii_read(ap, 0xb0)); 
     137+       ar8216_dbg("LED1\t\t: %08x\n", 
     138+               ar8216_mii_read(ap, 0xb4)); 
     139+       ar8216_dbg("LED2\t\t: %08x\n", 
     140+               ar8216_mii_read(ap, 0xb8)); 
     141+ 
     142+       for (i = 0; i < 6; i++) { 
     143+               u32 reg = 0x100 * (i + 1); 
     144+ 
     145+               t = ar8216_mii_read(ap, AR8216_REG_PORT_STATUS(i)); 
     146+               ar8216_dbg("PORT%d_STATUS\t: %08x\n", i, t); 
     147+               ar8216_dbg("  speed\t\t: %s\n", 
     148+                          (t & AR8216_PORT_STATUS_SPEED) ? "100" : "10"); 
     149+               ar8216_dbg("  speed error\t: %s\n", 
     150+                          (t & AR8216_PORT_STATUS_SPEED_ERR) ? "yes" : "no"); 
     151+               ar8216_dbg("  txmac\t\t: %d\n", 
     152+                          (t & AR8216_PORT_STATUS_TXMAC) ? 1 : 0); 
     153+               ar8216_dbg("  rxmac\t\t: %d\n", 
     154+                          (t & AR8216_PORT_STATUS_RXMAC) ? 1 : 0); 
     155+               ar8216_dbg("  tx_flow\t: %s\n", 
     156+                          (t & AR8216_PORT_STATUS_TXFLOW) ? "on" : "off"); 
     157+               ar8216_dbg("  rx_flow\t: %s\n", 
     158+                          (t & AR8216_PORT_STATUS_RXFLOW) ? "on" : "off"); 
     159+               ar8216_dbg("  duplex\t: %s\n", 
     160+                          (t & AR8216_PORT_STATUS_DUPLEX) ? "full" : "half"); 
     161+               ar8216_dbg("  link\t\t: %s\n", 
     162+                          (t & AR8216_PORT_STATUS_LINK_UP) ? "up" : "down"); 
     163+               ar8216_dbg("  auto\t\t: %s\n", 
     164+                          (t & AR8216_PORT_STATUS_LINK_AUTO) ? "on" : "off"); 
     165+               ar8216_dbg("  pause\t\t: %s\n", 
     166+                          (t & AR8216_PORT_STATUS_LINK_PAUSE) ? "on" : "off"); 
     167+ 
     168+               t = ar8216_mii_read(ap, AR8216_REG_PORT_CTRL(i)); 
     169+               ar8216_dbg("PORT%d_CTRL\t: %08x\n", i, t); 
     170+               ar8216_dbg("  state\t\t: %s\n", ctrl_state_str(t)); 
     171+               ar8216_dbg("  learn lock\t: %s\n", 
     172+                          (t & AR8216_PORT_CTRL_LEARN_LOCK) ? "on" : "off"); 
     173+               ar8216_dbg("  vlan_mode\t: %s\n", ctrl_vlanmode_str(t)); 
     174+               ar8216_dbg("  igmp_snoop\t: %s\n", 
     175+                          (t & AR8216_PORT_CTRL_IGMP_SNOOP) ? "on" : "off"); 
     176+               ar8216_dbg("  header\t: %s\n", 
     177+                          (t & AR8216_PORT_CTRL_HEADER) ? "on" : "off"); 
     178+               ar8216_dbg("  mac_loop\t: %s\n", 
     179+                          (t & AR8216_PORT_CTRL_MAC_LOOP) ? "on" : "off"); 
     180+               ar8216_dbg("  single_vlan\t: %s\n", 
     181+                          (t & AR8216_PORT_CTRL_SINGLE_VLAN) ? "on" : "off"); 
     182+               ar8216_dbg("  mirror tx\t: %s\n", 
     183+                          (t & AR8216_PORT_CTRL_MIRROR_TX) ? "on" : "off"); 
     184+               ar8216_dbg("  mirror rx\t: %s\n", 
     185+                          (t & AR8216_PORT_CTRL_MIRROR_RX) ? "on" : "off"); 
     186+ 
     187+               t = ar8216_mii_read(ap, AR8216_REG_PORT_VLAN(i)); 
     188+               ar8216_dbg("PORT%d_VLAN\t: %08x\n", i, t); 
     189+               ar8216_dbg("  default id\t: %lu\n", 
     190+                          (t & AR8216_PORT_VLAN_DEFAULT_ID)); 
     191+               ar8216_dbg("  dest ports\t: %s%s%s%s%s%s\n", 
     192+                          (t & 0x010000) ? "0 " : "", 
     193+                          (t & 0x020000) ? "1 " : "", 
     194+                          (t & 0x040000) ? "2 " : "", 
     195+                          (t & 0x080000) ? "3 " : "", 
     196+                          (t & 0x100000) ? "4 " : "", 
     197+                          (t & 0x200000) ? "5 " : ""); 
     198+               ar8216_dbg("  tx priority\t: %s\n", 
     199+                          (t & AR8216_PORT_VLAN_TX_PRIO) ? "on" : "off"); 
     200+               ar8216_dbg("  port priority\t: %lu\n", 
     201+                          (t & AR8216_PORT_VLAN_PRIORITY) >> 
     202+                          AR8216_PORT_VLAN_PRIORITY_S); 
     203+               ar8216_dbg("  ingress mode\t: %s\n", vlan_vlanmode_str(t)); 
     204+ 
     205+               t = ar8216_mii_read(ap, AR8216_REG_PORT_RATE(i)); 
     206+               ar8216_dbg("PORT%d_RATE0\t: %08x\n", i, t); 
     207+ 
     208+               ar8216_dbg("PORT%d_PRIO\t: %08x\n", i, 
     209+                          ar8216_mii_read(ap, AR8216_REG_PORT_PRIO(i))); 
     210+               ar8216_dbg("PORT%d_STORM\t: %08x\n", i, 
     211+                          ar8216_mii_read(ap, reg + 0x14)); 
     212+               ar8216_dbg("PORT%d_QUEUE\t: %08x\n", i, 
     213+                          ar8216_mii_read(ap, reg + 0x18)); 
     214+               ar8216_dbg("PORT%d_RATE1\t: %08x\n", i, 
     215+                          ar8216_mii_read(ap, reg + 0x1c)); 
     216+               ar8216_dbg("PORT%d_RATE2\t: %08x\n", i, 
     217+                          ar8216_mii_read(ap, reg + 0x20)); 
     218+               ar8216_dbg("PORT%d_RATE3\t: %08x\n", i, 
     219+                          ar8216_mii_read(ap, reg + 0x24)); 
     220+       } 
     221+} 
     222+ 
     223 static int 
     224 ar8216_probe(struct phy_device *pdev) 
     225 { 
     226        struct ar8216_priv priv; 
     227+       static int regs_dumped; 
     228  
     229        u8 id, rev; 
     230        u32 val; 
     231@@ -575,9 +792,14 @@ ar8216_probe(struct phy_device *pdev) 
     232        val = ar8216_mii_read(&priv, AR8216_REG_CTRL); 
     233        rev = val & 0xff; 
     234        id = (val >> 8) & 0xff; 
     235-       if ((id != 1) || (rev != 1)) 
     236+       if ((id != 1) || (rev != 1 && rev != 2)) 
     237                return -ENODEV; 
     238  
     239+       if (!regs_dumped) { 
     240+               ar8216_dump_regs(&priv); 
     241+               regs_dumped++; 
     242+       } 
     243+ 
     244        return 0; 
     245 } 
     246  
     247--- a/drivers/net/phy/ar8216.h 
     248+++ b/drivers/net/phy/ar8216.h 
     249@@ -27,7 +27,7 @@ 
     250 #define   AR8216_CTRL_RESET            BIT(31) 
     251  
     252 #define AR8216_REG_GLOBAL_CTRL         0x0030 
     253-#define   AR8216_GCTRL_MTU             BITS(0, 10) 
     254+#define   AR8216_GCTRL_MTU             BITS(0, 12) 
     255  
     256 #define AR8216_REG_VTU                 0x0040 
     257 #define   AR8216_VTU_OP                        BITS(0, 3)