efi_loader: avoid EFI_CALL() for clearing screen

Carve out function efi_clear_screen.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
Heinrich Schuchardt 2022-10-15 11:13:59 +02:00
parent c98f6fed93
commit f32723663b

View file

@ -460,6 +460,20 @@ static efi_status_t EFIAPI efi_cout_set_attribute(
return EFI_EXIT(EFI_SUCCESS);
}
/**
* efi_cout_clear_screen() - clear screen
*/
static void efi_clear_screen(void)
{
/*
* The Linux console wants both a clear and a home command. The video
* uclass does not support <ESC>[H without coordinates, yet.
*/
printf(ESC "[2J" ESC "[1;1H");
efi_con_mode.cursor_column = 0;
efi_con_mode.cursor_row = 0;
}
/**
* efi_cout_clear_screen() - clear screen
*
@ -475,13 +489,7 @@ static efi_status_t EFIAPI efi_cout_clear_screen(
{
EFI_ENTRY("%p", this);
/*
* The Linux console wants both a clear and a home command. The video
* uclass does not support <ESC>[H without coordinates, yet.
*/
printf(ESC "[2J" ESC "[1;1H");
efi_con_mode.cursor_column = 0;
efi_con_mode.cursor_row = 0;
efi_clear_screen();
return EFI_EXIT(EFI_SUCCESS);
}
@ -510,7 +518,7 @@ static efi_status_t EFIAPI efi_cout_set_mode(
return EFI_EXIT(EFI_UNSUPPORTED);
efi_con_mode.mode = mode_number;
EFI_CALL(efi_cout_clear_screen(this));
efi_clear_screen();
return EFI_EXIT(EFI_SUCCESS);
}
@ -536,7 +544,7 @@ static efi_status_t EFIAPI efi_cout_reset(
efi_con_mode.attribute = 0x07;
printf(ESC "[0;37;40m");
/* Clear screen */
EFI_CALL(efi_cout_clear_screen(this));
efi_clear_screen();
return EFI_EXIT(EFI_SUCCESS);
}