X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/ae7c55dd76b6d3d485452992ee2ea35d84dc54b1..dde3611c936ee77f93f2acb68e9552fa80153c84:/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 56da94b8c..98c900594 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 @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -53,6 +54,13 @@ static struct board_info __initdata board_96338gw = { .has_ohci0 = 1, }; + +static struct board_info __initdata board_96338w = { + .name = "96338W", + .expected_cpu_id = 0x6338, + + .has_enet0 = 1, +}; #endif /* @@ -163,27 +171,23 @@ 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, - }, - - - .has_ohci0 = 1, - .has_pccard = 1, - .has_ehci0 = 1, + .enet1 = { + .force_speed_100 = 1, + .force_duplex_full = 1, + }, }; static struct board_info __initdata board_96348gw_a = { @@ -260,6 +264,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 /* @@ -268,6 +294,7 @@ static struct board_info __initdata board_96358vw2 = { static const struct board_info __initdata *bcm963xx_boards[] = { #ifdef CONFIG_BCM63XX_CPU_6338 &board_96338gw, + &board_96338w, #endif #ifdef CONFIG_BCM63XX_CPU_6348 &board_96348r, @@ -282,6 +309,7 @@ static const struct board_info __initdata *bcm963xx_boards[] = { #ifdef CONFIG_BCM63XX_CPU_6358 &board_96358vw, &board_96358vw2, + &board_AGPFS0, #endif }; @@ -295,9 +323,15 @@ void __init board_prom_init(void) char cfe_version[32]; u32 val; - /* read base address of boot chip select (0) */ - val = bcm_mpi_readl(MPI_CSBASE_REG(0)); - val &= MPI_CSBASE_BASE_MASK; + /* read base address of boot chip select (0) + * 6338 does not have MPI but boots from standard + * MIPS Flash address */ + if (BCMCPU_IS_6338() || BCMCPU_IS_6345()) + val = 0x1fc00000; + else { + val = bcm_mpi_readl(MPI_CSBASE_REG(0)); + val &= MPI_CSBASE_BASE_MASK; + } boot_addr = (u8 *)KSEG1ADDR(val); /* dump cfe version */ @@ -350,13 +384,13 @@ void __init board_prom_init(void) * this has to be done this early since PCI init is done * inside arch_initcall */ val = 0; - +#ifdef CONFIG_PCI if (board.has_pci) { bcm63xx_pci_enabled = 1; if (BCMCPU_IS_6348()) val |= GPIO_MODE_6348_G2_PCI; } - +#endif if (board.has_pccard) { if (BCMCPU_IS_6348()) val |= GPIO_MODE_6348_G1_MII_PCCARD; @@ -474,6 +508,10 @@ static struct ssb_sprom bcm63xx_sprom = { .boardflags_hi = 0x0000, }; +static struct resource gpiodev_resource = { + .start = 0xFFFFFFFF, +}; + /* * third stage init callback, register all board devices. */ @@ -502,14 +540,18 @@ 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 */ +#ifdef CONFIG_PCI 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"); } +#endif /* read base address of boot chip select (0) */ val = bcm_mpi_readl(MPI_CSBASE_REG(0)); @@ -519,6 +561,9 @@ int __init board_register_devices(void) platform_device_register(&mtd_dev); + /* Register GPIODEV */ + platform_device_register_simple("GPIODEV", 0, &gpiodev_resource, 1); + return 0; }