diff options
| author | blogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-12-08 14:37:12 +0000 | 
|---|---|---|
| committer | blogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-12-08 14:37:12 +0000 | 
| commit | 940b26969ef3e44f13780b47e128656a38201173 (patch) | |
| tree | 56b15153cb21e792381e56b903bafe5f4e222acb /package/uboot-ifxmips/files | |
| parent | 1b18fb38dc7e0ff0fb1e086a7d05654be068ce7c (diff) | |
make uboot work on arcaydian board
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@18700 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/uboot-ifxmips/files')
| -rw-r--r-- | package/uboot-ifxmips/files/board/ifx/danube/flash.c | 39 | ||||
| -rw-r--r-- | package/uboot-ifxmips/files/include/configs/danube.h | 4 | 
2 files changed, 38 insertions, 5 deletions
diff --git a/package/uboot-ifxmips/files/board/ifx/danube/flash.c b/package/uboot-ifxmips/files/board/ifx/danube/flash.c index f8a543dbe..bc919c1c1 100644 --- a/package/uboot-ifxmips/files/board/ifx/danube/flash.c +++ b/package/uboot-ifxmips/files/board/ifx/danube/flash.c @@ -83,21 +83,25 @@ unsigned long flash_init (void)  	unsigned long size = 0;  	int i; +	printf("%s:%s[%d]\n", __FILE__, __func__, __LINE__);  	/* Init: no FLASHes known */  	for (i=0; i < CFG_MAX_FLASH_BANKS; ++i) {         // 1 bank   		ulong flashbase = (i == 0) ? PHYS_FLASH_1 : PHYS_FLASH_2;      // 0xb0000000,  0xb4000000 -       volatile ulong * buscon = (ulong *) +       printf("%s:%s[%d]\n", __FILE__, __func__, __LINE__); +	   volatile ulong * buscon = (ulong *)  			((i == 0) ? DANUBE_EBU_BUSCON0 : DANUBE_EBU_BUSCON1);  		/* Disable write protection */  //		*buscon &= ~AMAZON_EBU_BUSCON0_WRDIS;  		/* Enable write protection */  		*buscon |= DANUBE_EBU_BUSCON0_WRDIS; +printf("%s:%s[%d]\n", __FILE__, __func__, __LINE__);  #if 1  		memset(&flash_info[i], 0, sizeof(flash_info_t));  #endif +printf("%s:%s[%d]\n", __FILE__, __func__, __LINE__);  		flash_info[i].size =   			flash_get_size((FPW *)flashbase, &flash_info[i]); @@ -235,6 +239,22 @@ static void flash_get_offsets (ulong base, flash_info_t *info)  			info->start[i] = base + ((i - 7) * sect_size);  		}  	}	 +	else if(((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_AMD) +		&& ((info->flash_id & FLASH_TYPEMASK)==FLASH_29LV320B)){ +		int bootsect_size;	/* number of bytes/boot sector	*/ +		int sect_size;		/* number of bytes/regular sector */ + +		bootsect_size = 0x00002000 * (sizeof(FPW)/2); +		sect_size =     0x00010000 * (sizeof(FPW)/2); + +		/* set sector offsets for bottom boot block type	*/ +		for (i = 0; i < 8; ++i) { +			info->start[i] = base + (i * bootsect_size); +		} +		for (i = 8; i < info->sector_count; i++) { +			info->start[i] = base + ((i - 7) * sect_size); +		} +	}	  //joelin add for MX29LV160BB-- SA0=16K,SA1,SA2=8K,SA3=32K bytes ,SA4~SA34 :sector size=64k bytes			  	else if(((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_MX)  		&& ((info->flash_id & FLASH_TYPEMASK)==FLASH_29LV160BB)){ @@ -378,6 +398,7 @@ void flash_print_info (flash_info_t *info)  	case FLASH_29LV640BB:		//liupeng for MXIC FLASH_29LV640BB  		fmt = "29LV640BB (64 Mbit, boot sector SA0~SA126 size 64k bytes,other sectors SA127~SA135 size 8k bytes)\n";  		break;	 +	case FLASH_29LV320B:		//joelin for MXIC FLASH_29LV320AB  	case FLASH_29LV320AB:		//joelin for MXIC FLASH_29LV320AB  		fmt = "29LV320AB (32 Mbit, boot sector SA0~SA7 size 8K bytes,other sectors SA8~SA70 size 64K bytes)\n";  		break;	 @@ -437,24 +458,28 @@ ulong flash_get_size (FPWV *addr, flash_info_t *info)  	 * This works for any bus width and any FLASH device width.  	 */ -//	printf("\n type is %08lx", addr[1] & 0xff); 	//joelin 10/06/2004 flash type -//	printf("\n type is %08lx", addr[0] & 0xff); 	//joelin 10/06/2004 flash type +	printf("\n type is %08lx", addr[1] & 0xff); 	//joelin 10/06/2004 flash type +	printf("\n type is %08lx", addr[0] & 0xff); 	//joelin 10/06/2004 flash type  //		asm("SYNC");	   	switch (addr[1] & 0xff) {  	case (uchar)AMD_MANUFACT: +		printf("%s:%s[%d]\n", __FILE__, __func__, __LINE__);  		info->flash_id = FLASH_MAN_AMD;  		break;  	case (uchar)INTEL_MANUFACT:			// 0x0089 +		printf("%s:%s[%d]\n", __FILE__, __func__, __LINE__);  		info->flash_id = FLASH_MAN_INTEL; //0x00300000  		break;  //joelin for MXIC		  	case (uchar)MX_MANUFACT:		// 0x00c2 +		printf("%s:%s[%d]\n", __FILE__, __func__, __LINE__);  		info->flash_id = FLASH_MAN_MX ;//0x00030000  		break;  	default: +		printf("%s:%s[%d]\n", __FILE__, __func__, __LINE__);  		info->flash_id = FLASH_UNKNOWN;  		info->sector_count = 0;  		info->size = 0; @@ -464,8 +489,15 @@ ulong flash_get_size (FPWV *addr, flash_info_t *info)  		break;*/  	} +	printf("%s:%s[%d] %08lx\n", __FILE__, __func__, __LINE__, addr[0]);  	/* Check 16 bits or 32 bits of ID so work on 32 or 16 bit bus. */  	if (info->flash_id != FLASH_UNKNOWN) switch (addr[0]) { +	case (FPW)EON_ID_EN29LV320B: +		printf("%s:%s[%d]\n", __FILE__, __func__, __LINE__); +		info->flash_id += FLASH_29LV320B; +		info->sector_count = 71; +		info->size = 0x00400000 * (sizeof(FPW)/2); +		break;  	case (FPW)AMD_ID_LV640U:	/* 29LV640 and 29LV641 have same ID */  		info->flash_id += FLASH_AM640U;  		info->sector_count = 128; @@ -606,6 +638,7 @@ int	flash_erase (flash_info_t *info, int s_first, int s_last)  	case FLASH_28F320J3A:  	case FLASH_AM640U:  	case FLASH_29LV640BB:	//liupeng for MXIC MX29LV640BB +	case FLASH_29LV320B:  	case FLASH_29LV320AB:	//joelin for MXIC MX29LV320AB  	case FLASH_29LV160BB:	//joelin for MXIC MX29LV160BB  		break; diff --git a/package/uboot-ifxmips/files/include/configs/danube.h b/package/uboot-ifxmips/files/include/configs/danube.h index ed95f3361..cd2d247fe 100644 --- a/package/uboot-ifxmips/files/include/configs/danube.h +++ b/package/uboot-ifxmips/files/include/configs/danube.h @@ -36,10 +36,10 @@  #ifdef DANUBE_USE_DDR_RAM  //#define  DANUBE_DDR_RAM_111M -#define DANUBE_DDR_RAM_166M +//#define DANUBE_DDR_RAM_166M  //#define PROMOSDDR400  //#define DDR_SAMSUNG_166M -//#define DDR_PSC_166M +#define DDR_PSC_166M  //#define DANUBE_DDR_RAM_133M  #define DANUBE_DDR_RAM_SIZE	32	/* 32M DDR-DRAM for reference board */  #endif  | 
