summaryrefslogtreecommitdiff
path: root/target/linux/brcm47xx/files-2.6.25
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm47xx/files-2.6.25')
-rw-r--r--target/linux/brcm47xx/files-2.6.25/arch/mips/bcm47xx/cfe_env.c (renamed from target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/cfe_env.c)0
-rw-r--r--target/linux/brcm47xx/files-2.6.25/arch/mips/bcm47xx/include/nvram.h (renamed from target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/include/nvram.h)0
-rw-r--r--target/linux/brcm47xx/files-2.6.25/arch/mips/bcm47xx/nvram.c (renamed from target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/nvram.c)0
-rw-r--r--target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/Makefile7
-rw-r--r--target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/irq.c86
-rw-r--r--target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/prom.c61
-rw-r--r--target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/setup.c246
-rw-r--r--target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/time.c62
-rw-r--r--target/linux/brcm47xx/files-2.6.25/arch/mips/cfe/Makefile5
-rw-r--r--target/linux/brcm47xx/files-2.6.25/arch/mips/cfe/cfe.c533
-rw-r--r--target/linux/brcm47xx/files-2.6.25/arch/mips/cfe/cfe_private.h176
-rw-r--r--target/linux/brcm47xx/files-2.6.25/drivers/mtd/maps/bcm47xx-flash.c96
-rw-r--r--target/linux/brcm47xx/files-2.6.25/include/asm-mips/cfe.h189
-rw-r--r--target/linux/brcm47xx/files-2.6.25/include/asm-mips/mach-bcm47xx/kernel-entry-init.h (renamed from target/linux/brcm47xx/files-2.6.25/include/asm-mips/mach-bcm947xx/kernel-entry-init.h)0
-rw-r--r--target/linux/brcm47xx/files-2.6.25/include/asm-mips/mach-bcm947xx/gpio.h67
15 files changed, 48 insertions, 1480 deletions
diff --git a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/cfe_env.c b/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm47xx/cfe_env.c
index c1d5eee..c1d5eee 100644
--- a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/cfe_env.c
+++ b/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm47xx/cfe_env.c
diff --git a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/include/nvram.h b/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm47xx/include/nvram.h
index 6bb18e8..6bb18e8 100644
--- a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/include/nvram.h
+++ b/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm47xx/include/nvram.h
diff --git a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/nvram.c b/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm47xx/nvram.c
index 3f32ad9..3f32ad9 100644
--- a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/nvram.c
+++ b/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm47xx/nvram.c
diff --git a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/Makefile b/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/Makefile
deleted file mode 100644
index f80945c..0000000
--- a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-#
-# Makefile for the BCM47xx specific kernel interface routines
-# under Linux.
-#
-
-obj-y := irq.o prom.o setup.o time.o
-obj-y += nvram.o cfe_env.o
diff --git a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/irq.c b/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/irq.c
deleted file mode 100644
index d707894..0000000
--- a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/irq.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.org)
- * Copyright (C) 2008 Michael Buesch <mb@bu3sch.de>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <linux/errno.h>
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/module.h>
-#include <linux/smp.h>
-#include <linux/types.h>
-#include <linux/pci.h>
-#include <linux/ssb/ssb.h>
-
-#include <asm/cpu.h>
-#include <asm/io.h>
-#include <asm/irq.h>
-#include <asm/irq_cpu.h>
-
-
-extern struct ssb_bus ssb;
-
-
-void plat_irq_dispatch(void)
-{
- u32 cause;
-
- cause = read_c0_cause() & read_c0_status() & CAUSEF_IP;
-
- clear_c0_status(cause);
-
- if (cause & CAUSEF_IP7)
- do_IRQ(7);
- if (cause & CAUSEF_IP2)
- do_IRQ(2);
- if (cause & CAUSEF_IP3)
- do_IRQ(3);
- if (cause & CAUSEF_IP4)
- do_IRQ(4);
- if (cause & CAUSEF_IP5)
- do_IRQ(5);
- if (cause & CAUSEF_IP6)
- do_IRQ(6);
-}
-
-void __init arch_init_irq(void)
-{
- mips_cpu_irq_init();
-}
-
-int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
-{
- int res;
-
- res = ssb_pcibios_map_irq(dev, slot, pin);
- if (res < 0) {
- printk(KERN_ALERT "PCI: Failed to map IRQ of device %s\n",
- dev->dev.bus_id);
- return 0;
- }
- /* IRQ-0 and IRQ-1 are software interrupts. */
- WARN_ON((res == 0) || (res == 1));
-
- return res;
-}
diff --git a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/prom.c b/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/prom.c
deleted file mode 100644
index 41ea087..0000000
--- a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/prom.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.org)
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <linux/init.h>
-#include <linux/mm.h>
-#include <linux/sched.h>
-#include <linux/bootmem.h>
-
-#include <asm/addrspace.h>
-#include <asm/bootinfo.h>
-#include <asm/pmon.h>
-#include "../cfe/cfe_private.h"
-
-const char *get_system_type(void)
-{
- return "Broadcom BCM47xx";
-}
-
-void __init prom_init(void)
-{
- unsigned long mem;
-
- mips_machgroup = MACH_GROUP_BRCM;
- mips_machtype = MACH_BCM47XX;
-
- cfe_setup(fw_arg0, fw_arg1, fw_arg2, fw_arg3);
-
- /* Figure out memory size by finding aliases */
- for (mem = (1 << 20); mem < (128 << 20); mem += (1 << 20)) {
- if (*(unsigned long *)((unsigned long)(prom_init) + mem) ==
- *(unsigned long *)(prom_init))
- break;
- }
-
- add_memory_region(0, mem, BOOT_MEM_RAM);
-}
-
-void __init prom_free_prom_memory(void)
-{
-}
diff --git a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/setup.c b/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/setup.c
deleted file mode 100644
index 41d7b0b..0000000
--- a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/setup.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.org)
- * Copyright (C) 2005 Waldemar Brodkorb <wbx@openwrt.org>
- * Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>
- * Copyright (C) 2006-2008 Michael Buesch <mb@bu3sch.de>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <linux/init.h>
-#include <linux/types.h>
-#include <linux/tty.h>
-#include <linux/serial.h>
-#include <linux/serial_core.h>
-#include <linux/serial_reg.h>
-#include <linux/serial_8250.h>
-#include <asm/bootinfo.h>
-#include <asm/time.h>
-#include <asm/reboot.h>
-#include <asm/cfe.h>
-#include <linux/pm.h>
-#include <linux/ssb/ssb.h>
-#include <linux/ssb/ssb_embedded.h>
-
-#include <nvram.h>
-
-extern void bcm47xx_pci_init(void);
-extern void bcm47xx_time_init(void);
-
-struct ssb_bus ssb;
-
-
-int pcibios_plat_dev_init(struct pci_dev *dev)
-{
- int err;
-
- err = ssb_pcibios_plat_dev_init(dev);
- if (err) {
- printk(KERN_ALERT "PCI: Failed to init device %s\n",
- pci_name(dev));
- }
-
- return err;
-}
-
-static void bcm47xx_machine_restart(char *command)
-{
- printk(KERN_ALERT "Please stand by while rebooting the system...\n");
- local_irq_disable();
- /* CFE has a reboot callback, but that does not work.
- * Oopses with: Reserved instruction in kernel code.
- */
-
- /* Set the watchdog timer to reset immediately */
- if (ssb_watchdog_timer_set(&ssb, 1))
- printk(KERN_EMERG "SSB watchdog-triggered reboot failed!\n");
- while (1)
- cpu_relax();
-}
-
-static void bcm47xx_machine_halt(void)
-{
- /* Disable interrupts and watchdog and spin forever */
- local_irq_disable();
- if (ssb_watchdog_timer_set(&ssb, 0))
- printk(KERN_EMERG "Failed to disable SSB watchdog!\n");
- while (1)
- cpu_relax();
-}
-
-static void e_aton(char *str, char *dest)
-{
- int i = 0;
-
- if (str == NULL) {
- memset(dest, 0, 6);
- return;
- }
-
- for (;;) {
- dest[i++] = (char) simple_strtoul(str, NULL, 16);
- str += 2;
- if (!*str++ || i == 6)
- break;
- }
-}
-
-static void bcm47xx_fill_sprom(struct ssb_sprom *sprom)
-{
- char *s;
-
- memset(sprom, 0xFF, sizeof(struct ssb_sprom));
-
- sprom->revision = 1;
- if ((s = nvram_get("il0macaddr")))
- e_aton(s, sprom->il0mac);
- if ((s = nvram_get("et0macaddr")))
- e_aton(s, sprom->et0mac);
- if ((s = nvram_get("et1macaddr")))
- e_aton(s, sprom->et1mac);
- if ((s = nvram_get("et0phyaddr")))
- sprom->et0phyaddr = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("et1phyaddr")))
- sprom->et1phyaddr = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("et0mdcport")))
- sprom->et0mdcport = !!simple_strtoul(s, NULL, 10);
- if ((s = nvram_get("et1mdcport")))
- sprom->et1mdcport = !!simple_strtoul(s, NULL, 10);
- if ((s = nvram_get("pa0b0")))
- sprom->pa0b0 = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("pa0b1")))
- sprom->pa0b1 = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("pa0b2")))
- sprom->pa0b2 = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("pa1b0")))
- sprom->pa1b0 = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("pa1b1")))
- sprom->pa1b1 = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("pa1b2")))
- sprom->pa1b2 = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("wl0gpio0")))
- sprom->gpio0 = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("wl0gpio1")))
- sprom->gpio1 = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("wl0gpio2")))
- sprom->gpio2 = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("wl0gpio3")))
- sprom->gpio3 = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("pa0maxpwr")))
- sprom->maxpwr_bg = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("pa1maxpwr")))
- sprom->maxpwr_a = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("pa0itssit")))
- sprom->itssi_bg = simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("pa1itssit")))
- sprom->itssi_a = simple_strtoul(s, NULL, 0);
- sprom->boardflags_lo = 0;
- if ((s = nvram_get("boardflags")))
- sprom->boardflags_lo = simple_strtoul(s, NULL, 0);
- sprom->boardflags_hi = 0;
- if ((s = nvram_get("boardflags2")))
- sprom->boardflags_hi = simple_strtoul(s, NULL, 0);
-}
-
-static int bcm47xx_get_invariants(struct ssb_bus *bus, struct ssb_init_invariants *iv)
-{
- char *s;
-
- iv->boardinfo.vendor = SSB_BOARDVENDOR_BCM;
- if ((s = nvram_get("boardtype")))
- iv->boardinfo.type = (u16)simple_strtoul(s, NULL, 0);
- if ((s = nvram_get("boardrev")))
- iv->boardinfo.rev = (u16)simple_strtoul(s, NULL, 0);
-
- bcm47xx_fill_sprom(&iv->sprom);
-
- if ((s = nvram_get("cardbus")))
- iv->has_cardbus_slot = !!simple_strtoul(s, NULL, 10);
-
- return 0;
-}
-
-void __init plat_mem_setup(void)
-{
- int i, err;
- char *s;
- struct ssb_mipscore *mcore;
-
- err = ssb_bus_ssbbus_register(&ssb, SSB_ENUM_BASE, bcm47xx_get_invariants);
- if (err) {
- const char *msg = "Failed to initialize SSB bus (err %d)\n";
- cfe_printk(msg, err); /* Make sure the message gets out of the box. */
- panic(msg, err);
- }
- mcore = &ssb.mipscore;
-
- s = nvram_get("kernel_args");
- if (s && !strncmp(s, "console=ttyS1", 13)) {
- struct ssb_serial_port port;
-
- cfe_printk("Swapping serial ports!\n");
- /* swap serial ports */
- memcpy(&port, &mcore->serial_ports[0], sizeof(port));
- memcpy(&mcore->serial_ports[0], &mcore->serial_ports[1], sizeof(port));
- memcpy(&mcore->serial_ports[1], &port, sizeof(port));
- }
-
- for (i = 0; i < mcore->nr_serial_ports; i++) {
- struct ssb_serial_port *port = &(mcore->serial_ports[i]);
- struct uart_port s;
-
- memset(&s, 0, sizeof(s));
- s.line = i;
- s.membase = port->regs;
- s.irq = port->irq + 2;
- s.uartclk = port->baud_base;
- s.flags = UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ;
- s.iotype = SERIAL_IO_MEM;
- s.regshift = port->reg_shift;
-
- early_serial_setup(&s);
- }
- cfe_printk("Serial init done.\n");
-
- _machine_restart = bcm47xx_machine_restart;
- _machine_halt = bcm47xx_machine_halt;
- pm_power_off = bcm47xx_machine_halt;
- board_time_init = bcm47xx_time_init;
-}
-
-static int __init bcm47xx_register_gpiodev(void)
-{
- static struct resource res = {
- .start = 0xFFFFFFFF,
- };
- struct platform_device *pdev;
-
- pdev = platform_device_register_simple("GPIODEV", 0, &res, 1);
- if (!pdev) {
- printk(KERN_ERR "bcm47xx: GPIODEV init failed\n");
- return -ENODEV;
- }
-
- return 0;
-}
-device_initcall(bcm47xx_register_gpiodev);
-
-EXPORT_SYMBOL(ssb);
diff --git a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/time.c b/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/time.c
deleted file mode 100644
index 62120eb..0000000
--- a/target/linux/brcm47xx/files-2.6.25/arch/mips/bcm947xx/time.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2004 Florian Schirmer (jolt@tuxbox.org)
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/serial_reg.h>
-#include <linux/interrupt.h>
-#include <linux/ssb/ssb.h>
-#include <asm/addrspace.h>
-#include <asm/io.h>
-#include <asm/time.h>
-
-extern struct ssb_bus ssb;
-
-void __init
-bcm47xx_time_init(void)
-{
- unsigned long hz;
-
- /*
- * Use deterministic values for initial counter interrupt
- * so that calibrate delay avoids encountering a counter wrap.
- */
- write_c0_count(0);
- write_c0_compare(0xffff);
-
- hz = ssb_cpu_clock(&ssb.mipscore) / 2;
- if (!hz)
- hz = 100000000;
-
- /* Set MIPS counter frequency for fixed_rate_gettimeoffset() */
- mips_hpt_frequency = hz;
-}
-
-void __init
-plat_timer_setup(struct irqaction *irq)
-{
- /* Enable the timer interrupt */
- setup_irq(7, irq);
-}
diff --git a/target/linux/brcm47xx/files-2.6.25/arch/mips/cfe/Makefile b/target/linux/brcm47xx/files-2.6.25/arch/mips/cfe/Makefile
deleted file mode 100644
index d9f046a..0000000
--- a/target/linux/brcm47xx/files-2.6.25/arch/mips/cfe/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-#
-# Makefile for the Broadcom Common Firmware Environment support
-#
-
-obj-y += cfe.o
diff --git a/target/linux/brcm47xx/files-2.6.25/arch/mips/cfe/cfe.c b/target/linux/brcm47xx/files-2.6.25/arch/mips/cfe/cfe.c
deleted file mode 100644
index 6d16111..0000000
--- a/target/linux/brcm47xx/files-2.6.25/arch/mips/cfe/cfe.c
+++ /dev/null
@@ -1,533 +0,0 @@
-/*
- * Broadcom Common Firmware Environment (CFE) support
- *
- * Copyright 2000, 2001, 2002
- * Broadcom Corporation. All rights reserved.
- *
- * Copyright (C) 2006 Michael Buesch
- *
- * Original Authors: Mitch Lichtenberg, Chris Demetriou
- *
- * This software is furnished under license and may be used and copied only
- * in accordance with the following terms and conditions. Subject to these
- * conditions, you may download, copy, install, use, modify and distribute
- * modified or unmodified copies of this software in source and/or binary
- * form. No title or ownership is transferred hereby.
- *
- * 1) Any source code used, modified or distributed must reproduce and
- * retain this copyright notice and list of conditions as they appear in
- * the source file.
- *
- * 2) No right is granted to use any trade name, trademark, or logo of
- * Broadcom Corporation. The "Broadcom Corporation" name may not be
- * used to endorse or promote products derived from this software
- * without the prior written permission of Broadcom Corporation.
- *
- * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
- * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
- * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
- * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <linux/init.h>
-#include <linux/string.h>
-#include <linux/errno.h>
-#include <linux/spinlock.h>
-#include <asm/cfe.h>
-
-#include "cfe_private.h"
-
-
-static cfe_uint_t cfe_handle;
-static int (*cfe_trampoline)(long handle, long iocb);
-
-
-#include <linux/kernel.h>
-
-void __init cfe_setup(unsigned long fwarg0, unsigned long fwarg1,
- unsigned long fwarg2, unsigned long fwarg3)
-{
- if (fwarg3 == 0x80300000) {
- /* WRT54G workaround */
- fwarg3 = CFE_EPTSEAL;
- fwarg2 = 0xBFC00500;
- }
- if (fwarg3 != CFE_EPTSEAL) {
- /* We are not booted from CFE */
- return;
- }
- if (fwarg1 == 0) {
- /* We are on the boot CPU */
- cfe_handle = (cfe_uint_t)fwarg0;
- cfe_trampoline = CFE_TO_PTR(fwarg2);
- }
-}
-
-int cfe_vprintk(const char *fmt, va_list args)
-{
- static char buffer[1024];
- static DEFINE_SPINLOCK(lock);
- static const char pfx[] = "CFE-console: ";
- static const size_t pfx_len = sizeof(pfx) - 1;
- unsigned long flags;
- int len, cnt, pos;
- int handle;
- int res;
-
- if (!cfe_present())
- return -ENODEV;
-
- spin_lock_irqsave(&lock, flags);
- handle = cfe_getstdhandle(CFE_STDHANDLE_CONSOLE);
- if (CFE_ISERR(handle)) {
- len = -EIO;
- goto out;
- }
- strcpy(buffer, pfx);
- len = vscnprintf(buffer + pfx_len,
- sizeof(buffer) - pfx_len - 2,
- fmt, args);
- len += pfx_len;
- /* The CFE console requires CR-LF line-ends.
- * Add a CR, if we only terminate lines with a LF.
- * This does only fix CR-LF at the end of the string.
- * So for multiple lines, use multiple cfe_vprintk calls.
- */
- if (len > 1 &&
- buffer[len - 1] == '\n' && buffer[len - 2] != '\r') {
- buffer[len - 1] = '\r';
- buffer[len] = '\n';
- len += 1;
- }
- cnt = len;
- pos = 0;
- while (cnt > 0) {
- res = cfe_write(handle, buffer + pos, len - pos);
- if (CFE_ISERR(res)) {
- len = -EIO;
- goto out;
- }
- cnt -= res;
- pos += res;
- }
-out:
- spin_unlock_irqrestore(&lock, flags);
-
- return len;
-}
-
-int cfe_printk(const char *fmt, ...)
-{
- va_list args;
- int res;
-
- va_start(args, fmt);
- res = cfe_vprintk(fmt, args);
- va_end(args);
-
- return res;
-}
-
-static int cfe_iocb_dispatch(struct cfe_iocb *iocb)
-{
- if (!cfe_present())
- return CFE_ERR_UNSUPPORTED;
- return cfe_trampoline((long)cfe_handle, (long)iocb);
-}
-
-int cfe_present(void)
-{
- return (cfe_trampoline != NULL);
-}
-
-int cfe_close(int handle)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_DEV_CLOSE;
- iocb.handle = handle;
-
- err = cfe_iocb_dispatch(&iocb);
-
- return (CFE_ISERR(err)) ? err : iocb.status;
-}
-
-int cfe_cpu_start(int cpu, void (*fn)(void), long sp, long gp, long a1)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_FW_CPUCTL;
- iocb.psize = sizeof(struct cfe_iocb_cpuctl);
- iocb.cpuctl.number = cpu;
- iocb.cpuctl.command = CFE_CPU_CMD_START;
- iocb.cpuctl.gp = gp;
- iocb.cpuctl.sp = sp;
- iocb.cpuctl.a1 = a1;
- iocb.cpuctl.start_addr = (long)fn;
-
- err = cfe_iocb_dispatch(&iocb);
-
- return (CFE_ISERR(err)) ? err : iocb.status;
-}
-
-int cfe_cpu_stop(int cpu)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_FW_CPUCTL;
- iocb.psize = sizeof(struct cfe_iocb_cpuctl);
- iocb.cpuctl.number = cpu;
- iocb.cpuctl.command = CFE_CPU_CMD_STOP;
-
- err = cfe_iocb_dispatch(&iocb);
-
- return (CFE_ISERR(err)) ? err : iocb.status;
-}
-
-int cfe_enumenv(int idx, char *name, int namelen, char *val, int vallen)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_ENV_ENUM;
- iocb.psize = sizeof(struct cfe_iocb_envbuf);
- iocb.envbuf.index = idx;
- iocb.envbuf.name = PTR_TO_CFE(name);
- iocb.envbuf.name_len = namelen;
- iocb.envbuf.val = PTR_TO_CFE(val);
- iocb.envbuf.val_len = vallen;
-
- err = cfe_iocb_dispatch(&iocb);
-
- return (CFE_ISERR(err)) ? err : iocb.status;
-}
-
-int cfe_enumdev(int idx, char *name, int namelen)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
-
- iocb.fcode = CFE_CMD_DEV_ENUM;
- iocb.psize = sizeof(struct cfe_iocb_envbuf);
- iocb.envbuf.index = idx;
- iocb.envbuf.name = PTR_TO_CFE(name);
- iocb.envbuf.name_len = namelen;
-
- err = cfe_iocb_dispatch(&iocb);
-
- return (CFE_ISERR(err)) ? err : iocb.status;
-}
-
-int cfe_enummem(int idx, int flags, u64 *start, u64 *length,
- u64 *type)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
-
- iocb.fcode = CFE_CMD_FW_MEMENUM;
- iocb.flags = flags;
- iocb.psize = sizeof(struct cfe_iocb_meminfo);
- iocb.meminfo.index = idx;
-
- err = cfe_iocb_dispatch(&iocb);
- if (CFE_ISERR(err))
- return err;
- if (!CFE_ISERR(iocb.status)) {
- *start = iocb.meminfo.addr;
- *length = iocb.meminfo.size;
- *type = iocb.meminfo.type;
- }
-
- return iocb.status;
-}
-
-int cfe_exit(int warm, int status)
-{
- struct cfe_iocb iocb;
- int err;
-
-printk("CFE REBOOT\n");
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_FW_RESTART;
- if (warm)
- iocb.flags = CFE_FLG_WARMSTART;
- iocb.psize = sizeof(struct cfe_iocb_exitstat);
- iocb.exitstat.status = status;
-
-printk("CALL\n");
- err = cfe_iocb_dispatch(&iocb);
-printk("DONE\n");
-
- return (CFE_ISERR(err)) ? err : iocb.status;
-}
-
-int cfe_flushcache(int flags)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_FW_FLUSHCACHE;
- iocb.flags = flags;
-
- err = cfe_iocb_dispatch(&iocb);
-
- return (CFE_ISERR(err)) ? err : iocb.status;
-}
-
-int cfe_getdevinfo(char *name)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_DEV_GETINFO;
- iocb.psize = sizeof(struct cfe_iocb_buf);
- iocb.buffer.ptr = PTR_TO_CFE(name);
- iocb.buffer.length = strlen(name);
-
- err = cfe_iocb_dispatch(&iocb);
- if (CFE_ISERR(err))
- return err;
- if (CFE_ISERR(iocb.status))
- return iocb.status;
-
- return iocb.buffer.devflags;
-}
-
-int cfe_getenv(char *name, char *dest, int destlen)
-{
- struct cfe_iocb iocb;
- int err;
-
- dest[0] = '\0';
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_ENV_GET;
- iocb.psize = sizeof(struct cfe_iocb_envbuf);
- iocb.envbuf.name = PTR_TO_CFE(name);
- iocb.envbuf.name_len = strlen(name);
- iocb.envbuf.val = PTR_TO_CFE(dest);
- iocb.envbuf.val_len = destlen;
-
- err = cfe_iocb_dispatch(&iocb);
-
- return (CFE_ISERR(err)) ? err : iocb.status;
-}
-
-int cfe_getfwinfo(struct cfe_fwinfo *info)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_FW_GETINFO;
- iocb.psize = sizeof(struct cfe_iocb_fwinfo);
-
- err = cfe_iocb_dispatch(&iocb);
- if (CFE_ISERR(err))
- return err;
- if (CFE_ISERR(iocb.status))
- return err;
-
- info->version = iocb.fwinfo.version;
- info->totalmem = iocb.fwinfo.totalmem;
- info->flags = iocb.fwinfo.flags;
- info->boardid = iocb.fwinfo.boardid;
- info->bootarea_va = iocb.fwinfo.bootarea_va;
- info->bootarea_pa = iocb.fwinfo.bootarea_pa;
- info->bootarea_size = iocb.fwinfo.bootarea_size;
-
- return iocb.status;
-}
-
-int cfe_getstdhandle(int handletype)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_DEV_GETHANDLE;
- iocb.flags = handletype;
-
- err = cfe_iocb_dispatch(&iocb);
- if (CFE_ISERR(err))
- return err;
- if (CFE_ISERR(iocb.status))
- return iocb.status;
-
- return iocb.handle;
-}
-
-int cfe_getticks(s64 *ticks)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_FW_GETTIME;
- iocb.psize = sizeof(struct cfe_iocb_time);
-
- err = cfe_iocb_dispatch(&iocb);
- if (CFE_ISERR(err))
- return err;
- if (!CFE_ISERR(iocb.status))
- *ticks = iocb.time.ticks;
-
- return iocb.status;
-}
-
-int cfe_inpstat(int handle)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_DEV_INPSTAT;
- iocb.handle = handle;
- iocb.psize = sizeof(struct cfe_iocb_inpstat);
-
- err = cfe_iocb_dispatch(&iocb);
- if (CFE_ISERR(err))
- return err;
- if (CFE_ISERR(iocb.status))
- return iocb.status;
-
- return iocb.inpstat.status;
-}
-
-int cfe_ioctl(int handle, unsigned int ioctlnum,
- unsigned char *buffer, int length,
- int *retlen, u64 offset)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_DEV_IOCTL;
- iocb.handle = handle;
- iocb.psize = sizeof(struct cfe_iocb_buf);
- iocb.buffer.offset = offset;
- iocb.buffer.ioctlcmd = ioctlnum;
- iocb.buffer.ptr = PTR_TO_CFE(buffer);
- iocb.buffer.length = length;
-
- err = cfe_iocb_dispatch(&iocb);
- if (CFE_ISERR(err))
- return err;
- if (CFE_ISERR(iocb.status))
- return iocb.status;
- if (retlen)
- *retlen = iocb.buffer.retlen;
-
- return iocb.status;
-}
-
-int cfe_open(char *name)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_DEV_OPEN;
- iocb.psize = sizeof(struct cfe_iocb_buf);
- iocb.buffer.ptr = PTR_TO_CFE(name);
- iocb.buffer.length = strlen(name);
-
- err = cfe_iocb_dispatch(&iocb);
- if (CFE_ISERR(err))
- return err;
- if (CFE_ISERR(iocb.status))
- return iocb.status;
-
- return iocb.handle;
-}
-
-int cfe_read(int handle, unsigned char *buffer, int length)
-{
- return cfe_readblk(handle, 0, buffer, length);
-}
-
-int cfe_readblk(int handle, s64 offset, unsigned char *buffer, int length)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_DEV_READ;
- iocb.handle = handle;
- iocb.psize = sizeof(struct cfe_iocb_buf);
- iocb.buffer.offset = offset;
- iocb.buffer.ptr = PTR_TO_CFE(buffer);
- iocb.buffer.length = length;
-
- err = cfe_iocb_dispatch(&iocb);
- if (CFE_ISERR(err))
- return err;
- if (CFE_ISERR(iocb.status))
- return iocb.status;
-
- return iocb.buffer.retlen;
-}
-
-int cfe_setenv(char *name, char *val)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_ENV_SET;
- iocb.psize = sizeof(struct cfe_iocb_envbuf);
- iocb.envbuf.name = PTR_TO_CFE(name);
- iocb.envbuf.name_len = strlen(name);
- iocb.envbuf.val = PTR_TO_CFE(val);
- iocb.envbuf.val_len = strlen(val);
-
- err = cfe_iocb_dispatch(&iocb);
-
- return (CFE_ISERR(err)) ? err : iocb.status;
-}
-
-int cfe_write(int handle, unsigned char *buffer, int length)
-{
- return cfe_writeblk(handle, 0, buffer, length);
-}
-
-int cfe_writeblk(int handle, s64 offset, unsigned char *buffer, int length)
-{
- struct cfe_iocb iocb;
- int err;
-
- memset(&iocb, 0, sizeof(iocb));
- iocb.fcode = CFE_CMD_DEV_WRITE;
- iocb.handle = handle;
- iocb.psize = sizeof(struct cfe_iocb_buf);
- iocb.buffer.offset = offset;
- iocb.buffer.ptr = PTR_TO_CFE(buffer);
- iocb.buffer.length = length;
-
- err = cfe_iocb_dispatch(&iocb);
- if (CFE_ISERR(err))
- return err;
- if (CFE_ISERR(iocb.status))
- return iocb.status;
-
- return iocb.buffer.retlen;
-}
diff --git a/target/linux/brcm47xx/files-2.6.25/arch/mips/cfe/cfe_private.h b/target/linux/brcm47xx/files-2.6.25/arch/mips/cfe/cfe_private.h
deleted file mode 100644
index 0a604d3..0000000
--- a/target/linux/brcm47xx/files-2.6.25/arch/mips/cfe/cfe_private.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Broadcom Common Firmware Environment (CFE) support
- *
- * Copyright 2000, 2001, 2002
- * Broadcom Corporation. All rights reserved.
- *
- * Copyright (C) 2006 Michael Buesch
- *
- * Original Authors: Mitch Lichtenberg, Chris Demetriou
- *
- * This software is furnished under license and may be used and copied only
- * in accordance with the following terms and conditions. Subject to these
- * conditions, you may download, copy, install, use, modify and distribute
- * modified or unmodified copies of this software in source and/or binary
- * form. No title or ownership is transferred hereby.
- *
- * 1) Any source code used, modified or distributed must reproduce and
- * retain this copyright notice and list of conditions as they appear in
- * the source file.
- *
- * 2) No right is granted to use any trade name, trademark, or logo of
- * Broadcom Corporation. The "Broadcom Corporation" name may not be
- * used to endorse or promote products derived from this software
- * without the prior written permission of Broadcom Corporation.
- *
- * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
- * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
- * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
- * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef LINUX_CFE_PRIVATE_H_
-#define LINUX_CFE_PRIVATE_H_
-
-#ifndef __ASSEMBLY__
-
-/* Seal indicating CFE's presence, passed to the kernel. */
-#define CFE_EPTSEAL 0x43464531
-
-#define CFE_CMD_FW_GETINFO 0
-#define CFE_CMD_FW_RESTART 1
-#define CFE_CMD_FW_BOOT 2
-#define CFE_CMD_FW_CPUCTL 3
-#define CFE_CMD_FW_GETTIME 4
-#define CFE_CMD_FW_MEMENUM 5
-#define CFE_CMD_FW_FLUSHCACHE 6
-
-#define CFE_CMD_DEV_GETHANDLE 9
-#define CFE_CMD_DEV_ENUM 10
-#define CFE_CMD_DEV_OPEN 11
-#define CFE_CMD_DEV_INPSTAT 12
-#define CFE_CMD_DEV_READ 13
-#define CFE_CMD_DEV_WRITE 14
-#define CFE_CMD_DEV_IOCTL 15
-#define CFE_CMD_DEV_CLOSE 16
-#define CFE_CMD_DEV_GETINFO 17
-
-#define CFE_CMD_ENV_ENUM 20
-#define CFE_CMD_ENV_GET 22
-#define CFE_CMD_ENV_SET 23
-#define CFE_CMD_ENV_DEL 24
-
-#define CFE_CMD_MAX 32
-
-#define CFE_CMD_VENDOR_USE 0x8000 /* codes above this are for customer use */
-
-typedef u64 cfe_uint_t;
-typedef s64 cfe_int_t;
-typedef s64 cfe_ptr_t;
-
-/* Cast a pointer from native to CFE-API pointer and back */
-#define CFE_TO_PTR(p) ((void *)(unsigned long)(p))
-#define PTR_TO_CFE(p) ((cfe_ptr_t)(unsigned long)(p))
-
-struct cfe_iocb_buf {
- cfe_uint_t offset; /* offset on device (bytes) */
- cfe_ptr_t ptr; /* pointer to a buffer */
- cfe_uint_t length; /* length of this buffer */
- cfe_uint_t retlen; /* returned length (for read ops) */
- union {
- cfe_uint_t ioctlcmd; /* IOCTL command (used only for IOCTLs) */
- cfe_uint_t devflags; /* Returned device info flags */
- };
-};
-
-struct cfe_iocb_inpstat {
- cfe_uint_t status; /* 1 means input available */
-};
-
-struct cfe_iocb_envbuf {
- cfe_int_t index; /* 0-based enumeration index */
- cfe_ptr_t name; /* name string buffer */
- cfe_int_t name_len; /* size of name buffer */
- cfe_ptr_t val; /* value string buffer */
- cfe_int_t val_len; /* size of value string buffer */
-};
-
-struct cfe_iocb_cpuctl {
- cfe_uint_t number; /* cpu number to control */
- cfe_uint_t command; /* command to issue to CPU */
- cfe_uint_t start_addr; /* CPU start address */
- cfe_uint_t gp; /* starting GP value */
- cfe_uint_t sp; /* starting SP value */
- cfe_uint_t a1; /* starting A1 value */
-};
-
-struct cfe_iocb_time {
- cfe_int_t ticks; /* current time in ticks */
-};
-
-struct cfe_iocb_exitstat {
- cfe_int_t status;
-};
-
-struct cfe_iocb_meminfo {
- cfe_int_t index; /* 0-based enumeration index */
- cfe_int_t type; /* type of memory block */
- cfe_uint_t addr; /* physical start address */
- cfe_uint_t size; /* block size */
-};
-
-struct cfe_iocb_fwinfo {
- cfe_int_t version; /* major, minor, eco version */
- cfe_int_t totalmem; /* total installed mem */
- cfe_int_t flags; /* various flags */
- cfe_int_t boardid; /* board ID */
- cfe_int_t bootarea_va; /* VA of boot area */
- cfe_int_t bootarea_pa; /* PA of boot area */
- cfe_int_t bootarea_size; /* size of boot area */
- cfe_int_t reserved1;
- cfe_int_t reserved2;
- cfe_int_t reserved3;
-};
-
-/* CFE I/O Control Block */
-struct cfe_iocb {
- cfe_uint_t fcode; /* IOCB function code */
- cfe_int_t status; /* return status */
- cfe_int_t handle; /* file/device handle */
- cfe_uint_t flags; /* flags for this IOCB */
- cfe_uint_t psize; /* size of parameter list */
- union {
- struct cfe_iocb_buf buffer; /* buffer parameters */
- struct cfe_iocb_inpstat inpstat; /* input status parameters */
- struct cfe_iocb_envbuf envbuf; /* environment function parameters */
- struct cfe_iocb_cpuctl cpuctl; /* CPU control parameters */
- struct cfe_iocb_time time; /* timer parameters */
- struct cfe_iocb_meminfo meminfo; /* memory arena info parameters */
- struct cfe_iocb_fwinfo fwinfo; /* firmware information */
- struct cfe_iocb_exitstat exitstat; /* Exit Status */
- };
-};
-
-
-#include <linux/init.h>
-
-void __init cfe_setup(unsigned long fwarg0, unsigned long fwarg1,
- unsigned long fwarg2, unsigned long fwarg3);
-
-#else /* __ASSEMBLY__ */
-
- .macro cfe_early_init
-#ifdef CONFIG_CFE
- jal cfe_setup
-#endif
- .endm
-
-#endif /* __ASSEMBLY__ */
-#endif /* LINUX_CFE_PRIVATE_H_ */
diff --git a/target/linux/brcm47xx/files-2.6.25/drivers/mtd/maps/bcm47xx-flash.c b/target/linux/brcm47xx/files-2.6.25/drivers/mtd/maps/bcm47xx-flash.c
index 6a82f36..118d4c4 100644
--- a/target/linux/brcm47xx/files-2.6.25/drivers/mtd/maps/bcm47xx-flash.c
+++ b/target/linux/brcm47xx/files-2.6.25/drivers/mtd/maps/bcm47xx-flash.c
@@ -76,11 +76,11 @@ struct trx_header {
#define BUSWIDTH 2
#ifdef CONFIG_SSB
-extern struct ssb_bus ssb;
+extern struct ssb_bus ssb_bcm47xx;
#endif
-static struct mtd_info *bcm947xx_mtd;
+static struct mtd_info *bcm47xx_mtd;
-static void bcm947xx_map_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
+static void bcm47xx_map_copy_from(struct map_info *map, void *to, unsigned long from, ssize_t len)
{
if (len==1) {
memcpy_fromio(to, map->virt + from, len);
@@ -96,7 +96,7 @@ static void bcm947xx_map_copy_from(struct map_info *map, void *to, unsigned long
}
}
-static struct map_info bcm947xx_map = {
+static struct map_info bcm47xx_map = {
name: "Physically mapped flash",
size: WINDOW_SIZE,
bankwidth: BUSWIDTH,
@@ -105,7 +105,7 @@ static struct map_info bcm947xx_map = {
#ifdef CONFIG_MTD_PARTITIONS
-static struct mtd_partition bcm947xx_parts[] = {
+static struct mtd_partition bcm47xx_parts[] = {
{ name: "cfe", offset: 0, size: 0, mask_flags: MTD_WRITEABLE, },
{ name: "linux", offset: 0, size: 0, },
{ name: "rootfs", offset: 0, size: 0, },
@@ -323,46 +323,46 @@ init_mtd_partitions(struct mtd_info *mtd, size_t size)
return NULL;
/* boot loader */
- bcm947xx_parts[0].offset = 0;
- bcm947xx_parts[0].size = cfe_size;
+ bcm47xx_parts[0].offset = 0;
+ bcm47xx_parts[0].size = cfe_size;
/* nvram */
if (cfe_size != 384 * 1024) {
- bcm947xx_parts[3].offset = size - ROUNDUP(NVRAM_SPACE, mtd->erasesize);
- bcm947xx_parts[3].size = ROUNDUP(NVRAM_SPACE, mtd->erasesize);
+ bcm47xx_parts[3].offset = size - ROUNDUP(NVRAM_SPACE, mtd->erasesize);
+ bcm47xx_parts[3].size = ROUNDUP(NVRAM_SPACE, mtd->erasesize);
} else {
/* nvram (old 128kb config partition on netgear wgt634u) */
- bcm947xx_parts[3].offset = bcm947xx_parts[0].size;
- bcm947xx_parts[3].size = ROUNDUP(NVRAM_SPACE, mtd->erasesize);
+ bcm47xx_parts[3].offset = bcm47xx_parts[0].size;
+ bcm47xx_parts[3].size = ROUNDUP(NVRAM_SPACE, mtd->erasesize);
}
/* linux (kernel and rootfs) */
if (cfe_size != 384 * 1024) {
- bcm947xx_parts[1].offset = bcm947xx_parts[0].size;
- bcm947xx_parts[1].size = bcm947xx_parts[3].offset -
- bcm947xx_parts[1].offset;
+ bcm47xx_parts[1].offset = bcm47xx_parts[0].size;
+ bcm47xx_parts[1].size = bcm47xx_parts[3].offset -
+ bcm47xx_parts[1].offset;
} else {
/* do not count the elf loader, which is on one block */
- bcm947xx_parts[1].offset = bcm947xx_parts[0].size +
- bcm947xx_parts[3].size + mtd->erasesize;
- bcm947xx_parts[1].size = size -
- bcm947xx_parts[0].size -
- (2*bcm947xx_parts[3].size) -
+ bcm47xx_parts[1].offset = bcm47xx_parts[0].size +
+ bcm47xx_parts[3].size + mtd->erasesize;
+ bcm47xx_parts[1].size = size -
+ bcm47xx_parts[0].size -
+ (2*bcm47xx_parts[3].size) -
mtd->erasesize;
}
/* find and size rootfs */
- find_root(mtd,size,&bcm947xx_parts[2]);
- bcm947xx_parts[2].size = size - bcm947xx_parts[2].offset - bcm947xx_parts[3].size;
+ find_root(mtd,size,&bcm47xx_parts[2]);
+ bcm47xx_parts[2].size = size - bcm47xx_parts[2].offset - bcm47xx_parts[3].size;
- return bcm947xx_parts;
+ return bcm47xx_parts;
}
#endif
-int __init init_bcm947xx_map(void)
+int __init init_bcm47xx_map(void)
{
#ifdef CONFIG_SSB
- struct ssb_mipscore *mcore = &ssb.mipscore;
+ struct ssb_mipscore *mcore = &ssb_bcm47xx.mipscore;
#endif
size_t size;
int ret = 0;
@@ -376,40 +376,40 @@ int __init init_bcm947xx_map(void)
u32 window_size = mcore->flash_window_size;
printk("flash init: 0x%08x 0x%08x\n", window, window_size);
- bcm947xx_map.phys = window;
- bcm947xx_map.size = window_size;
- bcm947xx_map.virt = ioremap_nocache(window, window_size);
+ bcm47xx_map.phys = window;
+ bcm47xx_map.size = window_size;
+ bcm47xx_map.virt = ioremap_nocache(window, window_size);
#else
printk("flash init: 0x%08x 0x%08x\n", WINDOW_ADDR, WINDOW_SIZE);
- bcm947xx_map.virt = ioremap_nocache(WINDOW_ADDR, WINDOW_SIZE);
+ bcm47xx_map.virt = ioremap_nocache(WINDOW_ADDR, WINDOW_SIZE);
#endif
- if (!bcm947xx_map.virt) {
+ if (!bcm47xx_map.virt) {
printk("Failed to ioremap\n");
return -EIO;
}
- simple_map_init(&bcm947xx_map);
+ simple_map_init(&bcm47xx_map);
- if (!(bcm947xx_mtd = do_map_probe("cfi_probe", &bcm947xx_map))) {
+ if (!(bcm47xx_mtd = do_map_probe("cfi_probe", &bcm47xx_map))) {
printk("Failed to do_map_probe\n");
- iounmap((void *)bcm947xx_map.virt);
+ iounmap((void *)bcm47xx_map.virt);
return -ENXIO;
}
/* override copy_from routine */
- bcm947xx_map.copy_from = bcm947xx_map_copy_from;
+ bcm47xx_map.copy_from = bcm47xx_map_copy_from;
- bcm947xx_mtd->owner = THIS_MODULE;
+ bcm47xx_mtd->owner = THIS_MODULE;
- size = bcm947xx_mtd->size;
+ size = bcm47xx_mtd->size;
printk(KERN_NOTICE "Flash device: 0x%x at 0x%x\n", size, WINDOW_ADDR);
#ifdef CONFIG_MTD_PARTITIONS
- parts = init_mtd_partitions(bcm947xx_mtd, size);
+ parts = init_mtd_partitions(bcm47xx_mtd, size);
for (i = 0; parts[i].name; i++);
- ret = add_mtd_partitions(bcm947xx_mtd, parts, i);
+ ret = add_mtd_partitions(bcm47xx_mtd, parts, i);
if (ret) {
printk(KERN_ERR "Flash: add_mtd_partitions failed\n");
goto fail;
@@ -418,22 +418,22 @@ int __init init_bcm947xx_map(void)
return 0;
fail:
- if (bcm947xx_mtd)
- map_destroy(bcm947xx_mtd);
- if (bcm947xx_map.virt)
- iounmap((void *)bcm947xx_map.virt);
- bcm947xx_map.virt = 0;
+ if (bcm47xx_mtd)
+ map_destroy(bcm47xx_mtd);
+ if (bcm47xx_map.virt)
+ iounmap((void *)bcm47xx_map.virt);
+ bcm47xx_map.virt = 0;
return ret;
}
-void __exit cleanup_bcm947xx_map(void)
+void __exit cleanup_bcm47xx_map(void)
{
#ifdef CONFIG_MTD_PARTITIONS
- del_mtd_partitions(bcm947xx_mtd);
+ del_mtd_partitions(bcm47xx_mtd);
#endif
- map_destroy(bcm947xx_mtd);
- iounmap((void *)bcm947xx_map.virt);
+ map_destroy(bcm47xx_mtd);
+ iounmap((void *)bcm47xx_map.virt);
}
-module_init(init_bcm947xx_map);
-module_exit(cleanup_bcm947xx_map);
+module_init(init_bcm47xx_map);
+module_exit(cleanup_bcm47xx_map);
diff --git a/target/linux/brcm47xx/files-2.6.25/include/asm-mips/cfe.h b/target/linux/brcm47xx/files-2.6.25/include/asm-mips/cfe.h
deleted file mode 100644
index 47c3f56..0000000
--- a/target/linux/brcm47xx/files-2.6.25/include/asm-mips/cfe.h
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Broadcom Common Firmware Environment (CFE) support
- *
- * Copyright 2000, 2001, 2002
- * Broadcom Corporation. All rights reserved.
- *
- * Copyright (C) 2006 Michael Buesch
- *
- * Original Authors: Mitch Lichtenberg, Chris Demetriou
- *
- * This software is furnished under license and may be used and copied only
- * in accordance with the following terms and conditions. Subject to these
- * conditions, you may download, copy, install, use, modify and distribute
- * modified or unmodified copies of this software in source and/or binary
- * form. No title or ownership is transferred hereby.
- *
- * 1) Any source code used, modified or distributed must reproduce and
- * retain this copyright notice and list of conditions as they appear in
- * the source file.
- *
- * 2) No right is granted to use any trade name, trademark, or logo of
- * Broadcom Corporation. The "Broadcom Corporation" name may not be
- * used to endorse or promote products derived from this software
- * without the prior written permission of Broadcom Corporation.
- *
- * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
- * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
- * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
- * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef LINUX_CFE_API_H_
-#define LINUX_CFE_API_H_
-
-#include <linux/types.h>
-
-
-#define CFE_MI_RESERVED 0 /* memory is reserved, do not use */
-#define CFE_MI_AVAILABLE 1 /* memory is available */
-
-#define CFE_FLG_WARMSTART 0x00000001
-#define CFE_FLG_FULL_ARENA 0x00000001
-#define CFE_FLG_ENV_PERMANENT 0x00000001
-
-#define CFE_CPU_CMD_START 1
-#define CFE_CPU_CMD_STOP 0
-
-#define CFE_STDHANDLE_CONSOLE 0
-
-#define CFE_DEV_NETWORK 1
-#define CFE_DEV_DISK 2
-#define CFE_DEV_FLASH 3
-#define CFE_DEV_SERIAL 4
-#define CFE_DEV_CPU 5
-#define CFE_DEV_NVRAM 6
-#define CFE_DEV_CLOCK 7
-#define CFE_DEV_OTHER 8
-#define CFE_DEV_MASK 0x0F
-
-#define CFE_CACHE_FLUSH_D 1
-#define CFE_CACHE_INVAL_I 2
-#define CFE_CACHE_INVAL_D 4
-#define CFE_CACHE_INVAL_L2 8
-
-#define CFE_FWI_64BIT 0x00000001
-#define CFE_FWI_32BIT 0x00000002
-#define CFE_FWI_RELOC 0x00000004
-#define CFE_FWI_UNCACHED 0x00000008
-#define CFE_FWI_MULTICPU 0x00000010
-#define CFE_FWI_FUNCSIM 0x00000020
-#define CFE_FWI_RTLSIM 0x00000040
-
-struct cfe_fwinfo {
- s64 version; /* major, minor, eco version */
- s64 totalmem; /* total installed mem */
- s64 flags; /* various flags */
- s64 boardid; /* board ID */
- s64 bootarea_va; /* VA of boot area */
- s64 bootarea_pa; /* PA of boot area */
- s64 bootarea_size; /* size of boot area */
-};
-
-
-/* The public CFE API */
-
-int cfe_present(void); /* Check if we booted from CFE. Returns bool */
-
-int cfe_getticks(s64 *ticks);
-int cfe_close(int handle);
-int cfe_cpu_start(int cpu, void (*fn)(void), long sp, long gp, long a1);
-int cfe_cpu_stop(int cpu);
-int cfe_enumenv(int idx, char *name, int namelen, char *val, int vallen);
-int cfe_enumdev(int idx, char *name, int namelen);
-int cfe_enummem(int idx, int flags, u64 *start, u64 *length,
- u64 *type);
-int cfe_exit(int warm, int status);
-int cfe_flushcache(int flags);
-int cfe_getdevinfo(char *name);
-int cfe_getenv(char *name, char *dest, int destlen);
-int cfe_getfwinfo(struct cfe_fwinfo *info);
-int cfe_getstdhandle(int handletype);
-int cfe_inpstat(int handle);
-int cfe_ioctl(int handle, unsigned int ioctlnum, unsigned char *buffer,
- int length, int *retlen, u64 offset);
-int cfe_open(char *name);
-int cfe_read(int handle, unsigned char *buffer, int length);
-int cfe_readblk(int handle, s64 offset, unsigned char *buffer, int length);
-int cfe_setenv(char *name, char *val);
-int cfe_write(int handle, unsigned char *buffer, int length);
-int cfe_writeblk(int handle, s64 offset, unsigned char *buffer,
- int length);
-
-
-/* High level API */
-
-/* Print some information to CFE's console (most likely serial line) */
-int cfe_printk(const char *fmt, ...) __attribute__((format(printf, 1, 2)));
-int cfe_vprintk(const char *fmt, va_list args);
-
-
-
-/* Error codes returned by the low API functions */
-
-#define CFE_ISERR(errcode) (errcode < 0)
-
-#define CFE_OK 0
-#define CFE_ERR -1 /* generic error */
-#define CFE_ERR_INV_COMMAND -2
-#define CFE_ERR_EOF -3
-#define CFE_ERR_IOERR -4
-#define CFE_ERR_NOMEM -5
-#define CFE_ERR_DEVNOTFOUND -6
-#define CFE_ERR_DEVOPEN -7
-#define CFE_ERR_INV_PARAM -8
-#define CFE_ERR_ENVNOTFOUND -9
-#define CFE_ERR_ENVREADONLY -10
-
-#define CFE_ERR_NOTELF -11
-#define CFE_ERR_NOT32BIT -12
-#define CFE_ERR_WRONGENDIAN -13
-#define CFE_ERR_BADELFVERS -14
-#define CFE_ERR_NOTMIPS -15
-#define CFE_ERR_BADELFFMT -16
-#define CFE_ERR_BADADDR -17
-
-#define CFE_ERR_FILENOTFOUND -18
-#define CFE_ERR_UNSUPPORTED -19
-
-#define CFE_ERR_HOSTUNKNOWN -20
-
-#define CFE_ERR_TIMEOUT -21
-
-#define CFE_ERR_PROTOCOLERR -22
-
-#define CFE_ERR_NETDOWN -23
-#define CFE_ERR_NONAMESERVER -24
-
-#define CFE_ERR_NOHANDLES -25
-#define CFE_ERR_ALREADYBOUND -26
-
-#define CFE_ERR_CANNOTSET -27
-#define CFE_ERR_NOMORE -28
-#define CFE_ERR_BADFILESYS -29
-#define CFE_ERR_FSNOTAVAIL -30
-
-#define CFE_ERR_INVBOOTBLOCK -31
-#define CFE_ERR_WRONGDEVTYPE -32
-#define CFE_ERR_BBCHECKSUM -33
-#define CFE_ERR_BOOTPROGCHKSUM -34
-
-#define CFE_ERR_LDRNOTAVAIL -35
-
-#define CFE_ERR_NOTREADY -36
-
-#define CFE_ERR_GETMEM -37
-#define CFE_ERR_SETMEM -38
-
-#define CFE_ERR_NOTCONN -39
-#define CFE_ERR_ADDRINUSE -40
-
-
-#endif /* LINUX_CFE_API_H_ */
diff --git a/target/linux/brcm47xx/files-2.6.25/include/asm-mips/mach-bcm947xx/kernel-entry-init.h b/target/linux/brcm47xx/files-2.6.25/include/asm-mips/mach-bcm47xx/kernel-entry-init.h
index 7df0dc2..7df0dc2 100644
--- a/target/linux/brcm47xx/files-2.6.25/include/asm-mips/mach-bcm947xx/kernel-entry-init.h
+++ b/target/linux/brcm47xx/files-2.6.25/include/asm-mips/mach-bcm47xx/kernel-entry-init.h
diff --git a/target/linux/brcm47xx/files-2.6.25/include/asm-mips/mach-bcm947xx/gpio.h b/target/linux/brcm47xx/files-2.6.25/include/asm-mips/mach-bcm947xx/gpio.h
deleted file mode 100644
index e7807ce..0000000
--- a/target/linux/brcm47xx/files-2.6.25/include/asm-mips/mach-bcm947xx/gpio.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#ifndef __BCM947XX_GPIO_H
-#define __BCM947XX_GPIO_H
-
-#include <linux/ssb/ssb_embedded.h>
-
-extern struct ssb_bus ssb;
-
-static inline int gpio_request(unsigned gpio, const char *label)
-{
- return 0;
-}
-
-static inline void gpio_free(unsigned gpio)
-{
-}
-
-static inline int gpio_direction_input(unsigned gpio)
-{
- ssb_gpio_outen(&ssb, 1 << gpio, 0);
- return 0;
-}
-
-static inline int gpio_direction_output(unsigned gpio, int value)
-{
- ssb_gpio_out(&ssb, 1 << gpio, (value ? 1 << gpio : 0));
- ssb_gpio_outen(&ssb, 1 << gpio, 1 << gpio);
- return 0;
-}
-
-
-static inline int gpio_to_irq(unsigned gpio)
-{
- struct ssb_device *dev;
-
- dev = ssb.chipco.dev;
- if (!dev)
- dev = ssb.extif.dev;
- if (!dev)
- return -EINVAL;
-
- return ssb_mips_irq(dev) + 2;
-}
-
-static inline int irq_to_gpio(unsigned gpio)
-{
- return -EINVAL;
-}
-
-
-static inline int gpio_get_value(unsigned gpio)
-{
- return !!ssb_gpio_in(&ssb, 1 << gpio);
-}
-
-static inline int gpio_set_value(unsigned gpio, int value)
-{
- ssb_gpio_out(&ssb, 1 << gpio, (value ? 1 << gpio : 0));
- return 0;
-}
-
-
-/* cansleep wrappers */
-#include <asm-generic/gpio.h>
-
-
-#endif /* __BCM947XX_GPIO_H */
-