Changeset 9136


Ignore:
Timestamp:
2007-10-05T13:39:32+02:00 (10 years ago)
Author:
florian
Message:

Clean up the prom code / board detection (thanks Gabor), fix some warnings

Location:
trunk/target/linux/rb532
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/rb532/files/arch/mips/pci/pci-rc32434.c

    r7273 r9136  
    229229        register_pci_controller(&rc32434_controller); 
    230230        rc32434_sync(); 
     231 
     232        return 0; 
    231233} 
    232234 
  • trunk/target/linux/rb532/files/arch/mips/rb500/devices.c

    r9133 r9136  
    2424#include <linux/mtd/partitions.h> 
    2525 
     26#include <asm/bootinfo.h> 
     27 
    2628#include <asm/rc32434/rc32434.h> 
    2729#include <asm/rc32434/dma.h> 
     
    231233static void __init rb500_nand_setup(void) 
    232234{ 
    233         if (!strcmp(board_type, "500r5")) 
     235        switch (mips_machtype) { 
     236        case MACH_MIKROTIK_RB532A: 
    234237                changeLatchU5(LO_FOFF | LO_CEX, LO_ULED | LO_ALE | LO_CLE | LO_WPX); 
    235         else 
     238                break; 
     239        default: 
    236240                changeLatchU5(LO_WPX | LO_FOFF | LO_CEX, LO_ULED | LO_ALE | LO_CLE); 
     241                break; 
     242        } 
    237243 
    238244        /* Setup NAND specific settings */ 
     
    259265        nand_slot0_res[0].start = readl(CFG_DC_DEV2 + CFG_DC_DEVBASE); 
    260266        nand_slot0_res[0].end = nand_slot0_res[0].start + 0x1000; 
    261          
     267 
    262268        /* Initialise the NAND device */ 
    263269        rb500_nand_setup(); 
  • trunk/target/linux/rb532/files/arch/mips/rb500/prom.c

    r9133 r9136  
    11/* 
    2 * prom.c  
     2* prom.c 
    33********************************************************************** 
    44* P . Sadik Oct 10, 2003 
     
    4343unsigned int idt_cpu_freq = 132000000; 
    4444EXPORT_SYMBOL(idt_cpu_freq); 
    45 char board_type[11]; 
    46 EXPORT_SYMBOL(board_type); 
    4745unsigned int gpio_bootup_state = 0; 
    4846EXPORT_SYMBOL(gpio_bootup_state); 
    49  
    5047 
    5148char mips_mac_address[18] = "08:00:06:05:40:01"; 
     
    6865#endif 
    6966 
    70 extern unsigned long mips_machgroup; 
    71 extern unsigned long mips_machtype; 
    72  
    7367#define FREQ_TAG   "HZ=" 
    7468#define GPIO_TAG   "gpio=" 
     
    7872#define IGNORE_CMDLINE_MEM 1 
    7973#define DEBUG_DDR 
     74 
     75#define BOARD_RB532     "500" 
     76#define BOARD_RB532A    "500r5" 
    8077 
    8178void parse_soft_settings(unsigned *ptr, unsigned size); 
     
    8885        DDR_t ddr = (DDR_t) DDR_VirtualAddress; /* define the pointer to the DDR registers */ 
    8986        phys_t memsize = 0-ddr->ddrmask; 
    90          
     87 
    9188        /* this should be the very first message, even before serial is properly initialized */ 
    9289        prom_setup_cmdline(); 
     
    109106} 
    110107 
     108static inline int match_tag(char *arg, const char *tag) 
     109{ 
     110        return (strncmp(arg, tag, strlen(tag)) == 0); 
     111} 
     112 
     113static inline unsigned long tag2ul(char *arg, const char *tag) 
     114{ 
     115        char *num = arg+strlen(tag); 
     116        return simple_strtoul(num, 0, 10); 
     117} 
     118 
    111119extern char _image_cmdline; 
    112120void __init prom_setup_cmdline(void){ 
     
    116124        char **prom_argv, **prom_envp; 
    117125        int i; 
    118          
     126 
    119127        prom_argc = fw_arg0; 
    120128        prom_argv = (char **) fw_arg1; 
    121129        prom_envp = (char **) fw_arg2; 
    122          
     130 
    123131        cp=cmd_line; 
    124132                /* Note: it is common that parameters start at argv[1] and not argv[0], 
    125133                however, our elf loader starts at [0] */ 
    126134        for(i=0;i<prom_argc;i++){ 
    127                 if (strncmp(prom_argv[i], FREQ_TAG, sizeof(FREQ_TAG) - 1) == 0) { 
    128                         idt_cpu_freq = simple_strtoul(prom_argv[i] + sizeof(FREQ_TAG) - 1, 0, 10); 
     135                if (match_tag(prom_argv[i], FREQ_TAG)) { 
     136                        idt_cpu_freq = tag2ul(prom_argv[i], FREQ_TAG); 
    129137                        continue; 
    130138                } 
    131139#ifdef IGNORE_CMDLINE_MEM 
    132140                /* parses out the "mem=xx" arg */ 
    133                 if (strncmp(prom_argv[i], MEM_TAG, sizeof(MEM_TAG) - 1) == 0) { 
     141                if (match_tag(prom_argv[i], MEM_TAG)) { 
    134142                        continue; 
    135143                } 
    136144#endif 
    137145                if (i>0) *(cp++) = ' '; 
     146                if (match_tag(prom_argv[i], BOARD_TAG)) { 
     147                        char *board = prom_argv[i] + strlen(BOARD_TAG); 
     148                        if (match_tag(board, BOARD_RB532A)) 
     149                                mips_machtype = MACH_MIKROTIK_RB532A; 
     150                        else 
     151                                mips_machtype = MACH_MIKROTIK_RB532; 
     152                } 
    138153 
    139                 if (strncmp(prom_argv[i], BOARD_TAG, sizeof(BOARD_TAG) - 1) == 0) { 
    140                         strcpy(board_type, prom_argv[i] + sizeof(BOARD_TAG) -1); 
    141                 } 
    142                 if (strncmp(prom_argv[i], GPIO_TAG, sizeof(GPIO_TAG) - 1) == 0) { 
    143                         gpio_bootup_state =  simple_strtoul(prom_argv[i] + sizeof(GPIO_TAG) - 1, 0, 10); 
     154                if (match_tag(prom_argv[i], GPIO_TAG)) { 
     155                        gpio_bootup_state = tag2ul(prom_argv[i], GPIO_TAG); 
    144156                } 
    145157                strcpy(cp,prom_argv[i]); 
     
    149161        strcpy(cp,(&_image_cmdline + 8)); 
    150162        cp += strlen(&_image_cmdline); 
    151          
     163 
    152164        i=strlen(arcs_cmdline); 
    153165        if (i>0){ 
     
    161173                strcpy(cp,GPIO_INIT_BUTTON); 
    162174        cmd_line[CL_SIZE-1] = '\0'; 
    163          
     175 
    164176        strcpy(arcs_cmdline,cmd_line); 
    165177} 
  • trunk/target/linux/rb532/files/arch/mips/rb500/setup.c

    r7273 r9136  
    2020 
    2121#ifdef CONFIG_PCI 
    22 extern void *rc32434_time_init(void); 
     22extern void rc32434_time_init(void); 
    2323extern int __init rc32434_pcibridge_init(void); 
    2424#endif 
  • trunk/target/linux/rb532/patches/100-rb5xx_support.patch

    r7329 r9136  
    7070--- linux.old/include/asm-mips/bootinfo.h       2006-11-29 22:57:37.000000000 +0100 
    7171+++ linux.dev/include/asm-mips/bootinfo.h       2006-12-14 04:09:50.000000000 +0100 
    72 @@ -212,6 +212,8 @@ 
     72@@ -212,6 +212,10 @@ 
    7373 #define MACH_GROUP_NEC_EMMA2RH 25      /* NEC EMMA2RH (was 23)         */ 
    7474 #define  MACH_NEC_MARKEINS     0       /* NEC EMMA2RH Mark-eins        */ 
    7575  
    76 +#define MACH_GROUP_MIKROTIK    24 /* Mikrotik Boards                       */ 
     76+#define MACH_GROUP_MIKROTIK    26 /* Mikrotik Boards                       */ 
     77+#define  MACH_MIKROTIK_RB532   0       /* Mikrotik RouterBoard 532 */ 
     78+#define  MACH_MIKROTIK_RB532A  1       /* Mikrotik RouterBoard 532A */ 
    7779+ 
    7880 #define CL_SIZE                        COMMAND_LINE_SIZE 
Note: See TracChangeset for help on using the changeset viewer.