summaryrefslogtreecommitdiff
path: root/IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/InternalIsaBus.h
diff options
context:
space:
mode:
Diffstat (limited to 'IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/InternalIsaBus.h')
-rw-r--r--IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/InternalIsaBus.h253
1 files changed, 253 insertions, 0 deletions
diff --git a/IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/InternalIsaBus.h b/IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/InternalIsaBus.h
new file mode 100644
index 0000000000..27bfb7a4e0
--- /dev/null
+++ b/IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/InternalIsaBus.h
@@ -0,0 +1,253 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.
+This software and associated documentation (if any) is furnished
+under a license and may only be used or copied in accordance
+with the terms of the license. Except as permitted by such
+license, no part of this software or documentation may be
+reproduced, stored in a retrieval system, or transmitted in any
+form or by any means without the express written consent of
+Intel Corporation.
+
+Module Name:
+
+ IsaBus.h
+
+Abstract:
+
+ The header file for ISA bus driver
+
+Revision History:
+
+--*/
+
+#ifndef _EFI_ISA_BUS_H
+#define _EFI_ISA_BUS_H
+
+//
+// Include common header file for this module.
+//
+#include "CommonHeader.h"
+
+#include "ComponentName.h"
+
+extern EFI_ISA_IO_PROTOCOL IsaIoInterface;
+
+typedef enum {
+ IsaAccessTypeUnknown,
+ IsaAccessTypeIo,
+ IsaAccessTypeMem,
+ IsaAccessTypeMaxType
+} ISA_ACCESS_TYPE;
+
+//
+// 16 MB Memory Range
+//
+#define ISA_MAX_MEMORY_ADDRESS 0x1000000
+//
+// 64K I/O Range
+//
+#define ISA_MAX_IO_ADDRESS 0x10000
+
+typedef struct {
+ UINT8 Address;
+ UINT8 Page;
+ UINT8 Count;
+} EFI_ISA_DMA_REGISTERS;
+
+//
+// ISA I/O Device Structure
+//
+#define ISA_IO_DEVICE_SIGNATURE EFI_SIGNATURE_32 ('i', 's', 'a', 'i')
+
+typedef struct {
+ UINT32 Signature;
+ EFI_HANDLE Handle;
+ EFI_ISA_IO_PROTOCOL IsaIo;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ EFI_PCI_IO_PROTOCOL *PciIo;
+} ISA_IO_DEVICE;
+
+#define ISA_IO_DEVICE_FROM_ISA_IO_THIS(a) CR (a, ISA_IO_DEVICE, IsaIo, ISA_IO_DEVICE_SIGNATURE)
+
+//
+// Global Variables
+//
+extern EFI_DRIVER_BINDING_PROTOCOL gIsaBusControllerDriver;
+
+//
+// Mapping structure for performing ISA DMA to a buffer above 16 MB
+//
+typedef struct {
+ EFI_ISA_IO_PROTOCOL_OPERATION Operation;
+ UINTN NumberOfBytes;
+ UINTN NumberOfPages;
+ EFI_PHYSICAL_ADDRESS HostAddress;
+ EFI_PHYSICAL_ADDRESS MappedHostAddress;
+} ISA_MAP_INFO;
+
+//
+// EFI Driver Binding Protocol Interface Functions
+//
+
+EFI_STATUS
+EFIAPI
+IsaBusControllerDriverSupported (
+ IN EFI_DRIVER_BINDING_PROTOCOL * This,
+ IN EFI_HANDLE Controller,
+ IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL
+ )
+/*++
+
+ Routine Description:
+
+ This function checks to see if a controller can be managed by the ISA Bus
+ Driver. This is done by checking to see if the controller supports the
+ EFI_PCI_IO_PROTOCOL protocol, and then looking at the PCI Configuration
+ Header to see if the device is a PCI to ISA bridge. The class code of
+ PCI to ISA bridge: Base class 06h, Sub class 01h Interface 00h
+
+ Arguments:
+
+ This - The EFI_DRIVER_BINDING_PROTOCOL instance.
+ Controller - The handle of the device to check.
+ RemainingDevicePath - A pointer to the remaining portion of a device path.
+
+ Returns:
+
+ EFI_SUCCESS - The device is supported by this driver.
+ EFI_UNSUPPORTED - The device is not supported by this driver.
+
+--*/
+;
+
+EFI_STATUS
+EFIAPI
+IsaBusControllerDriverStart (
+ IN EFI_DRIVER_BINDING_PROTOCOL * This,
+ IN EFI_HANDLE Controller,
+ IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL
+ )
+/*++
+
+ Routine Description:
+
+ This function tells the ISA Bus Driver to start managing a PCI to ISA
+ Bridge controller.
+
+ Arguments:
+
+ This - The EFI_DRIVER_BINDING_PROTOCOL instance.
+ Controller - A handle to the device being started.
+ RemainingDevicePath - A pointer to the remaining portion of a device path.
+
+ Returns:
+
+ EFI_SUCCESS - The device was started.
+ EFI_UNSUPPORTED - The device is not supported.
+ EFI_DEVICE_ERROR - The device could not be started due to a device error.
+ EFI_ALREADY_STARTED - The device has already been started.
+ EFI_INVALID_PARAMETER - One of the parameters has an invalid value.
+ EFI_OUT_OF_RESOURCES - The request could not be completed due to a lack of
+ resources.
+
+--*/
+;
+
+EFI_STATUS
+EFIAPI
+IsaBusControllerDriverStop (
+ IN EFI_DRIVER_BINDING_PROTOCOL * This,
+ IN EFI_HANDLE Controller,
+ IN UINTN NumberOfChildren,
+ IN EFI_HANDLE * ChildHandleBuffer OPTIONAL
+ )
+/*++
+
+ Routine Description:
+
+ This function tells the ISA Bus Driver to stop managing a PCI to ISA
+ Bridge controller.
+
+ Arguments:
+
+ This - The EFI_DRIVER_BINDING_PROTOCOL instance.
+ Controller - A handle to the device being stopped.
+ NumberOfChindren - The number of child device handles in ChildHandleBuffer.
+ ChildHandleBuffer - An array of child handles to be freed.
+
+
+ Returns:
+
+ EFI_SUCCESS - The device was stopped.
+ EFI_DEVICE_ERROR - The device could not be stopped due to a device error.
+ EFI_NOT_STARTED - The device has not been started.
+ EFI_INVALID_PARAMETER - One of the parameters has an invalid value.
+ EFI_OUT_OF_RESOURCES - The request could not be completed due to a lack of
+ resources.
+
+--*/
+;
+
+//
+// Function Prototypes
+//
+
+EFI_STATUS
+IsaCreateDevice (
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,
+ IN EFI_HANDLE Controller,
+ IN EFI_PCI_IO_PROTOCOL *PciIo,
+ IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
+ IN EFI_ISA_ACPI_RESOURCE_LIST *IsaDeviceResourceList,
+ OUT EFI_DEVICE_PATH_PROTOCOL **ChildDevicePath
+ )
+/*++
+
+ Routine Description:
+
+ Create ISA device found by IsaPnpProtocol
+
+ Arguments:
+
+ This - The EFI_DRIVER_BINDING_PROTOCOL instance.
+ Controller - The handle of ISA bus controller(PCI to ISA bridge)
+ PciIo - The Pointer to the PCI protocol
+ ParentDevicePath - Device path of the ISA bus controller
+ IsaDeviceResourceList - The resource list of the ISA device
+ ChildDevicePath - The pointer to the child device.
+
+ Returns:
+
+ EFI_SUCCESS - Create the child device.
+ EFI_OUT_OF_RESOURCES - The request could not be completed due to a lack of
+ resources.
+ EFI_DEVICE_ERROR - Can not create child device.
+
+--*/
+;
+
+EFI_STATUS
+InitializeIsaIoInstance (
+ IN ISA_IO_DEVICE *IsaIoDevice,
+ IN EFI_ISA_ACPI_RESOURCE_LIST *IsaDevice
+ )
+/*++
+
+Routine Description:
+
+ Initializes an ISA I/O Instance
+
+Arguments:
+
+ IsaIoDevice - The iso device to be initialized.
+ IsaDevice - The resource list.
+
+Returns:
+
+ EFI_SUCCESS - Initial success.
+
+--*/
+;
+
+#endif