diff options
author | florian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-07-19 16:19:19 +0000 |
---|---|---|
committer | florian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-07-19 16:19:19 +0000 |
commit | 5ea7603e04d467c0b4a1be3ba53624b3c12b6bfc (patch) | |
tree | 8e619d7f0dbc0b617338fb4e255508790907ef8b /target | |
parent | 589df1ac74210380e89be62e3bea1cce175f8bdd (diff) |
Suppress promc.c.orig, fix the nand detection with newer boards (#2038)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@8063 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target')
-rw-r--r-- | target/linux/rb532-2.6/files/arch/mips/rb500/prom.c.orig | 161 | ||||
-rw-r--r-- | target/linux/rb532-2.6/files/drivers/mtd/nand/rbmipsnand.c | 13 |
2 files changed, 10 insertions, 164 deletions
diff --git a/target/linux/rb532-2.6/files/arch/mips/rb500/prom.c.orig b/target/linux/rb532-2.6/files/arch/mips/rb500/prom.c.orig deleted file mode 100644 index 47569c0a2..000000000 --- a/target/linux/rb532-2.6/files/arch/mips/rb500/prom.c.orig +++ /dev/null @@ -1,161 +0,0 @@ -/* -* prom.c -********************************************************************** -* P . Sadik Oct 10, 2003 -* -* Started change log -* idt_cpu_freq is make a kernel configuration parameter -* idt_cpu_freq is exported so that other modules can use it. -* Code cleanup -********************************************************************** -* P. Sadik Oct 20, 2003 -* -* Removed NVRAM code from here, since they are already available under -* nvram directory. -* Added serial port initialisation. -********************************************************************** -********************************************************************** -* P. Sadik Oct 30, 2003 -* -* Added reset_cons_port -********************************************************************** - - P.Christeas, 2005-2006 - Port to 2.6, add 2.6 cmdline parsing - -*/ - -#include <linux/autoconf.h> -#include <linux/init.h> -#include <linux/mm.h> -#include <linux/module.h> -#include <linux/string.h> -#include <linux/console.h> -#include <asm/bootinfo.h> -#include <linux/bootmem.h> -#include <linux/ioport.h> -#include <linux/blkdev.h> -#include <asm/rc32434/ddr.h> - -#define PROM_ENTRY(x) (0xbfc00000+((x)*8)) -extern void __init setup_serial_port(void); - -unsigned int idt_cpu_freq = 132000000; -EXPORT_SYMBOL(idt_cpu_freq); -unsigned int board_type = 500; -EXPORT_SYMBOL(board_type); -unsigned int gpio_bootup_state = 0; -EXPORT_SYMBOL(gpio_bootup_state); - - -char mips_mac_address[18] = "08:00:06:05:40:01"; -EXPORT_SYMBOL(mips_mac_address); - -/* what to append to cmdline when button is [not] pressed */ -#define GPIO_INIT_NOBUTTON "" -#define GPIO_INIT_BUTTON " 2" - -#ifdef CONFIG_MIKROTIK_RB500 -unsigned soft_reboot = 0; -EXPORT_SYMBOL(soft_reboot); -#endif - -#define SR_NMI 0x00180000 /* NMI */ -#define SERIAL_SPEED_ENTRY 0x00000001 - -#ifdef CONFIG_REMOTE_DEBUG -extern int remote_debug; -#endif - -extern unsigned long mips_machgroup; -extern unsigned long mips_machtype; - -#define FREQ_TAG "HZ=" -#define GPIO_TAG "gpio=" -#define KMAC_TAG "kmac=" -#define MEM_TAG "mem=" -#define BOARD_TAG "board=" -#define IGNORE_CMDLINE_MEM 1 -#define DEBUG_DDR - -void parse_soft_settings(unsigned *ptr, unsigned size); -void parse_hard_settings(unsigned *ptr, unsigned size); - -void __init prom_setup_cmdline(void); - -void __init prom_init(void) -{ - DDR_t ddr = (DDR_t) DDR_VirtualAddress; /* define the pointer to the DDR registers */ - phys_t memsize = 0-ddr->ddrmask; - - /* this should be the very first message, even before serial is properly initialized */ - prom_setup_cmdline(); - setup_serial_port(); - - mips_machgroup = MACH_GROUP_MIKROTIK; - soft_reboot = read_c0_status() & SR_NMI; - pm_power_off = NULL; - - /* - * give all RAM to boot allocator, - * except for the first 0x400 and the last 0x200 bytes - */ - add_memory_region(ddr->ddrbase + 0x400, memsize - 0x600, BOOT_MEM_RAM); -} - -void prom_free_prom_memory(void) -{ - /* FIXME: STUB */ -} - -void __init prom_setup_cmdline(void){ - char cmd_line[CL_SIZE]; - char *cp; - int prom_argc; - char **prom_argv, **prom_envp; - int i; - - prom_argc = fw_arg0; - prom_argv = (char **) fw_arg1; - prom_envp = (char **) fw_arg2; - - cp=cmd_line; - /* Note: it is common that parameters start at argv[1] and not argv[0], - however, our elf loader starts at [0] */ - for(i=0;i<prom_argc;i++){ - if (strncmp(prom_argv[i], FREQ_TAG, sizeof(FREQ_TAG) - 1) == 0) { - idt_cpu_freq = simple_strtoul(prom_argv[i] + sizeof(FREQ_TAG) - 1, 0, 10); - continue; - } -#ifdef IGNORE_CMDLINE_MEM - /* parses out the "mem=xx" arg */ - if (strncmp(prom_argv[i], MEM_TAG, sizeof(MEM_TAG) - 1) == 0) { - continue; - } -#endif - if (i>0) *(cp++) = ' '; - if (strncmp(prom_argv[i], BOARD_TAG, sizeof(BOARD_TAG) - 1) == 0) { - board_type = simple_strtoul(prom_argv[i] + sizeof(BOARD_TAG) - 1, 0, 10); - } - if (strncmp(prom_argv[i], GPIO_TAG, sizeof(GPIO_TAG) - 1) == 0) { - gpio_bootup_state = simple_strtoul(prom_argv[i] + sizeof(GPIO_TAG) - 1, 0, 10); - } - strcpy(cp,prom_argv[i]); - cp+=strlen(prom_argv[i]); - } - - i=strlen(arcs_cmdline); - if (i>0){ - *(cp++) = ' '; - strcpy(cp,arcs_cmdline); - cp+=strlen(arcs_cmdline); - } - if (gpio_bootup_state&0x02) - strcpy(cp,GPIO_INIT_NOBUTTON); - else - strcpy(cp,GPIO_INIT_BUTTON); - cmd_line[CL_SIZE-1] = '\0'; - - strcpy(arcs_cmdline,cmd_line); -} - diff --git a/target/linux/rb532-2.6/files/drivers/mtd/nand/rbmipsnand.c b/target/linux/rb532-2.6/files/drivers/mtd/nand/rbmipsnand.c index 47bdbc7c3..35febc665 100644 --- a/target/linux/rb532-2.6/files/drivers/mtd/nand/rbmipsnand.c +++ b/target/linux/rb532-2.6/files/drivers/mtd/nand/rbmipsnand.c @@ -33,6 +33,8 @@ #define MEM32(x) *((volatile unsigned *) (x)) +extern unsigned int board_type; + struct rb500_nand_info { struct nand_chip chip; struct mtd_info mtd; @@ -123,9 +125,14 @@ static int rbmips_probe(struct platform_device *pdev) return -EIO; } - /* FIXME : this seems to work only for newer RB500, check the version to set the right flags accordingly */ - data->flags1 = LO_FOFF | LO_CEX; - data->flags2 = LO_ULED | LO_ALE | LO_CLE | LO_WPX; + if (board_type > 500) { + data->flags1 = LO_FOFF | LO_CEX; + data->flags2 = LO_ULED | LO_ALE | LO_CLE | LO_WPX; + } + else { + data->flags1 = LO_WPX | LO_FOFF | LO_CEX; + data->flags2 = LO_ULED | LO_ALE | LO_CLE; + } changeLatchU5(data->flags1, data->flags2); |