* Fix udelay() on AT91RM9200 for delays < 1 ms.
* Enable long help on CMC PU2 board; fix reset issue; increase CPU speed from 179 to 207 MHz.
This commit is contained in:
@@ -134,11 +134,25 @@ int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
/*shutdown the console to avoid strange chars during reset */
|
||||
us->US_CR = (AT91C_US_RSTRX | AT91C_US_RSTTX);
|
||||
|
||||
#ifdef CONFIG_AT91RM9200DK
|
||||
/* Clear PA19 to trigger the hard reset */
|
||||
pio->PIO_CODR = 0x00080000;
|
||||
pio->PIO_OER = 0x00080000;
|
||||
pio->PIO_PER = 0x00080000;
|
||||
#endif
|
||||
#ifdef CONFIG_CMC_PU2
|
||||
/* this is the way Linux does it */
|
||||
#define AT91C_ST_RSTEN (0x1 << 16)
|
||||
#define AT91C_ST_EXTEN (0x1 << 17)
|
||||
#define AT91C_ST_WDRST (0x1 << 0)
|
||||
/* watchdog mode register */
|
||||
#define ST_WDMR *((unsigned long *)0xfffffd08)
|
||||
/* system clock control register */
|
||||
#define ST_CR *((unsigned long *)0xfffffd00)
|
||||
ST_WDMR = AT91C_ST_RSTEN | AT91C_ST_EXTEN | 1 ;
|
||||
ST_CR = AT91C_ST_WDRST;
|
||||
/* Never reached */
|
||||
#endif
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -193,9 +193,14 @@ void udelay_masked (unsigned long usec)
|
||||
{
|
||||
ulong tmo;
|
||||
|
||||
tmo = usec / 1000;
|
||||
tmo *= CFG_HZ;
|
||||
tmo /= 1000;
|
||||
if (usec >= 1000) {
|
||||
tmo = usec / 1000;
|
||||
tmo *= CFG_HZ;
|
||||
tmo /= 1000;
|
||||
} else {
|
||||
tmo = usec * CFG_HZ;
|
||||
tmo /= (1000*1000);
|
||||
}
|
||||
|
||||
reset_timer_masked ();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user