source: trunk/package/uboot-ifxmips/patches/100-ifx.patch @ 13291

Last change on this file since 13291 was 13291, checked in by thl, 8 years ago

[ifxmips] cleanup uboot package

File size: 55.7 KB
  • Makefile

    a b  
    2424VERSION = 1 
    2525PATCHLEVEL = 1 
    2626SUBLEVEL = 5 
    27 EXTRAVERSION = 
     27EXTRAVERSION = -IFX-LXDB 
    2828U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) 
    2929VERSION_FILE = $(obj)include/version_autogenerated.h 
    3030 
     
    4444# Deal with colliding definitions from tcsh etc. 
    4545VENDOR= 
    4646 
     47# Default algorithm form compressing u-boot.bin 
     48ifndef COMPRESS 
     49COMPRESS=none 
     50COMPRESS_FILE=$(obj)u-boot.img 
     51else 
     52ifeq ($(COMPRESS),lzma) 
     53COMPRESS_FILE=$(obj)u-boot.limg 
     54endif 
     55ifeq ($(COMPRESS),bz2) 
     56COMPRESS_FILE=$(obj)u-boot.bzimg 
     57endif 
     58ifeq ($(COMPRESS),gzip) 
     59COMPRESS_FILE=$(obj)u-boot.zimg 
     60endif 
     61ifeq ($(COMPRESS),none) 
     62COMPRESS_FILE=$(obj)u-boot.img 
     63endif 
     64endif 
     65 
    4766######################################################################### 
    4867# 
    4968# U-boot build supports producing a object files to the separate external 
     
    164183# U-Boot objects....order is important (i.e. start must be first) 
    165184 
    166185OBJS  = cpu/$(CPU)/start.o 
     186OBJS_BOOTSTRAP  = cpu/$(CPU)/start_bootstrap.o 
     187 
     188cpu/$(CPU)/start_bootstrap.S: cpu/$(CPU)/start.S 
     189        ln -s start.S cpu/$(CPU)/start_bootstrap.S 
     190 
    167191ifeq ($(CPU),i386) 
    168192OBJS += cpu/$(CPU)/start16.o 
    169193OBJS += cpu/$(CPU)/reset.o 
     
    183207endif 
    184208 
    185209OBJS := $(addprefix $(obj),$(OBJS)) 
     210OBJS_BOOTSTRAP := $(addprefix $(obj),$(OBJS_BOOTSTRAP)) 
    186211 
    187212LIBS  = lib_generic/libgeneric.a 
    188213LIBS += board/$(BOARDDIR)/lib$(BOARD).a 
     
    206231LIBS += $(BOARDLIBS) 
    207232 
    208233LIBS := $(addprefix $(obj),$(LIBS)) 
     234 
     235LIBS_BOOTSTRAP  = lib_bootstrap/libbootstrap.a 
     236LIBS_BOOTSTRAP+= board/$(BOARDDIR)/lib$(BOARD).a 
     237#LIBS_BOOTSTRAP+= board/ifx/libifx.a 
     238LIBS_BOOTSTRAP+= cpu/$(CPU)/lib$(CPU).a 
     239 
     240LIBS_BOOTSTRAP := $(addprefix $(obj),$(LIBS_BOOTSTRAP)) 
     241 
    209242.PHONY : $(LIBS) 
     243.PHONY : $(obj)lib_bootstrap/libbootstrap.a 
    210244 
    211245# Add GCC lib 
    212246PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc 
    213247 
    214248# The "tools" are needed early, so put this first 
    215249# Don't include stuff already done in $(LIBS) 
     250          #examples 
    216251SUBDIRS = tools \ 
    217           examples \ 
    218252          post \ 
    219253          post/cpu 
    220254.PHONY : $(SUBDIRS) 
     
    226260 
    227261__OBJS := $(subst $(obj),,$(OBJS)) 
    228262__LIBS := $(subst $(obj),,$(LIBS)) 
     263__LIBS_BOOTSTRAP := $(subst $(obj),,$(LIBS_BOOTSTRAP)) 
     264 
     265#__HEAD_OBJS := $(subst $(obj),,$(HEAD_OBJS)) 
     266#__HEAD_LIBS := $(subst $(obj),,$(HEAD_LIBS)) 
    229267 
    230268######################################################################### 
    231269######################################################################### 
    232270 
    233271ALL = $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) 
     272#IFX_ALL = $(obj)u-boot.ifx $(obj)head.srec $(obj)head.bin $(obj)head $(obj)head.map $(COMPRESS_FILE) $(obj)u-boot.srec 
     273IFX_ALL = $(obj)u-boot.srec $(obj)u-boot.ifx $(obj)u-boot.lzimg $(obj)System.map $(obj)bootstrap.bin $(obj)System_bootstrap.map 
     274IFX_BOOTSTRAP = $(obj)bootstrap.bin 
    234275 
    235276all:            $(ALL) 
    236277 
     278ifx_all:        $(IFX_ALL) 
     279 
     280ifx_bootstrap:  $(IFX_BOOTSTRAP) 
     281 
     282$(obj)u-boot.ifx: $(obj)bootstrap.bin $(obj)u-boot.lzimg 
     283                @cat $(obj)bootstrap.bin > $(obj)u-boot.ifx 
     284                @cat $(obj)u-boot.lzimg >> $(obj)u-boot.ifx 
     285 
     286$(obj)u-boot.lzimg: $(obj)u-boot.bin $(obj)System.map 
     287                @lzma e $(obj)u-boot.bin $(obj)u-boot.lzma 
     288                $(obj)tools/mkimage -A mips -T firmware -C lzma \ 
     289                -a 0x$(shell grep "T _start" $(obj)System.map | awk '{ printf "%s", $$1 }') \ 
     290                -e 0x$(shell grep "T _start" $(obj)System.map | awk '{ printf "%s", $$1 }') \ 
     291                -n 'u-boot image' -d $(obj)u-boot.lzma $@ 
     292 
     293$(obj)ld_uboot.img: $(obj)u-boot.ifx $(obj)u-boot.lzimg $(obj)bootstrap.bin 
     294                @  cp -f $(obj)u-boot.ifx $(obj)u-boot.bin 
     295                @ ./mkbootimg.incaip2 $(obj)ld_uboot.img < ld_uboot.conf 
     296 
     297$(obj)u-boot.zimg:      $(obj)u-boot.bin $(obj)System.map 
     298                gzip $(obj)u-boot.bin 
     299                $(obj)tools/mkimage -A $(ARCH) -T firmware -C gzip \ 
     300                -a 0x$(shell grep "T _start" $(obj)System.map | awk '{ printf "%s", $$1 }') \ 
     301                -e 0x$(shell grep "T _start" $(obj)System.map | awk '{ printf "%s", $$1 }') \ 
     302                -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \ 
     303                         sed -e 's/"[     ]*$$/ for $(BOARD) board"/') \ 
     304                -d u-boot.gz $@ 
     305 
     306$(obj)u-boot.bzimg:     $(obj)u-boot.bin $(obj)System.map 
     307                bzip $(obj)u-boot.bin 
     308                $(obj)tools/mkimage -A $(ARCH) -T firmware -C bzip2 \ 
     309                -a 0x$(shell grep "T _start" $(obj)System.map | awk '{ printf "%s", $$1 }') \ 
     310                -e 0x$(shell grep "T _start" $(obj)System.map | awk '{ printf "%s", $$1 }') \ 
     311                -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \ 
     312                        sed -e 's/"[     ]*$$/ for $(BOARD) board"/') \ 
     313                -d u-boot.bz2 $@ 
     314 
     315$(obj)u-boot.limg:      $(obj)u-boot.bin $(obj)System.map 
     316                @lzma e $(obj)u-boot.bin $(obj)u-boot.lzma 
     317                $(obj)tools/mkimage -A $(ARCH) -T firmware -C lzma \ 
     318                -a 0x$(shell grep "T _start" $(obj)System.map | awk '{ printf "%s", $$1 }') \ 
     319                -e 0x$(shell grep "T _start" $(obj)System.map | awk '{ printf "%s", $$1 }') \ 
     320                -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \ 
     321                        sed -e 's/"[     ]*$$/ for $(BOARD) board"/') \ 
     322                -d u-boot.lzma $@ 
     323 
     324$(obj)u-boot.img:       $(obj)u-boot.bin $(obj)System.map 
     325                $(obj)tools/mkimage -A $(ARCH) -T firmware -C none \ 
     326                -a 0x$(shell grep "T _start" $(obj)System.map | awk '{ printf "%s", $$1 }') \ 
     327                -e 0x$(shell grep "T _start" $(obj)System.map | awk '{ printf "%s", $$1 }') \ 
     328                -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \ 
     329                        sed -e 's/"[     ]*$$/ for $(BOARD) board"/') \ 
     330                -d u-boot.bin $@ 
     331 
    237332$(obj)u-boot.hex:       $(obj)u-boot 
    238333                $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ 
    239334 
     
    243338$(obj)u-boot.bin:       $(obj)u-boot 
    244339                $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@ 
    245340 
    246 $(obj)u-boot.img:       $(obj)u-boot.bin 
    247                 ./tools/mkimage -A $(ARCH) -T firmware -C none \ 
    248                 -a $(TEXT_BASE) -e 0 \ 
    249                 -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \ 
    250                         sed -e 's/"[     ]*$$/ for $(BOARD) board"/') \ 
    251                 -d $< $@ 
    252  
    253341$(obj)u-boot.dis:       $(obj)u-boot 
    254342                $(OBJDUMP) -d $< > $@ 
    255343 
    256 $(obj)u-boot:           depend version $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT) 
     344$(obj)u-boot:   depend version $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT) 
    257345                UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) |sed  -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\ 
    258346                cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \ 
    259347                        --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \ 
    260348                        -Map u-boot.map -o u-boot 
    261349 
     350$(obj)bootstrap.bin:    $(obj)bootstrap 
     351                $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@ 
     352 
     353$(obj)bootstrap :               depend version $(SUBDIRS) $(OBJS_BOOTSTRAP) $(LIBS_BOOTSTRAP) $(LDSCRIPT_BOOTSTRAP) 
     354                UNDEF_SYM=`$(OBJDUMP) -x $(LIBS_BOOTSTRAP) |sed  -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\ 
     355                $(LD) $(LDFLAGS_BOOTSTRAP) $$UNDEF_SYM $(OBJS_BOOTSTRAP) \ 
     356                        --start-group $(__LIBS_BOOTSTRAP) --end-group $(PLATFORM_LIBS) \ 
     357                        -Map bootstrap.map -o bootstrap 
     358 
    262359$(OBJS): 
    263360                $(MAKE) -C cpu/$(CPU) $(if $(REMOTE_BUILD),$@,$(notdir $@)) 
    264361 
    265362$(LIBS): 
    266363                $(MAKE) -C $(dir $(subst $(obj),,$@)) 
    267364 
     365$(obj)lib_bootstrap/libbootstrap.a: 
     366                $(MAKE) -C $(dir $(subst $(obj),,$@)) 
     367 
    268368$(SUBDIRS): 
    269369                $(MAKE) -C $@ all 
    270370 
     
    310410$(obj)System.map:       $(obj)u-boot 
    311411                @$(NM) $< | \ 
    312412                grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ 
    313                 sort > $(obj)System.map 
     413                sort > $@ 
     414 
     415$(obj)System_bootstrap.map:     $(obj)bootstrap 
     416                @$(NM) $< | \ 
     417                grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ 
     418                sort > $@ 
    314419 
    315420######################################################################### 
    316421else 
     
    20322137# MIPS 
    20332138#======================================================================== 
    20342139######################################################################### 
    2035 ## MIPS32 4Kc 
     2140## Infineon MIPS generic u-boot config 
     2141######################################################################### 
     2142danube_config:  unconfig 
     2143        @$(MKCONFIG) $(@:_config=) mips mips danube ifx danube 
     2144 
     2145amazon_config:  unconfig 
     2146        @$(MKCONFIG) $(@:_config=) mips mips amazon 
     2147 
     2148 
     2149incaip2_config: unconfig 
     2150        @$(MKCONFIG) $(@:_config=) mips mips incaip2 
     2151 
     2152######################################################################### 
     2153## MIPS32 4kc 
    20362154######################################################################### 
    20372155 
    20382156xtract_incaip = $(subst _100MHz,,$(subst _133MHz,,$(subst _150MHz,,$(subst _config,,$1)))) 
     
    22542372                | xargs -0 rm -f 
    22552373        rm -f $(OBJS) $(obj)*.bak $(obj)ctags $(obj)etags $(obj)TAGS $(obj)include/version_autogenerated.h 
    22562374        rm -fr $(obj)*.*~ 
    2257         rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL) 
     2375        rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL) $(IFX_ALL) 
    22582376        rm -f $(obj)tools/crc32.c $(obj)tools/environment.c $(obj)tools/env/crc32.c 
    22592377        rm -f $(obj)tools/inca-swap-bytes $(obj)cpu/mpc824x/bedbug_603e.c 
    22602378        rm -f $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm 
  • common/cmd_bootm.c

    a b  
    3131#include <malloc.h> 
    3232#include <zlib.h> 
    3333#include <bzlib.h> 
     34#include <LzmaWrapper.h> 
    3435#include <environment.h> 
    3536#include <asm/byteorder.h> 
    3637 
     
    7980# define CHUNKSZ (64 * 1024) 
    8081#endif 
    8182 
     83#ifndef CFG_HEAD_CODE 
     84 
    8285int  gunzip (void *, int, unsigned char *, unsigned long *); 
    8386 
    8487static void *zalloc(void *, unsigned, unsigned); 
     
    341344#endif  /* CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG */ 
    342345                } 
    343346                break; 
     347#ifndef CONFIG_REMOVE_GZIP 
    344348        case IH_COMP_GZIP: 
    345349                printf ("   Uncompressing %s ... ", name); 
    346350                if (gunzip ((void *)ntohl(hdr->ih_load), unc_len, 
     
    350354                        do_reset (cmdtp, flag, argc, argv); 
    351355                } 
    352356                break; 
     357#endif /* CONFIG_REMOVE_GZIP */ 
    353358#ifdef CONFIG_BZIP2 
    354359        case IH_COMP_BZIP2: 
    355360                printf ("   Uncompressing %s ... ", name); 
     
    369374                } 
    370375                break; 
    371376#endif /* CONFIG_BZIP2 */ 
     377#ifdef CONFIG_LZMA 
     378        case IH_COMP_LZMA: 
     379                printf ("   Uncompressing %s ... ", name); 
     380                i = lzma_inflate ((unsigned char *)data, len, (unsigned char*)ntohl(hdr->ih_load), &unc_len); 
     381                if (i != LZMA_RESULT_OK) { 
     382                        printf ("LZMA ERROR %d - must RESET board to recover\n", i); 
     383                        SHOW_BOOT_PROGRESS (-6); 
     384                        udelay(100000); 
     385                        do_reset (cmdtp, flag, argc, argv); 
     386                } 
     387                break; 
     388#endif /* CONFIG_LZMA */ 
    372389        default: 
    373390                if (iflag) 
    374391                        enable_interrupts(); 
     
    11761193); 
    11771194#endif  /* CFG_CMD_IMLS */ 
    11781195 
     1196#endif  /* ! CFG_HEAD_CODE */ 
     1197 
    11791198void 
    11801199print_image_hdr (image_header_t *hdr) 
    11811200{ 
     
    12701289        case IH_COMP_NONE:      comp = "uncompressed";          break; 
    12711290        case IH_COMP_GZIP:      comp = "gzip compressed";       break; 
    12721291        case IH_COMP_BZIP2:     comp = "bzip2 compressed";      break; 
     1292        case IH_COMP_LZMA:      comp = "lzma compressed";       break; 
    12731293        default:                comp = "unknown compression";   break; 
    12741294        } 
    12751295 
    12761296        printf ("%s %s %s (%s)", arch, os, type, comp); 
    12771297} 
    12781298 
     1299#ifndef CFG_HEAD_CODE 
     1300 
    12791301#define ZALLOC_ALIGNMENT        16 
    12801302 
    12811303static void *zalloc(void *x, unsigned items, unsigned size) 
     
    14271449} 
    14281450 
    14291451#endif /* CONFIG_LYNXKDI */ 
     1452 
     1453#endif /* ! CFG_HEAD_CODE */ 
  • common/cmd_flash.c

    a b  
    196196} 
    197197 
    198198static int 
    199 flash_fill_sect_ranges (ulong addr_first, ulong addr_last, 
    200                         int *s_first, int *s_last, 
    201                         int *s_count ) 
     199flash_fill_sect_ranges( 
     200        ulong *addr_first_sect_start, 
     201        ulong addr_first, 
     202        ulong *addr_last_sect_end, 
     203        ulong addr_last, 
     204        int *s_first, 
     205        int *s_last, 
     206        int *bPartialStart, 
     207        int *bPartialEnd, 
     208        int *s_count, 
     209        unsigned int bPartialErase) 
    202210{ 
    203211        flash_info_t *info; 
    204212        ulong bank; 
     
    211219                s_last [bank] = -1;     /* last  sector to erase        */ 
    212220        } 
    213221 
    214         for (bank=0,info=&flash_info[0]; 
    215              (bank < CFG_MAX_FLASH_BANKS) && (addr_first <= addr_last); 
    216              ++bank, ++info) { 
     222        for (bank=0, info=&flash_info[0]; (bank < CFG_MAX_FLASH_BANKS) && (addr_first <= addr_last); ++bank, ++info) { 
    217223                ulong b_end; 
    218224                int sect; 
    219225                short s_end; 
     
    225231                b_end = info->start[0] + info->size - 1;        /* bank end addr */ 
    226232                s_end = info->sector_count - 1;                 /* last sector   */ 
    227233 
    228  
    229234                for (sect=0; sect < info->sector_count; ++sect) { 
    230235                        ulong end;      /* last address in current sect */ 
    231236 
     
    238243 
    239244                        if (addr_first == info->start[sect]) { 
    240245                                s_first[bank] = sect; 
     246                        } else if (addr_first > info->start[sect] && addr_first <= end && bPartialErase) { 
     247                                *addr_first_sect_start = info->start[sect]; 
     248                                s_first[bank] = sect; 
     249                                *bPartialStart = 1; 
    241250                        } 
     251 
    242252                        if (addr_last  == end) { 
    243253                                s_last[bank]  = sect; 
     254                        } else if (addr_last >= info->start[sect] && addr_last < end && bPartialErase) { 
     255                                *addr_last_sect_end = end; 
     256                                s_last[bank] = sect; 
     257                                *bPartialEnd = 1; 
    244258                        } 
    245259                } 
     260 
    246261                if (s_first[bank] >= 0) { 
    247262                        if (s_last[bank] < 0) { 
    248263                                if (addr_last > b_end) { 
     
    316331        struct part_info *part; 
    317332        u8 dev_type, dev_num, pnum; 
    318333#endif 
     334        unsigned int bPartialErase = 0; 
     335 
    319336        int rcode = 0; 
    320337 
    321338        if (argc < 2) { 
     
    369386        } 
    370387#endif 
    371388 
    372         if (argc != 3) { 
     389        if (argc != 4) { 
    373390                printf ("Usage:\n%s\n", cmdtp->usage); 
    374391                return 1; 
    375392        } 
     
    397414                return 1; 
    398415        } 
    399416 
    400         rcode = flash_sect_erase(addr_first, addr_last); 
     417        printf ("Erase Flash from 0x%08lx to 0x%08lx\n", addr_first, addr_last); 
     418        if(argc == 4) { 
     419                bPartialErase = simple_strtoul(argv[3], NULL, 10); 
     420        } 
     421 
     422        rcode = flash_sect_erase(addr_first, addr_last, bPartialErase); 
    401423        return rcode; 
    402424} 
    403425 
    404 int flash_sect_erase (ulong addr_first, ulong addr_last) 
     426int flerase_Partial( 
     427        ulong addr_first_sect_start, 
     428        ulong addr_first, 
     429        ulong addr_last_sect_end, 
     430        ulong addr_last, 
     431        flash_info_t *info, 
     432        int first_sect, 
     433        int last_sect, 
     434        int bFirstPartial, 
     435        int bLastPartial) { 
     436        unsigned int firstMemLen = 0; 
     437        unsigned int lastMemLen = 0; 
     438        unsigned int sectMemLen = 0; 
     439        uchar *pSavedFirstMem = NULL; 
     440        uchar *pSavedLastMem = NULL; 
     441        uchar *pSavedSectMem = NULL; 
     442        int bSectPartial = 0; 
     443        int rt_code = 0; 
     444 
     445        debug("%s ... 0x%08x, 0x%08x, 0x%08x, 0x%08x, 0x%p, %d, %d, %d, %d\n", __FUNCTION__, addr_first_sect_start, addr_first, addr_last_sect_end, addr_last, info, first_sect, last_sect, bFirstPartial, bLastPartial); 
     446 
     447        if (bFirstPartial && bLastPartial && (first_sect == last_sect)) 
     448        { 
     449                ulong b_end = info->start[0] + info->size - 1; 
     450                ulong end = (first_sect == (info->sector_count - 1)) ? b_end : info->start[first_sect + 1] - 1; 
     451                sectMemLen = end - info->start[first_sect] + 1; 
     452                pSavedSectMem = (uchar *)calloc(sectMemLen, sizeof(char)); 
     453                if (pSavedSectMem == NULL) 
     454                { 
     455                        debug("calloc %u FAILED\n", sectMemLen); 
     456                        rt_code = 1; 
     457                        goto ret; 
     458                } 
     459                memset(pSavedSectMem, 0xff, sectMemLen); 
     460                bSectPartial = 1; 
     461                memcpy(pSavedSectMem, (uchar *)addr_first_sect_start, addr_first - addr_first_sect_start); 
     462                memcpy(pSavedSectMem + (addr_last - info->start[first_sect]) + 1, addr_last + 1, end - addr_last); 
     463        } 
     464        else 
     465        { 
     466                if (bFirstPartial){ 
     467                        firstMemLen = addr_first - addr_first_sect_start + 1; 
     468                        pSavedFirstMem = (uchar *)calloc(firstMemLen,sizeof(char)); 
     469                        memcpy(pSavedFirstMem,(uchar *)addr_first_sect_start,firstMemLen - 1); 
     470                } 
     471                if (bLastPartial){ 
     472                        lastMemLen = addr_last_sect_end - addr_last + 1; 
     473                        pSavedLastMem = (uchar *)calloc(lastMemLen,sizeof(char)); 
     474                        memcpy(pSavedLastMem,(uchar *)addr_last + 1,lastMemLen - 1); 
     475                } 
     476        } 
     477 
     478        if (bFirstPartial){ 
     479                if(flash_erase (info, first_sect, first_sect)) { 
     480                        printf("%s ... Couldn't erase sector %d\n", __FUNCTION__, first_sect); 
     481                        rt_code = 1; 
     482                        goto ret; 
     483                } 
     484                debug("%s ... erase sector %d done!\n", __FUNCTION__, first_sect); 
     485        } 
     486 
     487        if (bLastPartial && first_sect != last_sect){ 
     488                if(flash_erase (info, last_sect, last_sect)) { 
     489                        printf("%s ... Couldn't erase sector %d\n", __FUNCTION__, last_sect); 
     490                        rt_code = 1; 
     491                        goto ret; 
     492                } 
     493                debug("%s ... erase sector %d done!\n", __FUNCTION__, last_sect); 
     494        } 
     495 
     496        if (bFirstPartial && bLastPartial && (first_sect == last_sect)) 
     497        { 
     498                flash_write(pSavedSectMem, (uchar *)addr_first_sect_start, sectMemLen); 
     499                debug("flash_write from 0x%08x with len %u\n", addr_first_sect_start, sectMemLen); 
     500        } 
     501        else 
     502        { 
     503                if (bFirstPartial){ 
     504                        if(flash_write(pSavedFirstMem,(uchar *)addr_first_sect_start,firstMemLen - 1)) { 
     505                                printf("%s ... Couldn't write at 0x%08lx length %d\n", __FUNCTION__, addr_first_sect_start,firstMemLen - 1); 
     506                                rt_code = 1; 
     507                                goto ret; 
     508                        } 
     509                } 
     510                if (bLastPartial){ 
     511                        if(flash_write(pSavedLastMem,(uchar *)addr_last + 1,lastMemLen - 1)) { 
     512                                printf("%s ... Couldn't write at 0x%08lx length %d\n", __FUNCTION__, addr_last, lastMemLen - 1); 
     513                                rt_code = 1; 
     514                        } 
     515                } 
     516        } 
     517ret: 
     518        if (bFirstPartial) 
     519                free(pSavedFirstMem); 
     520        if (bLastPartial) 
     521                free(pSavedLastMem); 
     522        if (bSectPartial) 
     523                free(pSavedSectMem); 
     524        return rt_code; 
     525} 
     526 
     527int flash_sect_erase (ulong addr_first, ulong addr_last, unsigned int bPartialErase) 
    405528{ 
    406529        flash_info_t *info; 
    407530        ulong bank; 
     
    413536        int erased = 0; 
    414537        int planned; 
    415538        int rcode = 0; 
    416  
    417         rcode = flash_fill_sect_ranges (addr_first, addr_last, 
    418                                         s_first, s_last, &planned ); 
     539        int bPartialStart = 0;          // Start sector has to be erased partially 
     540        int bPartialEnd = 0;            // End sector has to be erased partially 
     541        ulong addr_first_sect_start = 0;// Sector start address of location addr_start 
     542        ulong addr_last_sect_end = 0;   // Sector end address of location addr_last 
     543 
     544        rcode = flash_fill_sect_ranges ( 
     545                        &addr_first_sect_start, 
     546                        addr_first, 
     547                        &addr_last_sect_end, 
     548                        addr_last, 
     549                        s_first, 
     550                        s_last, 
     551                        &bPartialStart, 
     552                        &bPartialEnd, 
     553                        &planned, 
     554                        bPartialErase ); 
    419555 
    420556        if (planned && (rcode == 0)) { 
    421                 for (bank=0,info=&flash_info[0]; 
    422                      (bank < CFG_MAX_FLASH_BANKS) && (rcode == 0); 
    423                      ++bank, ++info) { 
     557                for (bank=0, info=&flash_info[0]; (bank < CFG_MAX_FLASH_BANKS) && (rcode == 0); ++bank, ++info) { 
     558                        ulong b_end = info->start[0] + info->size - 1;  /* bank end addr */ 
    424559                        if (s_first[bank]>=0) { 
    425                                 erased += s_last[bank] - s_first[bank] + 1; 
    426                                 debug ("Erase Flash from 0x%08lx to 0x%08lx " 
    427                                         "in Bank # %ld ", 
    428                                         info->start[s_first[bank]], 
    429                                         (s_last[bank] == info->sector_count) ? 
    430                                                 info->start[0] + info->size - 1: 
    431                                                 info->start[s_last[bank]+1] - 1, 
    432                                         bank+1); 
    433                                 rcode = flash_erase (info, s_first[bank], s_last[bank]); 
     560                                if(bPartialErase) { 
     561                                        rcode = flerase_Partial( 
     562                                                        addr_first_sect_start, 
     563                                                        addr_first, 
     564                                                        addr_last_sect_end, 
     565                                                        addr_last, 
     566                                                        info, 
     567                                                        s_first[bank], 
     568                                                        s_last[bank], 
     569                                                        bPartialStart, 
     570                                                        bPartialEnd); 
     571                                } 
     572 
     573                                //Erase full sectores 
     574                                if (bPartialStart) 
     575                                        s_first[bank] += 1; 
     576                                if (bPartialEnd) 
     577                                        s_last[bank] -= 1; 
     578                                if (s_last[bank] >= s_first[bank]) { 
     579                                        erased += s_last[bank] - s_first[bank] + 1; 
     580                                        debug ("Erase Flash from 0x%08lx to 0x%08lx in Bank # %ld ", 
     581                                                info->start[s_first[bank]], 
     582                                                (s_last[bank] == info->sector_count) ? 
     583                                                        info->start[0] + info->size - 1: 
     584                                                        info->start[s_last[bank]+1] - 1, 
     585                                                bank + 1); 
     586                                        rcode = flash_erase (info, s_first[bank], s_last[bank]); 
     587                                } 
    434588                        } 
    435589                } 
    436                 printf ("Erased %d sectors\n", erased); 
     590 
     591                if (erased && !bPartialErase) { 
     592                        printf ("Erased %d sectors\n", erased); 
     593                } else if (bPartialErase){ 
     594                        printf ("Partial erased from 0x%08lx to 0x%08lx\n", addr_first, addr_last); 
     595                } else { 
     596                        printf ("Error: start and/or end address not on sector boundary\n"); 
     597                        rcode = 1; 
     598                } 
    437599        } else if (rcode == 0) { 
    438600                puts ("Error: start and/or end address" 
    439601                        " not on sector boundary\n"); 
     
    629791        int protected, i; 
    630792        int planned; 
    631793        int rcode; 
    632  
    633         rcode = flash_fill_sect_ranges( addr_first, addr_last, s_first, s_last, &planned ); 
     794        int bPartialStart = 0;          // Start sector has to be erased partially 
     795        int bPartialEnd = 0;            // End sector has to be erased partially 
     796        ulong addr_first_sect_start = 0;// Sector start address of location addr_start 
     797        ulong addr_last_sect_end = 0;   // Sector end address of location addr_last 
     798 
     799        rcode = flash_fill_sect_ranges ( 
     800                        &addr_first_sect_start, 
     801                        addr_first, 
     802                        &addr_last_sect_end, 
     803                        addr_last, 
     804                        s_first, 
     805                        s_last, 
     806                        &bPartialStart, 
     807                        &bPartialEnd, 
     808                        &planned, 
     809                        1 ); 
    634810 
    635811        protected = 0; 
    636812 
     
    690866); 
    691867 
    692868U_BOOT_CMD( 
    693         erase,   3,   1,  do_flerase, 
     869        erase,   4,   1,  do_flerase, 
    694870        "erase   - erase FLASH memory\n", 
    695871        "start end\n" 
    696872        "    - erase FLASH from addr 'start' to addr 'end'\n" 
  • common/cmd_nvedit.c

    a b  
    540540        extern char * env_name_spec; 
    541541 
    542542        printf ("Saving Environment to %s...\n", env_name_spec); 
    543  
     543#if 1 
     544        if(saveenv() == 0) { 
     545#ifdef UBOOT_ENV_COPY 
     546                saveenv_copy(); 
     547#else 
     548                ; 
     549#endif //UBOOT_ENV_COPY 
     550        } else 
     551                return 1; 
     552        return 0; 
     553#else 
    544554        return (saveenv() ? 1 : 0); 
     555#endif 
    545556} 
    546557 
    547558 
  • common/console.c

    a b  
    324324#endif 
    325325 
    326326/** U-Boot INIT FUNCTIONS *************************************************/ 
    327  
     327#ifndef CFG_HEAD_CODE 
    328328int console_assign (int file, char *devname) 
    329329{ 
    330330        int flag, i; 
     
    357357 
    358358        return -1; 
    359359} 
    360  
     360#endif  //CFG_HEAD_CODE 
    361361/* Called before relocation - use serial functions */ 
    362362int console_init_f (void) 
    363363{ 
     
    392392} 
    393393#endif /* CFG_CONSOLE_IS_IN_ENV || CONFIG_SPLASH_SCREEN */ 
    394394 
     395#ifndef CFG_HEAD_CODE 
    395396#ifdef CFG_CONSOLE_IS_IN_ENV 
    396397/* Called after the relocation - use desired console functions */ 
    397398int console_init_r (void) 
     
    570571} 
    571572 
    572573#endif /* CFG_CONSOLE_IS_IN_ENV */ 
     574#endif  //CFG_HEAD_CODE 
  • common/devices.c

    a b  
    3939list_t devlist = 0; 
    4040device_t *stdio_devices[] = { NULL, NULL, NULL }; 
    4141char *stdio_names[MAX_FILES] = { "stdin", "stdout", "stderr" }; 
     42#ifndef CFG_HEAD_CODE 
    4243 
    4344#if defined(CONFIG_SPLASH_SCREEN) && !defined(CFG_DEVICE_NULLDEV) 
    4445#define CFG_DEVICE_NULLDEV      1 
     
    214215 
    215216        return 0; 
    216217} 
     218#endif //CFG_HEAD_CODE 
     219 
  • common/env_common.c

    a b  
    219219         * We must allocate a buffer for the environment 
    220220         */ 
    221221        env_ptr = (env_t *)malloc (CFG_ENV_SIZE); 
    222         DEBUGF ("%s[%d] malloced ENV at %p\n", __FUNCTION__,__LINE__,env_ptr); 
     222        if(!env_ptr) 
     223                DEBUGF ("malloc env_ptr error!!\n"); 
     224        DEBUGF ("%s[%d] malloced ENV at %p\n", __FUNCTION__, __LINE__, env_ptr); 
    223225#endif 
    224226 
    225227        /* 
     
    227229         */ 
    228230        env_get_char = env_get_char_memory; 
    229231 
     232        //leejack 
     233        DEBUGF ("%s[%d] gd->env_valid=%d\n", __FUNCTION__, __LINE__, gd->env_valid); 
     234        DEBUGF ("%s[%d] CFG_ENV_SIZE=%d\n", __FUNCTION__, __LINE__, CFG_ENV_SIZE); 
     235 
    230236        if (gd->env_valid == 0) { 
    231237#if defined(CONFIG_GTH) || defined(CFG_ENV_IS_NOWHERE)  /* Environment not changable */ 
    232238                puts ("Using default environment\n\n"); 
     
    242248                } 
    243249 
    244250                memset (env_ptr, 0, sizeof(env_t)); 
    245                 memcpy (env_ptr->data, 
    246                         default_environment, 
    247                         sizeof(default_environment)); 
     251                memcpy (env_ptr->data, default_environment, sizeof(default_environment)); 
     252 
    248253#ifdef CFG_REDUNDAND_ENVIRONMENT 
    249254                env_ptr->flags = 0xFF; 
    250255#endif 
    251256                env_crc_update (); 
    252257                gd->env_valid = 1; 
    253         } 
    254         else { 
     258        } else { 
    255259                env_relocate_spec (); 
    256260        } 
     261 
    257262        gd->env_addr = (ulong)&(env_ptr->data); 
    258263 
    259264#ifdef CONFIG_AMIGAONEG3SE 
  • common/env_flash.c

    a b  
    6666#endif 
    6767 
    6868#else /* ! ENV_IS_EMBEDDED */ 
    69  
    7069env_t *env_ptr = (env_t *)CFG_ENV_ADDR; 
    7170#ifdef CMD_SAVEENV 
    7271static env_t *flash_addr = (env_t *)CFG_ENV_ADDR; 
     
    201200        debug (" %08lX ... %08lX ...", 
    202201                (ulong)&(flash_addr_new->data), 
    203202                sizeof(env_ptr->data)+(ulong)&(flash_addr_new->data)); 
     203 
    204204        if ((rc = flash_write((char *)env_ptr->data, 
    205205                        (ulong)&(flash_addr_new->data), 
    206206                        sizeof(env_ptr->data))) || 
     
    256256#endif /* CMD_SAVEENV */ 
    257257 
    258258#else /* ! CFG_ENV_ADDR_REDUND */ 
    259  
    260259int  env_init(void) 
    261260{ 
    262261#ifdef CONFIG_OMAP2420H4 
     
    280279 
    281280#ifdef CMD_SAVEENV 
    282281 
     282#ifdef UBOOT_ENV_COPY 
     283int saveenv_copy(void) { 
     284        uchar *env_buffer = (char *)env_ptr; 
     285        char *kernel_addr; 
     286        char *rootfs_addr; 
     287        char *rootfs_size; 
     288        ulong start_addr,end_addr,rootfs_end_addr; 
     289        ulong flash_start; 
     290 
     291        kernel_addr = getenv("f_kernel_addr"); 
     292        end_addr = simple_strtoul(kernel_addr,NULL,16) - 1; 
     293        start_addr = end_addr - CFG_ENV_SIZE - sizeof(UBOOTCONFIG_COPY_HEADER) + 1; 
     294 
     295        rootfs_addr = getenv("f_rootfs_addr"); 
     296        rootfs_size = getenv("f_rootfs_size"); 
     297        rootfs_end_addr = simple_strtoul(rootfs_addr,NULL,16) + simple_strtoul(rootfs_size,NULL,16); 
     298 
     299        if(rootfs_end_addr >= start_addr) 
     300        { 
     301                printf("Can not copy the environment at 0x%08lx as no space left.\nf_kernel_addr = 0x%08lx while rootfs_end_addr = 0x%08lx\n",start_addr,end_addr,rootfs_end_addr); 
     302                return 1; 
     303        } 
     304 
     305        debug ("Protect off %08lX ... %08lX\n", (ulong)rootfs_end_addr, end_addr); 
     306        if (flash_sect_protect (0, rootfs_end_addr, end_addr)) 
     307                return 1; 
     308 
     309        //delete the old environment copy, if found 
     310        flash_start = rootfs_end_addr; 
     311        while(flash_start + sizeof(UBOOTCONFIG_COPY_HEADER) + ENV_SIZE < end_addr) 
     312        { 
     313                if(strncmp((char *)flash_start,UBOOTCONFIG_COPY_HEADER,sizeof(UBOOTCONFIG_COPY_HEADER)) == 0) 
     314                { 
     315                        flash_sect_erase(flash_start,flash_start + sizeof(UBOOTCONFIG_COPY_HEADER),1); 
     316                } 
     317                flash_start += 1; 
     318        } 
     319        flash_sect_erase(start_addr,end_addr,1); 
     320        flash_write(UBOOTCONFIG_COPY_HEADER,start_addr,sizeof(UBOOTCONFIG_COPY_HEADER)); 
     321        flash_write(env_buffer,start_addr + sizeof(UBOOTCONFIG_COPY_HEADER), CFG_ENV_SIZE); 
     322        flash_sect_protect (1, rootfs_end_addr, end_addr); 
     323        printf("saved copy of the env at 0x%08lx\n",start_addr); 
     324        return 0; 
     325} 
     326#endif  //UBOOT_ENV_COPY 
     327 
    283328int saveenv(void) 
    284329{ 
    285330        int     len, rc; 
     
    331376                return 1; 
    332377 
    333378        puts ("Erasing Flash..."); 
    334         if (flash_sect_erase (flash_sect_addr, end_addr)) 
     379        if (flash_sect_erase (flash_sect_addr, end_addr, 1)) 
    335380                return 1; 
    336381 
    337382        puts ("Writing to Flash... "); 
  • config.mk

    a b  
    127127OBJDUMP = $(CROSS_COMPILE)objdump 
    128128RANLIB  = $(CROSS_COMPILE)RANLIB 
    129129 
     130ifneq (,$(findstring s,$(MAKEFLAGS))) 
     131ARFLAGS = cr 
     132else 
    130133ARFLAGS = crv 
     134endif 
    131135RELFLAGS= $(PLATFORM_RELFLAGS) 
    132136DBGFLAGS= -g # -DDEBUG 
    133137OPTFLAGS= -Os #-fomit-frame-pointer 
     
    139143LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds 
    140144endif 
    141145endif 
     146 
     147LDSCRIPT_BOOTSTRAP := $(TOPDIR)/board/$(BOARDDIR)/u-boot-bootstrap.lds 
     148 
    142149OBJCFLAGS += --gap-fill=0xff 
    143150 
    144151gccincdir := $(shell $(CC) -print-file-name=include) 
    145152 
    146153CPPFLAGS := $(DBGFLAGS) $(OPTFLAGS) $(RELFLAGS)         \ 
    147         -D__KERNEL__ -DTEXT_BASE=$(TEXT_BASE)           \ 
     154        -D__KERNEL__ -DUBOOT_RAM_TEXT_BASE=$(UBOOT_RAM_TEXT_BASE)               \ 
    148155 
    149156ifneq ($(OBJTREE),$(SRCTREE)) 
    150157CPPFLAGS += -I$(OBJTREE)/include2 -I$(OBJTREE)/include 
     
    180187 
    181188AFLAGS := $(AFLAGS_DEBUG) -D__ASSEMBLY__ $(CPPFLAGS) 
    182189 
    183 LDFLAGS += -Bstatic -T $(LDSCRIPT) -Ttext $(TEXT_BASE) $(PLATFORM_LDFLAGS) 
     190LDFLAGS += -Bstatic -T $(LDSCRIPT) -Ttext $(UBOOT_RAM_TEXT_BASE) $(PLATFORM_LDFLAGS) 
     191LDFLAGS_BOOTSTRAP += -Bstatic -T $(LDSCRIPT_BOOTSTRAP) -Ttext $(BOOTSTRAP_TEXT_BASE) $(PLATFORM_LDFLAGS) 
    184192 
    185193# Location of a usable BFD library, where we define "usable" as 
    186194# "built for ${HOST}, supports ${TARGET}".  Sensible values are 
     
    214222export  CONFIG_SHELL HPATH HOSTCC HOSTCFLAGS CROSS_COMPILE \ 
    215223        AS LD CC CPP AR NM STRIP OBJCOPY OBJDUMP \ 
    216224        MAKE 
    217 export  TEXT_BASE PLATFORM_CPPFLAGS PLATFORM_RELFLAGS CPPFLAGS CFLAGS AFLAGS 
     225export  UBOOT_RAM_TEXT_BASE BOOTSTRAP_TEXT_BASE PLATFORM_CPPFLAGS PLATFORM_RELFLAGS CPPFLAGS CFLAGS AFLAGS 
    218226 
    219227######################################################################### 
    220228 
    221229ifndef REMOTE_BUILD 
    222230 
     231%_bootstrap.s:  %_bootstrap.S 
     232        $(CPP) $(AFLAGS) -DCFG_BOOTSTRAP_CODE -o $@ $< 
     233%_bootstrap.o:  %_bootstrap.S 
     234        $(CC) $(AFLAGS) -DCFG_BOOTSTRAP_CODE -c -o $@ $< 
     235%_bootstrap.o:  %_bootstrap.c 
     236        $(CC) $(CFLAGS) -DCFG_BOOTSTRAP_CODE -c -o $@ $< 
     237 
    223238%.s:    %.S 
    224239        $(CPP) $(AFLAGS) -o $@ $< 
    225240%.o:    %.S 
     
    229244 
    230245else 
    231246 
     247$(obj)%_bootstrap.s:    %_bootstrap.S 
     248        $(CPP) $(AFLAGS) -DCFG_BOOTSTRAP_CODE -o $@ $< 
     249$(obj)%_bootstrap.o:    %_bootstrap.S 
     250        $(CC) $(AFLAGS) -DCFG_BOOTSTRAP_CODE -c -o $@ $< 
     251$(obj)%_bootstrap.o:    %_bootstrap.c 
     252        $(CC) $(CFLAGS) -DCFG_BOOTSTRAP_CODE -c -o $@ $< 
     253 
    232254$(obj)%.s:      %.S 
    233255        $(CPP) $(AFLAGS) -o $@ $< 
    234256$(obj)%.o:      %.S 
    235257        $(CC) $(AFLAGS) -c -o $@ $< 
    236258$(obj)%.o:      %.c 
    237259        $(CC) $(CFLAGS) -c -o $@ $< 
     260 
    238261endif 
    239262 
    240263######################################################################### 
  • drivers/Makefile

    a b  
    5050          videomodes.o w83c553f.o \ 
    5151          ks8695eth.o \ 
    5252          pxa_pcmcia.o mpc8xx_pcmcia.o tqm8xx_pcmcia.o  \ 
    53           rpx_pcmcia.o 
     53          rpx_pcmcia.o ifx_sw.o 
    5454 
    5555SRCS    := $(COBJS:.o=.c) 
    5656OBJS    := $(addprefix $(obj),$(COBJS)) 
  • include/asm-mips/mipsregs.h

    a b  
    4848#define CP0_CAUSE $13 
    4949#define CP0_EPC $14 
    5050#define CP0_PRID $15 
     51#define CP0_EBASE $15,1 
    5152#define CP0_CONFIG $16 
    5253#define CP0_LLADDR $17 
    5354#define CP0_WATCHLO $18 
     
    330331#  define KSU_USER              0x00000010 
    331332#  define KSU_SUPERVISOR        0x00000008 
    332333#  define KSU_KERNEL            0x00000000 
     334#ifdef CONFIG_DANUBE    /* MIPS 24KE */ 
     335/* bits 5 & 6 & 7: reserved */ 
     336/* bits 8~15: IM0~7 */ 
     337/* bits 16: reserved */ 
     338#define ST0_CEE                 0x00020000 
     339/* bits 18: always 0 */ 
     340#define ST0_NMI                 0x00080000 
     341#define ST0_SR                  0x00100000 
     342#define ST0_TS                  0x00200000 
     343#define ST0_BEV                 0x00400000 
     344/* bits 23: reserved */ 
     345#define ST0_MX                  0x01000000 
     346#define ST0_RE                  0x02000000 
     347#define ST0_FR                  0x04000000 
     348#define ST0_RP                  0x08000000 
     349#define ST0_CU0                 0x10000000 
     350#define ST0_CU1                 0x20000000 
     351#define ST0_CU2                 0x40000000 
     352#define ST0_CU3                 0x80000000 
     353#else 
    333354#define ST0_UX                  0x00000020 
    334355#define ST0_SX                  0x00000040 
    335356#define ST0_KX                  0x00000080 
    336357#define ST0_DE                  0x00010000 
    337358#define ST0_CE                  0x00020000 
     359#endif 
    338360 
    339361/* 
    340362 * Bitfields in the R[23]000 cp0 status register. 
     
    471493#define  CAUSEF_BD              (1   << 31) 
    472494 
    473495/* 
     496 * Bits in the coprocessor 0 EBase register 
     497 */ 
     498#define EBASEB_CPUNUM           0 
     499#define EBASEF_CPUNUM           (0x3ff << EBASEB_CPUNUM) 
     500#define EBASEB_EXPBASE          12 
     501#define EBASEF_EXPBASE          (0x3ffff << EBASEB_EXPBASE) 
     502 
     503/* 
    474504 * Bits in the coprozessor 0 config register. 
    475505 */ 
    476506#define CONF_CM_CACHABLE_NO_WA          0 
     
    544574#define CEB_KERNEL      2       /* Count events in kernel mode EXL = ERL = 0 */ 
    545575#define CEB_EXL         1       /* Count events with EXL = 1, ERL = 0 */ 
    546576 
     577/* 
     578 * Bits in ErrCtl register 
     579 */ 
     580#define ECCB_WST        29 
     581#define ECCF_WST        (0x1 << ECCB_WST) 
     582 
    547583#endif /* _ASM_MIPSREGS_H */ 
  • include/cmd_confdefs.h

    a b  
    9494#define CFG_CMD_EXT2    0x1000000000000000ULL   /* EXT2 Support                 */ 
    9595#define CFG_CMD_SNTP    0x2000000000000000ULL   /* SNTP support                 */ 
    9696#define CFG_CMD_DISPLAY 0x4000000000000000ULL   /* Display support              */ 
     97#define CFG_CMD_DHRYSTONE       0x8000000000000000ULL   /* Dhrystone benchmark support          */ 
    9798 
    9899#define CFG_CMD_ALL     0xFFFFFFFFFFFFFFFFULL   /* ALL commands                 */ 
    99100 
     
    141142                        CFG_CMD_SPI     | \ 
    142143                        CFG_CMD_UNIVERSE | \ 
    143144                        CFG_CMD_USB     | \ 
     145                        CFG_CMD_DHRYSTONE | \ 
    144146                        CFG_CMD_VFD     ) 
    145147 
    146148/* Default configuration 
  • new file include/config.h

    - +  
     1/* Automatically generated - do not edit */ 
     2#include <configs/danube.h> 
  • new file include/config.mk

    - +  
     1ARCH   = mips 
     2CPU    = mips 
     3BOARD  = danube 
     4VENDOR = ifx 
     5SOC    = danube 
  • include/flash.h

    a b  
    7979extern unsigned long flash_init (void); 
    8080extern void flash_print_info (flash_info_t *); 
    8181extern int flash_erase  (flash_info_t *, int, int); 
    82 extern int flash_sect_erase (ulong addr_first, ulong addr_last); 
     82extern int flash_sect_erase (ulong addr_first, ulong addr_last, unsigned int bPartialErase); 
    8383extern int flash_sect_protect (int flag, ulong addr_first, ulong addr_last); 
    8484 
    8585/* common/flash.c */ 
     
    299299#define TOSH_ID_FVT160  0xC2            /* TC58FVT160 ID (16 M, top )           */ 
    300300#define TOSH_ID_FVB160  0x43            /* TC58FVT160 ID (16 M, bottom )        */ 
    301301 
     302#define MX_ID_29LV320AB 0x22A822A8      /* MXIC  MX29LV320AB ID (32 M, bottom ) joelin       */ 
     303#define MX_ID_29LV160BB 0x22492249      /* MXIC  MX29LV160BB ID (16 M, bottom ) joelin       */ 
     304#define MX_ID_29LV640BB 0x22cb22cb      /* MXIC  MX29LV640BB ID (64 M, bottom ) joelin       */ 
     305 
    302306/*----------------------------------------------------------------------- 
    303307 * Internal FLASH identification codes 
    304308 * 
     
    422426#define FLASH_S29GL064M 0x00F0          /* Spansion S29GL064M-R6                */ 
    423427#define FLASH_S29GL128N 0x00F1          /* Spansion S29GL128N                   */ 
    424428 
     429#define FLASH_29LV320AB 0x00B0          /* MXIC MX29LV320AB( 32M = 4M x 16 ) joelin 10/07/2004*/ 
     430#define FLASH_29LV160BB 0x00B1          /* MXIC MX29LV160BB( 16M = 2M x 16 ) joelin 11/22/2004*/ 
     431#define FLASH_29LV640BB 0x00B2          /* MXIC MX29LV640BB( 64M = 8M x 16 ) liupeng*/ 
     432 
    425433#define FLASH_UNKNOWN   0xFFFF          /* unknown flash type                   */ 
    426434 
    427435 
  • include/image.h

    a b  
    132132#define IH_COMP_NONE            0       /*  No   Compression Used       */ 
    133133#define IH_COMP_GZIP            1       /* gzip  Compression Used       */ 
    134134#define IH_COMP_BZIP2           2       /* bzip2 Compression Used       */ 
     135#define IH_COMP_LZMA            3       /* lzma Compression Used        */ 
    135136 
    136137#define IH_MAGIC        0x27051956      /* Image Magic Number           */ 
    137138#define IH_NMLEN                32      /* Image Name Length            */ 
  • new file include/syscall.h

    - +  
     1#ifndef __MON_SYS_CALL_H__ 
     2#define __MON_SYS_CALL_H__ 
     3 
     4#ifndef __ASSEMBLY__ 
     5 
     6#include <common.h> 
     7 
     8/* These are declarations of system calls available in C code */ 
     9int  mon_getc(void); 
     10int  mon_tstc(void); 
     11void mon_putc(const char); 
     12void mon_puts(const char*); 
     13void mon_printf(const char* fmt, ...); 
     14void mon_install_hdlr(int, interrupt_handler_t*, void*); 
     15void mon_free_hdlr(int); 
     16void *mon_malloc(size_t); 
     17void mon_free(void*); 
     18void mon_udelay(unsigned long); 
     19unsigned long mon_get_timer(unsigned long); 
     20 
     21#endif    /* ifndef __ASSEMBLY__ */ 
     22 
     23#define NR_SYSCALLS            11        /* number of syscalls */ 
     24 
     25 
     26/* 
     27 * Make sure these functions are in the same order as they 
     28 * appear in the "examples/syscall.S" file !!! 
     29 */ 
     30#define SYSCALL_GETC           0 
     31#define SYSCALL_TSTC           1 
     32#define SYSCALL_PUTC           2 
     33#define SYSCALL_PUTS           3 
     34#define SYSCALL_PRINTF         4 
     35#define SYSCALL_INSTALL_HDLR   5 
     36#define SYSCALL_FREE_HDLR      6 
     37#define SYSCALL_MALLOC         7 
     38#define SYSCALL_FREE           8 
     39#define SYSCALL_UDELAY         9 
     40#define SYSCALL_GET_TIMER     10 
     41 
     42#endif 
  • new file ld_uboot.conf

    - +  
     1TAG_DWNLD() 
     2{ 
     3   0xA0B00000 "u-boot.bin" /* Download u-boot image */ 
     4}; 
     5TAG_START() 
     6{ 
     7   0xA0B00000 
     8}; /* Start u-boot image */ 
  • lib_generic/Makefile

    a b  
    2828COBJS   = bzlib.o bzlib_crctable.o bzlib_decompress.o \ 
    2929          bzlib_randtable.o bzlib_huffman.o \ 
    3030          crc32.o ctype.o display_options.o ldiv.o \ 
    31           string.o vsprintf.o zlib.o 
     31          string.o vsprintf.o zlib.o LzmaDecode.o LzmaWrapper.o 
    3232 
    3333SRCS    := $(COBJS:.o=.c) 
    3434OBJS    := $(addprefix $(obj),$(COBJS)) 
  • lib_mips/board.c

    a b  
    2929#include <net.h> 
    3030#include <environment.h> 
    3131 
     32#ifdef CFG_BOOTSTRAP_CODE 
     33//#include <asm/danube.h> 
     34#undef CONFIG_MICROBZIP2 
     35 
     36#ifdef CONFIG_BZIP2 
     37#include <bzlib.h> 
     38#endif 
     39 
     40#ifdef CONFIG_MICROBZIP2 
     41#include <micro_bzlib.h> 
     42#endif 
     43 
     44#ifdef CONFIG_LZMA 
     45#include <LzmaWrapper.h> 
     46#endif 
     47#endif //CFG_BOOTSTRAP_CODE 
     48 
    3249DECLARE_GLOBAL_DATA_PTR; 
    3350 
    34 #if ( ((CFG_ENV_ADDR+CFG_ENV_SIZE) < CFG_MONITOR_BASE) || \ 
     51#if ( ((CFG_ENV_ADDR+CFG_ENV_SIZE) < BOOTSTRAP_CFG_MONITOR_BASE) || \ 
     52        (CFG_ENV_ADDR >= (BOOTSTRAP_CFG_MONITOR_BASE + CFG_MONITOR_LEN)) ) || \ 
     53    defined(CFG_ENV_IS_IN_NVRAM) && defined(CFG_BOOTSTRAP_CODE) 
     54#define TOTAL_MALLOC_LEN        (CFG_MALLOC_LEN + CFG_ENV_SIZE) 
     55#elif ( ((CFG_ENV_ADDR+CFG_ENV_SIZE) < CFG_MONITOR_BASE) || \ 
    3556      (CFG_ENV_ADDR >= (CFG_MONITOR_BASE + CFG_MONITOR_LEN)) ) || \ 
    3657    defined(CFG_ENV_IS_IN_NVRAM) 
    3758#define TOTAL_MALLOC_LEN        (CFG_MALLOC_LEN + CFG_ENV_SIZE) 
     
    3960#define TOTAL_MALLOC_LEN        CFG_MALLOC_LEN 
    4061#endif 
    4162 
    42 #undef DEBUG 
    43  
    4463extern int timer_init(void); 
    45  
    4664extern int incaip_set_cpuclk(void); 
    4765 
     66#ifdef CFG_BOOTSTRAP_CODE 
     67extern ulong uboot_end_data_bootstrap; 
     68extern ulong uboot_end_bootstrap; 
     69#else //CFG_BOOTSTRAP_CODE 
    4870extern ulong uboot_end_data; 
    4971extern ulong uboot_end; 
     72#endif //CFG_BOOTSTRAP_CODE 
    5073 
    5174ulong monitor_flash_len; 
    5275 
    53 const char version_string[] = 
    54         U_BOOT_VERSION" (" __DATE__ " - " __TIME__ ")"; 
     76const char version_string[] = U_BOOT_VERSION" (" __DATE__ " - " __TIME__ ")"; 
    5577 
     78#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
    5679static char *failed = "*** failed ***\n"; 
     80#endif 
    5781 
    5882/* 
    5983 * Begin and End of memory area for malloc(), and current "brk" 
     
    6286static ulong mem_malloc_end; 
    6387static ulong mem_malloc_brk; 
    6488 
    65  
    6689/* 
    6790 * The Malloc area is immediately below the monitor copy in DRAM 
    6891 */ 
    69 static void mem_malloc_init (void) 
    70 { 
     92#ifdef CFG_BOOTSTRAP_CODE 
     93static void mem_malloc_init (ulong dest_addr) { 
     94#else //CFG_BOOTSTRAP_CODE 
     95static void mem_malloc_init (void) { 
    7196        ulong dest_addr = CFG_MONITOR_BASE + gd->reloc_off; 
    72  
     97#endif //CFG_BOOTSTRAP_CODE 
    7398        mem_malloc_end = dest_addr; 
    7499        mem_malloc_start = dest_addr - TOTAL_MALLOC_LEN; 
    75100        mem_malloc_brk = mem_malloc_start; 
     
    79104                mem_malloc_end - mem_malloc_start); 
    80105} 
    81106 
     107#ifdef CFG_BOOTSTRAP_CODE 
     108void *malloc(unsigned int size) { 
     109        if(size < (mem_malloc_end - mem_malloc_start)) { 
     110                mem_malloc_start += size; 
     111                debug ("malloc : size required = 0x%08lx and pointer = 0x%08lx\n",size,mem_malloc_start - size); 
     112                return (void *)(mem_malloc_start - size); 
     113        } 
     114        return NULL; 
     115} 
     116 
     117void *realloc(void *src,unsigned int size) { 
     118        return NULL; 
     119} 
     120 
     121void free(void *src) { 
     122        return; 
     123} 
     124#endif //CFG_BOOTSTRAP_CODE 
     125 
    82126void *sbrk (ptrdiff_t increment) 
    83127{ 
    84128        ulong old = mem_malloc_brk; 
     
    99143#else 
    100144        int board_type = 0;     /* use dummy arg */ 
    101145#endif 
    102         puts ("DRAM:  "); 
    103146 
     147#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     148#ifdef CONFIG_USE_DDR_RAM 
     149        puts ("DDR-DRAM:  "); 
     150#else 
     151        puts ("DRAM:  "); 
     152#endif 
     153#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
    104154        if ((gd->ram_size = initdram (board_type)) > 0) { 
     155#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
    105156                print_size (gd->ram_size, "\n"); 
     157#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
    106158                return (0); 
    107159        } 
     160#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
    108161        puts (failed); 
     162#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
    109163        return (1); 
    110164} 
    111165 
     166#if !defined(CFG_BOOTSTRAP_CODE) || defined(DEBUG_ENABLE_BOOTSTRAP_PRINTF) 
    112167static int display_banner(void) 
    113168{ 
    114  
    115169        printf ("\n\n%s\n\n", version_string); 
    116170        return (0); 
    117171} 
     172#endif 
    118173 
     174#ifndef CFG_BOOTSTRAP_CODE 
    119175static void display_flash_config(ulong size) 
    120176{ 
    121177        puts ("Flash: "); 
    122178        print_size (size, "\n"); 
    123179} 
     180#endif //CFG_BOOTSTRAP_CODE 
    124181 
    125  
     182#if !defined(CFG_BOOTSTRAP_CODE) || defined(DEBUG_ENABLE_BOOTSTRAP_PRINTF) 
    126183static int init_baudrate (void) 
    127184{ 
     185#ifndef CFG_BOOTSTRAP_CODE 
    128186        char tmp[64];   /* long enough for environment variables */ 
    129187        int i = getenv_r ("baudrate", tmp, sizeof (tmp)); 
    130188 
    131189        gd->baudrate = (i > 0) 
    132190                        ? (int) simple_strtoul (tmp, NULL, 10) 
    133191                        : CONFIG_BAUDRATE; 
    134  
     192#else //CFG_BOOTSTRAP_CODE 
     193        gd->baudrate = CONFIG_BAUDRATE; 
     194#endif //CFG_BOOTSTRAP_CODE 
    135195        return (0); 
    136196} 
    137  
     197#endif 
    138198 
    139199/* 
    140200 * Breath some life into the board... 
     
    159219typedef int (init_fnc_t) (void); 
    160220 
    161221init_fnc_t *init_sequence[] = { 
     222#ifdef CFG_BOOTSTRAP_CODE 
     223        //fuse_prg, 
     224        //timer_init, 
     225        //env_init,             /* initialize environment */ 
     226#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     227        init_baudrate,          /* initialze baudrate settings */ 
     228        serial_init,            /* serial communications setup */ 
     229        console_init_f, 
     230        display_banner,         /* say that we are here */ 
     231        checkboard, 
     232#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     233        init_func_ram, 
     234        NULL, 
     235#else /********** CFG_BOOTSTRAP_CODE **********/ 
    162236        timer_init, 
    163         env_init,               /* initialize environment */ 
    164 #ifdef CONFIG_INCA_IP 
    165         incaip_set_cpuclk,      /* set cpu clock according to environment variable */ 
    166 #endif 
    167237        init_baudrate,          /* initialze baudrate settings */ 
    168238        serial_init,            /* serial communications setup */ 
    169239        console_init_f, 
    170240        display_banner,         /* say that we are here */ 
    171241        checkboard, 
    172242        init_func_ram, 
     243        env_init,               /* initialize environment */ 
    173244        NULL, 
     245#endif //CFG_BOOTSTRAP_CODE 
    174246}; 
    175247 
     248#ifdef CFG_BOOTSTRAP_CODE 
     249extern void bootstrap_relocate_code(ulong addr_sp, gd_t *id, ulong addr); 
    176250 
     251void bootstrap_board_init_f(ulong bootflag) 
     252#else 
    177253void board_init_f(ulong bootflag) 
     254#endif 
    178255{ 
    179256        gd_t gd_data, *id; 
    180257        bd_t *bd; 
    181258        init_fnc_t **init_fnc_ptr; 
    182         ulong addr, addr_sp, len = (ulong)&uboot_end - CFG_MONITOR_BASE; 
     259#ifdef CFG_BOOTSTRAP_CODE 
     260        ulong addr, addr_sp, len = (ulong)&uboot_end_bootstrap - BOOTSTRAP_CFG_MONITOR_BASE; 
     261        ulong lzmaImageaddr = 0; 
     262#else //CFG_BOOTSTRAP_CODE 
     263        ulong addr, addr_sp, len = CFG_MONITOR_LEN; 
     264#endif //CFG_BOOTSTRAP_CODE 
    183265        ulong *s; 
    184266#ifdef CONFIG_PURPLE 
    185267        void copy_code (ulong); 
     
    219301        addr -= len; 
    220302        addr &= ~(16 * 1024 - 1); 
    221303 
    222         debug ("Reserving %ldk for U-Boot at: %08lx\n", len >> 10, addr); 
     304        debug ("Reserving %d Bytes for U-Boot at: %08lx\n", len, addr); 
    223305 
    224306         /* Reserve memory for malloc() arena. 
    225307         */ 
    226308        addr_sp = addr - TOTAL_MALLOC_LEN; 
    227         debug ("Reserving %dk for malloc() at: %08lx\n", 
    228                         TOTAL_MALLOC_LEN >> 10, addr_sp); 
     309        debug ("Reserving %d Bytes for malloc() at: %08lx\n", TOTAL_MALLOC_LEN, addr_sp); 
    229310 
    230311        /* 
    231312         * (permanently) allocate a Board Info struct 
     
    234315        addr_sp -= sizeof(bd_t); 
    235316        bd = (bd_t *)addr_sp; 
    236317        gd->bd = bd; 
    237         debug ("Reserving %d Bytes for Board Info at: %08lx\n", 
    238                         sizeof(bd_t), addr_sp); 
     318        debug ("Reserving %d Bytes for Board Info at: %08lx\n", sizeof(bd_t), addr_sp); 
    239319 
    240320        addr_sp -= sizeof(gd_t); 
    241321        id = (gd_t *)addr_sp; 
    242         debug ("Reserving %d Bytes for Global Data at: %08lx\n", 
    243                         sizeof (gd_t), addr_sp); 
     322        debug ("Reserving %d Bytes for Global Data at: %08lx\n", sizeof (gd_t), addr_sp); 
    244323 
    245324        /* Reserve memory for boot params. 
    246325         */ 
    247326        addr_sp -= CFG_BOOTPARAMS_LEN; 
    248327        bd->bi_boot_params = addr_sp; 
    249         debug ("Reserving %dk for boot params() at: %08lx\n", 
    250                         CFG_BOOTPARAMS_LEN >> 10, addr_sp); 
     328        debug ("Reserving %dk for boot params() at: %08lx\n", CFG_BOOTPARAMS_LEN >> 10, addr_sp); 
    251329 
    252330        /* 
    253331         * Finally, we set up a new (bigger) stack. 
     
    279357        copy_code(addr); 
    280358#endif 
    281359 
     360#ifdef CFG_BOOTSTRAP_CODE 
     361        lzmaImageaddr = (ulong)&uboot_end_data_bootstrap; 
     362#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     363        puts("\n BOOTSTRAP: relocate_code start"); 
     364#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     365        bootstrap_relocate_code (addr_sp, id, addr); 
     366#else //CFG_BOOTSTRAP_CODE 
     367        puts("\n relocate_code start"); 
    282368        relocate_code (addr_sp, id, addr); 
     369#endif //CFG_BOOTSTRAP_CODE 
    283370 
    284371        /* NOTREACHED - relocate_code() does not return */ 
    285372} 
     
    292379 * 
    293380 ************************************************************************ 
    294381 */ 
     382#ifdef CFG_BOOTSTRAP_CODE 
     383void bootstrap_board_init_r (gd_t *id, ulong dest_addr) { 
     384        int i; 
     385        ulong   addr; 
     386        ulong   data, len, checksum; 
     387        ulong  *len_ptr; 
     388        image_header_t header; 
     389        image_header_t *hdr = &header; 
     390        unsigned int destLen; 
     391        int (*fn)(void); 
     392 
     393#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     394        puts("\n BOOTSTRAP: relocate_code finish.\n"); 
     395#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     396 
     397        /* initialize malloc() area */ 
     398        mem_malloc_init(dest_addr); 
     399 
     400        addr = (char *)(BOOTSTRAP_CFG_MONITOR_BASE + ((ulong)&uboot_end_data_bootstrap - dest_addr)); 
     401        memmove (&header, (char *)addr, sizeof(image_header_t)); 
     402 
     403        if (ntohl(hdr->ih_magic) != IH_MAGIC) { 
     404#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     405                printf ("Bad Magic Number at address 0x%08lx\n",addr); 
     406#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     407                return; 
     408        } 
    295409 
     410        data = (ulong)&header; 
     411        len  = sizeof(image_header_t); 
     412 
     413        checksum = ntohl(hdr->ih_hcrc); 
     414        hdr->ih_hcrc = 0; 
     415        if (crc32 (0, (unsigned char *)data, len) != checksum) { 
     416#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     417                printf ("Bad Header Checksum\n"); 
     418#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     419                return; 
     420        } 
     421 
     422        data = addr + sizeof(image_header_t); 
     423        len  = ntohl(hdr->ih_size); 
     424        len_ptr = (ulong *)data; 
     425 
     426#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     427        debug ("Disabling all the interrupts\n"); 
     428#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     429        disable_interrupts(); 
     430 
     431#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     432        debug ("   Uncompressing UBoot Image ... \n" ); 
     433#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     434        /* 
     435         * If we've got less than 4 MB of malloc() space, 
     436         * use slower decompression algorithm which requires 
     437         * at most 2300 KB of memory. 
     438         */ 
     439        destLen = 0x0; 
     440 
     441#ifdef CONFIG_BZIP2 
     442        i = BZ2_bzBuffToBuffDecompress ((char*)ntohl(hdr->ih_load), 
     443                                        0x400000, (char *)data, len, 
     444                                        CFG_MALLOC_LEN < (4096 * 1024), 0); 
     445        if (i != BZ_OK) { 
     446#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     447                        printf ("BUNZIP2 ERROR %d - must RESET board to recover\n", i); 
     448#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     449                        return; 
     450        } 
     451#elif CONFIG_MICROBZIP2 
     452        i = micro_bzBuffToBuffDecompress ((char*)ntohl(hdr->ih_load), 
     453                                        &destLen, (char *)data, len, 
     454                                        CFG_MALLOC_LEN < (4096 * 1024), 0); 
     455        if (i != RETVAL_OK) { 
     456#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     457                printf ("MICRO_BUNZIP2 ERROR %d - must RESET board to recover\n", i); 
     458#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     459                return; 
     460        } 
     461#elif CONFIG_LZMA 
     462        i = lzma_inflate ((unsigned char *)data, len, (unsigned char*)ntohl(hdr->ih_load), &destLen); 
     463        if (i != LZMA_RESULT_OK) { 
     464#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     465                printf ("LZMA ERROR %d - must RESET board to recover\n", i); 
     466#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     467                return; 
     468        } 
     469#else 
     470#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     471        printf ("NONE Compressing u-boot body!!\n"); 
     472#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     473        memmove ((void *)ntohl(hdr->ih_load), (uchar *)data, len); 
     474        destLen = len; 
     475#endif 
     476#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     477        debug ("   Uncompression completed successfully with destLen %d.\n ",destLen ); 
     478        debug ("Head: Jumping to u-boot in the ram at 0x%08lx\n", CFG_MONITOR_BASE); 
     479#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
     480 
     481        fn = ntohl(hdr->ih_load); 
     482        (*fn)(); 
     483        hang (); 
     484} 
     485#else //CFG_BOOTSTRAP_CODE 
    296486void board_init_r (gd_t *id, ulong dest_addr) 
    297487{ 
    298488        cmd_tbl_t *cmdtp; 
     
    305495        bd_t *bd; 
    306496        int i; 
    307497 
     498        puts("\n relocate_code finish.\n"); 
     499 
    308500        gd = id; 
    309501        gd->flags |= GD_FLG_RELOC;      /* tell others: relocation done */ 
    310502 
     
    321513                ulong addr; 
    322514 
    323515                addr = (ulong) (cmdtp->cmd) + gd->reloc_off; 
    324 #if 0 
    325                 printf ("Command \"%s\": 0x%08lx => 0x%08lx\n", 
    326                                 cmdtp->name, (ulong) (cmdtp->cmd), addr); 
    327 #endif 
    328                 cmdtp->cmd = 
    329                         (int (*)(struct cmd_tbl_s *, int, int, char *[]))addr; 
     516 
     517                debug ("Command \"%s\": 0x%08lx => 0x%08lx\n", cmdtp->name, (ulong) (cmdtp->cmd), addr); 
     518 
     519                cmdtp->cmd = (int (*)(struct cmd_tbl_s *, int, int, char *[]))addr; 
    330520 
    331521                addr = (ulong)(cmdtp->name) + gd->reloc_off; 
    332522                cmdtp->name = (char *)addr; 
     
    363553        /* initialize malloc() area */ 
    364554        mem_malloc_init(); 
    365555        malloc_bin_reloc(); 
     556#if (CONFIG_COMMANDS & CFG_CMD_NAND) 
     557        nand_init();    /* go init the NAND */ 
     558#endif 
    366559 
     560#ifdef CONFIG_SPI 
     561        spi_init_f();            /* go init the SPI flash */ 
     562#endif 
    367563        /* relocate environment function pointers etc. */ 
    368564        env_relocate(); 
    369565 
     
    424620 
    425621        /* NOTREACHED - no way out of command loop except booting */ 
    426622} 
     623#endif //CFG_BOOTSTRAP_CODE 
    427624 
    428625void hang (void) 
    429626{ 
     627#ifdef DEBUG_ENABLE_BOOTSTRAP_PRINTF 
    430628        puts ("### ERROR ### Please RESET the board ###\n"); 
     629#endif //DEBUG_ENABLE_BOOTSTRAP_PRINTF 
    431630        for (;;); 
    432631} 
  • lib_mips/time.c

    a b  
    8080                /*NOP*/; 
    8181} 
    8282 
     83#ifndef CFG_BOOTSTRAP_CODE 
     84void mdelay (unsigned long msec) 
     85{ 
     86       int i,j; 
     87       for(i=0;i<msec;i++) 
     88       { 
     89          udelay(1000); 
     90 
     91       } 
     92 
     93} 
     94#endif 
     95 
    8396/* 
    8497 * This function is derived from PowerPC code (read timebase as long long). 
    8598 * On MIPS it just returns the timer value. 
  • net/eth.c

    a b  
    2525#include <command.h> 
    2626#include <net.h> 
    2727#include <miiphy.h> 
     28#if defined(CONFIG_IFX_MIPS) 
     29#       include "ifx_eth.c" 
     30#endif 
    2831 
    2932#if (CONFIG_COMMANDS & CFG_CMD_NET) && defined(CONFIG_NET_MULTI) 
    3033 
     
    5457extern int skge_initialize(bd_t*); 
    5558extern int tsec_initialize(bd_t*, int, char *); 
    5659extern int npe_initialize(bd_t *); 
     60#if defined(CONFIG_IFX_MIPS) 
     61        IFX_ETH_INITIALIZE_EXTERN 
     62#endif 
    5763 
    5864static struct eth_device *eth_devices, *eth_current; 
    5965 
     
    235241#if defined(CONFIG_RTL8169) 
    236242        rtl8169_initialize(bis); 
    237243#endif 
    238  
     244#if defined(CONFIG_IFX_MIPS) 
     245        IFX_ETH_INITIALIZE(bis) 
     246#endif 
    239247        if (!eth_devices) { 
    240248                puts ("No ethernet found.\n"); 
    241249        } else { 
  • tools/mkimage.c

    a b  
    2828#ifndef __WIN32__ 
    2929#include <netinet/in.h>         /* for host / network byte order conversions    */ 
    3030#endif 
     31#include <sys/types.h> 
    3132#include <sys/mman.h> 
    3233#include <sys/stat.h> 
    3334#include <time.h> 
     
    138139    {   IH_COMP_NONE,   "none",         "uncompressed",         }, 
    139140    {   IH_COMP_BZIP2,  "bzip2",        "bzip2 compressed",     }, 
    140141    {   IH_COMP_GZIP,   "gzip",         "gzip compressed",      }, 
     142    {   IH_COMP_LZMA,   "lzma",         "lzma compressed",      }, 
    141143    {   -1,             "",             "",                     }, 
    142144}; 
    143145 
     
    445447        } 
    446448 
    447449        /* We're a bit of paranoid */ 
    448 #if defined(_POSIX_SYNCHRONIZED_IO) && !defined(__sun__) && !defined(__FreeBSD__) 
     450#if defined(_POSIX_SYNCHRONIZED_IO) && !defined(__sun__) && !defined(__FreeBSD__) && !defined(__APPLE__) 
    449451        (void) fdatasync (ifd); 
    450452#else 
    451453        (void) fsync (ifd); 
     
    495497        (void) munmap((void *)ptr, sbuf.st_size); 
    496498 
    497499        /* We're a bit of paranoid */ 
    498 #if defined(_POSIX_SYNCHRONIZED_IO) && !defined(__sun__) && !defined(__FreeBSD__) 
     500#if defined(_POSIX_SYNCHRONIZED_IO) && !defined(__sun__) && !defined(__FreeBSD__) && !defined(__APPLE__) 
    499501        (void) fdatasync (ifd); 
    500502#else 
    501503        (void) fsync (ifd); 
  • cpu/mips/cache.S

    a b  
    2929#include <asm/mipsregs.h> 
    3030#include <asm/addrspace.h> 
    3131#include <asm/cacheops.h> 
    32  
     32#if defined(CONFIG_IFX_MIPS) 
     33#       include "danube/ifx_cache.S" 
     34#endif 
    3335 
    3436        /* 16KB is the maximum size of instruction and data caches on 
    3537         * MIPS 4K. 
     
    155157         */ 
    156158 
    157159        mtc0    zero, CP0_TAGLO 
     160#if defined(CONFIG_IFX_MIPS) && defined(IFX_CACHE_EXTRA_INVALID_TAG) 
     161        IFX_CACHE_EXTRA_INVALID_TAG 
     162#endif 
    158163 
    159164   /* 
    160165    * The caches are probably in an indeterminate state, 
     
    171176        move    a1, a2 
    172177        icacheopn(a0,a1,a2,a3,121,(Index_Store_Tag_I,Fill)) 
    173178 
     179#if defined(CONFIG_IFX_MIPS) && defined(IFX_CACHE_EXTRA_OPERATION) 
     180        IFX_CACHE_EXTRA_OPERATION 
     181#else 
    174182        /* To support Orion/R4600, we initialise the data cache in 3 passes. 
    175183         */ 
    176184 
     
    200208        move    a3, t5          # dcacheLineSize 
    201209        move    a1, a2 
    202210        icacheop(a0,a1,a2,a3,Index_Store_Tag_D) 
     211#endif 
    203212 
    204213        j  ra 
    205214        .end  mips_cache_reset 
  • cpu/mips/config.mk

    a b  
    2020# Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
    2121# MA 02111-1307 USA 
    2222# 
    23 v=$(shell \ 
    24 $(CROSS_COMPILE)as --version|grep "GNU assembler"|awk '{print $$3}'|awk -F . '{print $$2}') 
    25 MIPSFLAGS=$(shell \ 
    26 if [ "$v" -lt "14" ]; then \ 
    27         echo "-mcpu=4kc"; \ 
    28 else \ 
    29         echo "-march=4kc -mtune=4kc"; \ 
    30 fi) 
    3123 
     24ifndef PLATFORM_CPU 
     25PLATFORM_CPU = mips32 
     26endif 
     27 
     28MIPSFLAGS +=$(call cc-option,-march=$(PLATFORM_CPU) -mtune=$(PLATFORM_CPU),-mcpu=$(PLATFORM_CPU)) 
     29 
     30ifeq ($(CROSS_COMPILE_UCLIBC),1) 
     31ifneq (,$(findstring mipsel,$(CROSS_COMIPLE))) 
     32ENDIANNESS = -el 
     33else 
     34ENDIANNESS = -eb 
     35endif 
     36else 
    3237ifneq (,$(findstring 4KCle,$(CROSS_COMPILE))) 
    3338ENDIANNESS = -EL 
    3439else 
    3540ENDIANNESS = -EB 
    3641endif 
     42endif 
    3743 
    3844MIPSFLAGS += $(ENDIANNESS) -mabicalls 
    3945 
  • cpu/mips/cpu.c

    a b  
    2323 
    2424#include <common.h> 
    2525#include <command.h> 
    26 #include <asm/inca-ip.h> 
     26#if defined(CONFIG_INCA_IP) 
     27#       include <asm/inca-ip.h> 
     28#elif defined(CONFIG_IFX_MIPS) 
     29#       include <asm/danube.h> 
     30#       include "danube/ifx_cpu.c" 
     31#endif 
    2732#include <asm/mipsregs.h> 
    2833 
    2934int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) 
     
    3439        void (*f)(void) = (void *) 0xbfc00000; 
    3540 
    3641        f(); 
     42#elif defined(CONFIG_IFX_MIPS) 
     43        IFX_CPU_RESET; 
    3744#endif 
    3845        fprintf(stderr, "*** reset failed ***\n"); 
    3946        return 0; 
  • cpu/mips/incaip_clock.c

    a b  
    2222 */ 
    2323 
    2424#include <common.h> 
    25 #include <asm/inca-ip.h> 
    2625 
     26#ifdef CONFIG_INCA_IP 
     27#include <asm/inca-ip.h> 
    2728 
    2829/******************************************************************************* 
    2930* 
     
    114115 
    115116        return 0; 
    116117} 
     118 
     119#endif /* CONFIG_INCA_IP */ 
  • cpu/mips/start.S

    a b  
    2727#include <version.h> 
    2828#include <asm/regdef.h> 
    2929#include <asm/mipsregs.h> 
    30  
     30#if defined(CONFIG_IFX_MIPS) 
     31#       include "danube/ifx_start.S" 
     32#endif 
    3133 
    3234#define RVECENT(f,n) \ 
    3335   b f; nop 
     
    3638   li k0,bev 
    3739 
    3840        .set noreorder 
    39  
     41#ifdef CFG_BOOTSTRAP_CODE 
     42        .globl _start_bootstrap 
     43#else 
    4044        .globl _start 
     45#endif 
    4146        .text 
     47#ifdef CFG_BOOTSTRAP_CODE 
     48_start_bootstrap: 
     49#else 
    4250_start: 
     51#endif 
    4352        RVECENT(reset,0)        /* U-boot entry point */ 
    4453        RVECENT(reset,1)        /* software reboot */ 
    45 #if defined(CONFIG_INCA_IP) 
     54#if defined(CONFIG_INCA_IP) || defined(CONFIG_INCA_IP2) 
    4655        .word INFINEON_EBU_BOOTCFG /* EBU init code, fetched during booting */ 
    4756        .word 0x00000000           /* phase of the flash                    */ 
     57#elif defined(CONFIG_IFX_MIPS) && defined(IFX_EBU_BOOTCFG_DWORD) 
     58        IFX_EBU_BOOTCFG_DWORD 
    4859#elif defined(CONFIG_PURPLE) 
    4960        .word INFINEON_EBU_BOOTCFG /* EBU init code, fetched during booting */ 
    5061        .word INFINEON_EBU_BOOTCFG /* EBU init code, fetched during booting */ 
     
    181192         * 128 * 8 == 1024 == 0x400 
    182193         * so this is address R_VEC+0x400 == 0xbfc00400 
    183194         */ 
     195#if defined(CONFIG_IFX_MIPS) && defined(IFX_MORE_RESERVED_VECTORS) 
     196        IFX_MORE_RESERVED_VECTORS 
     197#else 
    184198#ifdef CONFIG_PURPLE 
    185199/* 0xbfc00400 */ 
    186200        .word   0xdc870000 
     
    205219        .word   0x00000000 
    206220        .word   0x00000000 
    207221#endif /* CONFIG_PURPLE */ 
     222#endif /* CONFIG_IFX_MIPS */ 
    208223        .align 4 
    209224reset: 
     225#if defined(CONFIG_IFX_MIPS) && defined(IFX_RESET_PRECHECK) 
     226        IFX_RESET_PRECHECK 
     227#endif 
    210228 
    211229        /* Clear watch registers. 
    212230         */ 
     
    226244        /* CAUSE register */ 
    227245        mtc0    zero, CP0_CAUSE 
    228246 
     247#if defined(CONFIG_IFX_MIPS) && defined(IFX_CPU_EXTRA_INIT) 
     248        IFX_CPU_EXTRA_INIT 
     249#endif 
     250 
    229251        /* Init Timer */ 
    230252        mtc0    zero, CP0_COUNT 
    231253        mtc0    zero, CP0_COMPARE 
     
    252274        nop 
    253275#endif 
    254276 
     277#if defined(CONFIG_IFX_MIPS) && defined(IFX_CPU1_SUPPORT) && defined(IFX_SKIP_LOWLEVEL_INIT) 
     278        IFX_SKIP_LOWLEVEL_INIT 
     279#endif 
     280#ifdef CFG_BOOTSTRAP_CODE 
    255281        /* Initialize any external memory. 
    256282         */ 
    257283        la      t9, lowlevel_init 
    258284        jalr    t9 
    259285        nop 
     286#endif 
     287lowlevel_init_done: 
     288 
     289        beq     s0, zero, init_cache_0 
     290        nop 
     291 
     292#if defined(CONFIG_IFX_MIPS) && defined(IFX_CPU1_SUPPORT) && defined(IFX_CPU1_INIT) 
     293        IFX_CPU1_INIT 
     294#endif 
    260295 
     296init_cache_0: 
    261297        /* Initialize caches... 
    262298         */ 
    263299        la      t9, mips_cache_reset 
     
    266302 
    267303        /* ... and enable them. 
    268304         */ 
     305#if defined(CONFIG_IFX_MIPS) && defined(IFX_CACHE_OPER_MODE) 
     306        IFX_CACHE_OPER_MODE 
     307#else 
    269308        li      t0, CONF_CM_CACHABLE_NONCOHERENT 
     309#endif 
    270310        mtc0    t0, CP0_CONFIG 
    271311 
    272312 
     
    280320        li      t0, CFG_SDRAM_BASE + CFG_INIT_SP_OFFSET 
    281321        la      sp, 0(t0) 
    282322 
     323#if defined(CONFIG_IFX_MIPS) && defined(IFX_CPU1_SUPPORT) && defined(IFX_BOOT_CLEAR) 
     324        IFX_BOOT_CLEAR 
     325#endif 
     326 
     327#ifdef CFG_BOOTSTRAP_CODE 
     328        la      t9, bootstrap_board_init_f 
     329#else 
    283330        la      t9, board_init_f 
     331#endif 
    284332        j       t9 
    285333        nop 
    286334 
     335#ifdef CFG_BOOTSTRAP_CODE 
     336/* 
     337 * void jump_unconditional (addr) 
     338 * This function simply jumps to the location pointed by a0. 
     339 * a0 = target_location 
     340 * 
     341 */ 
     342        .globl  jump_unconditional 
     343        .ent    jump_unconditional 
     344jump_unconditional: 
     345        move t9, a0 
     346        j       t9 
     347        nop 
     348        .end    jump_unconditional 
     349 
     350#endif 
    287351 
    288352/* 
    289353 * void relocate_code (addr_sp, gd, addr_moni) 
     354 * void bootstrap_relocate_code (addr_sp, gd, addr_moni) 
    290355 * 
    291356 * This "function" does not return, instead it continues in RAM 
    292357 * after relocating the monitor code. 
     
    295360 * a1 = gd 
    296361 * a2 = destination address 
    297362 */ 
     363#ifdef CFG_BOOTSTRAP_CODE 
     364        .globl  bootstrap_relocate_code 
     365        .ent    bootstrap_relocate_code 
     366bootstrap_relocate_code: 
     367#else 
    298368        .globl  relocate_code 
    299369        .ent    relocate_code 
    300370relocate_code: 
     371#endif 
    301372        move    sp, a0          /* Set new stack pointer                */ 
    302373 
     374#ifdef CFG_BOOTSTRAP_CODE 
     375        li      t0, BOOTSTRAP_CFG_MONITOR_BASE 
     376#else 
    303377        li      t0, CFG_MONITOR_BASE 
     378#endif 
    304379        la      t3, in_ram 
    305380        lw      t2, -12(t3)     /* t2 <-- uboot_end_data        */ 
    306381        move    t1, a2 
     
    311386         * New GOT-PTR = (old GOT-PTR - CFG_MONITOR_BASE) + Destination Address 
    312387         */ 
    313388        move    t6, gp 
     389#ifdef CFG_BOOTSTRAP_CODE 
     390        sub     gp, BOOTSTRAP_CFG_MONITOR_BASE 
     391#else 
    314392        sub     gp, CFG_MONITOR_BASE 
     393#endif 
    315394        add     gp, a2                  /* gp now adjusted              */ 
    316395        sub     t6, gp, t6              /* t6 <-- relocation offset     */ 
    317396 
     
    337416 
    338417        /* Jump to where we've relocated ourselves. 
    339418         */ 
     419#ifdef CFG_BOOTSTRAP_CODE 
     420        addi    t0, a2, in_ram - _start_bootstrap 
     421#else 
    340422        addi    t0, a2, in_ram - _start 
     423#endif 
    341424        j       t0 
    342425        nop 
    343426 
     427#ifdef CFG_BOOTSTRAP_CODE 
     428        .word   uboot_end_data_bootstrap 
     429        .word   uboot_end_bootstrap 
     430#else 
    344431        .word   uboot_end_data 
    345432        .word   uboot_end 
     433#endif 
    346434        .word   num_got_entries 
    347435 
    348436in_ram: 
     
    374462        sw      zero, 0(t1)     /* delay slot                   */ 
    375463 
    376464        move    a0, a1 
     465#ifdef CFG_BOOTSTRAP_CODE 
     466        la      t9, bootstrap_board_init_r 
     467#else 
    377468        la      t9, board_init_r 
     469#endif 
    378470        j       t9 
    379471        move    a1, a2          /* delay slot                   */ 
    380472 
     473#ifdef CFG_BOOTSTRAP_CODE 
     474        .end    bootstrap_relocate_code 
     475#else 
    381476        .end    relocate_code 
    382  
     477#endif 
    383478 
    384479        /* Exception handlers. 
    385480         */ 
     
    388483 
    389484romExcHandle: 
    390485        b romExcHandle 
     486 
     487romEjtagHandle: 
     488#ifdef CFG_BOOTSTRAP_CODE 
     489        deret 
     490        nop 
     491#endif /* CFG_BOOTSTRAP_CODE */ 
     4921: 
     493        b 1b 
     494 
     495        /* Additional handlers. 
     496         */ 
     497#if defined(CONFIG_IFX_MIPS) 
     498#if defined(IFX_MIPS_HANDLER_1) 
     499ifx_mips_handler_1: 
     500        IFX_MIPS_HANDLER_1 
     501#endif 
     502#endif 
Note: See TracBrowser for help on using the repository browser.