|
@@ -169,7 +169,7 @@ soft_restart(unsigned long addr)
|
|
|
|
|
|
int set_px_sysclk(ulong sysclk)
|
|
int set_px_sysclk(ulong sysclk)
|
|
{
|
|
{
|
|
- u8 sysclk_s, sysclk_r, sysclk_v, vclkh, vclkl, sysclk_aux,tmp;
|
|
|
|
|
|
+ u8 sysclk_s, sysclk_r, sysclk_v, vclkh, vclkl, sysclk_aux;
|
|
|
|
|
|
/* Per table 27, page 58 of MPC8641HPCN spec*/
|
|
/* Per table 27, page 58 of MPC8641HPCN spec*/
|
|
switch(sysclk)
|
|
switch(sysclk)
|
|
@@ -354,6 +354,24 @@ void set_px_go_with_watchdog(void)
|
|
out8(PIXIS_BASE+PIXIS_VCTL,tmp);
|
|
out8(PIXIS_BASE+PIXIS_VCTL,tmp);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+int disable_watchdog(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|
|
|
+{
|
|
|
|
+ u8 tmp;
|
|
|
|
+ tmp = in8(PIXIS_BASE+PIXIS_VCTL);
|
|
|
|
+ tmp = tmp & 0x1E;
|
|
|
|
+ out8(PIXIS_BASE+PIXIS_VCTL,tmp);
|
|
|
|
+ tmp = in8(PIXIS_BASE + PIXIS_VCTL);
|
|
|
|
+ tmp &= ~ 0x08; /* setting VCTL[WDEN] to 0 to disable watch dog */
|
|
|
|
+ out8(PIXIS_BASE + PIXIS_VCTL, tmp);
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+U_BOOT_CMD(
|
|
|
|
+ diswd, 1, 0, disable_watchdog,
|
|
|
|
+ "diswd - Disable watchdog timer \n",
|
|
|
|
+ NULL
|
|
|
|
+);
|
|
|
|
+
|
|
/* This function takes the non-integral cpu:mpx pll ratio
|
|
/* This function takes the non-integral cpu:mpx pll ratio
|
|
* and converts it to an integer that can be used to assign
|
|
* and converts it to an integer that can be used to assign
|
|
* FPGA register values.
|
|
* FPGA register values.
|
|
@@ -509,18 +527,27 @@ do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|
goto my_usage;
|
|
goto my_usage;
|
|
|
|
|
|
while(1); /* Not reached */
|
|
while(1); /* Not reached */
|
|
- } else {
|
|
|
|
- /* Reset from next bank without changing frequencies */
|
|
|
|
|
|
+ } 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(0);
|
|
read_from_px_regs_altbank(0);
|
|
read_from_px_regs_altbank(0);
|
|
- if(argc > 2)
|
|
|
|
- goto my_usage;
|
|
|
|
printf("Setting registers VCFGEN1, VBOOT, and VCTL\n");
|
|
printf("Setting registers VCFGEN1, VBOOT, and VCTL\n");
|
|
set_altbank();
|
|
set_altbank();
|
|
read_from_px_regs_altbank(1);
|
|
read_from_px_regs_altbank(1);
|
|
printf("Enabling watchdog timer on the FPGA and resetting board to boot from the other bank....\n");
|
|
printf("Enabling watchdog timer on the FPGA and resetting board to boot from the other bank....\n");
|
|
set_px_go_with_watchdog();
|
|
set_px_go_with_watchdog();
|
|
while(1); /* Not reached */
|
|
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:
|
|
default:
|