From 591ee27e8495b232e4b68d9df90c4a478a00f991 Mon Sep 17 00:00:00 2001 From: xgu3 Date: Mon, 15 Jan 2007 06:24:49 +0000 Subject: [PATCH] To fix, 1. ScrollLock key does not work in USB KB driver 2. PCI_ROOT_BRIDGE_IO.configuration should use OUT for Resources git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2248 6f19259b-4bc3-4df7-8a09-765794883524 --- EdkModulePkg/Bus/Usb/UsbKb/Dxe/efikey.h | 4 +++- EdkModulePkg/Bus/Usb/UsbKb/Dxe/keyboard.c | 11 ++++++++--- MdePkg/Include/Protocol/PciRootBridgeIo.h | 4 ++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/EdkModulePkg/Bus/Usb/UsbKb/Dxe/efikey.h b/EdkModulePkg/Bus/Usb/UsbKb/Dxe/efikey.h index 091dd695a5..31307ebe57 100644 --- a/EdkModulePkg/Bus/Usb/UsbKb/Dxe/efikey.h +++ b/EdkModulePkg/Bus/Usb/UsbKb/Dxe/efikey.h @@ -65,6 +65,7 @@ typedef struct { UINT8 ShiftOn; UINT8 NumLockOn; UINT8 CapsOn; + UINT8 ScrollOn; UINT8 LastKeyCodeArray[8]; UINT8 CurKeyChar; @@ -113,6 +114,7 @@ typedef struct { typedef struct { UINT8 NumLock : 1; UINT8 CapsLock : 1; - UINT8 Resrvd : 6; + UINT8 ScrollLock : 1; + UINT8 Resrvd : 5; } LED_MAP; #endif diff --git a/EdkModulePkg/Bus/Usb/UsbKb/Dxe/keyboard.c b/EdkModulePkg/Bus/Usb/UsbKb/Dxe/keyboard.c index 1328e6a098..b6b97c3b48 100644 --- a/EdkModulePkg/Bus/Usb/UsbKb/Dxe/keyboard.c +++ b/EdkModulePkg/Bus/Usb/UsbKb/Dxe/keyboard.c @@ -761,9 +761,13 @@ USBParseKey ( // fall through // case 0x47: - // - // fall through - // + // + // Turn on the ScrollLock light on KB + // + UsbKeyboardDevice->ScrollOn ^= 1; + SetKeyLED (UsbKeyboardDevice); + continue; + break; case 0x48: // // fall through @@ -1042,6 +1046,7 @@ SetKeyLED ( // Led.NumLock = (UINT8) UsbKeyboardDevice->NumLockOn; Led.CapsLock = (UINT8) UsbKeyboardDevice->CapsOn; + Led.ScrollLock = (UINT8) UsbKeyboardDevice->ScrollOn; Led.Resrvd = 0; ReportId = 0; diff --git a/MdePkg/Include/Protocol/PciRootBridgeIo.h b/MdePkg/Include/Protocol/PciRootBridgeIo.h index db0a4eed5f..af3d9ed188 100644 --- a/MdePkg/Include/Protocol/PciRootBridgeIo.h +++ b/MdePkg/Include/Protocol/PciRootBridgeIo.h @@ -356,8 +356,8 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_CONFIGURATION) ( - IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, - IN VOID **Resources + IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *This, + OUT VOID **Resources ); struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL { -- 2.39.2