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 {