vga: Change the arguments of vga_write_text to support extended ASCII
VGA defined the extended ASCII set based on CP437, but the function vga_write_text() accepts a signed char array. This will cause unnecessary confusion that if we want to print u with umlaut (code=129 in CP437), we need to explicitly cast it to -127 in signed char. Since we still want to leverage the built-in string utilities which only accepts const char*, we still need to cast it to signed char while processing, and cast it back to unsigned once we write into the frame buffer. BRANCH=brya BUG=b:264666392 TEST=emerge-brya coreboot chromeos-bootimage Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org> Change-Id: If555bbc05f40ce3f02339c0468afff6dda8b7ded Reviewed-on: https://review.coreboot.org/c/coreboot/+/73099 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tarun Tuli <taruntuli@google.com>
This commit is contained in:
parent
533f1e78d6
commit
26a9555073
|
@ -283,8 +283,10 @@ vga_line_write(unsigned int line, const char *string)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
vga_write_text(enum VGA_TEXT_ALIGNMENT alignment, unsigned int line, const char *string)
|
vga_write_text(enum VGA_TEXT_ALIGNMENT alignment, unsigned int line,
|
||||||
|
const unsigned char *ustring)
|
||||||
{
|
{
|
||||||
|
const char *string = (const char *)ustring;
|
||||||
char str[VGA_COLUMNS * VGA_LINES] = {0};
|
char str[VGA_COLUMNS * VGA_LINES] = {0};
|
||||||
memcpy(str, string, strnlen(string, sizeof(str) - 1));
|
memcpy(str, string, strnlen(string, sizeof(str) - 1));
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ void vga_line_write(unsigned int line, const char *string);
|
||||||
* vga_write_text() writes a line of text aligned left/center/right
|
* vga_write_text() writes a line of text aligned left/center/right
|
||||||
* horizontally on the screen (i.e. enum VGA_TEXT_ALIGNMENT)
|
* horizontally on the screen (i.e. enum VGA_TEXT_ALIGNMENT)
|
||||||
*/
|
*/
|
||||||
void vga_write_text(enum VGA_TEXT_ALIGNMENT alignment, unsigned int line, const char *string);
|
void vga_write_text(enum VGA_TEXT_ALIGNMENT alignment, unsigned int line,
|
||||||
|
const unsigned char *ustring);
|
||||||
|
|
||||||
#endif /* VGA_H */
|
#endif /* VGA_H */
|
||||||
|
|
|
@ -14,6 +14,9 @@ bool ux_inform_user_of_update_operation(const char *name)
|
||||||
|
|
||||||
printk(BIOS_INFO, "Informing user on-display of %s.\n", name);
|
printk(BIOS_INFO, "Informing user on-display of %s.\n", name);
|
||||||
vga_write_text(VGA_TEXT_CENTER, VGA_TEXT_HORIZONTAL_MIDDLE,
|
vga_write_text(VGA_TEXT_CENTER, VGA_TEXT_HORIZONTAL_MIDDLE,
|
||||||
"Your device is finishing an update. This may take 1-2 minutes.\nPlease do not turn off your device.");
|
(const unsigned char *)
|
||||||
|
"Your device is finishing an update. "
|
||||||
|
"This may take 1-2 minutes.\n"
|
||||||
|
"Please do not turn off your device.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue