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 d7b8873..91e3234 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 1c3fb23..9e92676 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 f152dc7..7f4869f 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 838c7d3..48cd9b3 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 5c53a46..21b9d76 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 271aacf..df89715 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 | \ |