| /*++ | |
| 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; | |
| } |