diff options
| -rw-r--r-- | MAKEALL | 3 | ||||
| -rw-r--r-- | Makefile | 6 | ||||
| -rw-r--r-- | board/r360mpi/r360mpi.c | 156 | ||||
| -rw-r--r-- | cpu/mpc8xx/lcd.c | 102 | ||||
| -rw-r--r-- | include/configs/LANTEC.h | 1 | ||||
| -rw-r--r-- | include/configs/MPC8260ADS.h | 1 | ||||
| -rw-r--r-- | include/configs/ep8260.h | 1 | ||||
| -rw-r--r-- | include/configs/hymod.h | 1 | 
8 files changed, 98 insertions, 173 deletions
| @@ -35,8 +35,7 @@ LIST_8xx="	\  	R360MPI		RPXClassic	RPXlite		RRvision	\  	SM850		SPD823TS	svm_sc8xx	SXNI855T	\  	TOP860		TQM823L		TQM823L_LCD	TQM850L		\ -	TQM855L		TQM860L		TQM860L_FEC	TTTech		\ -	v37								\ +	TQM855L		TQM860L		TTTech		v37		\  "  ######################################################################### @@ -337,7 +337,7 @@ TOP860_config:		unconfig  # All boards can come with 50 MHz (default), 66MHz or 80MHz clock,  # but only 855 and 860 boards may come with FEC  # and 823 boards may have LCD support -xtract_8xx = $(subst _66MHz,,$(subst _80MHz,,$(subst _LCD,,$(subst _FEC,,$(subst _config,,$1))))) +xtract_8xx = $(subst _66MHz,,$(subst _80MHz,,$(subst _LCD,,$(subst _config,,$1))))  FPS850L_config		\  FPS860L_config		\ @@ -360,10 +360,6 @@ TQM862L_config		\  TQM862L_66MHz_config	\  TQM862L_80MHz_config:	unconfig  	@ >include/config.h -	@[ -z "$(findstring _FEC,$@)" ] || \ -		{ echo "#define CONFIG_FEC_ENET"	>>include/config.h ; \ -		  echo "... with FEC support" ; \ -		}  	@[ -z "$(findstring _66MHz,$@)" ] || \  		{ echo "#define CONFIG_66MHz"		>>include/config.h ; \  		  echo "... with 66MHz system clock" ; \ diff --git a/board/r360mpi/r360mpi.c b/board/r360mpi/r360mpi.c index d7b8873ee..91e3234e2 100644 --- a/board/r360mpi/r360mpi.c +++ b/board/r360mpi/r360mpi.c @@ -126,12 +126,12 @@ long int initdram (int board_type)  	memctl->memc_mar = 0x00000088;  	/* -	 * Map controller bank 1 to the SDRAM bank at +	 * Map controller bank 2 to the SDRAM bank at  	 * preliminary address - these have to be modified after the  	 * SDRAM size has been determined.  	 */ -	memctl->memc_or1 = CFG_OR1_PRELIM; -	memctl->memc_br1 = CFG_BR1_PRELIM; +	memctl->memc_or2 = CFG_OR2_PRELIM; +	memctl->memc_br2 = CFG_BR2_PRELIM;  	memctl->memc_mamr = CFG_MAMR_8COL & (~(MAMR_PTAE));	/* no refresh yet */ @@ -139,9 +139,9 @@ long int initdram (int board_type)  	/* perform SDRAM initializsation sequence */ -	memctl->memc_mcr = 0x80002105;	/* SDRAM bank 0 */ +	memctl->memc_mcr = 0x80004105;	/* SDRAM bank 0 */  	udelay (200); -	memctl->memc_mcr = 0x80002230;	/* SDRAM bank 0 - execute twice */ +	memctl->memc_mcr = 0x80004230;	/* SDRAM bank 0 - execute twice */  	udelay (200);  	memctl->memc_mamr |= MAMR_PTAE;	/* enable refresh */ @@ -153,7 +153,7 @@ long int initdram (int board_type)  	 *  	 * try 8 column mode  	 */ -	size8 = dram_size (CFG_MAMR_8COL, (ulong *) SDRAM_BASE1_PRELIM, +	size8 = dram_size (CFG_MAMR_8COL, (ulong *) SDRAM_BASE2_PRELIM,  					   SDRAM_MAX_SIZE);  	udelay (1000); @@ -161,13 +161,13 @@ long int initdram (int board_type)  	/*  	 * try 9 column mode  	 */ -	size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE1_PRELIM, +	size9 = dram_size (CFG_MAMR_9COL, (ulong *) SDRAM_BASE2_PRELIM,  					   SDRAM_MAX_SIZE);  	if (size8 < size9) {		/* leave configuration at 9 columns */  		size_b0 = size9;  /*	debug ("SDRAM Bank 0 in 9 column mode: %ld MB\n", size >> 20);	*/ -	} else {					/* back to 8 columns            */ +	} else {			/* back to 8 columns            */  		size_b0 = size8;  		memctl->memc_mamr = CFG_MAMR_8COL;  		udelay (500); @@ -200,6 +200,47 @@ long int initdram (int board_type)  	udelay (10000); +#ifdef CONFIG_CAN_DRIVER +	/* Initialize OR3 / BR3 */ +	memctl->memc_or3 = CFG_OR3_CAN;		/* switch GPLB_5 to GPLA_5 */ +	memctl->memc_br3 = CFG_BR3_CAN; + +	/* Initialize MBMR */ +	memctl->memc_mbmr = MAMR_GPL_B4DIS;	/* GPL_B4 works as UPWAITB */ + +	/* Initialize UPMB for CAN: single read */ +	memctl->memc_mdr = 0xFFFFC004; +	memctl->memc_mcr = 0x0100 | UPMB; + +	memctl->memc_mdr = 0x0FFFD004; +	memctl->memc_mcr = 0x0101 | UPMB; + +	memctl->memc_mdr = 0x0FFFC000; +	memctl->memc_mcr = 0x0102 | UPMB; + +	memctl->memc_mdr = 0x3FFFC004; +	memctl->memc_mcr = 0x0103 | UPMB; + +	memctl->memc_mdr = 0xFFFFDC05; +	memctl->memc_mcr = 0x0104 | UPMB; + +	/* Initialize UPMB for CAN: single write */ +	memctl->memc_mdr = 0xFFFCC004; +	memctl->memc_mcr = 0x0118 | UPMB; + +	memctl->memc_mdr = 0xCFFCD004; +	memctl->memc_mcr = 0x0119 | UPMB; + +	memctl->memc_mdr = 0x0FFCC000; +	memctl->memc_mcr = 0x011A | UPMB; + +	memctl->memc_mdr = 0x7FFCC004; +	memctl->memc_mcr = 0x011B | UPMB; + +	memctl->memc_mdr = 0xFFFDCC05; +	memctl->memc_mcr = 0x011C | UPMB; +#endif +  	return (size_b0);  } @@ -213,8 +254,8 @@ long int initdram (int board_type)   * - short between data lines   */ -static long int dram_size (long int mamr_value, long int *base, -						   long int maxsize) +static long int dram_size (long int mamr_value, +			   long int *base, long int maxsize)  {  	volatile immap_t *immap = (immap_t *) CFG_IMMR;  	volatile memctl8xx_t *memctl = &immap->im_memctl; @@ -257,10 +298,10 @@ static long int dram_size (long int mamr_value, long int *base,  /* ------------------------------------------------------------------------- */ -void r360_pwm_write (uchar reg, uchar val) +void r360_i2c_lcd_write (uchar data0, uchar data1)  { -	if (i2c_write (CFG_I2C_PWM_ADDR, reg, 1, &val, 1)) { -		printf ("Can't write PWM register 0x%02X.\n", reg); +	if (i2c_write (CFG_I2C_LCD_ADDR, data0, 1, &data1, 1)) { +		printf("Can't write lcd data 0x%02X 0x%02X.\n", data0, data1);  	}  } @@ -271,10 +312,8 @@ void r360_pwm_write (uchar reg, uchar val)   */  /* Number of bytes returned from Keyboard Controller */ -#define KEYBD_KEY_MAX		20				/* maximum key number */ -#define KEYBD_DATALEN		((KEYBD_KEY_MAX + 7) / 8)	/* normal key scan data */ - -static uchar kbd_addr = CFG_I2C_KBD_ADDR; +#define KEYBD_KEY_MAX	16				/* maximum key number */ +#define KEYBD_DATALEN	((KEYBD_KEY_MAX + 7) / 8)	/* normal key scan data */  static uchar *key_match (uchar *); @@ -287,14 +326,14 @@ int misc_init_r (void)  	i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE); -	i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN); +	i2c_read (CFG_I2C_KEY_ADDR, 0, 0, kbd_data, KEYBD_DATALEN);  	for (i = 0; i < KEYBD_DATALEN; ++i) {  		sprintf (keybd_env + i + i, "%02X", kbd_data[i]);  	}  	setenv ("keybd", keybd_env); -	str = strdup (key_match (kbd_data));	/* decode keys */ +	str = strdup (key_match (keybd_env));	/* decode keys */  #ifdef CONFIG_PREBOOT	/* automatically configure "preboot" command on key match */  	setenv ("preboot", str);	/* set or delete definition */ @@ -324,16 +363,13 @@ int misc_init_r (void)  static uchar kbd_magic_prefix[] = "key_magic";  static uchar kbd_command_prefix[] = "key_cmd"; -static uchar *key_match (uchar * kbd_data) +static uchar *key_match (uchar * kbd_str)  { -	uchar compare[KEYBD_DATALEN];  	uchar magic[sizeof (kbd_magic_prefix) + 1];  	uchar cmd_name[sizeof (kbd_command_prefix) + 1]; -	uchar key_mask; -	uchar *str, *nxt, *suffix; +	uchar *str, *suffix;  	uchar *kbd_magic_keys;  	char *cmd; -	int i;  	/*  	 * The following string defines the characters that can pe appended @@ -343,62 +379,48 @@ static uchar *key_match (uchar * kbd_data)  	 * "key_magic" is checked (old behaviour); the string "125" causes  	 * checks for "key_magic1", "key_magic2" and "key_magic5", etc.  	 */ -	if ((kbd_magic_keys = getenv ("magic_keys")) == NULL) -		kbd_magic_keys = ""; +	if ((kbd_magic_keys = getenv ("magic_keys")) != NULL) { +		/* loop over all magic keys; +		 * use '\0' suffix in case of empty string +		 */ +		for (suffix = kbd_magic_keys; +		     *suffix || suffix == kbd_magic_keys; +		     ++suffix) { +			sprintf (magic, "%s%c", kbd_magic_prefix, *suffix); -	/* loop over all magic keys; -	 * use '\0' suffix in case of empty string -	 */ -	for (suffix=kbd_magic_keys; *suffix || suffix==kbd_magic_keys; ++suffix) { -		sprintf (magic, "%s%c", kbd_magic_prefix, *suffix);  #if 0 -		printf ("### Check magic \"%s\"\n", magic); +			printf ("### Check magic \"%s\"\n", magic);  #endif -		memcpy(compare, kbd_data, KEYBD_DATALEN); - -		for (str = getenv(magic); str != NULL; str = (*nxt) ? nxt+1 : nxt) { -			uchar c; - -			c = (uchar) simple_strtoul (str, (char **) (&nxt), 16); - -			if (str == nxt)				/* invalid character */ -				break; - -			if (c >= KEYBD_KEY_MAX)			/* bad key number */ -				goto next_magic; - -			key_mask = 0x80 >> (c % 8); - -			if (!(compare[c / 8] & key_mask))	/* key not pressed */ -				goto next_magic; +			if ((str = getenv (magic)) != 0) { -			compare[c / 8] &= ~key_mask; -		} - -		for (i=0; i<KEYBD_DATALEN; i++) -			if (compare[i])			/* key(s) not released */ -				goto next_magic; - -		sprintf (cmd_name, "%s%c", kbd_command_prefix, *suffix); - -		cmd = getenv (cmd_name);  #if 0 -		printf ("### Set PREBOOT to $(%s): \"%s\"\n", -			cmd_name, cmd ? cmd : "<<NULL>>"); +				printf ("### Compare \"%s\" \"%s\"\n", +					kbd_str, str);  #endif -		*kbd_data = *suffix; -		return (cmd); +				if (strcmp (kbd_str, str) == 0) { +					sprintf (cmd_name, "%s%c", +						 kbd_command_prefix, +						 *suffix); -	next_magic:; +					if ((cmd = getenv (cmd_name)) != 0) { +#if 0 +						printf ("### Set PREBOOT to $(%s): \"%s\"\n", +							cmd_name, cmd); +#endif +						return (cmd); +					} +				} +			} +		}  	}  #if 0  	printf ("### Delete PREBOOT\n");  #endif -	*kbd_data = '\0'; +	*kbd_str = '\0';  	return (NULL);  } -#endif							/* CONFIG_PREBOOT */ +#endif	/* CONFIG_PREBOOT */  /* Read Keyboard status */  int do_kbd (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) @@ -410,7 +432,7 @@ int do_kbd (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])  	i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);  	/* Read keys */ -	i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN); +	i2c_read (CFG_I2C_KEY_ADDR, 0, 0, kbd_data, KEYBD_DATALEN);  	puts ("Keys:");  	for (i = 0; i < KEYBD_DATALEN; ++i) { diff --git a/cpu/mpc8xx/lcd.c b/cpu/mpc8xx/lcd.c index 1c3fb230d..9e92676d6 100644 --- a/cpu/mpc8xx/lcd.c +++ b/cpu/mpc8xx/lcd.c @@ -1001,102 +1001,6 @@ static void lcd_enable (void)  /*----------------------------------------------------------------------*/ -#if (CONFIG_COMMANDS & CFG_CMD_BMP) -/* -  Display the BMP file located at address bmp_image. -  Only uncompressed -*/ -int lcd_display_bitmap(ulong bmp_image) -{ -	volatile immap_t *immr = (immap_t *) CFG_IMMR; -	volatile cpm8xx_t *cp = &(immr->im_cpm); -	ushort *cmap; -	ushort i, j; -	uchar *fb; -	bmp_image_t *bmp=(bmp_image_t *)bmp_image; -	uchar *bmap; -	ushort padded_line; -	unsigned long width, height; -	unsigned colors,bpix; -	unsigned long compression; - -	if (!((bmp->header.signature[0]=='B') && -	      (bmp->header.signature[1]=='M'))) { -		printf ("Error: no valid bmp image at %lx\n", bmp_image); -		return 1; -	} - -	width = le32_to_cpu (bmp->header.width); -	height = le32_to_cpu (bmp->header.height); -	colors = 1<<le16_to_cpu (bmp->header.bit_count); -	compression = le32_to_cpu (bmp->header.compression); - -	bpix = NBITS(panel_info.vl_bpix); - -	if ((bpix != 1) && (bpix != 8)) { -		printf ("Error: %d bit/pixel mode not supported by U-Boot\n", -			bpix); -		return 1; -	} - -	if (bpix != le16_to_cpu(bmp->header.bit_count)) { -		printf ("Error: %d bit/pixel mode, but BMP has %d bit/pixel\n", -			bpix, -			le16_to_cpu(bmp->header.bit_count)); -		return 1; -	} - -	if (compression!=BMP_BI_RGB) { -		printf ("Error: compression type %ld not supported\n", -			compression); -		return 1; -	} - -	debug ("Display-bmp: %d x %d  with %d colors\n", -	       width, height, colors); - -	if (bpix==8) { -		/* Fill the entire color map */ -		cmap = (ushort *)&(cp->lcd_cmap[255*sizeof(ushort)]); - -		/* Set color map */ -		for (i = 0; i < colors; ++i) { -			bmp_color_table_entry_t cte = bmp->color_table[i]; -			ushort colreg = -				((cte.red>>4)   << 8) | -				((cte.green>>4) << 4) | -				(cte.blue>>4) ; -#ifdef	CFG_INVERT_COLORS -			colreg ^= 0xFFF; -#endif -			*cmap-- = colreg; -		} -	} - -	padded_line = (width&0x3) ? ((width&~0x3)+4) : (width); -	if (width>panel_info.vl_col) -		width = panel_info.vl_col; -	if (height>panel_info.vl_row) -		height = panel_info.vl_row; - -	bmap = (uchar *)bmp + le32_to_cpu (bmp->header.data_offset); -	fb   = (uchar *) -		(lcd_base + -		 (((height>=panel_info.vl_row) ? panel_info.vl_row : height)-1) -		 * lcd_line_length); -	for (i = 0; i < height; ++i) { -		for (j = 0; j < width ; j++) -			*(fb++)=255-*(bmap++); -		bmap += (width - padded_line); -		fb   -= (width + lcd_line_length); -	} - -	return (0); -} -#endif /* (CONFIG_COMMANDS & CFG_CMD_BMP) */ - -/*----------------------------------------------------------------------*/ -  #ifdef	NOT_USED_SO_FAR  static void lcd_disable (void)  { @@ -1170,9 +1074,9 @@ static void bitmap_plot (int x, int y)  #if (CONFIG_COMMANDS & CFG_CMD_BMP)  /* -  Display the BMP file located at address bmp_image. -  Only uncompressed -*/ + * Display the BMP file located at address bmp_image. + * Only uncompressed + */  int lcd_display_bitmap(ulong bmp_image)  {  	volatile immap_t *immr = (immap_t *) CFG_IMMR; diff --git a/include/configs/LANTEC.h b/include/configs/LANTEC.h index f152dc739..7f4869fee 100644 --- a/include/configs/LANTEC.h +++ b/include/configs/LANTEC.h @@ -84,6 +84,7 @@  #define CONFIG_CMD_NORMAL	(CONFIG_CMD_DFL & ~CFG_CMD_BOOTD)  #define CONFIG_CMD_GDB		(CONFIG_CMD_NORMAL | CFG_CMD_KGDB)  #define CONFIG_CMD_FULL		(CFG_CMD_ALL & ~CFG_CMD_BEDBUG	\ +					     & ~CFG_CMD_BMP	\  					     & ~CFG_CMD_BSP	\  					     & ~CFG_CMD_DOC	\  					     & ~CFG_CMD_DTT	\ diff --git a/include/configs/MPC8260ADS.h b/include/configs/MPC8260ADS.h index 838c7d343..48cd9b31b 100644 --- a/include/configs/MPC8260ADS.h +++ b/include/configs/MPC8260ADS.h @@ -114,6 +114,7 @@  #define CONFIG_COMMANDS		(CFG_CMD_ALL & ~( \  				 CFG_CMD_BEDBUG | \ +				 CFG_CMD_BMP	| \  				 CFG_CMD_BSP	| \  				 CFG_CMD_DATE	| \  				 CFG_CMD_DOC	| \ diff --git a/include/configs/ep8260.h b/include/configs/ep8260.h index 5c53a467b..21b9d763c 100644 --- a/include/configs/ep8260.h +++ b/include/configs/ep8260.h @@ -270,6 +270,7 @@  /*  */  #define CONFIG_COMMANDS		(	CFG_CMD_ALL     & \ +					~CFG_CMD_BMP	& \  					~CFG_CMD_BSP    & \  					~CFG_CMD_DCR    & \  					~CFG_CMD_DHCP   & \ diff --git a/include/configs/hymod.h b/include/configs/hymod.h index 271aacf03..df8971563 100644 --- a/include/configs/hymod.h +++ b/include/configs/hymod.h @@ -138,6 +138,7 @@  #define CONFIG_COMMANDS		(CFG_CMD_ALL & ~( \  					CFG_CMD_BEDBUG	| \ +					CFG_CMD_BMP	| \  					CFG_CMD_DOC	| \  					CFG_CMD_ELF	| \  					CFG_CMD_FDC	| \ |