* Cleanup lowboot code for MPC5200

* Minor code cleanup (coding style)

* Patch by Reinhard Meyer, 30 Dec 2003:
  - cpu/mpc5xxx/fec.c: added CONFIG_PHY_ADDR, added CONFIG_PHY_TYPE,
  - added CONFIG_PHY_ADDR to include/configs/IceCube.h,
  - turned debug print of PHY registers into a function (called in two places)
  - added support for EMK MPC5200 based modules

* Fix MPC8xx PLPRCR_MFD_SHIFT typo

* Add support for TQM866M modules

* Fixes for TQM855M with 4 MB flash (Am29DL163 = _no_ mirror bit flash)

* Fix a few compiler warnings
This commit is contained in:
wdenk 2004-01-02 14:00:00 +00:00
parent c18960049f
commit d4ca31c40e
53 changed files with 1410 additions and 701 deletions

View file

@ -45,8 +45,8 @@
#if defined (CONFIG_FPGA) && ( CONFIG_COMMANDS & CFG_CMD_FPGA )
/* Local functions */
static void fpga_usage ( cmd_tbl_t *cmdtp );
static int fpga_get_op( char *opstr );
static void fpga_usage (cmd_tbl_t * cmdtp);
static int fpga_get_op (char *opstr);
/* Local defines */
#define FPGA_NONE -1
@ -62,106 +62,106 @@ static int fpga_get_op( char *opstr );
* If there is no data addr field, the fpgadata environment variable is used.
* The info command requires no data address field.
*/
int
do_fpga (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
int do_fpga (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
{
int op, dev = FPGA_INVALID_DEVICE;
size_t data_size = 0;
void *fpga_data = NULL;
char *devstr = getenv("fpga");
char *datastr = getenv("fpgadata");
int rc = FPGA_FAIL;
int op, dev = FPGA_INVALID_DEVICE;
size_t data_size = 0;
void *fpga_data = NULL;
char *devstr = getenv ("fpga");
char *datastr = getenv ("fpgadata");
int rc = FPGA_FAIL;
if ( devstr ) dev = (int)simple_strtoul( devstr, NULL, 16 );
if ( datastr ) fpga_data = (void *)simple_strtoul( datastr, NULL, 16 );
if (devstr)
dev = (int) simple_strtoul (devstr, NULL, 16);
if (datastr)
fpga_data = (void *) simple_strtoul (datastr, NULL, 16);
switch ( argc )
{
case 5: /* fpga <op> <dev> <data> <datasize> */
data_size = simple_strtoul( argv[4], NULL, 16 );
case 4: /* fpga <op> <dev> <data> */
fpga_data = (void *)simple_strtoul( argv[3], NULL, 16 );
PRINTF(__FUNCTION__": fpga_data = 0x%x\n", (uint)fpga_data );
case 3: /* fpga <op> <dev | data addr> */
dev = (int)simple_strtoul( argv[2], NULL, 16 );
PRINTF(__FUNCTION__": device = %d\n", dev );
/* FIXME - this is a really weak test */
if (( argc == 3 ) && ( dev > fpga_count() )) { /* must be buffer ptr */
PRINTF(__FUNCTION__": Assuming buffer pointer in arg 3\n");
fpga_data = (void *)dev;
PRINTF(__FUNCTION__": fpga_data = 0x%x\n", (uint)fpga_data );
dev = FPGA_INVALID_DEVICE; /* reset device num */
}
case 2: /* fpga <op> */
op = (int)fpga_get_op( argv[1] );
break;
default:
PRINTF(__FUNCTION__": Too many or too few args (%d)\n", argc );
op = FPGA_NONE; /* force usage display */
break;
}
switch (argc) {
case 5: /* fpga <op> <dev> <data> <datasize> */
data_size = simple_strtoul (argv[4], NULL, 16);
case 4: /* fpga <op> <dev> <data> */
fpga_data = (void *) simple_strtoul (argv[3], NULL, 16);
PRINTF (__FUNCTION__ ": fpga_data = 0x%x\n",
(uint) fpga_data);
case 3: /* fpga <op> <dev | data addr> */
dev = (int) simple_strtoul (argv[2], NULL, 16);
PRINTF (__FUNCTION__ ": device = %d\n", dev);
/* FIXME - this is a really weak test */
if ((argc == 3) && (dev > fpga_count ())) { /* must be buffer ptr */
PRINTF (__FUNCTION__
": Assuming buffer pointer in arg 3\n");
fpga_data = (void *) dev;
PRINTF (__FUNCTION__ ": fpga_data = 0x%x\n",
(uint) fpga_data);
dev = FPGA_INVALID_DEVICE; /* reset device num */
}
case 2: /* fpga <op> */
op = (int) fpga_get_op (argv[1]);
break;
default:
PRINTF (__FUNCTION__ ": Too many or too few args (%d)\n",
argc);
op = FPGA_NONE; /* force usage display */
break;
}
switch ( op ) {
case FPGA_NONE:
fpga_usage( cmdtp );
break;
switch (op) {
case FPGA_NONE:
fpga_usage (cmdtp);
break;
case FPGA_INFO:
rc = fpga_info( dev );
break;
case FPGA_INFO:
rc = fpga_info (dev);
break;
case FPGA_LOAD:
rc = fpga_load( dev, fpga_data, data_size );
break;
case FPGA_LOAD:
rc = fpga_load (dev, fpga_data, data_size);
break;
case FPGA_DUMP:
rc = fpga_dump( dev, fpga_data, data_size );
break;
case FPGA_DUMP:
rc = fpga_dump (dev, fpga_data, data_size);
break;
default:
printf( "Unknown operation.\n" );
fpga_usage( cmdtp );
break;
}
return (rc);
default:
printf ("Unknown operation.\n");
fpga_usage (cmdtp);
break;
}
return (rc);
}
static void fpga_usage ( cmd_tbl_t *cmdtp )
static void fpga_usage (cmd_tbl_t * cmdtp)
{
printf( "Usage:\n%s\n", cmdtp->usage );
printf ("Usage:\n%s\n", cmdtp->usage);
}
/*
* Map op to supported operations. We don't use a table since we
* would just have to relocate it from flash anyway.
*/
static int fpga_get_op( char *opstr )
static int fpga_get_op (char *opstr)
{
int op = FPGA_NONE;
if (!strcmp ("info", opstr)) {
op = FPGA_INFO;
}
else if (!strcmp ("load", opstr)) {
} else if (!strcmp ("load", opstr)) {
op = FPGA_LOAD;
}
else if (!strcmp ("dump", opstr)) {
} else if (!strcmp ("dump", opstr)) {
op = FPGA_DUMP;
}
if ( op == FPGA_NONE ) {
if (op == FPGA_NONE) {
printf ("Unknown fpga operation \"%s\"\n", opstr);
}
return op;
}
U_BOOT_CMD(
fpga, 6, 1, do_fpga,
"fpga - loadable FPGA image support\n",
"fpga [operation type] [device number] [image address] [image size]\n"
"fpga operations:\n"
"\tinfo\tlist known device information.\n"
"\tload\tLoad device from memory buffer.\n"
"\tdump\tLoad device to memory buffer.\n"
);
#endif /* CONFIG_FPGA && CONFIG_COMMANDS & CFG_CMD_FPGA */
U_BOOT_CMD (fpga, 6, 1, do_fpga,
"fpga - loadable FPGA image support\n",
"fpga [operation type] [device number] [image address] [image size]\n"
"fpga operations:\n"
"\tinfo\tlist known device information.\n"
"\tload\tLoad device from memory buffer.\n"
"\tdump\tLoad device to memory buffer.\n");
#endif /* CONFIG_FPGA && CONFIG_COMMANDS & CFG_CMD_FPGA */