Check in the IsaIoDxe device driver that consumes EFI_SIO_PROTOCOL to produce EFI_ISA_IO_PROTOCOL.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10808 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
182
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/ComponentName.c
Normal file
182
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/ComponentName.c
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
/** @file
|
||||||
|
UEFI Component Name(2) protocol implementation for Isa driver.
|
||||||
|
|
||||||
|
Copyright (c) 2010, 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
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#include "IsaDriver.h"
|
||||||
|
|
||||||
|
//
|
||||||
|
// EFI Component Name Protocol
|
||||||
|
//
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gIsaIoComponentName = {
|
||||||
|
IsaIoComponentNameGetDriverName,
|
||||||
|
IsaIoComponentNameGetControllerName,
|
||||||
|
"eng"
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// EFI Component Name 2 Protocol
|
||||||
|
//
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gIsaIoComponentName2 = {
|
||||||
|
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) IsaIoComponentNameGetDriverName,
|
||||||
|
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) IsaIoComponentNameGetControllerName,
|
||||||
|
"en"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mIsaIoDriverNameTable[] = {
|
||||||
|
{
|
||||||
|
"eng;en",
|
||||||
|
L"ISA IO Driver"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieves a Unicode string that is the user readable name of the driver.
|
||||||
|
|
||||||
|
This function retrieves the user readable name of a driver in the form of a
|
||||||
|
Unicode string. If the driver specified by This has a user readable name in
|
||||||
|
the language specified by Language, then a pointer to the driver name is
|
||||||
|
returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
|
||||||
|
by This does not support the language specified by Language,
|
||||||
|
then EFI_UNSUPPORTED is returned.
|
||||||
|
|
||||||
|
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||||
|
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||||
|
array indicating the language. This is the
|
||||||
|
language of the driver name 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. Language is specified
|
||||||
|
in RFC 4646 or ISO 639-2 language code format.
|
||||||
|
|
||||||
|
@param DriverName[out] 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.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Unicode string for the Driver specified by
|
||||||
|
This and the language specified by Language was
|
||||||
|
returned in DriverName.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER DriverName is NULL.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||||
|
the language specified by Language.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoComponentNameGetDriverName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **DriverName
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return LookupUnicodeString2 (
|
||||||
|
Language,
|
||||||
|
This->SupportedLanguages,
|
||||||
|
mIsaIoDriverNameTable,
|
||||||
|
DriverName,
|
||||||
|
(BOOLEAN)(This == &gIsaIoComponentName)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieves a Unicode string that is the user readable name of the controller
|
||||||
|
that is being managed by a driver.
|
||||||
|
|
||||||
|
This function retrieves the user readable name of the controller specified by
|
||||||
|
ControllerHandle and ChildHandle in the form of a Unicode string. If the
|
||||||
|
driver specified by This has a user readable name in the language specified by
|
||||||
|
Language, then a pointer to the controller name is returned in ControllerName,
|
||||||
|
and EFI_SUCCESS is returned. If the driver specified by This is not currently
|
||||||
|
managing the controller specified by ControllerHandle and ChildHandle,
|
||||||
|
then EFI_UNSUPPORTED is returned. If the driver specified by This does not
|
||||||
|
support the language specified by Language, then EFI_UNSUPPORTED is returned.
|
||||||
|
|
||||||
|
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||||
|
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param ControllerHandle[in] The handle of a controller that the driver
|
||||||
|
specified by This is managing. This handle
|
||||||
|
specifies the controller whose name is to be
|
||||||
|
returned.
|
||||||
|
|
||||||
|
@param ChildHandle[in] 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.
|
||||||
|
|
||||||
|
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||||
|
array indicating the language. This is the
|
||||||
|
language of the driver name 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. Language is specified in
|
||||||
|
RFC 4646 or ISO 639-2 language code format.
|
||||||
|
|
||||||
|
@param ControllerName[out] 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.
|
||||||
|
|
||||||
|
@retval 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.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
|
||||||
|
EFI_HANDLE.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ControllerName is NULL.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This is not currently
|
||||||
|
managing the controller specified by
|
||||||
|
ControllerHandle and ChildHandle.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||||
|
the language specified by Language.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoComponentNameGetControllerName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE ControllerHandle,
|
||||||
|
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **ControllerName
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return EFI_UNSUPPORTED;
|
||||||
|
}
|
148
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/ComponentName.h
Normal file
148
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/ComponentName.h
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
/** @file
|
||||||
|
Header file for implementation of UEFI Component Name(2) protocol.
|
||||||
|
|
||||||
|
Copyright (c) 2010, 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
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef _COMPONENT_NAME_H_
|
||||||
|
#define _COMPONENT_NAME_H_
|
||||||
|
|
||||||
|
extern EFI_COMPONENT_NAME_PROTOCOL gIsaIoComponentName;
|
||||||
|
extern EFI_COMPONENT_NAME2_PROTOCOL gIsaIoComponentName2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieves a Unicode string that is the user readable name of the driver.
|
||||||
|
|
||||||
|
This function retrieves the user readable name of a driver in the form of a
|
||||||
|
Unicode string. If the driver specified by This has a user readable name in
|
||||||
|
the language specified by Language, then a pointer to the driver name is
|
||||||
|
returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
|
||||||
|
by This does not support the language specified by Language,
|
||||||
|
then EFI_UNSUPPORTED is returned.
|
||||||
|
|
||||||
|
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||||
|
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||||
|
array indicating the language. This is the
|
||||||
|
language of the driver name 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. Language is specified
|
||||||
|
in RFC 4646 or ISO 639-2 language code format.
|
||||||
|
|
||||||
|
@param DriverName[out] 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.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The Unicode string for the Driver specified by
|
||||||
|
This and the language specified by Language was
|
||||||
|
returned in DriverName.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER DriverName is NULL.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||||
|
the language specified by Language.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoComponentNameGetDriverName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **DriverName
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Retrieves a Unicode string that is the user readable name of the controller
|
||||||
|
that is being managed by a driver.
|
||||||
|
|
||||||
|
This function retrieves the user readable name of the controller specified by
|
||||||
|
ControllerHandle and ChildHandle in the form of a Unicode string. If the
|
||||||
|
driver specified by This has a user readable name in the language specified by
|
||||||
|
Language, then a pointer to the controller name is returned in ControllerName,
|
||||||
|
and EFI_SUCCESS is returned. If the driver specified by This is not currently
|
||||||
|
managing the controller specified by ControllerHandle and ChildHandle,
|
||||||
|
then EFI_UNSUPPORTED is returned. If the driver specified by This does not
|
||||||
|
support the language specified by Language, then EFI_UNSUPPORTED is returned.
|
||||||
|
|
||||||
|
@param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
|
||||||
|
EFI_COMPONENT_NAME_PROTOCOL instance.
|
||||||
|
|
||||||
|
@param ControllerHandle[in] The handle of a controller that the driver
|
||||||
|
specified by This is managing. This handle
|
||||||
|
specifies the controller whose name is to be
|
||||||
|
returned.
|
||||||
|
|
||||||
|
@param ChildHandle[in] 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.
|
||||||
|
|
||||||
|
@param Language[in] A pointer to a Null-terminated ASCII string
|
||||||
|
array indicating the language. This is the
|
||||||
|
language of the driver name 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. Language is specified in
|
||||||
|
RFC 4646 or ISO 639-2 language code format.
|
||||||
|
|
||||||
|
@param ControllerName[out] 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.
|
||||||
|
|
||||||
|
@retval 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.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
|
||||||
|
EFI_HANDLE.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER Language is NULL.
|
||||||
|
|
||||||
|
@retval EFI_INVALID_PARAMETER ControllerName is NULL.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This is not currently
|
||||||
|
managing the controller specified by
|
||||||
|
ControllerHandle and ChildHandle.
|
||||||
|
|
||||||
|
@retval EFI_UNSUPPORTED The driver specified by This does not support
|
||||||
|
the language specified by Language.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoComponentNameGetControllerName (
|
||||||
|
IN EFI_COMPONENT_NAME_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE ControllerHandle,
|
||||||
|
IN EFI_HANDLE ChildHandle OPTIONAL,
|
||||||
|
IN CHAR8 *Language,
|
||||||
|
OUT CHAR16 **ControllerName
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
339
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/IsaDriver.c
Normal file
339
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/IsaDriver.c
Normal file
@ -0,0 +1,339 @@
|
|||||||
|
/** @file
|
||||||
|
IsaIo UEFI driver.
|
||||||
|
|
||||||
|
Produce an instance of the ISA I/O Protocol for every SIO controller.
|
||||||
|
|
||||||
|
Copyright (c) 2010, 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
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#include "IsaDriver.h"
|
||||||
|
|
||||||
|
//
|
||||||
|
// IsaIo Driver Global Variables
|
||||||
|
//
|
||||||
|
EFI_DRIVER_BINDING_PROTOCOL gIsaIoDriver = {
|
||||||
|
IsaIoDriverSupported,
|
||||||
|
IsaIoDriverStart,
|
||||||
|
IsaIoDriverStop,
|
||||||
|
0xa,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
The main entry point for the IsaIo driver.
|
||||||
|
|
||||||
|
@param[in] ImageHandle The firmware allocated handle for the EFI image.
|
||||||
|
@param[in] SystemTable A pointer to the EFI System Table.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The entry point is executed successfully.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
InitializeIsaIo (
|
||||||
|
IN EFI_HANDLE ImageHandle,
|
||||||
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Install driver model protocol(s).
|
||||||
|
//
|
||||||
|
Status = EfiLibInstallDriverBindingComponentName2 (
|
||||||
|
ImageHandle,
|
||||||
|
SystemTable,
|
||||||
|
&gIsaIoDriver,
|
||||||
|
ImageHandle,
|
||||||
|
&gIsaIoComponentName,
|
||||||
|
&gIsaIoComponentName2
|
||||||
|
);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Tests to see if a controller can be managed by the IsaIo driver.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
@param[in] Controller The handle of the controller to test.
|
||||||
|
@param[in] RemainingDevicePath A pointer to the remaining portion of a device path.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The device is supported by this driver.
|
||||||
|
@retval EFI_ALREADY_STARTED The device is already being managed by this driver.
|
||||||
|
@retval EFI_ACCESS_DENIED The device is already being managed by a different driver
|
||||||
|
or an application that requires exclusive access.
|
||||||
|
@retval EFI_UNSUPPORTED The device is is not supported by this driver.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoDriverSupported (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||||
|
EFI_SIO_PROTOCOL *Sio;
|
||||||
|
EFI_HANDLE PciHandle;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Try to open EFI DEVICE PATH protocol on the controller
|
||||||
|
//
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiDevicePathProtocolGuid,
|
||||||
|
(VOID **) &DevicePath,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller,
|
||||||
|
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!EFI_ERROR (Status)) {
|
||||||
|
//
|
||||||
|
// Get the PciIo protocol from its parent controller.
|
||||||
|
//
|
||||||
|
Status = gBS->LocateDevicePath (&gEfiPciIoProtocolGuid, &DevicePath, &PciHandle);
|
||||||
|
if (!EFI_ERROR (Status)) {
|
||||||
|
if ((DevicePathType (DevicePath) != ACPI_DEVICE_PATH) ||
|
||||||
|
((DevicePathSubType (DevicePath) != ACPI_DP) && (DevicePathSubType (DevicePath) != ACPI_EXTENDED_DP))) {
|
||||||
|
Status = EFI_UNSUPPORTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Try to open the Super IO protocol on the controller
|
||||||
|
//
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiSioProtocolGuid,
|
||||||
|
(VOID **) &Sio,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller,
|
||||||
|
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||||
|
);
|
||||||
|
if (!EFI_ERROR (Status)) {
|
||||||
|
gBS->CloseProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiSioProtocolGuid,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Start this driver on ControllerHandle.
|
||||||
|
|
||||||
|
The Start() function is designed to be invoked from the EFI boot service ConnectController().
|
||||||
|
As a result, much of the error checking on the parameters to Start() has been moved into this
|
||||||
|
common boot service. It is legal to call Start() from other locations, but the following calling
|
||||||
|
restrictions must be followed or the system behavior will not be deterministic.
|
||||||
|
1. ControllerHandle must be a valid EFI_HANDLE.
|
||||||
|
2. If RemainingDevicePath is not NULL, then it must be a pointer to a naturally aligned
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL.
|
||||||
|
3. Prior to calling Start(), the Supported() function for the driver specified by This must
|
||||||
|
have been called with the same calling parameters, and Supported() must have returned EFI_SUCCESS.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
@param[in] ControllerHandle The handle of the controller to start. This handle
|
||||||
|
must support a protocol interface that supplies
|
||||||
|
an I/O abstraction to the driver.
|
||||||
|
@param[in] RemainingDevicePath A pointer to the remaining portion of a device path.
|
||||||
|
This parameter is ignored by device drivers, and is optional for bus drivers.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The device was started.
|
||||||
|
@retval EFI_DEVICE_ERROR The device could not be started due to a device error.
|
||||||
|
Currently not implemented.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
|
||||||
|
@retval Others The driver failded to start the device.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoDriverStart (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
EFI_PCI_IO_PROTOCOL *PciIo;
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||||
|
EFI_HANDLE PciHandle;
|
||||||
|
EFI_SIO_PROTOCOL *Sio;
|
||||||
|
ACPI_RESOURCE_HEADER_PTR Resources;
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL *AcpiNode;
|
||||||
|
ISA_IO_DEVICE *IsaIoDevice;
|
||||||
|
|
||||||
|
PciIo = NULL;
|
||||||
|
Sio = NULL;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Open Device Path Protocol
|
||||||
|
//
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiDevicePathProtocolGuid,
|
||||||
|
(VOID **) &DevicePath,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller,
|
||||||
|
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Get the PciIo protocol from its parent controller.
|
||||||
|
//
|
||||||
|
AcpiNode = DevicePath;
|
||||||
|
Status = gBS->LocateDevicePath (&gEfiPciIoProtocolGuid, &AcpiNode, &PciHandle);
|
||||||
|
if (!EFI_ERROR (Status)) {
|
||||||
|
//
|
||||||
|
// AcpiNode should point to the ACPI node now.
|
||||||
|
//
|
||||||
|
ASSERT ((DevicePathType (AcpiNode) == ACPI_DEVICE_PATH) &&
|
||||||
|
((DevicePathSubType (AcpiNode) == ACPI_DP) || (DevicePathSubType (AcpiNode) == ACPI_EXTENDED_DP))
|
||||||
|
);
|
||||||
|
|
||||||
|
Status = gBS->HandleProtocol (PciHandle, &gEfiPciIoProtocolGuid, &PciIo);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Open Super IO Protocol
|
||||||
|
//
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiSioProtocolGuid,
|
||||||
|
(VOID **) &Sio,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller,
|
||||||
|
EFI_OPEN_PROTOCOL_BY_DRIVER
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
//
|
||||||
|
// Fail due to LocateDevicePath(...) or OpenProtocol(Sio, BY_DRIVER)
|
||||||
|
//
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = Sio->GetResources (Sio, &Resources);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
|
IsaIoDevice = AllocatePool (sizeof (ISA_IO_DEVICE));
|
||||||
|
ASSERT (IsaIoDevice != NULL);
|
||||||
|
|
||||||
|
IsaIoDevice->Signature = ISA_IO_DEVICE_SIGNATURE;
|
||||||
|
IsaIoDevice->PciIo = PciIo;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Initialize the ISA I/O instance structure
|
||||||
|
//
|
||||||
|
InitializeIsaIoInstance (IsaIoDevice, DevicePath, Resources);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Install the ISA I/O protocol on the Controller handle
|
||||||
|
//
|
||||||
|
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||||
|
&Controller,
|
||||||
|
&gEfiIsaIoProtocolGuid,
|
||||||
|
&IsaIoDevice->IsaIo,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Stop this driver on ControllerHandle.
|
||||||
|
|
||||||
|
The Stop() function is designed to be invoked from the EFI boot service DisconnectController().
|
||||||
|
As a result, much of the error checking on the parameters to Stop() has been moved
|
||||||
|
into this common boot service. It is legal to call Stop() from other locations,
|
||||||
|
but the following calling restrictions must be followed or the system behavior will not be deterministic.
|
||||||
|
1. ControllerHandle must be a valid EFI_HANDLE that was used on a previous call to this
|
||||||
|
same driver's Start() function.
|
||||||
|
2. The first NumberOfChildren handles of ChildHandleBuffer must all be a valid
|
||||||
|
EFI_HANDLE. In addition, all of these handles must have been created in this driver's
|
||||||
|
Start() function, and the Start() function must have called OpenProtocol() on
|
||||||
|
ControllerHandle with an Attribute of EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
@param[in] ControllerHandle A handle to the device being stopped. The handle must
|
||||||
|
support a bus specific I/O protocol for the driver
|
||||||
|
to use to stop the device.
|
||||||
|
@param[in] NumberOfChildren The number of child device handles in ChildHandleBuffer.
|
||||||
|
@param[in] ChildHandleBuffer An array of child handles to be freed. May be NULL
|
||||||
|
if NumberOfChildren is 0.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The device was stopped.
|
||||||
|
@retval EFI_DEVICE_ERROR The device could not be stopped due to a device error.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoDriverStop (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL * This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN UINTN NumberOfChildren,
|
||||||
|
IN EFI_HANDLE * ChildHandleBuffer OPTIONAL
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
ISA_IO_DEVICE *IsaIoDevice;
|
||||||
|
EFI_ISA_IO_PROTOCOL *IsaIo;
|
||||||
|
|
||||||
|
Status = gBS->OpenProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiIsaIoProtocolGuid,
|
||||||
|
(VOID **) &IsaIo,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller,
|
||||||
|
EFI_OPEN_PROTOCOL_GET_PROTOCOL
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return EFI_UNSUPPORTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
IsaIoDevice = ISA_IO_DEVICE_FROM_ISA_IO_THIS (IsaIo);
|
||||||
|
|
||||||
|
Status = gBS->UninstallMultipleProtocolInterfaces (
|
||||||
|
Controller,
|
||||||
|
&gEfiIsaIoProtocolGuid,
|
||||||
|
&IsaIoDevice->IsaIo,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
if (!EFI_ERROR (Status)) {
|
||||||
|
Status = gBS->CloseProtocol (
|
||||||
|
Controller,
|
||||||
|
&gEfiSioProtocolGuid,
|
||||||
|
This->DriverBindingHandle,
|
||||||
|
Controller
|
||||||
|
);
|
||||||
|
FreePool (IsaIoDevice->IsaIo.ResourceList);
|
||||||
|
FreePool (IsaIoDevice);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
263
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/IsaDriver.h
Normal file
263
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/IsaDriver.h
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
/** @file
|
||||||
|
The header file for ISA driver
|
||||||
|
|
||||||
|
Copyright (c) 2010, 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
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef _ISA_DRIVER_H_
|
||||||
|
#define _ISA_DRIVER_H_
|
||||||
|
|
||||||
|
|
||||||
|
#include <Uefi.h>
|
||||||
|
|
||||||
|
#include <Protocol/PciIo.h>
|
||||||
|
#include <Protocol/SuperIo.h>
|
||||||
|
#include <Protocol/ComponentName.h>
|
||||||
|
#include <Protocol/IsaIo.h>
|
||||||
|
#include <Protocol/DevicePath.h>
|
||||||
|
#include <Protocol/DriverBinding.h>
|
||||||
|
#include <Protocol/GenericMemoryTest.h>
|
||||||
|
#include <Guid/StatusCodeDataTypeId.h>
|
||||||
|
|
||||||
|
#include <Library/DebugLib.h>
|
||||||
|
#include <Library/UefiDriverEntryPoint.h>
|
||||||
|
#include <Library/UefiLib.h>
|
||||||
|
#include <Library/DevicePathLib.h>
|
||||||
|
#include <Library/BaseMemoryLib.h>
|
||||||
|
#include <Library/MemoryAllocationLib.h>
|
||||||
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
|
#include <Library/ReportStatusCodeLib.h>
|
||||||
|
#include <Library/PcdLib.h>
|
||||||
|
#include <IndustryStandard/Acpi.h>
|
||||||
|
|
||||||
|
#include "ComponentName.h"
|
||||||
|
|
||||||
|
//
|
||||||
|
// 8237 DMA registers
|
||||||
|
//
|
||||||
|
#define R_8237_DMA_BASE_CA_CH0 0x00
|
||||||
|
#define R_8237_DMA_BASE_CA_CH1 0x02
|
||||||
|
#define R_8237_DMA_BASE_CA_CH2 0x04
|
||||||
|
#define R_8237_DMA_BASE_CA_CH3 0xd6
|
||||||
|
#define R_8237_DMA_BASE_CA_CH5 0xc4
|
||||||
|
#define R_8237_DMA_BASE_CA_CH6 0xc8
|
||||||
|
#define R_8237_DMA_BASE_CA_CH7 0xcc
|
||||||
|
|
||||||
|
#define R_8237_DMA_BASE_CC_CH0 0x01
|
||||||
|
#define R_8237_DMA_BASE_CC_CH1 0x03
|
||||||
|
#define R_8237_DMA_BASE_CC_CH2 0x05
|
||||||
|
#define R_8237_DMA_BASE_CC_CH3 0xd7
|
||||||
|
#define R_8237_DMA_BASE_CC_CH5 0xc6
|
||||||
|
#define R_8237_DMA_BASE_CC_CH6 0xca
|
||||||
|
#define R_8237_DMA_BASE_CC_CH7 0xce
|
||||||
|
|
||||||
|
#define R_8237_DMA_MEM_LP_CH0 0x87
|
||||||
|
#define R_8237_DMA_MEM_LP_CH1 0x83
|
||||||
|
#define R_8237_DMA_MEM_LP_CH2 0x81
|
||||||
|
#define R_8237_DMA_MEM_LP_CH3 0x82
|
||||||
|
#define R_8237_DMA_MEM_LP_CH5 0x8B
|
||||||
|
#define R_8237_DMA_MEM_LP_CH6 0x89
|
||||||
|
#define R_8237_DMA_MEM_LP_CH7 0x8A
|
||||||
|
|
||||||
|
|
||||||
|
#define R_8237_DMA_COMMAND_CH0_3 0x08
|
||||||
|
#define R_8237_DMA_COMMAND_CH4_7 0xd0
|
||||||
|
#define B_8237_DMA_COMMAND_GAP 0x10
|
||||||
|
#define B_8237_DMA_COMMAND_CGE 0x04
|
||||||
|
|
||||||
|
|
||||||
|
#define R_8237_DMA_STA_CH0_3 0xd8
|
||||||
|
#define R_8237_DMA_STA_CH4_7 0xd0
|
||||||
|
|
||||||
|
#define R_8237_DMA_WRSMSK_CH0_3 0x0a
|
||||||
|
#define R_8237_DMA_WRSMSK_CH4_7 0xd4
|
||||||
|
#define B_8237_DMA_WRSMSK_CMS 0x04
|
||||||
|
|
||||||
|
|
||||||
|
#define R_8237_DMA_CHMODE_CH0_3 0x0b
|
||||||
|
#define R_8237_DMA_CHMODE_CH4_7 0xd6
|
||||||
|
#define V_8237_DMA_CHMODE_DEMAND 0x00
|
||||||
|
#define V_8237_DMA_CHMODE_SINGLE 0x40
|
||||||
|
#define V_8237_DMA_CHMODE_CASCADE 0xc0
|
||||||
|
#define B_8237_DMA_CHMODE_DECREMENT 0x20
|
||||||
|
#define B_8237_DMA_CHMODE_INCREMENT 0x00
|
||||||
|
#define B_8237_DMA_CHMODE_AE 0x10
|
||||||
|
#define V_8237_DMA_CHMODE_VERIFY 0
|
||||||
|
#define V_8237_DMA_CHMODE_IO2MEM 0x04
|
||||||
|
#define V_8237_DMA_CHMODE_MEM2IO 0x08
|
||||||
|
|
||||||
|
#define R_8237_DMA_CBPR_CH0_3 0x0c
|
||||||
|
#define R_8237_DMA_CBPR_CH4_7 0xd8
|
||||||
|
|
||||||
|
#define R_8237_DMA_MCR_CH0_3 0x0d
|
||||||
|
#define R_8237_DMA_MCR_CH4_7 0xda
|
||||||
|
|
||||||
|
#define R_8237_DMA_CLMSK_CH0_3 0x0e
|
||||||
|
#define R_8237_DMA_CLMSK_CH4_7 0xdc
|
||||||
|
|
||||||
|
#define R_8237_DMA_WRMSK_CH0_3 0x0f
|
||||||
|
#define R_8237_DMA_WRMSK_CH4_7 0xde
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
IsaAccessTypeUnknown,
|
||||||
|
IsaAccessTypeIo,
|
||||||
|
IsaAccessTypeMem,
|
||||||
|
IsaAccessTypeMaxType
|
||||||
|
} ISA_ACCESS_TYPE;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UINT8 Address;
|
||||||
|
UINT8 Page;
|
||||||
|
UINT8 Count;
|
||||||
|
} EFI_ISA_DMA_REGISTERS;
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISA I/O Device Structure
|
||||||
|
//
|
||||||
|
#define ISA_IO_DEVICE_SIGNATURE SIGNATURE_32 ('i', 's', 'a', 'i')
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UINT32 Signature;
|
||||||
|
EFI_HANDLE Handle;
|
||||||
|
EFI_ISA_IO_PROTOCOL IsaIo;
|
||||||
|
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)
|
||||||
|
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
||||||
|
/**
|
||||||
|
Tests to see if a controller can be managed by the ISA Driver.
|
||||||
|
|
||||||
|
How the Start() function of a driver is implemented can affect how the Supported() function is implemented.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
@param[in] Controller The handle of the controller to test.
|
||||||
|
@param[in] RemainingDevicePath A pointer to the remaining portion of a device path.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The device is supported by this driver.
|
||||||
|
@retval EFI_ALREADY_STARTED The device is already being managed by this driver.
|
||||||
|
@retval EFI_ACCESS_DENIED The device is already being managed by a different driver
|
||||||
|
or an application that requires exclusive access.
|
||||||
|
@retval EFI_UNSUPPORTED The device is is not supported by this driver.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoDriverSupported (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Start this driver on ControllerHandle.
|
||||||
|
|
||||||
|
The Start() function is designed to be invoked from the EFI boot service ConnectController().
|
||||||
|
As a result, much of the error checking on the parameters to Start() has been moved into this
|
||||||
|
common boot service. It is legal to call Start() from other locations, but the following calling
|
||||||
|
restrictions must be followed or the system behavior will not be deterministic.
|
||||||
|
1. ControllerHandle must be a valid EFI_HANDLE.
|
||||||
|
2. If RemainingDevicePath is not NULL, then it must be a pointer to a naturally aligned
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL.
|
||||||
|
3. Prior to calling Start(), the Supported() function for the driver specified by This must
|
||||||
|
have been called with the same calling parameters, and Supported() must have returned EFI_SUCCESS.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
@param[in] ControllerHandle The handle of the controller to start. This handle
|
||||||
|
must support a protocol interface that supplies
|
||||||
|
an I/O abstraction to the driver.
|
||||||
|
@param[in] RemainingDevicePath A pointer to the remaining portion of a device path.
|
||||||
|
This parameter is ignored by device drivers, and is optional for bus drivers.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The device was started.
|
||||||
|
@retval EFI_DEVICE_ERROR The device could not be started due to a device error.
|
||||||
|
Currently not implemented.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
|
||||||
|
@retval Others The driver failded to start the device.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoDriverStart (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Stop this driver on ControllerHandle.
|
||||||
|
|
||||||
|
The Stop() function is designed to be invoked from the EFI boot service DisconnectController().
|
||||||
|
As a result, much of the error checking on the parameters to Stop() has been moved
|
||||||
|
into this common boot service. It is legal to call Stop() from other locations,
|
||||||
|
but the following calling restrictions must be followed or the system behavior will not be deterministic.
|
||||||
|
1. ControllerHandle must be a valid EFI_HANDLE that was used on a previous call to this
|
||||||
|
same driver's Start() function.
|
||||||
|
2. The first NumberOfChildren handles of ChildHandleBuffer must all be a valid
|
||||||
|
EFI_HANDLE. In addition, all of these handles must have been created in this driver's
|
||||||
|
Start() function, and the Start() function must have called OpenProtocol() on
|
||||||
|
ControllerHandle with an Attribute of EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
|
||||||
|
@param[in] ControllerHandle A handle to the device being stopped. The handle must
|
||||||
|
support a bus specific I/O protocol for the driver
|
||||||
|
to use to stop the device.
|
||||||
|
@param[in] NumberOfChildren The number of child device handles in ChildHandleBuffer.
|
||||||
|
@param[in] ChildHandleBuffer An array of child handles to be freed. May be NULL
|
||||||
|
if NumberOfChildren is 0.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The device was stopped.
|
||||||
|
@retval EFI_DEVICE_ERROR The device could not be stopped due to a device error.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoDriverStop (
|
||||||
|
IN EFI_DRIVER_BINDING_PROTOCOL * This,
|
||||||
|
IN EFI_HANDLE Controller,
|
||||||
|
IN UINTN NumberOfChildren,
|
||||||
|
IN EFI_HANDLE * ChildHandleBuffer OPTIONAL
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Function Prototypes
|
||||||
|
//
|
||||||
|
|
||||||
|
/**
|
||||||
|
Initializes an ISA I/O Instance
|
||||||
|
|
||||||
|
@param[in] IsaIoDevice The isa device to be initialized.
|
||||||
|
@param[in] DevicePath The device path of the isa device.
|
||||||
|
@param[in] Resources The ACPI resource list.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
InitializeIsaIoInstance (
|
||||||
|
IN ISA_IO_DEVICE *IsaIoDevice,
|
||||||
|
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||||
|
IN ACPI_RESOURCE_HEADER_PTR Resources
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
1796
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/IsaIo.c
Normal file
1796
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/IsaIo.c
Normal file
File diff suppressed because it is too large
Load Diff
331
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/IsaIo.h
Normal file
331
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/IsaIo.h
Normal file
@ -0,0 +1,331 @@
|
|||||||
|
/** @file
|
||||||
|
The header file for EFI_ISA_IO protocol implementation.
|
||||||
|
|
||||||
|
Copyright (c) 2010, 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
|
||||||
|
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.
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef _ISA_IO_H_
|
||||||
|
#define _ISA_IO_H_
|
||||||
|
|
||||||
|
#include "IsaDriver.h"
|
||||||
|
|
||||||
|
//
|
||||||
|
// Bits definition of PcdIsaBusSupportedFeatures
|
||||||
|
//
|
||||||
|
#define PCD_ISA_BUS_SUPPORT_DMA BIT0
|
||||||
|
#define PCD_ISA_BUS_ONLY_SUPPORT_SLAVE_DMA BIT1
|
||||||
|
#define PCD_ISA_BUS_SUPPORT_ISA_MEMORY BIT2
|
||||||
|
|
||||||
|
//
|
||||||
|
// ISA I/O Support Function Prototypes
|
||||||
|
//
|
||||||
|
|
||||||
|
/**
|
||||||
|
Verifies access to an ISA device
|
||||||
|
|
||||||
|
@param[in] IsaIoDevice The ISA device to be verified.
|
||||||
|
@param[in] Type The Access type. The input must be either IsaAccessTypeMem or IsaAccessTypeIo.
|
||||||
|
@param[in] Width The width of the memory operation.
|
||||||
|
@param[in] Count The number of memory operations to perform.
|
||||||
|
@param[in] Offset The offset in ISA memory space to start the memory operation.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS Verify success.
|
||||||
|
@retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.
|
||||||
|
@retval EFI_UNSUPPORTED The device ont support the access type.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
IsaIoVerifyAccess (
|
||||||
|
IN ISA_IO_DEVICE *IsaIoDevice,
|
||||||
|
IN ISA_ACCESS_TYPE Type,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN UINT32 Offset
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Performs an ISA I/O Read Cycle
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
||||||
|
@param[in] Width Specifies the width of the I/O operation.
|
||||||
|
@param[in] Offset The offset in ISA I/O space to start the I/O operation.
|
||||||
|
@param[in] Count The number of I/O operations to perform.
|
||||||
|
@param[out] Buffer The destination buffer to store the results
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The data was read from the device sucessfully.
|
||||||
|
@retval EFI_UNSUPPORTED The Offset is not valid for this device.
|
||||||
|
@retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoIoRead (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINT32 Offset,
|
||||||
|
IN UINTN Count,
|
||||||
|
OUT VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Performs an ISA I/O Write Cycle
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
||||||
|
@param[in] Width Specifies the width of the I/O operation.
|
||||||
|
@param[in] Offset The offset in ISA I/O space to start the I/O operation.
|
||||||
|
@param[in] Count The number of I/O operations to perform.
|
||||||
|
@param[in] Buffer The source buffer to write data from
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The data was writen to the device sucessfully.
|
||||||
|
@retval EFI_UNSUPPORTED The Offset is not valid for this device.
|
||||||
|
@retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoIoWrite (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINT32 Offset,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Maps a memory region for DMA
|
||||||
|
|
||||||
|
@param This A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
||||||
|
@param Operation Indicates the type of DMA (slave or bus master), and if
|
||||||
|
the DMA operation is going to read or write to system memory.
|
||||||
|
@param ChannelNumber The slave channel number to use for this DMA operation.
|
||||||
|
If Operation and ChannelAttributes shows that this device
|
||||||
|
performs bus mastering DMA, then this field is ignored.
|
||||||
|
The legal range for this field is 0..7.
|
||||||
|
@param ChannelAttributes The attributes of the DMA channel to use for this DMA operation
|
||||||
|
@param HostAddress The system memory address to map to the device.
|
||||||
|
@param NumberOfBytes On input the number of bytes to map. On output the number
|
||||||
|
of bytes that were mapped.
|
||||||
|
@param DeviceAddress The resulting map address for the bus master device to use
|
||||||
|
to access the hosts HostAddress.
|
||||||
|
@param Mapping A resulting value to pass to EFI_ISA_IO.Unmap().
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes.
|
||||||
|
@retval EFI_INVALID_PARAMETER The Operation or HostAddress is undefined.
|
||||||
|
@retval EFI_UNSUPPORTED The HostAddress can not be mapped as a common buffer.
|
||||||
|
@retval EFI_DEVICE_ERROR The system hardware could not map the requested address.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoMap (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_OPERATION Operation,
|
||||||
|
IN UINT8 ChannelNumber OPTIONAL,
|
||||||
|
IN UINT32 ChannelAttributes,
|
||||||
|
IN VOID *HostAddress,
|
||||||
|
IN OUT UINTN *NumberOfBytes,
|
||||||
|
OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
|
||||||
|
OUT VOID **Mapping
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Unmaps a memory region for DMA
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
||||||
|
@param[in] Mapping The mapping value returned from EFI_ISA_IO.Map().
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The range was unmapped.
|
||||||
|
@retval EFI_DEVICE_ERROR The data was not committed to the target system memory.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoUnmap (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN VOID *Mapping
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Flushes any posted write data to the system memory.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The buffers were flushed.
|
||||||
|
@retval EFI_DEVICE_ERROR The buffers were not flushed due to a hardware error.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoFlush (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Writes I/O operation base address and count number to a 8 bit I/O Port.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
||||||
|
@param[in] AddrOffset The address' offset.
|
||||||
|
@param[in] PageOffset The page's offest.
|
||||||
|
@param[in] CountOffset The count's offset.
|
||||||
|
@param[in] BaseAddress The base address.
|
||||||
|
@param[in] Count The number of I/O operations to perform.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS Success.
|
||||||
|
@retval EFI_INVALID_PARAMETER Parameter is invalid.
|
||||||
|
@retval EFI_UNSUPPORTED The address range specified by these Offsets and Count is not valid.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
WriteDmaPort (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN UINT32 AddrOffset,
|
||||||
|
IN UINT32 PageOffset,
|
||||||
|
IN UINT32 CountOffset,
|
||||||
|
IN UINT32 BaseAddress,
|
||||||
|
IN UINT16 Count
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Writes an 8-bit I/O Port
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
||||||
|
@param[in] Offset The offset in ISA IO space to start the IO operation.
|
||||||
|
@param[in] Value The data to write port.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS Success.
|
||||||
|
@retval EFI_INVALID_PARAMETER Parameter is invalid.
|
||||||
|
@retval EFI_UNSUPPORTED The address range specified by Offset is not valid.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
WritePort (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN UINT32 Offset,
|
||||||
|
IN UINT8 Value
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Performs an ISA Memory Read Cycle
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
||||||
|
@param[in] Width Specifies the width of the memory operation.
|
||||||
|
@param[in] Offset The offset in ISA memory space to start the memory operation.
|
||||||
|
@param[in] Count The number of memory operations to perform.
|
||||||
|
@param[out] Buffer The destination buffer to store the results
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The data was read from the device successfully.
|
||||||
|
@retval EFI_UNSUPPORTED The Offset is not valid for this device.
|
||||||
|
@retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoMemRead (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINT32 Offset,
|
||||||
|
IN UINTN Count,
|
||||||
|
OUT VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Performs an ISA Memory Write Cycle
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
||||||
|
@param[in] Width Specifies the width of the memory operation.
|
||||||
|
@param[in] Offset The offset in ISA memory space to start the memory operation.
|
||||||
|
@param[in] Count The number of memory operations to perform.
|
||||||
|
@param[in] Buffer The source buffer to write data from
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The data was written to the device sucessfully.
|
||||||
|
@retval EFI_UNSUPPORTED The Offset is not valid for this device.
|
||||||
|
@retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoMemWrite (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINT32 Offset,
|
||||||
|
IN UINTN Count,
|
||||||
|
IN VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Copy one region of ISA memory space to another region of ISA memory space on the ISA controller.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
||||||
|
@param[in] Width Specifies the width of the memory copy operation.
|
||||||
|
@param[in] DestOffset The offset of the destination
|
||||||
|
@param[in] SrcOffset The offset of the source
|
||||||
|
@param[in] Count The number of memory copy operations to perform
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The data was copied sucessfully.
|
||||||
|
@retval EFI_UNSUPPORTED The DestOffset or SrcOffset is not valid for this device.
|
||||||
|
@retval EFI_INVALID_PARAMETER Width or Count, or both, were invalid.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoCopyMem (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
|
||||||
|
IN UINT32 DestOffset,
|
||||||
|
IN UINT32 SrcOffset,
|
||||||
|
IN UINTN Count
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Allocates pages that are suitable for an EfiIsaIoOperationBusMasterCommonBuffer mapping.
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
||||||
|
@param[in] Type The type allocation to perform.
|
||||||
|
@param[in] MemoryType The type of memory to allocate.
|
||||||
|
@param[in] Pages The number of pages to allocate.
|
||||||
|
@param[out] HostAddress A pointer to store the base address of the allocated range.
|
||||||
|
@param[in] Attributes The requested bit mask of attributes for the allocated range.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The requested memory pages were allocated.
|
||||||
|
@retval EFI_INVALID_PARAMETER Type is invalid or MemoryType is invalid or HostAddress is NULL
|
||||||
|
@retval EFI_UNSUPPORTED Attributes is unsupported or the memory range specified
|
||||||
|
by HostAddress, Pages, and Type is not available for common buffer use.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoAllocateBuffer (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN EFI_ALLOCATE_TYPE Type,
|
||||||
|
IN EFI_MEMORY_TYPE MemoryType,
|
||||||
|
IN UINTN Pages,
|
||||||
|
OUT VOID **HostAddress,
|
||||||
|
IN UINT64 Attributes
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Frees memory that was allocated with EFI_ISA_IO.AllocateBuffer().
|
||||||
|
|
||||||
|
@param[in] This A pointer to the EFI_ISA_IO_PROTOCOL instance.
|
||||||
|
@param[in] Pages The number of pages to free.
|
||||||
|
@param[in] HostAddress The base address of the allocated range.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The requested memory pages were freed.
|
||||||
|
@retval EFI_INVALID_PARAMETER The memory was not allocated with EFI_ISA_IO.AllocateBufer().
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
IsaIoFreeBuffer (
|
||||||
|
IN EFI_ISA_IO_PROTOCOL *This,
|
||||||
|
IN UINTN Pages,
|
||||||
|
IN VOID *HostAddress
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
67
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/IsaIoDxe.inf
Normal file
67
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/IsaIoDxe.inf
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
## @file
|
||||||
|
# Component description file for IsaIoDxe module.
|
||||||
|
#
|
||||||
|
# Produces an instance of the ISA I/O Protocol for every SIO controller.
|
||||||
|
#
|
||||||
|
# Copyright (c) 2010, 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
|
||||||
|
# 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.
|
||||||
|
##
|
||||||
|
|
||||||
|
[Defines]
|
||||||
|
INF_VERSION = 0x00010005
|
||||||
|
BASE_NAME = IsaIoDxe
|
||||||
|
FILE_GUID = 61AD3083-DCAD-4850-A50C-73B23B3B14F9
|
||||||
|
MODULE_TYPE = UEFI_DRIVER
|
||||||
|
VERSION_STRING = 1.0
|
||||||
|
ENTRY_POINT = InitializeIsaIo
|
||||||
|
|
||||||
|
#
|
||||||
|
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||||
|
# DRIVER_BINDING = gIsaIoDriver
|
||||||
|
# COMPONENT_NAME = gIsaIoComponentName;
|
||||||
|
# COMPONENT_NAME2 = gIsaIoComponentName2;
|
||||||
|
#
|
||||||
|
|
||||||
|
[Sources]
|
||||||
|
ComponentName.h
|
||||||
|
ComponentName.c
|
||||||
|
IsaIo.h
|
||||||
|
IsaIo.c
|
||||||
|
IsaDriver.h
|
||||||
|
IsaDriver.c
|
||||||
|
|
||||||
|
[Packages]
|
||||||
|
MdePkg/MdePkg.dec
|
||||||
|
IntelFrameworkPkg/IntelFrameworkPkg.dec
|
||||||
|
IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
|
||||||
|
MdeModulePkg/MdeModulePkg.dec
|
||||||
|
|
||||||
|
[LibraryClasses]
|
||||||
|
PcdLib
|
||||||
|
ReportStatusCodeLib
|
||||||
|
UefiBootServicesTableLib
|
||||||
|
MemoryAllocationLib
|
||||||
|
BaseMemoryLib
|
||||||
|
DevicePathLib
|
||||||
|
UefiLib
|
||||||
|
UefiDriverEntryPoint
|
||||||
|
DebugLib
|
||||||
|
|
||||||
|
[Protocols]
|
||||||
|
gEfiIsaIoProtocolGuid # PROTOCOL BY_START
|
||||||
|
gEfiSioProtocolGuid # PROTOCOL TO_START
|
||||||
|
gEfiPciIoProtocolGuid # PROTOCOL TO_START
|
||||||
|
gEfiDevicePathProtocolGuid # PROTOCOL TO_START
|
||||||
|
gEfiGenericMemTestProtocolGuid # PROTOCOL TO_START
|
||||||
|
|
||||||
|
[Pcd]
|
||||||
|
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdIsaBusSupportedFeatures
|
||||||
|
|
||||||
|
|
@ -128,6 +128,7 @@
|
|||||||
|
|
||||||
IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBusDxe.inf
|
IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBusDxe.inf
|
||||||
IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf
|
IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf
|
||||||
|
IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/IsaIoDxe.inf
|
||||||
IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppyDxe.inf
|
IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppyDxe.inf
|
||||||
IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe/IsaSerialDxe.inf
|
IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe/IsaSerialDxe.inf
|
||||||
IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2keyboardDxe.inf
|
IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2keyboardDxe.inf
|
||||||
|
Reference in New Issue
Block a user