void reset_timer_masked(void) { /* Set the hadware timer for 1ms */ ks8695_write(KS8695_TIMER1, TIMER_COUNT); ks8695_write(KS8695_TIMER1_PCOUNT, TIMER_PULSE); ks8695_write(KS8695_TIMER_CTRL, 0x2); timer_ticks = 0; }
void reset_cpu (ulong ignored) { ulong tc; /* Set timer0 to watchdog, and let it timeout */ tc = ks8695_read(KS8695_TIMER_CTRL) & 0x2; ks8695_write(KS8695_TIMER_CTRL, tc); ks8695_write(KS8695_TIMER0, ((10 << 8) | 0xff)); ks8695_write(KS8695_TIMER_CTRL, (tc | 0x1)); /* Should only wait here till watchdog resets */ for (;;) ; }
int board_init (void) { DECLARE_GLOBAL_DATA_PTR; /* arch number of CM4008 */ gd->bd->bi_arch_number = 624; /* adress of boot parameters */ gd->bd->bi_boot_params = 0x00000100; /* power down all but port 0 on the switch */ ks8695_write(KS8695_SWITCH_LPPM12, 0x00000005); ks8695_write(KS8695_SWITCH_LPPM34, 0x00050005); return 0; }
ulong get_timer_masked(void) { /* Check for timer wrap */ if (ks8695_read(KS8695_INT_STATUS) & KS8695_INTMASK_TIMERINT1) { /* Clear interrupt condition */ ks8695_write(KS8695_INT_STATUS, KS8695_INTMASK_TIMERINT1); timer_ticks++; } return timer_ticks; }