// get system timer value timing_t gettime( ) { #ifdef USE_ECOS #ifdef USE_DCR_TIMEBASE return DCR_READ(XPAR_DCR_TIMEBASE_0_DCR_BASEADDR, 1); #else return *tbr; #endif // USE_DCR_TIMEBASE #else return clock( ); #endif }
void smfb_burner(void *v, uint on, uint flg) { struct smfb_softc *sc = (struct smfb_softc *)v; struct smfb *fb = sc->sc_fb; if (fb->is5xx) { if (on) { /* * Wait for a few cycles after restoring power, * to prevent white flickering. */ DCR_WRITE(fb, DCR_PANEL_DISPLAY_CONTROL, DCR_READ(fb, DCR_PANEL_DISPLAY_CONTROL) | PDC_VDD); smfb_wait_panel_vsync(fb, 4); DCR_WRITE(fb, DCR_PANEL_DISPLAY_CONTROL, DCR_READ(fb, DCR_PANEL_DISPLAY_CONTROL) | PDC_DATA); smfb_wait_panel_vsync(fb, 4); DCR_WRITE(fb, DCR_PANEL_DISPLAY_CONTROL, DCR_READ(fb, DCR_PANEL_DISPLAY_CONTROL) | (PDC_BIAS | PDC_EN)); } else DCR_WRITE(fb, DCR_PANEL_DISPLAY_CONTROL, DCR_READ(fb, DCR_PANEL_DISPLAY_CONTROL) & ~(PDC_EN | PDC_BIAS | PDC_DATA | PDC_VDD)); } else { if (on) { smfb_vgats_write(fb, 0x31, smfb_vgats_read(fb, 0x31) | 0x01); } else { smfb_vgats_write(fb, 0x21, smfb_vgats_read(fb, 0x21) | 0x30); smfb_vgats_write(fb, 0x31, smfb_vgats_read(fb, 0x31) & ~0x01); } } }