summaryrefslogtreecommitdiff
path: root/PcAtChipsetPkg
diff options
context:
space:
mode:
authorniruiyu <niruiyu@6f19259b-4bc3-4df7-8a09-765794883524>2011-03-10 07:33:42 +0000
committerniruiyu <niruiyu@6f19259b-4bc3-4df7-8a09-765794883524>2011-03-10 07:33:42 +0000
commite8bce4b41ca25bc14bcee61dfb0ffe14d65cce95 (patch)
tree0dea44009b24fb0a56d28ee2e67d4ab9a4b8bd11 /PcAtChipsetPkg
parent5fbfa2d023184889752e386ac8827c36b72e7661 (diff)
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
Diffstat (limited to 'PcAtChipsetPkg')
-rw-r--r--PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.c84
-rw-r--r--PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf13
-rw-r--r--PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.c7
-rw-r--r--PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.h12
-rw-r--r--PcAtChipsetPkg/PcAtChipsetPkg.dec23
5 files changed, 124 insertions, 15 deletions
diff --git a/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.c b/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.c
index b5ba25ede..119401627 100644
--- a/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.c
+++ b/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.c
@@ -1,7 +1,7 @@
/** @file
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
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
@@ -20,6 +20,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
//
// COM 1 UART Controller
//
+GLOBAL_REMOVE_IF_UNREFERENCED
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom1DeviceResources[] = {
{EfiIsaAcpiResourceIo, 0, 0x3f8, 0x3ff},
{EfiIsaAcpiResourceInterrupt, 0, 4, 0},
@@ -29,6 +30,7 @@ EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom1DeviceResources[] = {
//
// COM 2 UART Controller
//
+GLOBAL_REMOVE_IF_UNREFERENCED
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom2DeviceResources[] = {
{EfiIsaAcpiResourceIo, 0, 0x2f8, 0x2ff},
{EfiIsaAcpiResourceInterrupt, 0, 3, 0},
@@ -38,6 +40,7 @@ EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom2DeviceResources[] = {
//
// PS/2 Keyboard Controller
//
+GLOBAL_REMOVE_IF_UNREFERENCED
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2KeyboardDeviceResources[] = {
{EfiIsaAcpiResourceIo, 0, 0x60, 0x64},
{EfiIsaAcpiResourceInterrupt, 0, 1, 0},
@@ -47,6 +50,7 @@ EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2KeyboardDeviceResources[] = {
//
// PS/2 Mouse Controller
//
+GLOBAL_REMOVE_IF_UNREFERENCED
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2MouseDeviceResources[] = {
{EfiIsaAcpiResourceIo, 0, 0x60, 0x64},
{EfiIsaAcpiResourceInterrupt, 0, 12, 0},
@@ -56,6 +60,7 @@ EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2MouseDeviceResources[] = {
//
// Floppy Disk Controller
//
+GLOBAL_REMOVE_IF_UNREFERENCED
EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiFloppyResources[] = {
{EfiIsaAcpiResourceIo, 0, 0x3f0, 0x3f7},
{EfiIsaAcpiResourceInterrupt, 0, 6, 0},
@@ -63,18 +68,77 @@ EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiFloppyResources[] = {
{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
//
-EFI_ISA_ACPI_RESOURCE_LIST gPcatIsaAcpiDeviceList[] = {
- {{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
- {{EISA_PNP_ID(0x303), 1}, mPcatIsaAcpiPs2MouseDeviceResources }, // PS/2 Mouse Controller
- {{EISA_PNP_ID(0x604), 0}, mPcatIsaAcpiFloppyResources }, // Floppy Disk Controller A:
- {{EISA_PNP_ID(0x604), 1}, mPcatIsaAcpiFloppyResources }, // Floppy Disk Controller B:
- {{0, 0}, NULL } // End if ISA Controllers
-};
+EFI_ISA_ACPI_RESOURCE_LIST gPcatIsaAcpiDeviceList[7] = {0};
+
+/**
+ Initialize gPcatIsaAcpiDeviceList.
+**/
+VOID
+InitializePcatIsaAcpiDeviceList (
+ 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
diff --git a/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf b/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf
index 5d5101efd..2edd39a01 100644
--- a/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf
+++ b/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf
@@ -1,7 +1,7 @@
## @file
# 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
# 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
@@ -25,11 +25,14 @@
[Packages]
MdePkg/MdePkg.dec
IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
+ PcAtChipsetPkg/PcAtChipsetPkg.dec
[LibraryClasses]
UefiDriverEntryPoint
UefiBootServicesTableLib
UefiLib
+ BaseMemoryLib
+ PcdLib
[Sources]
PcatIsaAcpi.h
@@ -40,3 +43,11 @@
[Protocols]
gEfiPciIoProtocolGuid
gEfiIsaAcpiProtocolGuid
+
+[Pcd]
+ gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiCom1Enable
+ gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiCom2Enable
+ gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiPs2KeyboardEnable
+ gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiPs2MouseEnable
+ gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiFloppyAEnable
+ gPcAtChipsetPkgTokenSpaceGuid.PcdIsaAcpiFloppyBEnable
diff --git a/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.c b/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.c
index ea1180f3a..55fefd4ca 100644
--- a/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.c
+++ b/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.c
@@ -1,7 +1,7 @@
/** @file
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
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
@@ -242,6 +242,11 @@ PcatIsaAcpiDriverBindingStart (
PcatIsaAcpiDev->Signature = PCAT_ISA_ACPI_DEV_SIGNATURE;
PcatIsaAcpiDev->Handle = Controller;
PcatIsaAcpiDev->PciIo = PciIo;
+
+ //
+ // Initialize PcatIsaAcpiDeviceList
+ //
+ InitializePcatIsaAcpiDeviceList ();
//
// IsaAcpi interface
diff --git a/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.h b/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.h
index 6eed1f2ae..1fcac402b 100644
--- a/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.h
+++ b/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.h
@@ -1,7 +1,7 @@
/** @file
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
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
@@ -29,6 +29,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Library/UefiLib.h>
#include <Library/UefiBootServicesTableLib.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/PcdLib.h>
#include <Protocol/IsaAcpi.h>
//
@@ -261,4 +263,12 @@ IsaInterfaceInit (
IN EFI_ISA_ACPI_PROTOCOL *This
);
+/**
+ Initialize the ISA device list.
+**/
+VOID
+InitializePcatIsaAcpiDeviceList (
+ VOID
+ );
+
#endif
diff --git a/PcAtChipsetPkg/PcAtChipsetPkg.dec b/PcAtChipsetPkg/PcAtChipsetPkg.dec
index 3ab147c23..c67c2f9f2 100644
--- a/PcAtChipsetPkg/PcAtChipsetPkg.dec
+++ b/PcAtChipsetPkg/PcAtChipsetPkg.dec
@@ -4,7 +4,7 @@
# This package is designed to public interfaces and implementation which follows
# 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
# 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.
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]
gPcAtChipsetPkgTokenSpaceGuid = { 0x326ae723, 0xae32, 0x4589, { 0x98, 0xb8, 0xca, 0xc2, 0x3c, 0xdc, 0xc1, 0xb1 } }