VOID SlInitDisplay( VOID ) /*++ Routine Description: Clears the screen and does some initialization of global variables based on the ARC display information. Arguments: None Return Value: None. --*/ { PARC_DISPLAY_STATUS DisplayStatus; // // Check to see if this version of the ARC firmware is revision 2 or above. // // If not, we default to 80x25 // if ((SYSTEM_BLOCK->Version > 1) || ((SYSTEM_BLOCK->Version == 1) && (SYSTEM_BLOCK->Revision >= 2))) { // // Additional checks are required on 1.2 firmware, since some // 1.2 firmware does not implement ArcGetDisplayStatus // if ((SYSTEM_BLOCK->FirmwareVectorLength > (ULONG)GetDisplayStatusRoutine*sizeof(PVOID)) && (SYSTEM_BLOCK->FirmwareVector[GetDisplayStatusRoutine] != NULL)) { DisplayStatus = ArcGetDisplayStatus(ARC_CONSOLE_OUTPUT); ScreenWidth = DisplayStatus->CursorMaxXPosition; ScreenHeight = DisplayStatus->CursorMaxYPosition; } } SlSetCurrentAttribute(DEFATT); SlClearDisplay(); }
static void __init sni_display_setup(void) { #if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE) && defined(CONFIG_ARC) struct screen_info *si = &screen_info; DISPLAY_STATUS *di; di = ArcGetDisplayStatus(1); if (di) { si->orig_x = di->CursorXPosition; si->orig_y = di->CursorYPosition; si->orig_video_cols = di->CursorMaxXPosition; si->orig_video_lines = di->CursorMaxYPosition; si->orig_video_isVGA = VIDEO_TYPE_VGAC; si->orig_video_points = 16; } #endif }