aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2021-12-31 07:28:36 -0500
committerTom Rini <trini@konsulko.com>2021-12-31 07:28:36 -0500
commit5fec3c853d5e6b998db66f586871839c408195a3 (patch)
treec3368f8625b3a9383f30745ce1fafafc35cafac3 /drivers
parent87a9aa604de8a4a50642e25b88af328ab375893b (diff)
parent86bb48880d75653d692cd02edb81888a2ed2dbb2 (diff)
downloadu-boot-5fec3c853d5e6b998db66f586871839c408195a3.zip
u-boot-5fec3c853d5e6b998db66f586871839c408195a3.tar.gz
u-boot-5fec3c853d5e6b998db66f586871839c408195a3.tar.bz2
Merge tag 'efi-next' of https://source.denx.de/u-boot/custodians/u-boot-efi into nextWIP/31Dec2021-next
Pull request of efi-next Documentation: * Add Sunxi board description UEFI: * Improvements to U-Boot running on top of UEFI
Diffstat (limited to 'drivers')
-rw-r--r--drivers/serial/serial_efi.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/serial/serial_efi.c b/drivers/serial/serial_efi.c
index 33ddbd6..0067576 100644
--- a/drivers/serial/serial_efi.c
+++ b/drivers/serial/serial_efi.c
@@ -24,6 +24,9 @@ struct serial_efi_priv {
bool have_key;
};
+/* Convert a lower-case character to its ctrl-char equivalent */
+#define CTL_CH(c) ((c) - 'a' + 1)
+
int serial_efi_setbrg(struct udevice *dev, int baudrate)
{
return 0;
@@ -49,6 +52,7 @@ static int serial_efi_get_key(struct serial_efi_priv *priv)
static int serial_efi_getc(struct udevice *dev)
{
struct serial_efi_priv *priv = dev_get_priv(dev);
+ char conv_scan[10] = {0, 'p', 'n', 'f', 'b', 'a', 'e', 0, 8};
int ret, ch;
ret = serial_efi_get_key(priv);
@@ -63,8 +67,11 @@ static int serial_efi_getc(struct udevice *dev)
* key scan code of 8. Handle this so that backspace works correctly
* in the U-Boot command line.
*/
- if (!ch && priv->key.scan_code == 8)
- ch = 8;
+ if (!ch && priv->key.scan_code < sizeof(conv_scan)) {
+ ch = conv_scan[priv->key.scan_code];
+ if (ch >= 'a')
+ ch -= 'a' - 1;
+ }
debug(" [%x %x %x] ", ch, priv->key.unicode_char, priv->key.scan_code);
return ch;