|
@@ -32,7 +32,10 @@
|
|
|
#include <ft_build.h>
|
|
|
#endif
|
|
|
|
|
|
-#include "../board/mpc8641hpcn/pixis.h"
|
|
|
+#ifdef CONFIG_MPC8641HPCN
|
|
|
+extern void mpc8641_reset_board(cmd_tbl_t *cmdtp, int flag,
|
|
|
+ int argc, char *argv[]);
|
|
|
+#endif
|
|
|
|
|
|
|
|
|
int checkcpu (void)
|
|
@@ -146,9 +149,7 @@ soft_restart(unsigned long addr)
|
|
|
void
|
|
|
do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|
|
{
|
|
|
- char cmd;
|
|
|
- ulong addr, val;
|
|
|
- ulong corepll;
|
|
|
+ ulong addr;
|
|
|
|
|
|
#ifdef CFG_RESET_ADDRESS
|
|
|
addr = CFG_RESET_ADDRESS;
|
|
@@ -181,86 +182,7 @@ do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|
|
|
|
|
#else /* CONFIG_MPC8641HPCN */
|
|
|
|
|
|
- if (argc > 1) {
|
|
|
- cmd = argv[1][1];
|
|
|
- switch(cmd) {
|
|
|
- case 'f': /* reset with frequency changed */
|
|
|
- if (argc < 5)
|
|
|
- goto my_usage;
|
|
|
- read_from_px_regs(0);
|
|
|
-
|
|
|
- val = set_px_sysclk(simple_strtoul(argv[2],NULL,10));
|
|
|
-
|
|
|
- corepll = strfractoint(argv[3]);
|
|
|
- val = val + set_px_corepll(corepll);
|
|
|
- val = val + set_px_mpxpll(simple_strtoul(argv[4],
|
|
|
- NULL, 10));
|
|
|
- if (val == 3) {
|
|
|
- printf("Setting registers VCFGEN0 and VCTL\n");
|
|
|
- read_from_px_regs(1);
|
|
|
- printf("Resetting board with values from VSPEED0, VSPEED1, VCLKH, and VCLKL ....\n");
|
|
|
- set_px_go();
|
|
|
- } else
|
|
|
- goto my_usage;
|
|
|
-
|
|
|
- while (1); /* Not reached */
|
|
|
-
|
|
|
- case 'l':
|
|
|
- if (argv[2][1] == 'f') {
|
|
|
- read_from_px_regs(0);
|
|
|
- read_from_px_regs_altbank(0);
|
|
|
- /* reset with frequency changed */
|
|
|
- val = set_px_sysclk(simple_strtoul(argv[3],NULL,10));
|
|
|
-
|
|
|
- corepll = strfractoint(argv[4]);
|
|
|
- val = val + set_px_corepll(corepll);
|
|
|
- val = val + set_px_mpxpll(simple_strtoul(argv[5],NULL,10));
|
|
|
- if (val == 3) {
|
|
|
- printf("Setting registers VCFGEN0, VCFGEN1, VBOOT, and VCTL\n");
|
|
|
- set_altbank();
|
|
|
- read_from_px_regs(1);
|
|
|
- read_from_px_regs_altbank(1);
|
|
|
- printf("Enabling watchdog timer on the FPGA and resetting board with values from VSPEED0, VSPEED1, VCLKH, and VCLKL to boot from the other bank ....\n");
|
|
|
- set_px_go_with_watchdog();
|
|
|
- } else
|
|
|
- goto my_usage;
|
|
|
-
|
|
|
- while(1); /* Not reached */
|
|
|
- } else if(argv[2][1] == 'd'){
|
|
|
- /* Reset from next bank without changing frequencies but with watchdog timer enabled */
|
|
|
- read_from_px_regs(0);
|
|
|
- read_from_px_regs_altbank(0);
|
|
|
- printf("Setting registers VCFGEN1, VBOOT, and VCTL\n");
|
|
|
- set_altbank();
|
|
|
- read_from_px_regs_altbank(1);
|
|
|
- printf("Enabling watchdog timer on the FPGA and resetting board to boot from the other bank....\n");
|
|
|
- set_px_go_with_watchdog();
|
|
|
- while(1); /* Not reached */
|
|
|
- } else {
|
|
|
- /* Reset from next bank without changing frequency and without watchdog timer enabled */
|
|
|
- read_from_px_regs(0);
|
|
|
- read_from_px_regs_altbank(0);
|
|
|
- if(argc > 2)
|
|
|
- goto my_usage;
|
|
|
- printf("Setting registers VCFGNE1, VBOOT, and VCTL\n");
|
|
|
- set_altbank();
|
|
|
- read_from_px_regs_altbank(1);
|
|
|
- printf("Resetting board to boot from the other bank....\n");
|
|
|
- set_px_go();
|
|
|
- }
|
|
|
-
|
|
|
- default:
|
|
|
- goto my_usage;
|
|
|
- }
|
|
|
-
|
|
|
-my_usage:
|
|
|
- printf("\nUsage: reset cf <SYSCLK freq> <COREPLL ratio> <MPXPLL ratio>\n");
|
|
|
- printf(" reset altbank [cf <SYSCLK freq> <COREPLL ratio> <MPXPLL ratio>]\n");
|
|
|
- printf("For example: reset cf 40 2.5 10\n");
|
|
|
- printf("See MPC8641HPCN Design Workbook for valid values of command line parameters.\n");
|
|
|
- return;
|
|
|
- } else
|
|
|
- out8(PIXIS_BASE+PIXIS_RST,0);
|
|
|
+ mpc8641_reset_board(cmdtp, flag, argc, argv);
|
|
|
|
|
|
#endif /* !CONFIG_MPC8641HPCN */
|
|
|
|