@ -169,7 +169,7 @@ soft_restart(unsigned long addr)
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*/
switch ( sysclk )
@ -354,6 +354,24 @@ void set_px_go_with_watchdog(void)
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
* and converts it to an integer that can be used to assign
* FPGA register values .
@ -509,18 +527,27 @@ do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
goto my_usage ;
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_altbank ( 0 ) ;
if ( argc > 2 )
goto my_usage ;
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 :