diff options
Diffstat (limited to 'target/linux/brcm63xx/files-2.6.30/arch/mips/bcm63xx/boards/board_livebox.c')
-rw-r--r-- | target/linux/brcm63xx/files-2.6.30/arch/mips/bcm63xx/boards/board_livebox.c | 227 |
1 files changed, 0 insertions, 227 deletions
diff --git a/target/linux/brcm63xx/files-2.6.30/arch/mips/bcm63xx/boards/board_livebox.c b/target/linux/brcm63xx/files-2.6.30/arch/mips/bcm63xx/boards/board_livebox.c deleted file mode 100644 index 06ca83b..0000000 --- a/target/linux/brcm63xx/files-2.6.30/arch/mips/bcm63xx/boards/board_livebox.c +++ /dev/null @@ -1,227 +0,0 @@ -/* - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - * - * Copyright (C) 2008 Florian Fainelli <florian@openwrt.org> - */ - -#include <linux/init.h> -#include <linux/kernel.h> -#include <linux/string.h> -#include <linux/platform_device.h> -#include <linux/mtd/mtd.h> -#include <linux/mtd/partitions.h> -#include <linux/mtd/physmap.h> -#include <asm/addrspace.h> -#include <bcm63xx_board.h> -#include <bcm63xx_cpu.h> -#include <bcm63xx_regs.h> -#include <bcm63xx_io.h> -#include <bcm63xx_board.h> -#include <bcm63xx_dev_pci.h> -#include <bcm63xx_dev_uart.h> -#include <bcm63xx_dev_wdt.h> -#include <bcm63xx_dev_enet.h> -#include <bcm63xx_dev_pcmcia.h> -#include <bcm63xx_dev_usb_ohci.h> -#include <bcm63xx_dev_usb_ehci.h> -#include <board_bcm963xx.h> - -#define PFX "board_livebox: " - -static unsigned int mac_addr_used = 0; -static struct board_info board; - -/* - * known 6348 boards - */ -#ifdef CONFIG_BCM63XX_CPU_6348 -static struct board_info __initdata board_livebox = { - .name = "Livebox", - .expected_cpu_id = 0x6348, - - .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_pccard = 1, - .has_ehci0 = 1, -}; -#endif - -/* - * all boards - */ -static const struct board_info __initdata *bcm963xx_boards[] = { -#ifdef CONFIG_BCM63XX_CPU_6348 - &board_livebox -#endif -}; - -/* - * early init callback - */ -void __init board_prom_init(void) -{ - u32 val; - - /* read base address of boot chip select (0) */ - val = bcm_mpi_readl(MPI_CSBASE_REG(0)); - val &= MPI_CSBASE_BASE_MASK; - - /* assume board is a Livebox */ - memcpy(&board, bcm963xx_boards[0], sizeof(board)); - - /* setup pin multiplexing depending on board enabled device, - * this has to be done this early since PCI init is done - * inside arch_initcall */ - val = 0; - - if (board.has_pci) { - bcm63xx_pci_enabled = 1; - if (BCMCPU_IS_6348()) - val |= GPIO_MODE_6348_G2_PCI; - } - - if (board.has_pccard) { - if (BCMCPU_IS_6348()) - val |= GPIO_MODE_6348_G1_MII_PCCARD; - } - - if (board.has_enet0 && !board.enet0.use_internal_phy) { - if (BCMCPU_IS_6348()) - val |= GPIO_MODE_6348_G3_EXT_MII | - GPIO_MODE_6348_G0_EXT_MII; - } - - if (board.has_enet1 && !board.enet1.use_internal_phy) { - if (BCMCPU_IS_6348()) - val |= GPIO_MODE_6348_G3_EXT_MII | - GPIO_MODE_6348_G0_EXT_MII; - } - - bcm_gpio_writel(val, GPIO_MODE_REG); -} - -/* - * second stage init callback, good time to panic if we couldn't - * identify on which board we're running since early printk is working - */ -void __init board_setup(void) -{ - if (!board.name[0]) - panic("unable to detect bcm963xx board"); - printk(KERN_INFO PFX "board name: %s\n", board.name); - - /* make sure we're running on expected cpu */ - if (bcm63xx_get_cpu_id() != board.expected_cpu_id) - panic("unexpected CPU for bcm963xx board"); -} - -/* - * return board name for /proc/cpuinfo - */ -const char *board_get_name(void) -{ - return board.name; -} - -/* - * register & return a new board mac address - */ - -static int board_get_mac_address(u8 *mac) -{ - u8 default_mac[ETH_ALEN] = {0x00, 0x07, 0x3A, 0x00, 0x00, 0x00}; - u8 *p; - int count; - - memcpy(mac, default_mac, ETH_ALEN); - - p = mac + ETH_ALEN - 1; - count = mac_addr_used; - - while (count--) { - do { - (*p)++; - if (*p != 0) - break; - p--; - } while (p != mac); - } - - if (p == mac) { - printk(KERN_ERR PFX "unable to fetch mac address\n"); - return -ENODEV; - } - mac_addr_used++; - - return 0; -} - -static struct resource mtd_resources[] = { - { - .start = 0, /* filled at runtime */ - .end = 0, /* filled at runtime */ - .flags = IORESOURCE_MEM, - } -}; - -static struct platform_device mtd_dev = { - .name = "bcm963xx-flash", - .resource = mtd_resources, - .num_resources = ARRAY_SIZE(mtd_resources), -}; - - -/* - * third stage init callback, register all board devices. - */ -int __init board_register_devices(void) -{ - u32 val; - - bcm63xx_uart_register(); - bcm63xx_wdt_register(); - - if (board.has_pccard) - bcm63xx_pcmcia_register(); - - if (board.has_enet0 && - !board_get_mac_address(board.enet0.mac_addr)) - bcm63xx_enet_register(0, &board.enet0); - - if (board.has_enet1 && - !board_get_mac_address(board.enet1.mac_addr)) - bcm63xx_enet_register(1, &board.enet1); - - if (board.has_ohci0) - bcm63xx_ohci_register(); - - if (board.has_ehci0) - bcm63xx_ehci_register(); - - - /* read base address of boot chip select (0) */ - val = bcm_mpi_readl(MPI_CSBASE_REG(0)); - val &= MPI_CSBASE_BASE_MASK; - mtd_resources[0].start = val; - mtd_resources[0].end = 0x1FFFFFFF; - - platform_device_register(&mtd_dev); - - return 0; -} - |