From: jljusten Date: Mon, 23 Feb 2009 22:30:53 +0000 (+0000) Subject: IsaAcpiDxe: DuetPkg => PcAtChipsetPkg X-Git-Tag: edk2-stable201903~18636 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=81727f38ed0d37bf6f5110def397220a8c207182;ds=sidebyside IsaAcpiDxe: DuetPkg => PcAtChipsetPkg git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7614 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/DuetPkg/IsaAcpiDxe/ComponentName.c b/DuetPkg/IsaAcpiDxe/ComponentName.c deleted file mode 100644 index 9b88dcf86d..0000000000 --- a/DuetPkg/IsaAcpiDxe/ComponentName.c +++ /dev/null @@ -1,170 +0,0 @@ -/*++ - -Copyright (c) 2006 - 2007, Intel Corporation -All rights reserved. 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 -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - -Module Name: - - ComponentName.c - -Abstract: - ---*/ - -#include "PcatIsaAcpi.h" - -// -// EFI Component Name Functions -// -EFI_STATUS -EFIAPI -PcatIsaAcpiComponentNameGetDriverName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName - ); - -EFI_STATUS -EFIAPI -PcatIsaAcpiComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName - ); - -// -// EFI Component Name Protocol -// - -EFI_COMPONENT_NAME2_PROTOCOL gPcatIsaAcpiComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) PcatIsaAcpiComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) PcatIsaAcpiComponentNameGetControllerName, - "en" -}; - -EFI_COMPONENT_NAME_PROTOCOL gPcatIsaAcpiComponentName = { - PcatIsaAcpiComponentNameGetDriverName, - PcatIsaAcpiComponentNameGetControllerName, - "eng" -}; - - -EFI_UNICODE_STRING_TABLE mPcatIsaAcpiDriverNameTable[] = { - { - "eng;en", - L"PC-AT ISA Device Enumeration Driver" - }, - { - NULL, - NULL - } -}; - -EFI_STATUS -EFIAPI -PcatIsaAcpiComponentNameGetDriverName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName - ) -/*++ - - Routine Description: - Retrieves a Unicode string that is the user readable name of the EFI Driver. - - Arguments: - This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance. - Language - A pointer to a three character ISO 639-2 language identifier. - This is the language of the driver name that that the caller - is requesting, and it must match one of the languages specified - in SupportedLanguages. The number of languages supported by a - driver is up to the driver writer. - DriverName - A pointer to the Unicode string to return. This Unicode string - is the name of the driver specified by This in the language - specified by Language. - - Returns: - EFI_SUCCES - The Unicode string for the Driver specified by This - and the language specified by Language was returned - in DriverName. - EFI_INVALID_PARAMETER - Language is NULL. - EFI_INVALID_PARAMETER - DriverName is NULL. - EFI_UNSUPPORTED - The driver specified by This does not support the - language specified by Language. - ---*/ -{ - return LookupUnicodeString2 ( - Language, - This->SupportedLanguages, - mPcatIsaAcpiDriverNameTable, - DriverName, - (BOOLEAN)(This == &gPcatIsaAcpiComponentName) - ); -} - -EFI_STATUS -EFIAPI -PcatIsaAcpiComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName - ) -/*++ - - Routine Description: - Retrieves a Unicode string that is the user readable name of the controller - that is being managed by an EFI Driver. - - Arguments: - This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance. - ControllerHandle - The handle of a controller that the driver specified by - This is managing. This handle specifies the controller - whose name is to be returned. - ChildHandle - The handle of the child controller to retrieve the name - of. This is an optional parameter that may be NULL. It - will be NULL for device drivers. It will also be NULL - for a bus drivers that wish to retrieve the name of the - bus controller. It will not be NULL for a bus driver - that wishes to retrieve the name of a child controller. - Language - A pointer to a three character ISO 639-2 language - identifier. This is the language of the controller name - that that the caller is requesting, and it must match one - of the languages specified in SupportedLanguages. The - number of languages supported by a driver is up to the - driver writer. - ControllerName - A pointer to the Unicode string to return. This Unicode - string is the name of the controller specified by - ControllerHandle and ChildHandle in the language specified - by Language from the point of view of the driver specified - by This. - - Returns: - EFI_SUCCESS - The Unicode string for the user readable name in the - language specified by Language for the driver - specified by This was returned in DriverName. - EFI_INVALID_PARAMETER - ControllerHandle is not a valid EFI_HANDLE. - EFI_INVALID_PARAMETER - ChildHandle is not NULL and it is not a valid EFI_HANDLE. - EFI_INVALID_PARAMETER - Language is NULL. - EFI_INVALID_PARAMETER - ControllerName is NULL. - EFI_UNSUPPORTED - The driver specified by This is not currently managing - the controller specified by ControllerHandle and - ChildHandle. - EFI_UNSUPPORTED - The driver specified by This does not support the - language specified by Language. - ---*/ -{ - return EFI_UNSUPPORTED; -} diff --git a/DuetPkg/IsaAcpiDxe/IsaAcpi.c b/DuetPkg/IsaAcpiDxe/IsaAcpi.c deleted file mode 100644 index 5eba8591b6..0000000000 --- a/DuetPkg/IsaAcpiDxe/IsaAcpi.c +++ /dev/null @@ -1,306 +0,0 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. 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 -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - -Module Name: - - IsaAcpi.c - -Abstract: - - ISA ACPI Protocol Implementation - -Revision History - ---*/ - -#include "PcatIsaAcpi.h" - -// -// Platform specific data for the ISA devices that are present.in the platform -// - -// -// COM 1 UART Controller -// -EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom1DeviceResources[] = { - {EfiIsaAcpiResourceIo, 0, 0x3f8, 0x3ff}, - {EfiIsaAcpiResourceInterrupt, 0, 4, 0}, - {EfiIsaAcpiResourceEndOfList, 0, 0, 0} -}; - -// -// COM 2 UART Controller -// -EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom2DeviceResources[] = { - {EfiIsaAcpiResourceIo, 0, 0x2f8, 0x2ff}, - {EfiIsaAcpiResourceInterrupt, 0, 3, 0}, - {EfiIsaAcpiResourceEndOfList, 0, 0, 0} -}; - -// -// PS/2 Keyboard Controller -// -EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2KeyboardDeviceResources[] = { - {EfiIsaAcpiResourceIo, 0, 0x60, 0x64}, - {EfiIsaAcpiResourceInterrupt, 0, 1, 0}, - {EfiIsaAcpiResourceEndOfList, 0, 0, 0} -}; - -// -// PS/2 Mouse Controller -// -EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2MouseDeviceResources[] = { - {EfiIsaAcpiResourceIo, 0, 0x60, 0x64}, - {EfiIsaAcpiResourceInterrupt, 0, 12, 0}, - {EfiIsaAcpiResourceEndOfList, 0, 0, 0} -}; - -// -// Floppy Disk Controller -// -EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiFloppyResources[] = { - {EfiIsaAcpiResourceIo, 0, 0x3f0, 0x3f7}, - {EfiIsaAcpiResourceInterrupt, 0, 6, 0}, - {EfiIsaAcpiResourceDma, EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_COMPATIBLE | EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8 | EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE, 2, 0}, - {EfiIsaAcpiResourceEndOfList, 0, 0, 0} -}; - -// -// 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 -}; - -// -// ISA ACPI Protocol Functions -// -VOID -IsaDeviceLookup ( - IN EFI_ISA_ACPI_DEVICE_ID *Device, - OUT EFI_ISA_ACPI_RESOURCE_LIST **IsaAcpiDevice, - OUT EFI_ISA_ACPI_RESOURCE_LIST **NextIsaAcpiDevice - ) -/*++ - -Routine Description: - Enumerate the ISA devices on the ISA bus - -Arguments: - -Returns: - ---*/ -{ - UINTN Index; - - *IsaAcpiDevice = NULL; - if (NextIsaAcpiDevice != NULL) { - *NextIsaAcpiDevice = NULL; - } - if (Device == NULL) { - Index = 0; - } else { - for(Index = 0; gPcatIsaAcpiDeviceList[Index].ResourceItem != NULL; Index++) { - if (Device->HID == gPcatIsaAcpiDeviceList[Index].Device.HID && - Device->UID == gPcatIsaAcpiDeviceList[Index].Device.UID ) { - break; - } - } - if (gPcatIsaAcpiDeviceList[Index].ResourceItem == NULL) { - return; - } - *IsaAcpiDevice = &(gPcatIsaAcpiDeviceList[Index]); - Index++; - } - if (gPcatIsaAcpiDeviceList[Index].ResourceItem != NULL && NextIsaAcpiDevice != NULL) { - *NextIsaAcpiDevice = &(gPcatIsaAcpiDeviceList[Index]); - } -} - -EFI_STATUS -EFIAPI -IsaDeviceEnumerate ( - IN EFI_ISA_ACPI_PROTOCOL *This, - OUT EFI_ISA_ACPI_DEVICE_ID **Device - ) -/*++ - -Routine Description: - Enumerate the ISA devices on the ISA bus - -Arguments: - -Returns: - ---*/ -{ - EFI_ISA_ACPI_RESOURCE_LIST *IsaAcpiDevice; - EFI_ISA_ACPI_RESOURCE_LIST *NextIsaAcpiDevice; - - IsaDeviceLookup (*Device, &IsaAcpiDevice, &NextIsaAcpiDevice); - if (NextIsaAcpiDevice == NULL) { - return EFI_NOT_FOUND; - } - *Device = &(NextIsaAcpiDevice->Device); - return EFI_SUCCESS; -} - -EFI_STATUS -EFIAPI -IsaDeviceSetPower ( - IN EFI_ISA_ACPI_PROTOCOL *This, - IN EFI_ISA_ACPI_DEVICE_ID *Device, - IN BOOLEAN OnOff - ) -/*++ - -Routine Description: - Set ISA device power - -Arguments: - -Returns: - ---*/ -{ - return EFI_SUCCESS; -} - -EFI_STATUS -EFIAPI -IsaGetCurrentResource ( - IN EFI_ISA_ACPI_PROTOCOL *This, - IN EFI_ISA_ACPI_DEVICE_ID *Device, - OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList - ) -/*++ - -Routine Description: - Get current Resource of the specific ISA device - -Arguments: - -Returns: - ---*/ -{ - IsaDeviceLookup (Device, ResourceList, NULL); - if (*ResourceList == NULL) { - return EFI_NOT_FOUND; - } - return EFI_SUCCESS; -} - -EFI_STATUS -EFIAPI -IsaGetPossibleResource ( - IN EFI_ISA_ACPI_PROTOCOL *This, - IN EFI_ISA_ACPI_DEVICE_ID *Device, - OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList - ) -/*++ - -Routine Description: - -Arguments: - -Returns: - ---*/ -{ - return EFI_SUCCESS; -} - -EFI_STATUS -EFIAPI -IsaSetResource ( - IN EFI_ISA_ACPI_PROTOCOL *This, - IN EFI_ISA_ACPI_DEVICE_ID *Device, - IN EFI_ISA_ACPI_RESOURCE_LIST *ResourceList - ) -/*++ - -Routine Description: - -Arguments: - -Returns: - ---*/ -{ - return EFI_SUCCESS; -} - -EFI_STATUS -EFIAPI -IsaEnableDevice ( - IN EFI_ISA_ACPI_PROTOCOL *This, - IN EFI_ISA_ACPI_DEVICE_ID *Device, - IN BOOLEAN Enable - ) -/*++ - -Routine Description: - -Arguments: - -Returns: - ---*/ -{ - return EFI_SUCCESS; -} - -EFI_STATUS -EFIAPI -IsaInitDevice ( - IN EFI_ISA_ACPI_PROTOCOL *This, - IN EFI_ISA_ACPI_DEVICE_ID *Device - ) -/*++ - -Routine Description: - -Arguments: - -Returns: - ---*/ -{ - return EFI_SUCCESS; -} - - -EFI_STATUS -EFIAPI -IsaInterfaceInit ( - IN EFI_ISA_ACPI_PROTOCOL *This -) -/*++ - -Routine Description: - -Arguments: - -Returns: - ---*/ -{ - return EFI_SUCCESS; -} diff --git a/DuetPkg/IsaAcpiDxe/IsaAcpi.inf b/DuetPkg/IsaAcpiDxe/IsaAcpi.inf deleted file mode 100644 index ec01a28346..0000000000 --- a/DuetPkg/IsaAcpiDxe/IsaAcpi.inf +++ /dev/null @@ -1,50 +0,0 @@ -#/*++ -# -# Copyright (c) 2005, Intel Corporation -# All rights reserved. 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 -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# Module Name: -# IsaAcpi.inf -# -# Abstract: -# Component description file for PCAT ISA ACPI driver -# -#--*/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = IsaAcpi - FILE_GUID = 38A0EC22-FBE7-4911-8BC1-176E0D6C1DBD - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - EDK_RELEASE_VERSION = 0x00020000 - EFI_SPECIFICATION_VERSION = 0x0002000A - - ENTRY_POINT = PcatIsaAcpiDriverEntryPoint - -[Packages] - MdePkg/MdePkg.dec - IntelFrameworkPkg/IntelFrameworkPkg.dec - IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec - DuetPkg/DuetPkg.dec - -[LibraryClasses] - UefiDriverEntryPoint - UefiBootServicesTableLib - UefiLib - -[Sources] - PcatIsaAcpi.h - PcatIsaAcpi.c - IsaAcpi.c - ComponentName.c - -[Protocols] - gEfiPciIoProtocolGuid - gEfiIsaAcpiProtocolGuid diff --git a/DuetPkg/IsaAcpiDxe/PcatIsaAcpi.c b/DuetPkg/IsaAcpiDxe/PcatIsaAcpi.c deleted file mode 100644 index a0f4cdfd40..0000000000 --- a/DuetPkg/IsaAcpiDxe/PcatIsaAcpi.c +++ /dev/null @@ -1,329 +0,0 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. 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 -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - -Module Name: - - PcatIsaAcpi.c - -Abstract: - - EFI PCAT ISA ACPI Driver for a Generic PC Platform - -Revision History - ---*/ - -#include "PcatIsaAcpi.h" - -// -// PcatIsaAcpi Driver Binding Protocol -// -EFI_DRIVER_BINDING_PROTOCOL gPcatIsaAcpiDriverBinding = { - PcatIsaAcpiDriverBindingSupported, - PcatIsaAcpiDriverBindingStart, - PcatIsaAcpiDriverBindingStop, - 0xa, - NULL, - NULL -}; - -EFI_STATUS -EFIAPI -PcatIsaAcpiDriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -/*++ - - Routine Description: - the entry point of the PcatIsaAcpi driver - - Arguments: - - Returns: - ---*/ -{ - return EfiLibInstallDriverBindingComponentName2 ( - ImageHandle, - SystemTable, - &gPcatIsaAcpiDriverBinding, - ImageHandle, - &gPcatIsaAcpiComponentName, - &gPcatIsaAcpiComponentName2 - ); -} - -EFI_STATUS -EFIAPI -PcatIsaAcpiDriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ) -/*++ - -Routine Description: - - ControllerDriver Protocol Method - -Arguments: - -Returns: - ---*/ -{ - EFI_STATUS Status; - EFI_PCI_IO_PROTOCOL *PciIo; - PCI_TYPE00 Pci; - - // - // Get PciIo protocol instance - // - Status = gBS->OpenProtocol ( - Controller, - &gEfiPciIoProtocolGuid, - (VOID**)&PciIo, - This->DriverBindingHandle, - Controller, - EFI_OPEN_PROTOCOL_BY_DRIVER - ); - if (EFI_ERROR(Status)) { - return Status; - } - - Status = PciIo->Pci.Read ( - PciIo, - EfiPciIoWidthUint32, - 0, - sizeof(Pci) / sizeof(UINT32), - &Pci); - - if (!EFI_ERROR (Status)) { - Status = EFI_UNSUPPORTED; - if ((Pci.Hdr.Command & 0x03) == 0x03) { - if (Pci.Hdr.ClassCode[2] == PCI_CLASS_BRIDGE) { - // - // See if this is a standard PCI to ISA Bridge from the Base Code and Class Code - // - if (Pci.Hdr.ClassCode[1] == PCI_CLASS_BRIDGE_ISA) { - Status = EFI_SUCCESS; - } - - // - // See if this is an Intel PCI to ISA bridge in Positive Decode Mode - // - if (Pci.Hdr.ClassCode[1] == PCI_CLASS_BRIDGE_ISA_PDECODE && - Pci.Hdr.VendorId == 0x8086 && - Pci.Hdr.DeviceId == 0x7110) { - Status = EFI_SUCCESS; - } - } - } - } - - gBS->CloseProtocol ( - Controller, - &gEfiPciIoProtocolGuid, - This->DriverBindingHandle, - Controller - ); - - return Status; -} - -EFI_STATUS -EFIAPI -PcatIsaAcpiDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ) -/*++ - -Routine Description: - Install EFI_ISA_ACPI_PROTOCOL - -Arguments: - -Returns: - ---*/ -{ - EFI_STATUS Status; - EFI_PCI_IO_PROTOCOL *PciIo; - PCAT_ISA_ACPI_DEV *PcatIsaAcpiDev; - - PcatIsaAcpiDev = NULL; - // - // Open the PCI I/O Protocol Interface - // - PciIo = NULL; - Status = gBS->OpenProtocol ( - Controller, - &gEfiPciIoProtocolGuid, - (VOID**)&PciIo, - This->DriverBindingHandle, - Controller, - EFI_OPEN_PROTOCOL_BY_DRIVER - ); - if (EFI_ERROR (Status)) { - goto Done; - } - - Status = PciIo->Attributes ( - PciIo, - EfiPciIoAttributeOperationEnable, - EFI_PCI_DEVICE_ENABLE | EFI_PCI_IO_ATTRIBUTE_ISA_IO | EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO, - NULL - ); - if (EFI_ERROR (Status)) { - goto Done; - } - - // - // Allocate memory for the PCAT ISA ACPI Device structure - // - PcatIsaAcpiDev = NULL; - Status = gBS->AllocatePool ( - EfiBootServicesData, - sizeof(PCAT_ISA_ACPI_DEV), - (VOID**)&PcatIsaAcpiDev - ); - if (EFI_ERROR (Status)) { - goto Done; - } - - // - // Initialize the PCAT ISA ACPI Device structure - // - PcatIsaAcpiDev->Signature = PCAT_ISA_ACPI_DEV_SIGNATURE; - PcatIsaAcpiDev->Handle = Controller; - PcatIsaAcpiDev->PciIo = PciIo; - - // - // IsaAcpi interface - // - (PcatIsaAcpiDev->IsaAcpi).DeviceEnumerate = IsaDeviceEnumerate; - (PcatIsaAcpiDev->IsaAcpi).SetPower = IsaDeviceSetPower; - (PcatIsaAcpiDev->IsaAcpi).GetCurResource = IsaGetCurrentResource; - (PcatIsaAcpiDev->IsaAcpi).GetPosResource = IsaGetPossibleResource; - (PcatIsaAcpiDev->IsaAcpi).SetResource = IsaSetResource; - (PcatIsaAcpiDev->IsaAcpi).EnableDevice = IsaEnableDevice; - (PcatIsaAcpiDev->IsaAcpi).InitDevice = IsaInitDevice; - (PcatIsaAcpiDev->IsaAcpi).InterfaceInit = IsaInterfaceInit; - - // - // Install the ISA ACPI Protocol interface - // - Status = gBS->InstallMultipleProtocolInterfaces ( - &Controller, - &gEfiIsaAcpiProtocolGuid, &PcatIsaAcpiDev->IsaAcpi, - NULL - ); - -Done: - if (EFI_ERROR (Status)) { - if (PciIo) { - PciIo->Attributes ( - PciIo, - EfiPciIoAttributeOperationDisable, - EFI_PCI_DEVICE_ENABLE | EFI_PCI_IO_ATTRIBUTE_ISA_IO | EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO, - NULL - ); - } - gBS->CloseProtocol ( - Controller, - &gEfiPciIoProtocolGuid, - This->DriverBindingHandle, - Controller - ); - if (PcatIsaAcpiDev != NULL) { - gBS->FreePool (PcatIsaAcpiDev); - } - return Status; - } - - return EFI_SUCCESS; -} - -EFI_STATUS -EFIAPI -PcatIsaAcpiDriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer - ) -/*++ - - Routine Description: - - Arguments: - - Returns: - ---*/ -{ - EFI_STATUS Status; - EFI_ISA_ACPI_PROTOCOL *IsaAcpi; - PCAT_ISA_ACPI_DEV *PcatIsaAcpiDev; - - // - // Get the ISA ACPI Protocol Interface - // - Status = gBS->OpenProtocol ( - Controller, - &gEfiIsaAcpiProtocolGuid, - (VOID**)&IsaAcpi, - This->DriverBindingHandle, - Controller, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - if (EFI_ERROR (Status)) { - return Status; - } - - // - // Get the PCAT ISA ACPI Device structure from the ISA ACPI Protocol - // - PcatIsaAcpiDev = PCAT_ISA_ACPI_DEV_FROM_THIS (IsaAcpi); - - PcatIsaAcpiDev->PciIo->Attributes ( - PcatIsaAcpiDev->PciIo, - EfiPciIoAttributeOperationDisable, - EFI_PCI_DEVICE_ENABLE | EFI_PCI_IO_ATTRIBUTE_ISA_IO | EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO, - NULL - ); - - // - // Uninstall protocol interface: EFI_ISA_ACPI_PROTOCOL - // - Status = gBS->UninstallProtocolInterface ( - Controller, - &gEfiIsaAcpiProtocolGuid, &PcatIsaAcpiDev->IsaAcpi - ); - if (EFI_ERROR (Status)) { - return Status; - } - - gBS->CloseProtocol ( - Controller, - &gEfiPciIoProtocolGuid, - This->DriverBindingHandle, - Controller - ); - - gBS->FreePool (PcatIsaAcpiDev); - - return EFI_SUCCESS; -} diff --git a/DuetPkg/IsaAcpiDxe/PcatIsaAcpi.h b/DuetPkg/IsaAcpiDxe/PcatIsaAcpi.h deleted file mode 100644 index 8608156b9b..0000000000 --- a/DuetPkg/IsaAcpiDxe/PcatIsaAcpi.h +++ /dev/null @@ -1,159 +0,0 @@ -/*++ - -Copyright (c) 2006 - 2007, Intel Corporation -All rights reserved. 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 -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - -Module Name: - - PcatIsaAcpi.h - -Abstract: - - EFI PCAT ISA ACPI Driver for a Generic PC Platform - -Revision History - ---*/ - -#ifndef _PCAT_ISA_ACPI_H_ -#define _PCAT_ISA_ACPI_H_ - -#include - -#include - -#include -#include -#include -#include -#include -#include - - -#include -#include - -#include -// -// PCAT ISA ACPI device private data structure -// -#define PCAT_ISA_ACPI_DEV_SIGNATURE SIGNATURE_32('L','P','C','D') - -typedef struct { - UINTN Signature; - EFI_HANDLE Handle; - EFI_ISA_ACPI_PROTOCOL IsaAcpi; - EFI_PCI_IO_PROTOCOL *PciIo; -} PCAT_ISA_ACPI_DEV; - -#define PCAT_ISA_ACPI_DEV_FROM_THIS(a) BASE_CR(a, PCAT_ISA_ACPI_DEV, IsaAcpi) - -// -// Global Variables -// -extern EFI_DRIVER_BINDING_PROTOCOL gPcatIsaAcpiDriverBinding; - -extern EFI_COMPONENT_NAME2_PROTOCOL gPcatIsaAcpiComponentName2; - -extern EFI_COMPONENT_NAME_PROTOCOL gPcatIsaAcpiComponentName; - - -// -// Prototypes for Driver model protocol interface -// -EFI_STATUS -EFIAPI -PcatIsaAcpiDriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ); - -EFI_STATUS -EFIAPI -PcatIsaAcpiDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ); - -EFI_STATUS -EFIAPI -PcatIsaAcpiDriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer - ); - -// -// Prototypes for the ISA ACPI protocol interface -// -EFI_STATUS -EFIAPI -IsaDeviceEnumerate ( - IN EFI_ISA_ACPI_PROTOCOL *This, - OUT EFI_ISA_ACPI_DEVICE_ID **Device - ); - -EFI_STATUS -EFIAPI -IsaDeviceSetPower ( - IN EFI_ISA_ACPI_PROTOCOL *This, - IN EFI_ISA_ACPI_DEVICE_ID *Device, - IN BOOLEAN OnOff - ); - -EFI_STATUS -EFIAPI -IsaGetCurrentResource ( - IN EFI_ISA_ACPI_PROTOCOL *This, - IN EFI_ISA_ACPI_DEVICE_ID *Device, - OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList - ); - -EFI_STATUS -EFIAPI -IsaGetPossibleResource ( - IN EFI_ISA_ACPI_PROTOCOL *This, - IN EFI_ISA_ACPI_DEVICE_ID *Device, - OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList - ); - -EFI_STATUS -EFIAPI -IsaSetResource ( - IN EFI_ISA_ACPI_PROTOCOL *This, - IN EFI_ISA_ACPI_DEVICE_ID *Device, - IN EFI_ISA_ACPI_RESOURCE_LIST *ResourceList - ); - -EFI_STATUS -EFIAPI -IsaEnableDevice ( - IN EFI_ISA_ACPI_PROTOCOL *This, - IN EFI_ISA_ACPI_DEVICE_ID *Device, - IN BOOLEAN Enable - ); - -EFI_STATUS -EFIAPI -IsaInitDevice ( - IN EFI_ISA_ACPI_PROTOCOL *This, - IN EFI_ISA_ACPI_DEVICE_ID *Device - ); - -EFI_STATUS -EFIAPI -IsaInterfaceInit ( - IN EFI_ISA_ACPI_PROTOCOL *This - ); - -#endif diff --git a/PcAtChipsetPkg/IsaAcpiDxe/ComponentName.c b/PcAtChipsetPkg/IsaAcpiDxe/ComponentName.c new file mode 100644 index 0000000000..9b88dcf86d --- /dev/null +++ b/PcAtChipsetPkg/IsaAcpiDxe/ComponentName.c @@ -0,0 +1,170 @@ +/*++ + +Copyright (c) 2006 - 2007, Intel Corporation +All rights reserved. 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 +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + +Module Name: + + ComponentName.c + +Abstract: + +--*/ + +#include "PcatIsaAcpi.h" + +// +// EFI Component Name Functions +// +EFI_STATUS +EFIAPI +PcatIsaAcpiComponentNameGetDriverName ( + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN CHAR8 *Language, + OUT CHAR16 **DriverName + ); + +EFI_STATUS +EFIAPI +PcatIsaAcpiComponentNameGetControllerName ( + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName + ); + +// +// EFI Component Name Protocol +// + +EFI_COMPONENT_NAME2_PROTOCOL gPcatIsaAcpiComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) PcatIsaAcpiComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) PcatIsaAcpiComponentNameGetControllerName, + "en" +}; + +EFI_COMPONENT_NAME_PROTOCOL gPcatIsaAcpiComponentName = { + PcatIsaAcpiComponentNameGetDriverName, + PcatIsaAcpiComponentNameGetControllerName, + "eng" +}; + + +EFI_UNICODE_STRING_TABLE mPcatIsaAcpiDriverNameTable[] = { + { + "eng;en", + L"PC-AT ISA Device Enumeration Driver" + }, + { + NULL, + NULL + } +}; + +EFI_STATUS +EFIAPI +PcatIsaAcpiComponentNameGetDriverName ( + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN CHAR8 *Language, + OUT CHAR16 **DriverName + ) +/*++ + + Routine Description: + Retrieves a Unicode string that is the user readable name of the EFI Driver. + + Arguments: + This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance. + Language - A pointer to a three character ISO 639-2 language identifier. + This is the language of the driver name that that the caller + is requesting, and it must match one of the languages specified + in SupportedLanguages. The number of languages supported by a + driver is up to the driver writer. + DriverName - A pointer to the Unicode string to return. This Unicode string + is the name of the driver specified by This in the language + specified by Language. + + Returns: + EFI_SUCCES - The Unicode string for the Driver specified by This + and the language specified by Language was returned + in DriverName. + EFI_INVALID_PARAMETER - Language is NULL. + EFI_INVALID_PARAMETER - DriverName is NULL. + EFI_UNSUPPORTED - The driver specified by This does not support the + language specified by Language. + +--*/ +{ + return LookupUnicodeString2 ( + Language, + This->SupportedLanguages, + mPcatIsaAcpiDriverNameTable, + DriverName, + (BOOLEAN)(This == &gPcatIsaAcpiComponentName) + ); +} + +EFI_STATUS +EFIAPI +PcatIsaAcpiComponentNameGetControllerName ( + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName + ) +/*++ + + Routine Description: + Retrieves a Unicode string that is the user readable name of the controller + that is being managed by an EFI Driver. + + Arguments: + This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance. + ControllerHandle - The handle of a controller that the driver specified by + This is managing. This handle specifies the controller + whose name is to be returned. + ChildHandle - The handle of the child controller to retrieve the name + of. This is an optional parameter that may be NULL. It + will be NULL for device drivers. It will also be NULL + for a bus drivers that wish to retrieve the name of the + bus controller. It will not be NULL for a bus driver + that wishes to retrieve the name of a child controller. + Language - A pointer to a three character ISO 639-2 language + identifier. This is the language of the controller name + that that the caller is requesting, and it must match one + of the languages specified in SupportedLanguages. The + number of languages supported by a driver is up to the + driver writer. + ControllerName - A pointer to the Unicode string to return. This Unicode + string is the name of the controller specified by + ControllerHandle and ChildHandle in the language specified + by Language from the point of view of the driver specified + by This. + + Returns: + EFI_SUCCESS - The Unicode string for the user readable name in the + language specified by Language for the driver + specified by This was returned in DriverName. + EFI_INVALID_PARAMETER - ControllerHandle is not a valid EFI_HANDLE. + EFI_INVALID_PARAMETER - ChildHandle is not NULL and it is not a valid EFI_HANDLE. + EFI_INVALID_PARAMETER - Language is NULL. + EFI_INVALID_PARAMETER - ControllerName is NULL. + EFI_UNSUPPORTED - The driver specified by This is not currently managing + the controller specified by ControllerHandle and + ChildHandle. + EFI_UNSUPPORTED - The driver specified by This does not support the + language specified by Language. + +--*/ +{ + return EFI_UNSUPPORTED; +} diff --git a/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.c b/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.c new file mode 100644 index 0000000000..5eba8591b6 --- /dev/null +++ b/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.c @@ -0,0 +1,306 @@ +/*++ + +Copyright (c) 2006, Intel Corporation +All rights reserved. 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 +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + +Module Name: + + IsaAcpi.c + +Abstract: + + ISA ACPI Protocol Implementation + +Revision History + +--*/ + +#include "PcatIsaAcpi.h" + +// +// Platform specific data for the ISA devices that are present.in the platform +// + +// +// COM 1 UART Controller +// +EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom1DeviceResources[] = { + {EfiIsaAcpiResourceIo, 0, 0x3f8, 0x3ff}, + {EfiIsaAcpiResourceInterrupt, 0, 4, 0}, + {EfiIsaAcpiResourceEndOfList, 0, 0, 0} +}; + +// +// COM 2 UART Controller +// +EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiCom2DeviceResources[] = { + {EfiIsaAcpiResourceIo, 0, 0x2f8, 0x2ff}, + {EfiIsaAcpiResourceInterrupt, 0, 3, 0}, + {EfiIsaAcpiResourceEndOfList, 0, 0, 0} +}; + +// +// PS/2 Keyboard Controller +// +EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2KeyboardDeviceResources[] = { + {EfiIsaAcpiResourceIo, 0, 0x60, 0x64}, + {EfiIsaAcpiResourceInterrupt, 0, 1, 0}, + {EfiIsaAcpiResourceEndOfList, 0, 0, 0} +}; + +// +// PS/2 Mouse Controller +// +EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiPs2MouseDeviceResources[] = { + {EfiIsaAcpiResourceIo, 0, 0x60, 0x64}, + {EfiIsaAcpiResourceInterrupt, 0, 12, 0}, + {EfiIsaAcpiResourceEndOfList, 0, 0, 0} +}; + +// +// Floppy Disk Controller +// +EFI_ISA_ACPI_RESOURCE mPcatIsaAcpiFloppyResources[] = { + {EfiIsaAcpiResourceIo, 0, 0x3f0, 0x3f7}, + {EfiIsaAcpiResourceInterrupt, 0, 6, 0}, + {EfiIsaAcpiResourceDma, EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_COMPATIBLE | EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8 | EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE, 2, 0}, + {EfiIsaAcpiResourceEndOfList, 0, 0, 0} +}; + +// +// 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 +}; + +// +// ISA ACPI Protocol Functions +// +VOID +IsaDeviceLookup ( + IN EFI_ISA_ACPI_DEVICE_ID *Device, + OUT EFI_ISA_ACPI_RESOURCE_LIST **IsaAcpiDevice, + OUT EFI_ISA_ACPI_RESOURCE_LIST **NextIsaAcpiDevice + ) +/*++ + +Routine Description: + Enumerate the ISA devices on the ISA bus + +Arguments: + +Returns: + +--*/ +{ + UINTN Index; + + *IsaAcpiDevice = NULL; + if (NextIsaAcpiDevice != NULL) { + *NextIsaAcpiDevice = NULL; + } + if (Device == NULL) { + Index = 0; + } else { + for(Index = 0; gPcatIsaAcpiDeviceList[Index].ResourceItem != NULL; Index++) { + if (Device->HID == gPcatIsaAcpiDeviceList[Index].Device.HID && + Device->UID == gPcatIsaAcpiDeviceList[Index].Device.UID ) { + break; + } + } + if (gPcatIsaAcpiDeviceList[Index].ResourceItem == NULL) { + return; + } + *IsaAcpiDevice = &(gPcatIsaAcpiDeviceList[Index]); + Index++; + } + if (gPcatIsaAcpiDeviceList[Index].ResourceItem != NULL && NextIsaAcpiDevice != NULL) { + *NextIsaAcpiDevice = &(gPcatIsaAcpiDeviceList[Index]); + } +} + +EFI_STATUS +EFIAPI +IsaDeviceEnumerate ( + IN EFI_ISA_ACPI_PROTOCOL *This, + OUT EFI_ISA_ACPI_DEVICE_ID **Device + ) +/*++ + +Routine Description: + Enumerate the ISA devices on the ISA bus + +Arguments: + +Returns: + +--*/ +{ + EFI_ISA_ACPI_RESOURCE_LIST *IsaAcpiDevice; + EFI_ISA_ACPI_RESOURCE_LIST *NextIsaAcpiDevice; + + IsaDeviceLookup (*Device, &IsaAcpiDevice, &NextIsaAcpiDevice); + if (NextIsaAcpiDevice == NULL) { + return EFI_NOT_FOUND; + } + *Device = &(NextIsaAcpiDevice->Device); + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +IsaDeviceSetPower ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + IN BOOLEAN OnOff + ) +/*++ + +Routine Description: + Set ISA device power + +Arguments: + +Returns: + +--*/ +{ + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +IsaGetCurrentResource ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList + ) +/*++ + +Routine Description: + Get current Resource of the specific ISA device + +Arguments: + +Returns: + +--*/ +{ + IsaDeviceLookup (Device, ResourceList, NULL); + if (*ResourceList == NULL) { + return EFI_NOT_FOUND; + } + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +IsaGetPossibleResource ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList + ) +/*++ + +Routine Description: + +Arguments: + +Returns: + +--*/ +{ + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +IsaSetResource ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + IN EFI_ISA_ACPI_RESOURCE_LIST *ResourceList + ) +/*++ + +Routine Description: + +Arguments: + +Returns: + +--*/ +{ + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +IsaEnableDevice ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + IN BOOLEAN Enable + ) +/*++ + +Routine Description: + +Arguments: + +Returns: + +--*/ +{ + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +IsaInitDevice ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device + ) +/*++ + +Routine Description: + +Arguments: + +Returns: + +--*/ +{ + return EFI_SUCCESS; +} + + +EFI_STATUS +EFIAPI +IsaInterfaceInit ( + IN EFI_ISA_ACPI_PROTOCOL *This +) +/*++ + +Routine Description: + +Arguments: + +Returns: + +--*/ +{ + return EFI_SUCCESS; +} diff --git a/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf b/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf new file mode 100644 index 0000000000..ec01a28346 --- /dev/null +++ b/PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf @@ -0,0 +1,50 @@ +#/*++ +# +# Copyright (c) 2005, Intel Corporation +# All rights reserved. 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 +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# Module Name: +# IsaAcpi.inf +# +# Abstract: +# Component description file for PCAT ISA ACPI driver +# +#--*/ + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = IsaAcpi + FILE_GUID = 38A0EC22-FBE7-4911-8BC1-176E0D6C1DBD + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + EDK_RELEASE_VERSION = 0x00020000 + EFI_SPECIFICATION_VERSION = 0x0002000A + + ENTRY_POINT = PcatIsaAcpiDriverEntryPoint + +[Packages] + MdePkg/MdePkg.dec + IntelFrameworkPkg/IntelFrameworkPkg.dec + IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec + DuetPkg/DuetPkg.dec + +[LibraryClasses] + UefiDriverEntryPoint + UefiBootServicesTableLib + UefiLib + +[Sources] + PcatIsaAcpi.h + PcatIsaAcpi.c + IsaAcpi.c + ComponentName.c + +[Protocols] + gEfiPciIoProtocolGuid + gEfiIsaAcpiProtocolGuid diff --git a/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.c b/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.c new file mode 100644 index 0000000000..a0f4cdfd40 --- /dev/null +++ b/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.c @@ -0,0 +1,329 @@ +/*++ + +Copyright (c) 2006, Intel Corporation +All rights reserved. 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 +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + +Module Name: + + PcatIsaAcpi.c + +Abstract: + + EFI PCAT ISA ACPI Driver for a Generic PC Platform + +Revision History + +--*/ + +#include "PcatIsaAcpi.h" + +// +// PcatIsaAcpi Driver Binding Protocol +// +EFI_DRIVER_BINDING_PROTOCOL gPcatIsaAcpiDriverBinding = { + PcatIsaAcpiDriverBindingSupported, + PcatIsaAcpiDriverBindingStart, + PcatIsaAcpiDriverBindingStop, + 0xa, + NULL, + NULL +}; + +EFI_STATUS +EFIAPI +PcatIsaAcpiDriverEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +/*++ + + Routine Description: + the entry point of the PcatIsaAcpi driver + + Arguments: + + Returns: + +--*/ +{ + return EfiLibInstallDriverBindingComponentName2 ( + ImageHandle, + SystemTable, + &gPcatIsaAcpiDriverBinding, + ImageHandle, + &gPcatIsaAcpiComponentName, + &gPcatIsaAcpiComponentName2 + ); +} + +EFI_STATUS +EFIAPI +PcatIsaAcpiDriverBindingSupported ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + ) +/*++ + +Routine Description: + + ControllerDriver Protocol Method + +Arguments: + +Returns: + +--*/ +{ + EFI_STATUS Status; + EFI_PCI_IO_PROTOCOL *PciIo; + PCI_TYPE00 Pci; + + // + // Get PciIo protocol instance + // + Status = gBS->OpenProtocol ( + Controller, + &gEfiPciIoProtocolGuid, + (VOID**)&PciIo, + This->DriverBindingHandle, + Controller, + EFI_OPEN_PROTOCOL_BY_DRIVER + ); + if (EFI_ERROR(Status)) { + return Status; + } + + Status = PciIo->Pci.Read ( + PciIo, + EfiPciIoWidthUint32, + 0, + sizeof(Pci) / sizeof(UINT32), + &Pci); + + if (!EFI_ERROR (Status)) { + Status = EFI_UNSUPPORTED; + if ((Pci.Hdr.Command & 0x03) == 0x03) { + if (Pci.Hdr.ClassCode[2] == PCI_CLASS_BRIDGE) { + // + // See if this is a standard PCI to ISA Bridge from the Base Code and Class Code + // + if (Pci.Hdr.ClassCode[1] == PCI_CLASS_BRIDGE_ISA) { + Status = EFI_SUCCESS; + } + + // + // See if this is an Intel PCI to ISA bridge in Positive Decode Mode + // + if (Pci.Hdr.ClassCode[1] == PCI_CLASS_BRIDGE_ISA_PDECODE && + Pci.Hdr.VendorId == 0x8086 && + Pci.Hdr.DeviceId == 0x7110) { + Status = EFI_SUCCESS; + } + } + } + } + + gBS->CloseProtocol ( + Controller, + &gEfiPciIoProtocolGuid, + This->DriverBindingHandle, + Controller + ); + + return Status; +} + +EFI_STATUS +EFIAPI +PcatIsaAcpiDriverBindingStart ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + ) +/*++ + +Routine Description: + Install EFI_ISA_ACPI_PROTOCOL + +Arguments: + +Returns: + +--*/ +{ + EFI_STATUS Status; + EFI_PCI_IO_PROTOCOL *PciIo; + PCAT_ISA_ACPI_DEV *PcatIsaAcpiDev; + + PcatIsaAcpiDev = NULL; + // + // Open the PCI I/O Protocol Interface + // + PciIo = NULL; + Status = gBS->OpenProtocol ( + Controller, + &gEfiPciIoProtocolGuid, + (VOID**)&PciIo, + This->DriverBindingHandle, + Controller, + EFI_OPEN_PROTOCOL_BY_DRIVER + ); + if (EFI_ERROR (Status)) { + goto Done; + } + + Status = PciIo->Attributes ( + PciIo, + EfiPciIoAttributeOperationEnable, + EFI_PCI_DEVICE_ENABLE | EFI_PCI_IO_ATTRIBUTE_ISA_IO | EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO, + NULL + ); + if (EFI_ERROR (Status)) { + goto Done; + } + + // + // Allocate memory for the PCAT ISA ACPI Device structure + // + PcatIsaAcpiDev = NULL; + Status = gBS->AllocatePool ( + EfiBootServicesData, + sizeof(PCAT_ISA_ACPI_DEV), + (VOID**)&PcatIsaAcpiDev + ); + if (EFI_ERROR (Status)) { + goto Done; + } + + // + // Initialize the PCAT ISA ACPI Device structure + // + PcatIsaAcpiDev->Signature = PCAT_ISA_ACPI_DEV_SIGNATURE; + PcatIsaAcpiDev->Handle = Controller; + PcatIsaAcpiDev->PciIo = PciIo; + + // + // IsaAcpi interface + // + (PcatIsaAcpiDev->IsaAcpi).DeviceEnumerate = IsaDeviceEnumerate; + (PcatIsaAcpiDev->IsaAcpi).SetPower = IsaDeviceSetPower; + (PcatIsaAcpiDev->IsaAcpi).GetCurResource = IsaGetCurrentResource; + (PcatIsaAcpiDev->IsaAcpi).GetPosResource = IsaGetPossibleResource; + (PcatIsaAcpiDev->IsaAcpi).SetResource = IsaSetResource; + (PcatIsaAcpiDev->IsaAcpi).EnableDevice = IsaEnableDevice; + (PcatIsaAcpiDev->IsaAcpi).InitDevice = IsaInitDevice; + (PcatIsaAcpiDev->IsaAcpi).InterfaceInit = IsaInterfaceInit; + + // + // Install the ISA ACPI Protocol interface + // + Status = gBS->InstallMultipleProtocolInterfaces ( + &Controller, + &gEfiIsaAcpiProtocolGuid, &PcatIsaAcpiDev->IsaAcpi, + NULL + ); + +Done: + if (EFI_ERROR (Status)) { + if (PciIo) { + PciIo->Attributes ( + PciIo, + EfiPciIoAttributeOperationDisable, + EFI_PCI_DEVICE_ENABLE | EFI_PCI_IO_ATTRIBUTE_ISA_IO | EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO, + NULL + ); + } + gBS->CloseProtocol ( + Controller, + &gEfiPciIoProtocolGuid, + This->DriverBindingHandle, + Controller + ); + if (PcatIsaAcpiDev != NULL) { + gBS->FreePool (PcatIsaAcpiDev); + } + return Status; + } + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +PcatIsaAcpiDriverBindingStop ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer + ) +/*++ + + Routine Description: + + Arguments: + + Returns: + +--*/ +{ + EFI_STATUS Status; + EFI_ISA_ACPI_PROTOCOL *IsaAcpi; + PCAT_ISA_ACPI_DEV *PcatIsaAcpiDev; + + // + // Get the ISA ACPI Protocol Interface + // + Status = gBS->OpenProtocol ( + Controller, + &gEfiIsaAcpiProtocolGuid, + (VOID**)&IsaAcpi, + This->DriverBindingHandle, + Controller, + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Get the PCAT ISA ACPI Device structure from the ISA ACPI Protocol + // + PcatIsaAcpiDev = PCAT_ISA_ACPI_DEV_FROM_THIS (IsaAcpi); + + PcatIsaAcpiDev->PciIo->Attributes ( + PcatIsaAcpiDev->PciIo, + EfiPciIoAttributeOperationDisable, + EFI_PCI_DEVICE_ENABLE | EFI_PCI_IO_ATTRIBUTE_ISA_IO | EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO, + NULL + ); + + // + // Uninstall protocol interface: EFI_ISA_ACPI_PROTOCOL + // + Status = gBS->UninstallProtocolInterface ( + Controller, + &gEfiIsaAcpiProtocolGuid, &PcatIsaAcpiDev->IsaAcpi + ); + if (EFI_ERROR (Status)) { + return Status; + } + + gBS->CloseProtocol ( + Controller, + &gEfiPciIoProtocolGuid, + This->DriverBindingHandle, + Controller + ); + + gBS->FreePool (PcatIsaAcpiDev); + + return EFI_SUCCESS; +} diff --git a/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.h b/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.h new file mode 100644 index 0000000000..8608156b9b --- /dev/null +++ b/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.h @@ -0,0 +1,159 @@ +/*++ + +Copyright (c) 2006 - 2007, Intel Corporation +All rights reserved. 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 +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + +Module Name: + + PcatIsaAcpi.h + +Abstract: + + EFI PCAT ISA ACPI Driver for a Generic PC Platform + +Revision History + +--*/ + +#ifndef _PCAT_ISA_ACPI_H_ +#define _PCAT_ISA_ACPI_H_ + +#include + +#include + +#include +#include +#include +#include +#include +#include + + +#include +#include + +#include +// +// PCAT ISA ACPI device private data structure +// +#define PCAT_ISA_ACPI_DEV_SIGNATURE SIGNATURE_32('L','P','C','D') + +typedef struct { + UINTN Signature; + EFI_HANDLE Handle; + EFI_ISA_ACPI_PROTOCOL IsaAcpi; + EFI_PCI_IO_PROTOCOL *PciIo; +} PCAT_ISA_ACPI_DEV; + +#define PCAT_ISA_ACPI_DEV_FROM_THIS(a) BASE_CR(a, PCAT_ISA_ACPI_DEV, IsaAcpi) + +// +// Global Variables +// +extern EFI_DRIVER_BINDING_PROTOCOL gPcatIsaAcpiDriverBinding; + +extern EFI_COMPONENT_NAME2_PROTOCOL gPcatIsaAcpiComponentName2; + +extern EFI_COMPONENT_NAME_PROTOCOL gPcatIsaAcpiComponentName; + + +// +// Prototypes for Driver model protocol interface +// +EFI_STATUS +EFIAPI +PcatIsaAcpiDriverBindingSupported ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + ); + +EFI_STATUS +EFIAPI +PcatIsaAcpiDriverBindingStart ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + ); + +EFI_STATUS +EFIAPI +PcatIsaAcpiDriverBindingStop ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer + ); + +// +// Prototypes for the ISA ACPI protocol interface +// +EFI_STATUS +EFIAPI +IsaDeviceEnumerate ( + IN EFI_ISA_ACPI_PROTOCOL *This, + OUT EFI_ISA_ACPI_DEVICE_ID **Device + ); + +EFI_STATUS +EFIAPI +IsaDeviceSetPower ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + IN BOOLEAN OnOff + ); + +EFI_STATUS +EFIAPI +IsaGetCurrentResource ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList + ); + +EFI_STATUS +EFIAPI +IsaGetPossibleResource ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList + ); + +EFI_STATUS +EFIAPI +IsaSetResource ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + IN EFI_ISA_ACPI_RESOURCE_LIST *ResourceList + ); + +EFI_STATUS +EFIAPI +IsaEnableDevice ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + IN BOOLEAN Enable + ); + +EFI_STATUS +EFIAPI +IsaInitDevice ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device + ); + +EFI_STATUS +EFIAPI +IsaInterfaceInit ( + IN EFI_ISA_ACPI_PROTOCOL *This + ); + +#endif