mirror of https://github.com/acidanthera/audk.git
Enhance PcAt IsaAcpi driver to support enable/disable separated functions per PCD settings.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11362 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
5fbfa2d023
commit
e8bce4b41c
|
@ -1,7 +1,7 @@
|
||||||
/** @file
|
/** @file
|
||||||
ISA ACPI Protocol Implementation
|
ISA ACPI Protocol Implementation
|
||||||
|
|
||||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -20,6 +20,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
//
|
//
|
||||||
// COM 1 UART Controller
|
// COM 1 UART Controller
|
||||||
//
|
//
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED
|
||||||
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom1DeviceResources[] = {
|
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom1DeviceResources[] = {
|
||||||
{EfiIsaAcpiResourceIo, 0, 0x3f8, 0x3ff},
|
{EfiIsaAcpiResourceIo, 0, 0x3f8, 0x3ff},
|
||||||
{EfiIsaAcpiResourceInterrupt, 0, 4, 0},
|
{EfiIsaAcpiResourceInterrupt, 0, 4, 0},
|
||||||
|
@ -29,6 +30,7 @@ EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom1DeviceResources[] = {
|
||||||
//
|
//
|
||||||
// COM 2 UART Controller
|
// COM 2 UART Controller
|
||||||
//
|
//
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED
|
||||||
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom2DeviceResources[] = {
|
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom2DeviceResources[] = {
|
||||||
{EfiIsaAcpiResourceIo, 0, 0x2f8, 0x2ff},
|
{EfiIsaAcpiResourceIo, 0, 0x2f8, 0x2ff},
|
||||||
{EfiIsaAcpiResourceInterrupt, 0, 3, 0},
|
{EfiIsaAcpiResourceInterrupt, 0, 3, 0},
|
||||||
|
@ -38,6 +40,7 @@ EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom2DeviceResources[] = {
|
||||||
//
|
//
|
||||||
// PS/2 Keyboard Controller
|
// PS/2 Keyboard Controller
|
||||||
//
|
//
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED
|
||||||
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2KeyboardDeviceResources[] = {
|
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2KeyboardDeviceResources[] = {
|
||||||
{EfiIsaAcpiResourceIo, 0, 0x60, 0x64},
|
{EfiIsaAcpiResourceIo, 0, 0x60, 0x64},
|
||||||
{EfiIsaAcpiResourceInterrupt, 0, 1, 0},
|
{EfiIsaAcpiResourceInterrupt, 0, 1, 0},
|
||||||
|
@ -47,6 +50,7 @@ EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2KeyboardDeviceResources[] = {
|
||||||
//
|
//
|
||||||
// PS/2 Mouse Controller
|
// PS/2 Mouse Controller
|
||||||
//
|
//
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED
|
||||||
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2MouseDeviceResources[] = {
|
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2MouseDeviceResources[] = {
|
||||||
{EfiIsaAcpiResourceIo, 0, 0x60, 0x64},
|
{EfiIsaAcpiResourceIo, 0, 0x60, 0x64},
|
||||||
{EfiIsaAcpiResourceInterrupt, 0, 12, 0},
|
{EfiIsaAcpiResourceInterrupt, 0, 12, 0},
|
||||||
|
@ -56,6 +60,7 @@ EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2MouseDeviceResources[] = {
|
||||||
//
|
//
|
||||||
// Floppy Disk Controller
|
// Floppy Disk Controller
|
||||||
//
|
//
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED
|
||||||
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiFloppyResources[] = {
|
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiFloppyResources[] = {
|
||||||
{EfiIsaAcpiResourceIo, 0, 0x3f0, 0x3f7},
|
{EfiIsaAcpiResourceIo, 0, 0x3f0, 0x3f7},
|
||||||
{EfiIsaAcpiResourceInterrupt, 0, 6, 0},
|
{EfiIsaAcpiResourceInterrupt, 0, 6, 0},
|
||||||
|
@ -63,18 +68,77 @@ EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiFloppyResources[] = {
|
||||||
{EfiIsaAcpiResourceEndOfList, 0, 0, 0}
|
{EfiIsaAcpiResourceEndOfList, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED
|
||||||
|
EFI_ISA_ACPI_RESOURCE_LIST mPcatIsaAcpiCom1Device = {
|
||||||
|
{EISA_PNP_ID(0x501), 0}, mPcatIsaAcpiCom1DeviceResources
|
||||||
|
}; // COM 1 UART Controller
|
||||||
|
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED
|
||||||
|
EFI_ISA_ACPI_RESOURCE_LIST mPcatIsaAcpiCom2Device = {
|
||||||
|
{EISA_PNP_ID(0x501), 1}, mPcatIsaAcpiCom2DeviceResources
|
||||||
|
}; // COM 2 UART Controller
|
||||||
|
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED
|
||||||
|
EFI_ISA_ACPI_RESOURCE_LIST mPcatIsaAcpiPs2KeyboardDevice = {
|
||||||
|
{EISA_PNP_ID(0x303), 0}, mPcatIsaAcpiPs2KeyboardDeviceResources
|
||||||
|
}; // PS/2 Keyboard Controller
|
||||||
|
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED
|
||||||
|
EFI_ISA_ACPI_RESOURCE_LIST mPcatIsaAcpiPs2MouseDevice = {
|
||||||
|
{EISA_PNP_ID(0x303), 1}, mPcatIsaAcpiPs2MouseDeviceResources
|
||||||
|
}; // PS/2 Mouse Controller
|
||||||
|
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED
|
||||||
|
EFI_ISA_ACPI_RESOURCE_LIST mPcatIsaAcpiFloppyADevice = {
|
||||||
|
{EISA_PNP_ID(0x604), 0}, mPcatIsaAcpiFloppyResources
|
||||||
|
}; // Floppy Disk Controller A:
|
||||||
|
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED
|
||||||
|
EFI_ISA_ACPI_RESOURCE_LIST mPcatIsaAcpiFloppyBDevice = {
|
||||||
|
{EISA_PNP_ID(0x604), 1}, mPcatIsaAcpiFloppyResources
|
||||||
|
}; // Floppy Disk Controller B:
|
||||||
|
|
||||||
//
|
//
|
||||||
// Table of ISA Controllers
|
// Table of ISA Controllers
|
||||||
//
|
//
|
||||||
EFI_ISA_ACPI_RESOURCE_LIST gPcatIsaAcpiDeviceList[] = {
|
EFI_ISA_ACPI_RESOURCE_LIST gPcatIsaAcpiDeviceList[7] = {0};
|
||||||
{{EISA_PNP_ID(0x501), 0}, mPcatIsaAcpiCom1DeviceResources }, // COM 1 UART Controller
|
|
||||||
{{EISA_PNP_ID(0x501), 1}, mPcatIsaAcpiCom2DeviceResources }, // COM 2 UART Controller
|
/**
|
||||||
{{EISA_PNP_ID(0x303), 0}, mPcatIsaAcpiPs2KeyboardDeviceResources }, // PS/2 Keyboard Controller
|
Initialize gPcatIsaAcpiDeviceList.
|
||||||
{{EISA_PNP_ID(0x303), 1}, mPcatIsaAcpiPs2MouseDeviceResources }, // PS/2 Mouse Controller
|
**/
|
||||||
{{EISA_PNP_ID(0x604), 0}, mPcatIsaAcpiFloppyResources }, // Floppy Disk Controller A:
|
VOID
|
||||||
{{EISA_PNP_ID(0x604), 1}, mPcatIsaAcpiFloppyResources }, // Floppy Disk Controller B:
|
InitializePcatIsaAcpiDeviceList (
|
||||||
{{0, 0}, NULL } // End if ISA Controllers
|
VOID
|
||||||
};
|
)
|
||||||
|
{
|
||||||
|
UINTN Index;
|
||||||
|
|
||||||
|
Index = 0;
|
||||||
|
if (PcdGetBool (PcdIsaAcpiCom1Enable)) {
|
||||||
|
CopyMem (&gPcatIsaAcpiDeviceList[Index], &mPcatIsaAcpiCom1Device, sizeof(mPcatIsaAcpiCom1Device));
|
||||||
|
Index++;
|
||||||
|
}
|
||||||
|
if (PcdGetBool (PcdIsaAcpiCom2Enable)) {
|
||||||
|
CopyMem (&gPcatIsaAcpiDeviceList[Index], &mPcatIsaAcpiCom2Device, sizeof(mPcatIsaAcpiCom2Device));
|
||||||
|
Index++;
|
||||||
|
}
|
||||||
|
if (PcdGetBool (PcdIsaAcpiPs2KeyboardEnable)) {
|
||||||
|
CopyMem (&gPcatIsaAcpiDeviceList[Index], &mPcatIsaAcpiPs2KeyboardDevice, sizeof(mPcatIsaAcpiPs2KeyboardDevice));
|
||||||
|
Index++;
|
||||||
|
}
|
||||||
|
if (PcdGetBool (PcdIsaAcpiPs2MouseEnable)) {
|
||||||
|
CopyMem (&gPcatIsaAcpiDeviceList[Index], &mPcatIsaAcpiPs2MouseDevice, sizeof(mPcatIsaAcpiPs2MouseDevice));
|
||||||
|
Index++;
|
||||||
|
}
|
||||||
|
if (PcdGetBool (PcdIsaAcpiFloppyAEnable)) {
|
||||||
|
CopyMem (&gPcatIsaAcpiDeviceList[Index], &mPcatIsaAcpiFloppyADevice, sizeof(mPcatIsaAcpiFloppyADevice));
|
||||||
|
Index++;
|
||||||
|
}
|
||||||
|
if (PcdGetBool (PcdIsaAcpiFloppyBEnable)) {
|
||||||
|
CopyMem (&gPcatIsaAcpiDeviceList[Index], &mPcatIsaAcpiFloppyBDevice, sizeof(mPcatIsaAcpiFloppyBDevice));
|
||||||
|
Index++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// ISA ACPI Protocol Functions
|
// ISA ACPI Protocol Functions
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
## @file
|
## @file
|
||||||
# Component description file for PCAT ISA ACPI driver
|
# Component description file for PCAT ISA ACPI driver
|
||||||
#
|
#
|
||||||
# Copyright (c) 2005 - 2010, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
# which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -25,11 +25,14 @@
|
||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
|
IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
|
||||||
|
PcAtChipsetPkg/PcAtChipsetPkg.dec
|
||||||
|
|
||||||
[LibraryClasses]
|
[LibraryClasses]
|
||||||
UefiDriverEntryPoint
|
UefiDriverEntryPoint
|
||||||
UefiBootServicesTableLib
|
UefiBootServicesTableLib
|
||||||
UefiLib
|
UefiLib
|
||||||
|
BaseMemoryLib
|
||||||
|
PcdLib
|
||||||
|
|
||||||
[Sources]
|
[Sources]
|
||||||
PcatIsaAcpi.h
|
PcatIsaAcpi.h
|
||||||
|
@ -40,3 +43,11 @@
|
||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiPciIoProtocolGuid
|
gEfiPciIoProtocolGuid
|
||||||
gEfiIsaAcpiProtocolGuid
|
gEfiIsaAcpiProtocolGuid
|
||||||
|
|
||||||
|
[Pcd]
|
||||||
|
gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiCom1Enable
|
||||||
|
gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiCom2Enable
|
||||||
|
gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiPs2KeyboardEnable
|
||||||
|
gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiPs2MouseEnable
|
||||||
|
gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiFloppyAEnable
|
||||||
|
gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiFloppyBEnable
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/** @file
|
/** @file
|
||||||
EFI PCAT ISA ACPI Driver for a Generic PC Platform
|
EFI PCAT ISA ACPI Driver for a Generic PC Platform
|
||||||
|
|
||||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -242,6 +242,11 @@ PcatIsaAcpiDriverBindingStart (
|
||||||
PcatIsaAcpiDev->Signature = PCAT_ISA_ACPI_DEV_SIGNATURE;
|
PcatIsaAcpiDev->Signature = PCAT_ISA_ACPI_DEV_SIGNATURE;
|
||||||
PcatIsaAcpiDev->Handle = Controller;
|
PcatIsaAcpiDev->Handle = Controller;
|
||||||
PcatIsaAcpiDev->PciIo = PciIo;
|
PcatIsaAcpiDev->PciIo = PciIo;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Initialize PcatIsaAcpiDeviceList
|
||||||
|
//
|
||||||
|
InitializePcatIsaAcpiDeviceList ();
|
||||||
|
|
||||||
//
|
//
|
||||||
// IsaAcpi interface
|
// IsaAcpi interface
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/** @file
|
/** @file
|
||||||
EFI PCAT ISA ACPI Driver for a Generic PC Platform
|
EFI PCAT ISA ACPI Driver for a Generic PC Platform
|
||||||
|
|
||||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -29,6 +29,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
#include <Library/UefiLib.h>
|
#include <Library/UefiLib.h>
|
||||||
#include <Library/UefiBootServicesTableLib.h>
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
|
#include <Library/BaseMemoryLib.h>
|
||||||
|
#include <Library/PcdLib.h>
|
||||||
|
|
||||||
#include <Protocol/IsaAcpi.h>
|
#include <Protocol/IsaAcpi.h>
|
||||||
//
|
//
|
||||||
|
@ -261,4 +263,12 @@ IsaInterfaceInit (
|
||||||
IN EFI_ISA_ACPI_PROTOCOL *This
|
IN EFI_ISA_ACPI_PROTOCOL *This
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initialize the ISA device list.
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
InitializePcatIsaAcpiDeviceList (
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
# This package is designed to public interfaces and implementation which follows
|
# This package is designed to public interfaces and implementation which follows
|
||||||
# PcAt defacto standard.
|
# PcAt defacto standard.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -44,7 +44,26 @@
|
||||||
|
|
||||||
## Pcd8259LegacyModeEdgeLevel defines the default edge level for legacy mode's interrrupt controller.
|
## Pcd8259LegacyModeEdgeLevel defines the default edge level for legacy mode's interrrupt controller.
|
||||||
gPcAtChipsetPkgTokenSpaceGuid.Pcd8259LegacyModeEdgeLevel|0x0000|UINT16|0x00000002
|
gPcAtChipsetPkgTokenSpaceGuid.Pcd8259LegacyModeEdgeLevel|0x0000|UINT16|0x00000002
|
||||||
|
|
||||||
|
[PcdsFixedAtBuild, PcdsDynamic, PcdsPatchableInModule]
|
||||||
|
## This PCD specifies whether we need enable IsaAcpiCom1 device.
|
||||||
|
gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiCom1Enable|TRUE|BOOLEAN|0x00000003
|
||||||
|
|
||||||
|
## This PCD specifies whether we need enable IsaAcpiCom2 device.
|
||||||
|
gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiCom2Enable|TRUE|BOOLEAN|0x00000004
|
||||||
|
|
||||||
|
## This PCD specifies whether we need enable IsaAcpiPs2Keyboard device.
|
||||||
|
gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiPs2KeyboardEnable|TRUE|BOOLEAN|0x00000005
|
||||||
|
|
||||||
|
## This PCD specifies whether we need enable IsaAcpiPs2Mouse device.
|
||||||
|
gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiPs2MouseEnable|TRUE|BOOLEAN|0x00000006
|
||||||
|
|
||||||
|
## This PCD specifies whether we need enable IsaAcpiFloppyA device.
|
||||||
|
gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiFloppyAEnable|TRUE|BOOLEAN|0x00000007
|
||||||
|
|
||||||
|
## This PCD specifies whether we need enable IsaAcpiFloppyB device.
|
||||||
|
gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiFloppyBEnable|TRUE|BOOLEAN|0x00000008
|
||||||
|
|
||||||
[Guids]
|
[Guids]
|
||||||
gPcAtChipsetPkgTokenSpaceGuid = { 0x326ae723, 0xae32, 0x4589, { 0x98, 0xb8, 0xca, 0xc2, 0x3c, 0xdc, 0xc1, 0xb1 } }
|
gPcAtChipsetPkgTokenSpaceGuid = { 0x326ae723, 0xae32, 0x4589, { 0x98, 0xb8, 0xca, 0xc2, 0x3c, 0xdc, 0xc1, 0xb1 } }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue