mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-07-05 05:42:51 +00:00
* 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:
parent
c18960049f
commit
d4ca31c40e
53 changed files with 1410 additions and 701 deletions
|
@ -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 */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue