This patch adds support for defining rt2x00 eeprom data.
This eeprom data can be extracted from flash or loaded directly from a firmware file.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
SVN-Revision: 34322
--- /dev/null
+#!/bin/sh
+# Based on gabors ralink wisoc implementation.
+
+rt2x00_eeprom_die() {
+ echo "rt2x00 eeprom: " "$*"
+ exit 1
+}
+
+rt2x00_eeprom_extract() {
+ local part=$1
+ local offset=$2
+ local count=$3
+ local mtd
+
+ . /etc/functions.sh
+
+ mtd=$(find_mtd_part $part)
+ [ -n "$mtd" ] || \
+ rt2x00_eeprom_die "no mtd device found for partition $part"
+
+ dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count || \
+ rt2x00_eeprom_die "failed to extract from $mtd"
+}
+
+[ -e /lib/firmware/$FIRMWARE ] && exit 0
+
+. /lib/brcm63xx.sh
+
+board=$board_name
+
+case "$FIRMWARE" in
+"RT3062.eeprom" )
+ case $board in
+ *)
+ rt2x00_eeprom_die "board $board is not supported yet"
+ ;;
+ esac
+ ;;
+esac
--- /dev/null
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -34,6 +34,7 @@
+ #include <board_bcm963xx.h>
+ #include <linux/bcm963xx_tag.h>
+ #include <pci_ath9k_fixup.h>
++#include <pci_rt2x00_fixup.h>
+
+ #define PFX "board_bcm963xx: "
+
+@@ -937,9 +938,19 @@ int __init board_register_devices(void)
+ }
+
+ /* register any fixups */
+- for (i = 0; i < board.has_caldata; i++)
+- pci_enable_ath9k_fixup(board.caldata[i].slot, board.caldata[i].caldata_offset,
+- board.caldata[i].endian_check, board.caldata[i].led_pin);
++ for (i = 0; i < board.has_caldata; i++) {
++ switch (board.caldata[i].vendor) {
++ case PCI_VENDOR_ID_ATHEROS:
++ pci_enable_ath9k_fixup(board.caldata[i].slot,
++ board.caldata[i].caldata_offset, board.caldata[i].endian_check,
++ board.caldata[i].led_pin);
++ break;
++ case PCI_VENDOR_ID_RALINK:
++ pci_enable_rt2x00_fixup(board.caldata[i].slot,
++ board.caldata[i].eeprom);
++ break;
++ }
++ }
+
+ return 0;
+ }
+--- a/arch/mips/bcm63xx/dev-flash.c
++++ b/arch/mips/bcm63xx/dev-flash.c
+@@ -146,7 +146,7 @@ static int __init bcm63xx_detect_flash_t
+ return 0;
+ }
+
+-int __init bcm63xx_flash_register(int num_caldata, struct ath9k_caldata *caldata)
++int __init bcm63xx_flash_register(int num_caldata, struct bcm63xx_caldata *caldata)
+ {
+ u32 val;
+ unsigned int i;
+--- a/arch/mips/bcm63xx/Makefile
++++ b/arch/mips/bcm63xx/Makefile
+@@ -1,7 +1,8 @@
+ obj-y += clk.o cpu.o cs.o gpio.o irq.o nvram.o prom.o setup.o \
+ timer.o dev-dsp.o dev-enet.o dev-flash.o dev-hsspi.o \
+ dev-pcmcia.o dev-rng.o dev-spi.o dev-uart.o dev-usb-ehci.o \
+- dev-usb-ohci.o dev-wdt.o pci-ath9k-fixup.o
++ dev-usb-ohci.o dev-wdt.o pci-ath9k-fixup.o \
++ pci-rt2x00-fixup.o
+ obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
+
+ obj-y += boards/
+--- /dev/null
++++ b/arch/mips/bcm63xx/pci-rt2x00-fixup.c
+@@ -0,0 +1,71 @@
++/*
++ * Broadcom BCM63XX RT2x00 EEPROM fixup helper.
++ *
++ * Copyright (C) 2012 Álvaro Fernández Rojas <noltari@gmail.com>
++ *
++ * Based on
++ *
++ * Broadcom BCM63XX Ath9k EEPROM fixup helper.
++ *
++ * Copyright (C) 2012 Jonas Gorski <jonas.gorski@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 as published
++ * by the Free Software Foundation.
++ */
++
++#include <linux/pci.h>
++#include <linux/platform_device.h>
++#include <linux/rt2x00_platform.h>
++
++#include <bcm63xx_nvram.h>
++#include <pci_rt2x00_fixup.h>
++
++struct rt2x00_fixup {
++ unsigned slot;
++ u8 mac[ETH_ALEN];
++ struct rt2x00_platform_data pdata;
++};
++
++static int rt2x00_num_fixups;
++static struct rt2x00_fixup rt2x00_fixups[2] = {
++ {
++ .slot = 255,
++ },
++ {
++ .slot = 255,
++ },
++};
++
++static void rt2x00_pci_fixup(struct pci_dev *dev)
++{
++ unsigned i;
++ struct rt2x00_platform_data *pdata = NULL;
++
++ for (i = 0; i < rt2x00_num_fixups; i++) {
++ if (rt2x00_fixups[i].slot != PCI_SLOT(dev->devfn))
++ continue;
++
++ pdata = &rt2x00_fixups[i].pdata;
++ break;
++ }
++
++ dev->dev.platform_data = pdata;
++}
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_RALINK, PCI_ANY_ID, rt2x00_pci_fixup);
++
++void __init pci_enable_rt2x00_fixup(unsigned slot, char* eeprom)
++{
++ if (rt2x00_num_fixups >= ARRAY_SIZE(rt2x00_fixups))
++ return;
++
++ rt2x00_fixups[rt2x00_num_fixups].slot = slot;
++ rt2x00_fixups[rt2x00_num_fixups].pdata.eeprom_file_name = kstrdup(eeprom, GFP_KERNEL);
++
++ if (bcm63xx_nvram_get_mac_address(rt2x00_fixups[rt2x00_num_fixups].mac))
++ return;
++
++ rt2x00_fixups[rt2x00_num_fixups].pdata.mac_address = rt2x00_fixups[rt2x00_num_fixups].mac;
++ rt2x00_num_fixups++;
++}
++
+--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h
++++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h
+@@ -11,6 +11,6 @@ enum {
+
+ extern int bcm63xx_attached_flash;
+
+-int __init bcm63xx_flash_register(int num_caldata, struct ath9k_caldata *caldata);
++int __init bcm63xx_flash_register(int num_caldata, struct bcm63xx_caldata *caldata);
+
+ #endif /* __BCM63XX_FLASH_H */
+--- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
++++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
+@@ -8,6 +8,7 @@
+ #include <bcm63xx_dev_enet.h>
+ #include <bcm63xx_dev_dsp.h>
+ #include <pci_ath9k_fixup.h>
++#include <pci_rt2x00_fixup.h>
+
+ /*
+ * flash mapping
+@@ -15,11 +16,15 @@
+ #define BCM963XX_CFE_VERSION_OFFSET 0x570
+ #define BCM963XX_NVRAM_OFFSET 0x580
+
+-struct ath9k_caldata {
++struct bcm63xx_caldata {
++ unsigned int vendor;
+ unsigned int slot;
+ u32 caldata_offset;
++ /* Atheros */
+ unsigned int endian_check:1;
+ int led_pin;
++ /* Ralink */
++ char* eeprom;
+ };
+
+ /*
+@@ -43,7 +48,7 @@ struct board_info {
+ unsigned int has_caldata:2;
+
+ /* wifi calibration data config */
+- struct ath9k_caldata caldata[2];
++ struct bcm63xx_caldata caldata[2];
+
+ /* ethernet config */
+ struct bcm63xx_enet_platform_data enet0;
+--- /dev/null
++++ b/arch/mips/include/asm/mach-bcm63xx/pci_rt2x00_fixup.h
+@@ -0,0 +1,9 @@
++#ifndef _PCI_RT2X00_FIXUP
++#define _PCI_RT2X00_FIXUP
++
++#define PCI_VENDOR_ID_RALINK 0x1814
++
++void pci_enable_rt2x00_fixup(unsigned slot, char* eeprom) __init;
++
++#endif /* _PCI_RT2X00_FIXUP */
++
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -469,6 +469,54 @@ static struct board_info __initdata boar
+@@ -470,6 +470,54 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
};
#endif
/*
-@@ -640,6 +688,7 @@ static const struct board_info __initdat
+@@ -641,6 +689,7 @@ static const struct board_info __initdat
&board_DV201AMR,
&board_96348gw_a,
&board_rta1025w_16,
#include <asm/addrspace.h>
#include <bcm63xx_board.h>
#include <bcm63xx_cpu.h>
-@@ -43,6 +45,12 @@
+@@ -44,6 +46,12 @@
#define CFE_OFFSET_64K 0x10000
#define CFE_OFFSET_128K 0x20000
static struct board_info board;
/*
-@@ -666,6 +674,586 @@ static struct board_info __initdata boar
+@@ -667,6 +675,586 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
};
#endif
/*
-@@ -696,6 +1284,11 @@ static const struct board_info __initdat
+@@ -697,6 +1285,11 @@ static const struct board_info __initdat
&board_96358vw2,
&board_AGPFS0,
&board_DWVS0,
#endif
};
-@@ -750,6 +1343,16 @@ static void __init boardid_fixup(u8 *boo
+@@ -751,6 +1344,16 @@ static void __init boardid_fixup(u8 *boo
struct bcm_tag *tag = (struct bcm_tag *)(boot_addr + CFE_OFFSET_64K);
char *board_name = (char *)bcm63xx_nvram_get_name();
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -140,6 +140,38 @@ static struct board_info __initdata boar
+@@ -141,6 +141,38 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -1263,6 +1295,7 @@ static const struct board_info __initdat
+@@ -1264,6 +1296,7 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6338
&board_96338gw,
&board_96338w,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -663,6 +663,96 @@ static struct board_info __initdata boar
+@@ -664,6 +664,96 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_AGPFS0 = {
.name = "AGPF-S0",
.expected_cpu_id = 0x6358,
-@@ -1316,6 +1406,7 @@ static const struct board_info __initdat
+@@ -1317,6 +1407,7 @@ static const struct board_info __initdat
&board_96358vw,
&board_96358vw2,
&board_AGPFS0,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -797,6 +797,59 @@ static struct board_info __initdata boar
+@@ -798,6 +798,59 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
};
struct spi_gpio_platform_data nb4_spi_gpio_data = {
.sck = NB4_SPI_GPIO_CLK,
.mosi = NB4_SPI_GPIO_MOSI,
-@@ -1408,6 +1461,7 @@ static const struct board_info __initdat
+@@ -1409,6 +1462,7 @@ static const struct board_info __initdat
&board_AGPFS0,
&board_CPVA642,
&board_DWVS0,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -557,6 +557,67 @@ static struct board_info __initdata boar
+@@ -558,6 +558,67 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -1453,6 +1514,7 @@ static const struct board_info __initdat
+@@ -1454,6 +1515,7 @@ static const struct board_info __initdat
&board_96348gw_a,
&board_rta1025w_16,
&board_96348_D4PW,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -426,6 +426,112 @@ static struct board_info __initdata boar
+@@ -427,6 +427,112 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_FAST2404 = {
.name = "F@ST2404",
.expected_cpu_id = 0x6348,
-@@ -1507,6 +1613,8 @@ static const struct board_info __initdat
+@@ -1508,6 +1614,8 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6348
&board_96348r,
&board_96348gw,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -724,6 +724,76 @@ static struct board_info __initdata boar
+@@ -725,6 +725,76 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -1623,6 +1693,7 @@ static const struct board_info __initdat
+@@ -1624,6 +1694,7 @@ static const struct board_info __initdat
&board_rta1025w_16,
&board_96348_D4PW,
&board_spw500v,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1666,6 +1666,80 @@ static struct board_info __initdata boar
+@@ -1667,6 +1667,80 @@ static struct board_info __initdata boar
.spis = nb4_spi_devices,
.num_spis = ARRAY_SIZE(nb4_spi_devices),
};
#endif
/*
-@@ -1708,6 +1782,7 @@ static const struct board_info __initdat
+@@ -1709,6 +1783,7 @@ static const struct board_info __initdat
&board_nb4_ser_r2,
&board_nb4_fxc_r1,
&board_nb4_fxc_r2,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -172,6 +172,43 @@ static struct board_info __initdata boar
+@@ -173,6 +173,43 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -1750,6 +1787,7 @@ static const struct board_info __initdat
+@@ -1751,6 +1788,7 @@ static const struct board_info __initdat
&board_96338gw,
&board_96338w,
&board_96338w2_e7t,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1777,6 +1777,72 @@ static struct board_info __initdata boar
+@@ -1778,6 +1778,72 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -1821,6 +1887,7 @@ static const struct board_info __initdat
+@@ -1822,6 +1888,7 @@ static const struct board_info __initdat
&board_nb4_fxc_r1,
&board_nb4_fxc_r2,
&board_HW553,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -831,6 +831,63 @@ static struct board_info __initdata boar
+@@ -832,6 +832,63 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -1872,6 +1929,7 @@ static const struct board_info __initdat
+@@ -1873,6 +1930,7 @@ static const struct board_info __initdat
&board_96348_D4PW,
&board_spw500v,
&board_96348sv,
#endif
#ifdef CONFIG_BCM63XX_CPU_6358
-@@ -1992,6 +2050,23 @@ void __init board_prom_init(void)
+@@ -1993,6 +2051,23 @@ void __init board_prom_init(void)
val &= MPI_CSBASE_BASE_MASK;
}
boot_addr = (u8 *)KSEG1ADDR(val);
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -395,6 +395,62 @@ static struct board_info __initdata boar
+@@ -396,6 +396,62 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_96348gw = {
.name = "96348GW",
.expected_cpu_id = 0x6348,
-@@ -1930,6 +1986,7 @@ static const struct board_info __initdat
+@@ -1931,6 +1987,7 @@ static const struct board_info __initdat
&board_spw500v,
&board_96348sv,
&board_V2500V_BB,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -451,6 +451,49 @@ static struct board_info __initdata boar
+@@ -452,6 +452,49 @@ static struct board_info __initdata boar
};
static struct board_info __initdata board_96348gw = {
.name = "96348GW",
.expected_cpu_id = 0x6348,
-@@ -1987,6 +2030,7 @@ static const struct board_info __initdat
+@@ -1988,6 +2031,7 @@ static const struct board_info __initdat
&board_96348sv,
&board_V2500V_BB,
&board_V2110,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1210,6 +1210,8 @@ static struct board_info __initdata boar
+@@ -1211,6 +1211,8 @@ static struct board_info __initdata boar
.name = "DWV-S0",
.expected_cpu_id = 0x6358,
.has_enet0 = 1,
.has_enet1 = 1,
.has_pci = 1,
-@@ -1225,6 +1227,7 @@ static struct board_info __initdata boar
+@@ -1226,6 +1228,7 @@ static struct board_info __initdata boar
},
.has_ohci0 = 1,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -494,6 +494,67 @@ static struct board_info __initdata boar
+@@ -495,6 +495,67 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_96348gw = {
.name = "96348GW",
.expected_cpu_id = 0x6348,
-@@ -2034,6 +2095,7 @@ static const struct board_info __initdat
+@@ -2035,6 +2096,7 @@ static const struct board_info __initdat
&board_V2500V_BB,
&board_V2110,
&board_ct536_ct5621,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -757,6 +757,7 @@ static struct board_info __initdata boar
+@@ -758,6 +758,7 @@ static struct board_info __initdata boar
.name = "RTA1025W_16",
.expected_cpu_id = 0x6348,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1049,6 +1049,44 @@ static struct board_info __initdata boar
+@@ -1050,6 +1050,44 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -2097,6 +2135,7 @@ static const struct board_info __initdat
+@@ -2098,6 +2136,7 @@ static const struct board_info __initdat
&board_V2110,
&board_ct536_ct5621,
&board_96348A_122,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2105,6 +2105,78 @@ static struct board_info __initdata boar
+@@ -2106,6 +2106,78 @@ static struct board_info __initdata boar
#endif
/*
* all boards
*/
static const struct board_info __initdata *bcm963xx_boards[] = {
-@@ -2153,6 +2225,10 @@ static const struct board_info __initdat
+@@ -2154,6 +2226,10 @@ static const struct board_info __initdat
&board_HW553,
&board_spw303v,
#endif
};
/*
-@@ -2324,12 +2400,25 @@ void __init board_prom_init(void)
+@@ -2325,12 +2401,25 @@ void __init board_prom_init(void)
bcm63xx_pci_enabled = 1;
if (BCMCPU_IS_6348())
val |= GPIO_MODE_6348_G2_PCI;
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2174,6 +2174,72 @@ static struct board_info __initdata boar
+@@ -2175,6 +2175,72 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
.has_ehci0 = 1,
};
#endif
/*
-@@ -2228,6 +2294,7 @@ static const struct board_info __initdat
+@@ -2229,6 +2295,7 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6368
&board_96368mvwg,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -54,6 +54,80 @@
+@@ -55,6 +55,80 @@
static struct board_info board;
/*
* known 6338 boards
*/
#ifdef CONFIG_BCM63XX_CPU_6338
-@@ -2246,6 +2320,9 @@ static struct board_info __initdata boar
+@@ -2247,6 +2321,9 @@ static struct board_info __initdata boar
* all boards
*/
static const struct board_info __initdata *bcm963xx_boards[] = {
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -125,6 +125,76 @@ static struct board_info __initdata boar
+@@ -126,6 +126,76 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -2322,6 +2392,7 @@ static struct board_info __initdata boar
+@@ -2323,6 +2393,7 @@ static struct board_info __initdata boar
static const struct board_info __initdata *bcm963xx_boards[] = {
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -195,6 +195,110 @@ static struct board_info __initdata boar
+@@ -196,6 +196,111 @@ static struct board_info __initdata boar
},
};
+ .has_caldata = 1,
+ .caldata = {
+ {
++ .vendor = PCI_VENDOR_ID_ATHEROS,
+ .caldata_offset = 0x7d1000,
+ .slot = 0,
+ .led_pin = -1,
#endif
/*
-@@ -2393,6 +2497,7 @@ static const struct board_info __initdat
+@@ -2394,6 +2499,7 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
&board_963281TAN,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1335,6 +1335,57 @@ static struct board_info __initdata boar
+@@ -1337,6 +1337,57 @@ static struct board_info __initdata boar
},
};
#endif
/*
-@@ -2527,6 +2578,7 @@ static const struct board_info __initdat
+@@ -2529,6 +2580,7 @@ static const struct board_info __initdat
&board_ct536_ct5621,
&board_96348A_122,
&board_CPVA502plus,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -51,6 +51,13 @@
+@@ -52,6 +52,13 @@
#define NB4_SPI_GPIO_CLK 6
#define NB4_74HC64_GPIO(X) (NB4_74X164_GPIO_BASE + (X))
static struct board_info board;
/*
-@@ -2262,6 +2269,111 @@ static struct board_info __initdata boar
+@@ -2264,6 +2271,111 @@ static struct board_info __initdata boar
.num_spis = ARRAY_SIZE(nb4_spi_devices),
};
static struct board_info __initdata board_HW553 = {
.name = "HW553",
.expected_cpu_id = 0x6358,
-@@ -2593,6 +2705,7 @@ static const struct board_info __initdat
+@@ -2595,6 +2707,7 @@ static const struct board_info __initdat
&board_nb4_ser_r2,
&board_nb4_fxc_r1,
&board_nb4_fxc_r2,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2513,6 +2513,71 @@ static struct board_info __initdata boar
+@@ -2515,6 +2515,71 @@ static struct board_info __initdata boar
},
}
};
#endif
/*
-@@ -2708,6 +2773,7 @@ static const struct board_info __initdat
+@@ -2710,6 +2775,7 @@ static const struct board_info __initdat
&board_ct6373_1,
&board_HW553,
&board_spw303v,
#include <asm/addrspace.h>
#include <bcm63xx_board.h>
#include <bcm63xx_cpu.h>
-@@ -50,6 +51,8 @@
+@@ -51,6 +52,8 @@
#define NB4_SPI_GPIO_MOSI 7
#define NB4_SPI_GPIO_CLK 6
#define NB4_74HC64_GPIO(X) (NB4_74X164_GPIO_BASE + (X))
#define CT6373_PID_OFFSET 0xff80
#define CT6373_74X164_GPIO_BASE 64
-@@ -2580,6 +2583,103 @@ static struct board_info __initdata boar
+@@ -2582,6 +2585,103 @@ static struct board_info __initdata boar
};
#endif
/*
* known 6368 boards
*/
-@@ -2776,6 +2876,10 @@ static const struct board_info __initdat
+@@ -2778,6 +2878,10 @@ static const struct board_info __initdat
&board_DVAG3810BN,
#endif
#ifdef CONFIG_BCM63XX_CPU_6368
&board_96368mvwg,
&board_96368mvngr,
-@@ -2843,6 +2947,11 @@ static void __init boardid_fixup(u8 *boo
+@@ -2845,6 +2949,11 @@ static void __init boardid_fixup(u8 *boo
}
}
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1011,6 +1011,55 @@ static struct board_info __initdata boar
+@@ -1013,6 +1013,55 @@ static struct board_info __initdata boar
.has_ehci0 = 1,
};
static struct board_info __initdata board_rta1025w_16 = {
.name = "RTA1025W_16",
.expected_cpu_id = 0x6348,
-@@ -2844,6 +2893,7 @@ static const struct board_info __initdat
+@@ -2846,6 +2895,7 @@ static const struct board_info __initdat
&board_96348gw_10,
&board_96348gw_11,
&board_FAST2404,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -206,6 +206,125 @@ static struct board_info __initdata boar
+@@ -207,6 +207,125 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_dsl_274xb_f1 = {
.name = "AW4339U",
.expected_cpu_id = 0x6328,
-@@ -2874,6 +2993,7 @@ static const struct board_info __initdat
+@@ -2876,6 +2995,7 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
&board_963281TAN,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -136,6 +136,78 @@ static struct board_info __initdata boar
+@@ -137,6 +137,78 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_963281TAN = {
.name = "963281TAN",
.expected_cpu_id = 0x6328,
-@@ -2992,6 +3064,7 @@ static struct board_info __initdata boar
+@@ -2994,6 +3066,7 @@ static struct board_info __initdata boar
static const struct board_info __initdata *bcm963xx_boards[] = {
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -136,6 +136,72 @@ static struct board_info __initdata boar
+@@ -137,6 +137,72 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_96328A_1441N1 = {
.name = "96328A-1441N1",
.expected_cpu_id = 0x6328,
-@@ -3064,6 +3130,7 @@ static struct board_info __initdata boar
+@@ -3066,6 +3132,7 @@ static struct board_info __initdata boar
static const struct board_info __initdata *bcm963xx_boards[] = {
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1919,6 +1919,99 @@ static struct board_info __initdata boar
+@@ -1921,6 +1921,99 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
.has_ehci0 = 1,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1376,6 +1376,19 @@ static struct board_info __initdata boar
+@@ -1378,6 +1378,19 @@ static struct board_info __initdata boar
},
.has_ohci0 = 1,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -844,6 +844,17 @@ static struct board_info __initdata boar
+@@ -846,6 +846,17 @@ static struct board_info __initdata boar
.active_low = 1,
},
},
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -736,6 +736,53 @@ static struct board_info __initdata boar
+@@ -738,6 +738,53 @@ static struct board_info __initdata boar
.has_uart0 = 1,
};
#endif
/*
-@@ -3261,6 +3308,7 @@ static const struct board_info __initdat
+@@ -3263,6 +3310,7 @@ static const struct board_info __initdat
#endif
#ifdef CONFIG_BCM63XX_CPU_6345
&board_96345gw2,
#include <linux/spi/spi.h>
#include <linux/spi/spi_gpio.h>
#include <linux/spi/74x164.h>
-@@ -3366,7 +3367,7 @@ static const struct board_info __initdat
+@@ -3368,7 +3369,7 @@ static const struct board_info __initdat
* bcm4318 WLAN work
*/
#ifdef CONFIG_SSB_PCIHOST
.revision = 0x02,
.board_rev = 0x17,
.country_code = 0x0,
-@@ -3386,6 +3387,7 @@ static struct ssb_sprom bcm63xx_sprom =
+@@ -3388,6 +3389,7 @@ static struct ssb_sprom bcm63xx_sprom =
.boardflags_lo = 0x2848,
.boardflags_hi = 0x0000,
};
--- /dev/null
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -34,6 +34,7 @@
+ #include <board_bcm963xx.h>
+ #include <linux/bcm963xx_tag.h>
+ #include <pci_ath9k_fixup.h>
++#include <pci_rt2x00_fixup.h>
+
+ #define PFX "board_bcm963xx: "
+
+@@ -982,9 +983,19 @@ int __init board_register_devices(void)
+ }
+
+ /* register any fixups */
+- for (i = 0; i < board.has_caldata; i++)
+- pci_enable_ath9k_fixup(board.caldata[i].slot, board.caldata[i].caldata_offset,
+- board.caldata[i].endian_check, board.caldata[i].led_pin);
++ for (i = 0; i < board.has_caldata; i++) {
++ switch (board.caldata[i].vendor) {
++ case PCI_VENDOR_ID_ATHEROS:
++ pci_enable_ath9k_fixup(board.caldata[i].slot,
++ board.caldata[i].caldata_offset, board.caldata[i].endian_check,
++ board.caldata[i].led_pin);
++ break;
++ case PCI_VENDOR_ID_RALINK:
++ pci_enable_rt2x00_fixup(board.caldata[i].slot,
++ board.caldata[i].eeprom);
++ break;
++ }
++ }
+
+ return 0;
+ }
+--- a/arch/mips/bcm63xx/dev-flash.c
++++ b/arch/mips/bcm63xx/dev-flash.c
+@@ -146,7 +146,7 @@ static int __init bcm63xx_detect_flash_t
+ return 0;
+ }
+
+-int __init bcm63xx_flash_register(int num_caldata, struct ath9k_caldata *caldata)
++int __init bcm63xx_flash_register(int num_caldata, struct bcm63xx_caldata *caldata)
+ {
+ u32 val;
+ unsigned int i;
+--- a/arch/mips/bcm63xx/Makefile
++++ b/arch/mips/bcm63xx/Makefile
+@@ -1,7 +1,8 @@
+ obj-y += clk.o cpu.o cs.o gpio.o irq.o nvram.o prom.o setup.o \
+ timer.o dev-dsp.o dev-enet.o dev-flash.o dev-hsspi.o \
+ dev-pcmcia.o dev-rng.o dev-spi.o dev-uart.o dev-usb-ehci.o \
+- dev-usb-ohci.o dev-wdt.o pci-ath9k-fixup.o
++ dev-usb-ohci.o dev-wdt.o pci-ath9k-fixup.o \
++ pci-rt2x00-fixup.o
+ obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
+
+ obj-y += boards/
+--- /dev/null
++++ b/arch/mips/bcm63xx/pci-rt2x00-fixup.c
+@@ -0,0 +1,71 @@
++/*
++ * Broadcom BCM63XX RT2x00 EEPROM fixup helper.
++ *
++ * Copyright (C) 2012 Álvaro Fernández Rojas <noltari@gmail.com>
++ *
++ * Based on
++ *
++ * Broadcom BCM63XX Ath9k EEPROM fixup helper.
++ *
++ * Copyright (C) 2012 Jonas Gorski <jonas.gorski@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License version 2 as published
++ * by the Free Software Foundation.
++ */
++
++#include <linux/pci.h>
++#include <linux/platform_device.h>
++#include <linux/rt2x00_platform.h>
++
++#include <bcm63xx_nvram.h>
++#include <pci_rt2x00_fixup.h>
++
++struct rt2x00_fixup {
++ unsigned slot;
++ u8 mac[ETH_ALEN];
++ struct rt2x00_platform_data pdata;
++};
++
++static int rt2x00_num_fixups;
++static struct rt2x00_fixup rt2x00_fixups[2] = {
++ {
++ .slot = 255,
++ },
++ {
++ .slot = 255,
++ },
++};
++
++static void rt2x00_pci_fixup(struct pci_dev *dev)
++{
++ unsigned i;
++ struct rt2x00_platform_data *pdata = NULL;
++
++ for (i = 0; i < rt2x00_num_fixups; i++) {
++ if (rt2x00_fixups[i].slot != PCI_SLOT(dev->devfn))
++ continue;
++
++ pdata = &rt2x00_fixups[i].pdata;
++ break;
++ }
++
++ dev->dev.platform_data = pdata;
++}
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_RALINK, PCI_ANY_ID, rt2x00_pci_fixup);
++
++void __init pci_enable_rt2x00_fixup(unsigned slot, char* eeprom)
++{
++ if (rt2x00_num_fixups >= ARRAY_SIZE(rt2x00_fixups))
++ return;
++
++ rt2x00_fixups[rt2x00_num_fixups].slot = slot;
++ rt2x00_fixups[rt2x00_num_fixups].pdata.eeprom_file_name = kstrdup(eeprom, GFP_KERNEL);
++
++ if (bcm63xx_nvram_get_mac_address(rt2x00_fixups[rt2x00_num_fixups].mac))
++ return;
++
++ rt2x00_fixups[rt2x00_num_fixups].pdata.mac_address = rt2x00_fixups[rt2x00_num_fixups].mac;
++ rt2x00_num_fixups++;
++}
++
+--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h
++++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h
+@@ -11,6 +11,6 @@ enum {
+
+ extern int bcm63xx_attached_flash;
+
+-int __init bcm63xx_flash_register(int num_caldata, struct ath9k_caldata *caldata);
++int __init bcm63xx_flash_register(int num_caldata, struct bcm63xx_caldata *caldata);
+
+ #endif /* __BCM63XX_FLASH_H */
+--- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
++++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h
+@@ -8,6 +8,7 @@
+ #include <bcm63xx_dev_enet.h>
+ #include <bcm63xx_dev_dsp.h>
+ #include <pci_ath9k_fixup.h>
++#include <pci_rt2x00_fixup.h>
+
+ /*
+ * flash mapping
+@@ -15,11 +16,15 @@
+ #define BCM963XX_CFE_VERSION_OFFSET 0x570
+ #define BCM963XX_NVRAM_OFFSET 0x580
+
+-struct ath9k_caldata {
++struct bcm63xx_caldata {
++ unsigned int vendor;
+ unsigned int slot;
+ u32 caldata_offset;
++ /* Atheros */
+ unsigned int endian_check:1;
+ int led_pin;
++ /* Ralink */
++ char* eeprom;
+ };
+
+ /*
+@@ -43,7 +48,7 @@ struct board_info {
+ unsigned int has_caldata:2;
+
+ /* wifi calibration data config */
+- struct ath9k_caldata caldata[2];
++ struct bcm63xx_caldata caldata[2];
+
+ /* ethernet config */
+ struct bcm63xx_enet_platform_data enet0;
+--- /dev/null
++++ b/arch/mips/include/asm/mach-bcm63xx/pci_rt2x00_fixup.h
+@@ -0,0 +1,9 @@
++#ifndef _PCI_RT2X00_FIXUP
++#define _PCI_RT2X00_FIXUP
++
++#define PCI_VENDOR_ID_RALINK 0x1814
++
++void pci_enable_rt2x00_fixup(unsigned slot, char* eeprom) __init;
++
++#endif /* _PCI_RT2X00_FIXUP */
++
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -511,6 +511,54 @@ static struct board_info __initdata boar
+@@ -512,6 +512,54 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
};
#endif
/*
-@@ -685,6 +733,7 @@ static const struct board_info __initdat
+@@ -686,6 +734,7 @@ static const struct board_info __initdat
&board_DV201AMR,
&board_96348gw_a,
&board_rta1025w_16,
#include <asm/addrspace.h>
#include <bcm63xx_board.h>
#include <bcm63xx_cpu.h>
-@@ -43,6 +45,12 @@
+@@ -44,6 +46,12 @@
#define CFE_OFFSET_64K 0x10000
#define CFE_OFFSET_128K 0x20000
static struct board_info board;
/*
-@@ -708,6 +716,586 @@ static struct board_info __initdata boar
+@@ -709,6 +717,586 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
};
#endif
/*
-@@ -741,6 +1329,11 @@ static const struct board_info __initdat
+@@ -742,6 +1330,11 @@ static const struct board_info __initdat
&board_96358vw2,
&board_AGPFS0,
&board_DWVS0,
#endif
};
-@@ -795,6 +1388,16 @@ static void __init boardid_fixup(u8 *boo
+@@ -796,6 +1389,16 @@ static void __init boardid_fixup(u8 *boo
struct bcm_tag *tag = (struct bcm_tag *)(boot_addr + CFE_OFFSET_64K);
char *board_name = (char *)bcm63xx_nvram_get_name();
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -182,6 +182,38 @@ static struct board_info __initdata boar
+@@ -183,6 +183,38 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -1308,6 +1340,7 @@ static const struct board_info __initdat
+@@ -1309,6 +1341,7 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6338
&board_96338gw,
&board_96338w,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -705,6 +705,96 @@ static struct board_info __initdata boar
+@@ -706,6 +706,96 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_AGPFS0 = {
.name = "AGPF-S0",
.expected_cpu_id = 0x6358,
-@@ -1361,6 +1451,7 @@ static const struct board_info __initdat
+@@ -1362,6 +1452,7 @@ static const struct board_info __initdat
&board_96358vw,
&board_96358vw2,
&board_AGPFS0,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -839,6 +839,59 @@ static struct board_info __initdata boar
+@@ -840,6 +840,59 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
};
struct spi_gpio_platform_data nb4_spi_gpio_data = {
.sck = NB4_SPI_GPIO_CLK,
.mosi = NB4_SPI_GPIO_MOSI,
-@@ -1453,6 +1506,7 @@ static const struct board_info __initdat
+@@ -1454,6 +1507,7 @@ static const struct board_info __initdat
&board_AGPFS0,
&board_CPVA642,
&board_DWVS0,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -599,6 +599,67 @@ static struct board_info __initdata boar
+@@ -600,6 +600,67 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -1498,6 +1559,7 @@ static const struct board_info __initdat
+@@ -1499,6 +1560,7 @@ static const struct board_info __initdat
&board_96348gw_a,
&board_rta1025w_16,
&board_96348_D4PW,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -468,6 +468,112 @@ static struct board_info __initdata boar
+@@ -469,6 +469,112 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_FAST2404 = {
.name = "F@ST2404",
.expected_cpu_id = 0x6348,
-@@ -1552,6 +1658,8 @@ static const struct board_info __initdat
+@@ -1553,6 +1659,8 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6348
&board_96348r,
&board_96348gw,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -766,6 +766,76 @@ static struct board_info __initdata boar
+@@ -767,6 +767,76 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -1668,6 +1738,7 @@ static const struct board_info __initdat
+@@ -1669,6 +1739,7 @@ static const struct board_info __initdat
&board_rta1025w_16,
&board_96348_D4PW,
&board_spw500v,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1708,6 +1708,80 @@ static struct board_info __initdata boar
+@@ -1709,6 +1709,80 @@ static struct board_info __initdata boar
.spis = nb4_spi_devices,
.num_spis = ARRAY_SIZE(nb4_spi_devices),
};
#endif
/*
-@@ -1753,6 +1827,7 @@ static const struct board_info __initdat
+@@ -1754,6 +1828,7 @@ static const struct board_info __initdat
&board_nb4_ser_r2,
&board_nb4_fxc_r1,
&board_nb4_fxc_r2,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -214,6 +214,43 @@ static struct board_info __initdata boar
+@@ -215,6 +215,43 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -1795,6 +1832,7 @@ static const struct board_info __initdat
+@@ -1796,6 +1833,7 @@ static const struct board_info __initdat
&board_96338gw,
&board_96338w,
&board_96338w2_e7t,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1819,6 +1819,72 @@ static struct board_info __initdata boar
+@@ -1820,6 +1820,72 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -1866,6 +1932,7 @@ static const struct board_info __initdat
+@@ -1867,6 +1933,7 @@ static const struct board_info __initdat
&board_nb4_fxc_r1,
&board_nb4_fxc_r2,
&board_HW553,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -873,6 +873,63 @@ static struct board_info __initdata boar
+@@ -874,6 +874,63 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -1917,6 +1974,7 @@ static const struct board_info __initdat
+@@ -1918,6 +1975,7 @@ static const struct board_info __initdat
&board_96348_D4PW,
&board_spw500v,
&board_96348sv,
#endif
#ifdef CONFIG_BCM63XX_CPU_6358
-@@ -2037,6 +2095,23 @@ void __init board_prom_init(void)
+@@ -2038,6 +2096,23 @@ void __init board_prom_init(void)
val &= MPI_CSBASE_BASE_MASK;
}
boot_addr = (u8 *)KSEG1ADDR(val);
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -437,6 +437,62 @@ static struct board_info __initdata boar
+@@ -438,6 +438,62 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_96348gw = {
.name = "96348GW",
.expected_cpu_id = 0x6348,
-@@ -1975,6 +2031,7 @@ static const struct board_info __initdat
+@@ -1976,6 +2032,7 @@ static const struct board_info __initdat
&board_spw500v,
&board_96348sv,
&board_V2500V_BB,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -493,6 +493,49 @@ static struct board_info __initdata boar
+@@ -494,6 +494,49 @@ static struct board_info __initdata boar
};
static struct board_info __initdata board_96348gw = {
.name = "96348GW",
.expected_cpu_id = 0x6348,
-@@ -2032,6 +2075,7 @@ static const struct board_info __initdat
+@@ -2033,6 +2076,7 @@ static const struct board_info __initdat
&board_96348sv,
&board_V2500V_BB,
&board_V2110,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1252,6 +1252,8 @@ static struct board_info __initdata boar
+@@ -1253,6 +1253,8 @@ static struct board_info __initdata boar
.name = "DWV-S0",
.expected_cpu_id = 0x6358,
.has_enet0 = 1,
.has_enet1 = 1,
.has_pci = 1,
-@@ -1267,6 +1269,7 @@ static struct board_info __initdata boar
+@@ -1268,6 +1270,7 @@ static struct board_info __initdata boar
},
.has_ohci0 = 1,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -536,6 +536,67 @@ static struct board_info __initdata boar
+@@ -537,6 +537,67 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_96348gw = {
.name = "96348GW",
.expected_cpu_id = 0x6348,
-@@ -2079,6 +2140,7 @@ static const struct board_info __initdat
+@@ -2080,6 +2141,7 @@ static const struct board_info __initdat
&board_V2500V_BB,
&board_V2110,
&board_ct536_ct5621,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -799,6 +799,7 @@ static struct board_info __initdata boar
+@@ -800,6 +800,7 @@ static struct board_info __initdata boar
.name = "RTA1025W_16",
.expected_cpu_id = 0x6348,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1091,6 +1091,44 @@ static struct board_info __initdata boar
+@@ -1092,6 +1092,44 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -2142,6 +2180,7 @@ static const struct board_info __initdat
+@@ -2143,6 +2181,7 @@ static const struct board_info __initdat
&board_V2110,
&board_ct536_ct5621,
&board_96348A_122,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2147,6 +2147,78 @@ static struct board_info __initdata boar
+@@ -2148,6 +2148,78 @@ static struct board_info __initdata boar
#endif
/*
* all boards
*/
static const struct board_info __initdata *bcm963xx_boards[] = {
-@@ -2198,6 +2270,10 @@ static const struct board_info __initdat
+@@ -2199,6 +2271,10 @@ static const struct board_info __initdat
&board_HW553,
&board_spw303v,
#endif
};
/*
-@@ -2369,12 +2445,25 @@ void __init board_prom_init(void)
+@@ -2370,12 +2446,25 @@ void __init board_prom_init(void)
bcm63xx_pci_enabled = 1;
if (BCMCPU_IS_6348())
val |= GPIO_MODE_6348_G2_PCI;
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2216,6 +2216,72 @@ static struct board_info __initdata boar
+@@ -2217,6 +2217,72 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
.has_ehci0 = 1,
};
#endif
/*
-@@ -2273,6 +2339,7 @@ static const struct board_info __initdat
+@@ -2274,6 +2340,7 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6368
&board_96368mvwg,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -64,13 +64,45 @@ static struct board_info __initdata boar
+@@ -65,13 +65,45 @@ static struct board_info __initdata boar
.has_uart0 = 1,
.has_pci = 1,
.name = "96328avng::power",
.gpio = 4,
.active_low = 1,
-@@ -87,7 +119,7 @@ static struct board_info __initdata boar
+@@ -88,7 +120,7 @@ static struct board_info __initdata boar
.active_low = 1,
},
{
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -125,6 +125,76 @@ static struct board_info __initdata boar
+@@ -126,6 +126,76 @@ static struct board_info __initdata boar
},
},
};
#endif
/*
-@@ -2322,6 +2392,7 @@ static struct board_info __initdata boar
+@@ -2323,6 +2393,7 @@ static struct board_info __initdata boar
static const struct board_info __initdata *bcm963xx_boards[] = {
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -195,6 +195,110 @@ static struct board_info __initdata boar
+@@ -196,6 +196,111 @@ static struct board_info __initdata boar
},
};
+ .has_caldata = 1,
+ .caldata = {
+ {
++ .vendor = PCI_VENDOR_ID_ATHEROS,
+ .caldata_offset = 0x7d1000,
+ .slot = 0,
+ .led_pin = -1,
#endif
/*
-@@ -2393,6 +2497,7 @@ static const struct board_info __initdat
+@@ -2394,6 +2499,7 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
&board_963281TAN,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1335,6 +1335,57 @@ static struct board_info __initdata boar
+@@ -1337,6 +1337,57 @@ static struct board_info __initdata boar
},
};
#endif
/*
-@@ -2527,6 +2578,7 @@ static const struct board_info __initdat
+@@ -2529,6 +2580,7 @@ static const struct board_info __initdat
&board_ct536_ct5621,
&board_96348A_122,
&board_CPVA502plus,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -51,6 +51,13 @@
+@@ -52,6 +52,13 @@
#define NB4_SPI_GPIO_CLK 6
#define NB4_74HC64_GPIO(X) (NB4_74X164_GPIO_BASE + (X))
static struct board_info board;
/*
-@@ -2262,6 +2269,111 @@ static struct board_info __initdata boar
+@@ -2264,6 +2271,111 @@ static struct board_info __initdata boar
.num_spis = ARRAY_SIZE(nb4_spi_devices),
};
static struct board_info __initdata board_HW553 = {
.name = "HW553",
.expected_cpu_id = 0x6358,
-@@ -2593,6 +2705,7 @@ static const struct board_info __initdat
+@@ -2595,6 +2707,7 @@ static const struct board_info __initdat
&board_nb4_ser_r2,
&board_nb4_fxc_r1,
&board_nb4_fxc_r2,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -2513,6 +2513,71 @@ static struct board_info __initdata boar
+@@ -2515,6 +2515,71 @@ static struct board_info __initdata boar
},
}
};
#endif
/*
-@@ -2708,6 +2773,7 @@ static const struct board_info __initdat
+@@ -2710,6 +2775,7 @@ static const struct board_info __initdat
&board_ct6373_1,
&board_HW553,
&board_spw303v,
#include <asm/addrspace.h>
#include <bcm63xx_board.h>
#include <bcm63xx_cpu.h>
-@@ -50,6 +51,8 @@
+@@ -51,6 +52,8 @@
#define NB4_SPI_GPIO_MOSI 7
#define NB4_SPI_GPIO_CLK 6
#define NB4_74HC64_GPIO(X) (NB4_74X164_GPIO_BASE + (X))
#define CT6373_PID_OFFSET 0xff80
#define CT6373_74X164_GPIO_BASE 64
-@@ -2580,6 +2583,103 @@ static struct board_info __initdata boar
+@@ -2582,6 +2585,103 @@ static struct board_info __initdata boar
};
#endif
/*
* known 6368 boards
*/
-@@ -2776,6 +2876,10 @@ static const struct board_info __initdat
+@@ -2778,6 +2878,10 @@ static const struct board_info __initdat
&board_DVAG3810BN,
#endif
#ifdef CONFIG_BCM63XX_CPU_6368
&board_96368mvwg,
&board_96368mvngr,
-@@ -2843,6 +2947,11 @@ static void __init boardid_fixup(u8 *boo
+@@ -2845,6 +2949,11 @@ static void __init boardid_fixup(u8 *boo
}
}
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1011,6 +1011,55 @@ static struct board_info __initdata boar
+@@ -1013,6 +1013,55 @@ static struct board_info __initdata boar
.has_ehci0 = 1,
};
static struct board_info __initdata board_rta1025w_16 = {
.name = "RTA1025W_16",
.expected_cpu_id = 0x6348,
-@@ -2844,6 +2893,7 @@ static const struct board_info __initdat
+@@ -2846,6 +2895,7 @@ static const struct board_info __initdat
&board_96348gw_10,
&board_96348gw_11,
&board_FAST2404,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -206,6 +206,125 @@ static struct board_info __initdata boar
+@@ -207,6 +207,125 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_dsl_274xb_f1 = {
.name = "AW4339U",
.expected_cpu_id = 0x6328,
-@@ -2874,6 +2993,7 @@ static const struct board_info __initdat
+@@ -2876,6 +2995,7 @@ static const struct board_info __initdat
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
&board_963281TAN,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -136,6 +136,78 @@ static struct board_info __initdata boar
+@@ -137,6 +137,78 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_963281TAN = {
.name = "963281TAN",
.expected_cpu_id = 0x6328,
-@@ -2992,6 +3064,7 @@ static struct board_info __initdata boar
+@@ -2994,6 +3066,7 @@ static struct board_info __initdata boar
static const struct board_info __initdata *bcm963xx_boards[] = {
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -136,6 +136,72 @@ static struct board_info __initdata boar
+@@ -137,6 +137,72 @@ static struct board_info __initdata boar
},
};
static struct board_info __initdata board_96328A_1441N1 = {
.name = "96328A-1441N1",
.expected_cpu_id = 0x6328,
-@@ -3064,6 +3130,7 @@ static struct board_info __initdata boar
+@@ -3066,6 +3132,7 @@ static struct board_info __initdata boar
static const struct board_info __initdata *bcm963xx_boards[] = {
#ifdef CONFIG_BCM63XX_CPU_6328
&board_96328avng,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1919,6 +1919,99 @@ static struct board_info __initdata boar
+@@ -1921,6 +1921,99 @@ static struct board_info __initdata boar
.has_ohci0 = 1,
.has_ehci0 = 1,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -1376,6 +1376,19 @@ static struct board_info __initdata boar
+@@ -1378,6 +1378,19 @@ static struct board_info __initdata boar
},
.has_ohci0 = 1,
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -844,6 +844,17 @@ static struct board_info __initdata boar
+@@ -846,6 +846,17 @@ static struct board_info __initdata boar
.active_low = 1,
},
},
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
-@@ -736,6 +736,53 @@ static struct board_info __initdata boar
+@@ -738,6 +738,53 @@ static struct board_info __initdata boar
.has_uart0 = 1,
};
#endif
/*
-@@ -3261,6 +3308,7 @@ static const struct board_info __initdat
+@@ -3263,6 +3310,7 @@ static const struct board_info __initdat
#endif
#ifdef CONFIG_BCM63XX_CPU_6345
&board_96345gw2,
#include <linux/spi/spi.h>
#include <linux/spi/spi_gpio.h>
#include <linux/spi/74x164.h>
-@@ -3366,7 +3367,7 @@ static const struct board_info __initdat
+@@ -3368,7 +3369,7 @@ static const struct board_info __initdat
* bcm4318 WLAN work
*/
#ifdef CONFIG_SSB_PCIHOST
.revision = 0x02,
.board_rev = 0x17,
.country_code = 0x0,
-@@ -3386,6 +3387,7 @@ static struct ssb_sprom bcm63xx_sprom =
+@@ -3388,6 +3389,7 @@ static struct ssb_sprom bcm63xx_sprom =
.boardflags_lo = 0x2848,
.boardflags_hi = 0x0000,
};