X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/8199c5026dfd457b48dc56ccd0aacab6be036da1..6189f5619bfa1859a9c9aa860237e60b311f859a:/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c diff --git a/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c b/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c index 7dd77f008..c16ebc867 100644 --- a/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/target/linux/brcm63xx/files/arch/mips/bcm63xx/boards/board_bcm963xx.c @@ -13,6 +13,7 @@ #include <linux/mtd/mtd.h> #include <linux/mtd/partitions.h> #include <linux/mtd/physmap.h> +#include <linux/ssb/ssb.h> #include <asm/addrspace.h> #include <bcm63xx_board.h> #include <bcm63xx_cpu.h> @@ -26,6 +27,8 @@ #include <bcm63xx_dev_pcmcia.h> #include <bcm63xx_dev_usb_ohci.h> #include <bcm63xx_dev_usb_ehci.h> +#include <bcm63xx_dev_usb_udc.h> +#include <bcm63xx_dev_spi.h> #include <board_bcm963xx.h> #define PFX "board_bcm963xx: " @@ -161,29 +164,46 @@ static struct board_info __initdata board_FAST2404 = { }; static struct board_info __initdata board_DV201AMR = { - .name = "DV201AMR", - .expected_cpu_id = 0x6348, + .name = "DV201AMR", + .expected_cpu_id = 0x6348, - .has_enet0 = 1, - .has_enet1 = 1, - .has_pci = 1, + .has_pci = 1, + .has_ohci0 = 1, + .has_udc0 = 1, + .has_enet0 = 1, + .has_enet1 = 1, .enet0 = { .has_phy = 1, .use_internal_phy = 1, }, + .enet1 = { + .force_speed_100 = 1, + .force_duplex_full = 1, + }, +}; - .enet1 = { - .force_speed_100 = 1, - .force_duplex_full = 1, - }, +static struct board_info __initdata board_96348gw_a = { + .name = "96348GW-A", + .expected_cpu_id = 0x6348, + .has_enet0 = 1, + .has_enet1 = 1, + .has_pci = 1, - .has_ohci0 = 1, - .has_pccard = 1, - .has_ehci0 = 1, + .enet0 = { + .has_phy = 1, + .use_internal_phy = 1, + }, + .enet1 = { + .force_speed_100 = 1, + .force_duplex_full = 1, + }, + + .has_ohci0 = 1, }; + #endif /* @@ -237,6 +257,28 @@ static struct board_info __initdata board_96358vw2 = { .has_pccard = 1, .has_ehci0 = 1, }; + +static struct board_info __initdata board_AGPFS0 = { + .name = "AGPF-S0", + .expected_cpu_id = 0x6358, + + .has_enet0 = 1, + .has_enet1 = 1, + .has_pci = 1, + + .enet0 = { + .has_phy = 1, + .use_internal_phy = 1, + }, + + .enet1 = { + .force_speed_100 = 1, + .force_duplex_full = 1, + }, + + .has_ohci0 = 1, + .has_ehci0 = 1, +}; #endif /* @@ -253,11 +295,13 @@ static const struct board_info __initdata *bcm963xx_boards[] = { &board_96348gw_11, &board_FAST2404, &board_DV201AMR, + &board_96348gw_a, #endif #ifdef CONFIG_BCM63XX_CPU_6358 &board_96358vw, &board_96358vw2, + &board_AGPFS0, #endif }; @@ -425,6 +469,31 @@ static struct platform_device mtd_dev = { .num_resources = ARRAY_SIZE(mtd_resources), }; +/* + * Register a sane SPROMv2 to make the on-board + * bcm4318 WLAN work + */ +static struct ssb_sprom bcm63xx_sprom = { + .revision = 0x02, + .board_rev = 0x17, + .country_code = 0x0, + .ant_available_bg = 0x3, + .pa0b0 = 0x15ae, + .pa0b1 = 0xfa85, + .pa0b2 = 0xfe8d, + .pa1b0 = 0xffff, + .pa1b1 = 0xffff, + .pa1b2 = 0xffff, + .gpio0 = 0xff, + .gpio1 = 0xff, + .gpio2 = 0xff, + .gpio3 = 0xff, + .maxpwr_bg = 0x004c, + .itssi_bg = 0x00, + .boardflags_lo = 0x2848, + .boardflags_hi = 0x0000, +}; + /* * third stage init callback, register all board devices. */ @@ -434,6 +503,7 @@ int __init board_register_devices(void) bcm63xx_uart_register(); bcm63xx_wdt_register(); + bcm63xx_spi_register(); if (board.has_pccard) bcm63xx_pcmcia_register(); @@ -452,6 +522,16 @@ int __init board_register_devices(void) if (board.has_ehci0) bcm63xx_ehci_register(); + if (board.has_udc0) + bcm63xx_udc_register(); + /* Generate MAC address for WLAN and + * register our SPROM */ + if (!board_get_mac_address(bcm63xx_sprom.il0mac)) { + memcpy(bcm63xx_sprom.et0mac, bcm63xx_sprom.il0mac, ETH_ALEN); + memcpy(bcm63xx_sprom.et1mac, bcm63xx_sprom.il0mac, ETH_ALEN); + if (ssb_arch_set_fallback_sprom(&bcm63xx_sprom) < 0) + printk(KERN_ERR "failed to register fallback SPROM\n"); + } /* read base address of boot chip select (0) */ val = bcm_mpi_readl(MPI_CSBASE_REG(0));