Update for NC650 board. Add NC650 based CP850 configuration.
Signed-off-by: dzu@denx.de <dzu@denx.de>
This commit is contained in:
parent
8419c01304
commit
a367d42640
@ -2,6 +2,11 @@
|
||||
Changes since U-Boot 1.1.4:
|
||||
======================================================================
|
||||
|
||||
* Update for NC650 board:
|
||||
- Support rev1 and rev2 hardware
|
||||
- adapt to new NAND layer
|
||||
- add CP850 configuration based on NC650
|
||||
|
||||
* MPC5200: enable snooping of DMA transactions on XLB even if no PCI
|
||||
is configured; othrwise DMA accesses aren't cache coherent which
|
||||
causes for example USB to fail.
|
||||
|
17
Makefile
17
Makefile
@ -633,8 +633,21 @@ NETTA2_config: unconfig
|
||||
}
|
||||
@./mkconfig -a $(call xtract_NETTA2,$@) ppc mpc8xx netta2
|
||||
|
||||
NC650_config: unconfig
|
||||
@./mkconfig $(@:_config=) ppc mpc8xx nc650
|
||||
NC650_Rev1_config \
|
||||
NC650_Rev2_config \
|
||||
CP850_config: unconfig
|
||||
@ >include/config.h
|
||||
@[ -z "$(findstring CP850,$@)" ] || \
|
||||
{ echo "#define CONFIG_CP850 1" >>include/config.h ; \
|
||||
echo "#define CONFIG_IDS852_REV2 1" >>include/config.h ; \
|
||||
}
|
||||
@[ -z "$(findstring Rev1,$@)" ] || \
|
||||
{ echo "#define CONFIG_IDS852_REV1 1" >>include/config.h ; \
|
||||
}
|
||||
@[ -z "$(findstring Rev2,$@)" ] || \
|
||||
{ echo "#define CONFIG_IDS852_REV2 1" >>include/config.h ; \
|
||||
}
|
||||
@./mkconfig -a NC650 ppc mpc8xx nc650
|
||||
|
||||
NX823_config: unconfig
|
||||
@./mkconfig $(@:_config=) ppc mpc8xx nx823
|
||||
|
@ -1,4 +1,5 @@
|
||||
#
|
||||
# (C) Copyright 2006 Detlev Zundel, dzu@denx.de
|
||||
# (C) Copyright 2004
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
@ -25,7 +26,7 @@ include $(TOPDIR)/config.mk
|
||||
|
||||
LIB = lib$(BOARD).a
|
||||
|
||||
OBJS = $(BOARD).o flash.o
|
||||
OBJS = $(BOARD).o nand.o flash.o
|
||||
|
||||
$(LIB): .depend $(OBJS)
|
||||
$(AR) crv $@ $(OBJS)
|
||||
|
@ -1,4 +1,5 @@
|
||||
#
|
||||
# (C) Copyright 2006 Detlev Zundel, dzu@denx.de
|
||||
# (C) Copyright 2004
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
@ -26,3 +27,4 @@
|
||||
#
|
||||
|
||||
TEXT_BASE = 0x40700000
|
||||
BOARDLIBS = drivers/nand/libnand.a
|
||||
|
@ -1,4 +1,5 @@
|
||||
/*
|
||||
* (C) Copyright 2006 Detlev Zundel, dzu@denx.de
|
||||
* (C) Copyright 2001
|
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
*
|
||||
@ -108,7 +109,16 @@ const uint nand_flash_table[] = {
|
||||
|
||||
int checkboard (void)
|
||||
{
|
||||
puts ("Board: NC650\n");
|
||||
#if !defined(CONFIG_CP850)
|
||||
puts ("Board: NC650");
|
||||
#else
|
||||
puts ("Board: CP850");
|
||||
#endif
|
||||
#if defined(CONFIG_IDS852_REV1)
|
||||
puts (" with IDS852 rev 1 module\n");
|
||||
#elif defined(CONFIG_IDS852_REV2)
|
||||
puts (" with IDS852 rev 2 module\n");
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -241,13 +251,61 @@ static long int dram_size (long int mamr_value, long int *base, long int maxsize
|
||||
return (get_ram_size(base, maxsize));
|
||||
}
|
||||
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_NAND)
|
||||
void nand_init(void)
|
||||
|
||||
#if defined(CONFIG_CP850)
|
||||
|
||||
#define DPRAM_VARNAME "KP850DIP"
|
||||
#define PARAM_ADDR 0x7C0
|
||||
#define NAME_ADDR 0x7F8
|
||||
#define BOARD_NAME "KP01"
|
||||
#define DEFAULT_LB "241111"
|
||||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
extern unsigned long nand_probe(unsigned long physadr);
|
||||
int iCompatMode = 0;
|
||||
char *pParam = NULL;
|
||||
char *envlb;
|
||||
|
||||
/*
|
||||
First byte in CPLD read address space signals compatibility mode
|
||||
0 - cp850
|
||||
1 - kp852
|
||||
*/
|
||||
pParam = (char*)(CFG_CPLD_BASE);
|
||||
if( *pParam != 0)
|
||||
iCompatMode = 1;
|
||||
|
||||
if ( iCompatMode != 0) {
|
||||
/*
|
||||
In KP852 compatibility mode we have to write to
|
||||
DPRAM as early as possible the binary coded
|
||||
line config and board name.
|
||||
The line config is derived from the environment
|
||||
variable DPRAM_VARNAME by converting from ASCII
|
||||
to binary per character.
|
||||
*/
|
||||
if ( (envlb = getenv ( DPRAM_VARNAME )) == 0) {
|
||||
setenv( DPRAM_VARNAME, DEFAULT_LB);
|
||||
envlb = DEFAULT_LB;
|
||||
}
|
||||
|
||||
/* Status string */
|
||||
printf("Mode: KP852(LB=%s)\n", envlb);
|
||||
|
||||
unsigned long totlen = nand_probe(CFG_NAND_BASE);
|
||||
/* copy appl init */
|
||||
pParam = (char*)(DPRAM_BASE_ADDR + PARAM_ADDR);
|
||||
while (*envlb) {
|
||||
*(pParam++) = *(envlb++) - '0';
|
||||
}
|
||||
*pParam = '\0';
|
||||
|
||||
printf ("%4lu MB\n", totlen >> 20);
|
||||
/* copy board id */
|
||||
pParam = (char*)(DPRAM_BASE_ADDR + NAME_ADDR);
|
||||
strcpy( pParam, BOARD_NAME);
|
||||
} else {
|
||||
puts("Mode: CP850\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/*
|
||||
* (C) Copyright 2006 Detlev Zundel, dzu@denx.de
|
||||
* (C) Copyright 2005
|
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
*
|
||||
@ -65,6 +66,11 @@
|
||||
#define CFG_8XX_XIN CONFIG_8xx_OSCLK
|
||||
|
||||
#define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */
|
||||
#define CONFIG_AUTOBOOT_KEYED
|
||||
#define CONFIG_AUTOBOOT_PROMPT "\nEnter password - autoboot in %d seconds...\n"
|
||||
#define CONFIG_AUTOBOOT_DELAY_STR "ids"
|
||||
#define CONFIG_BOOT_RETRY_TIME 900
|
||||
#define CONFIG_BOOT_RETRY_MIN 30
|
||||
|
||||
#define CONFIG_PREBOOT "echo;echo Type \"run flash_nfs\" to mount root filesystem over NFS;echo"
|
||||
|
||||
@ -75,7 +81,7 @@
|
||||
"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;" \
|
||||
"bootm"
|
||||
|
||||
#undef CONFIG_WATCHDOG /* watchdog disabled */
|
||||
#define CONFIG_WATCHDOG /* watchdog enabled */
|
||||
|
||||
#undef CONFIG_STATUS_LED /* Status LED disabled */
|
||||
|
||||
@ -96,12 +102,26 @@
|
||||
/*
|
||||
* Software (bit-bang) I2C driver configuration
|
||||
*/
|
||||
#if defined(CONFIG_IDS852_REV1)
|
||||
|
||||
#define SCL 0x1000 /* PA 3 */
|
||||
#define SDA 0x2000 /* PA 2 */
|
||||
|
||||
#define __I2C_DIR immr->im_ioport.iop_padir
|
||||
#define __I2C_DAT immr->im_ioport.iop_padat
|
||||
#define __I2C_PAR immr->im_ioport.iop_papar
|
||||
|
||||
#elif defined(CONFIG_IDS852_REV2)
|
||||
|
||||
#define SCL 0x0002 /* PB 30 */
|
||||
#define SDA 0x0001 /* PB 31 */
|
||||
|
||||
#define __I2C_PAR immr->im_cpm.cp_pbpar
|
||||
#define __I2C_DIR immr->im_cpm.cp_pbdir
|
||||
#define __I2C_DAT immr->im_cpm.cp_pbdat
|
||||
|
||||
#endif
|
||||
|
||||
#define I2C_INIT { __I2C_PAR &= ~(SDA|SCL); \
|
||||
__I2C_DIR |= (SDA|SCL); }
|
||||
#define I2C_READ ((__I2C_DAT & SDA) ? 1 : 0)
|
||||
@ -229,17 +249,6 @@
|
||||
#define ADDR_COLUMN 1
|
||||
#define NAND_NO_RB
|
||||
|
||||
#define NAND_WAIT_READY(nand) udelay(12)
|
||||
#define WRITE_NAND_COMMAND(d, adr) WRITE_NAND(d, adr + 2)
|
||||
#define WRITE_NAND_ADDRESS(d, adr) WRITE_NAND(d, adr + 1)
|
||||
#define WRITE_NAND(d, adr) (*(volatile uint8_t *)(adr) = (uint8_t)(d))
|
||||
#define READ_NAND(adr) (*(volatile uint8_t *)(adr))
|
||||
#define NAND_DISABLE_CE(nand) /* nop */
|
||||
#define NAND_ENABLE_CE(nand) /* nop */
|
||||
#define NAND_CTL_CLRALE(nandptr) /* nop */
|
||||
#define NAND_CTL_SETALE(nandptr) /* nop */
|
||||
#define NAND_CTL_CLRCLE(nandptr) /* nop */
|
||||
#define NAND_CTL_SETCLE(nandptr) /* nop */
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* SYPCR - System Protection Control 11-9
|
||||
@ -312,7 +321,8 @@
|
||||
#define CFG_BR0_PRELIM ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_8 | BR_V)
|
||||
|
||||
/*
|
||||
* BR2 and OR2 (NAND Flash) - now addressed through UPMB
|
||||
* BR2 and OR2 (NAND Flash) - addressed through UPMB on rev 1
|
||||
* rev2 only uses the chipselect
|
||||
*/
|
||||
#define CFG_NAND_BASE 0x50000000
|
||||
#define CFG_NAND_SIZE 0x04000000
|
||||
@ -337,6 +347,18 @@
|
||||
#define CFG_OR3_PRELIM (CFG_PRELIM_OR_AM | CFG_OR_TIMING_SDRAM)
|
||||
#define CFG_BR3_PRELIM ((SDRAM_BASE3_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V)
|
||||
|
||||
/*
|
||||
* BR4 and OR4 (CPLD)
|
||||
*/
|
||||
#define CFG_CPLD_BASE 0x80000000 /* CPLD */
|
||||
#define CFG_CPLD_SIZE 0x10000 /* only 16 used */
|
||||
|
||||
#define CFG_OR_TIMING_CPLD (OR_CSNT_SAM | OR_ACS_DIV1 | OR_BI | \
|
||||
OR_SCY_1_CLK)
|
||||
|
||||
#define CFG_BR4_PRELIM ((CFG_CPLD_BASE & BR_BA_MSK) | BR_PS_8 | BR_V )
|
||||
#define CFG_OR4_PRELIM (((-CFG_CPLD_SIZE) & OR_AM_MSK) | CFG_OR_TIMING_CPLD)
|
||||
|
||||
/*
|
||||
* BR5 and OR5 (SRAM)
|
||||
*/
|
||||
@ -349,6 +371,16 @@
|
||||
#define CFG_BR5_PRELIM ((CFG_SRAM_BASE & BR_BA_MSK) | BR_PS_8 | BR_V )
|
||||
#define CFG_OR5_PRELIM (((-CFG_SRAM_SIZE) & OR_AM_MSK) | CFG_OR_TIMING_SRAM)
|
||||
|
||||
#if defined(CONFIG_CP850)
|
||||
/*
|
||||
* BR6 and OR6 (DPRAM) - only on CP850
|
||||
*/
|
||||
#define CFG_OR6_PRELIM 0xffff8170
|
||||
#define CFG_BR6_PRELIM 0xa0000401
|
||||
#define DPRAM_BASE_ADDR 0xa0000000
|
||||
|
||||
#define CONFIG_MISC_INIT_R 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 4096 Rows from SDRAM example configuration
|
||||
@ -413,14 +445,12 @@
|
||||
#define CONFIG_JFFS2_PART_OFFSET 0x00000000
|
||||
|
||||
/* mtdparts command line support */
|
||||
/*
|
||||
#define CONFIG_JFFS2_CMDLINE
|
||||
#define MTDIDS_DEFAULT "nor0=nc650-0,nand0=nc650-nand"
|
||||
|
||||
#define MTDPARTS_DEFAULT "mtdparts=nc650-0:1m(kernel1),1m(kernel2)," \
|
||||
"2560k(cramfs1),2560k(cramfs2)," \
|
||||
"256k(u-boot),256k(env);" \
|
||||
"nc650-nand:4m(nand1),28m(nand2)"
|
||||
*/
|
||||
"4m(cramfs1),1m(cramfs2)," \
|
||||
"256k(u-boot),128k(env);" \
|
||||
"nc650-nand:4m(jffs1),28m(jffs2)"
|
||||
|
||||
#endif /* __CONFIG_H */
|
||||
|
Loading…
Reference in New Issue
Block a user