mirror of https://github.com/acidanthera/audk.git
IntelFrameworkModulePkg/LegacyBios: Get SIO data in separate function
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com>
This commit is contained in:
parent
d6f38e374e
commit
26a7ece721
|
@ -2,7 +2,7 @@
|
||||||
Collect Sio information from Native EFI Drivers.
|
Collect Sio information from Native EFI Drivers.
|
||||||
Sio is floppy, parallel, serial, ... hardware
|
Sio is floppy, parallel, serial, ... hardware
|
||||||
|
|
||||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions
|
are licensed and made available under the terms and conditions
|
||||||
|
@ -19,24 +19,22 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Collect EFI Info about legacy devices.
|
Collect EFI Info about legacy devices through ISA IO interface.
|
||||||
|
|
||||||
@param Private Legacy BIOS Instance data
|
@param SioPtr Pointer to SIO data.
|
||||||
|
|
||||||
@retval EFI_SUCCESS It should always work.
|
@retval EFI_SUCCESS It should always work.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
LegacyBiosBuildSioData (
|
LegacyBiosBuildSioDataFromIsaIo (
|
||||||
IN LEGACY_BIOS_INSTANCE *Private
|
IN DEVICE_PRODUCER_DATA_HEADER *SioPtr
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
DEVICE_PRODUCER_DATA_HEADER *SioPtr;
|
|
||||||
DEVICE_PRODUCER_SERIAL *Sio1Ptr;
|
DEVICE_PRODUCER_SERIAL *Sio1Ptr;
|
||||||
DEVICE_PRODUCER_PARALLEL *Sio2Ptr;
|
DEVICE_PRODUCER_PARALLEL *Sio2Ptr;
|
||||||
DEVICE_PRODUCER_FLOPPY *Sio3Ptr;
|
DEVICE_PRODUCER_FLOPPY *Sio3Ptr;
|
||||||
EFI_HANDLE IsaBusController;
|
|
||||||
UINTN HandleCount;
|
UINTN HandleCount;
|
||||||
EFI_HANDLE *HandleBuffer;
|
EFI_HANDLE *HandleBuffer;
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
|
@ -51,34 +49,8 @@ LegacyBiosBuildSioData (
|
||||||
EFI_OPEN_PROTOCOL_INFORMATION_ENTRY *OpenInfoBuffer;
|
EFI_OPEN_PROTOCOL_INFORMATION_ENTRY *OpenInfoBuffer;
|
||||||
EFI_BLOCK_IO_PROTOCOL *BlockIo;
|
EFI_BLOCK_IO_PROTOCOL *BlockIo;
|
||||||
|
|
||||||
//
|
|
||||||
// Get the pointer to the SIO data structure
|
|
||||||
//
|
|
||||||
SioPtr = &Private->IntThunk->EfiToLegacy16BootTable.SioData;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Zero the data in the SIO data structure
|
|
||||||
//
|
|
||||||
gBS->SetMem (SioPtr, sizeof (DEVICE_PRODUCER_DATA_HEADER), 0);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Find the ISA Bus Controller used for legacy
|
|
||||||
//
|
|
||||||
Status = Private->LegacyBiosPlatform->GetPlatformHandle (
|
|
||||||
Private->LegacyBiosPlatform,
|
|
||||||
EfiGetPlatformIsaBusHandle,
|
|
||||||
0,
|
|
||||||
&HandleBuffer,
|
|
||||||
&HandleCount,
|
|
||||||
NULL
|
|
||||||
);
|
|
||||||
IsaBusController = HandleBuffer[0];
|
|
||||||
if (!EFI_ERROR (Status)) {
|
|
||||||
//
|
|
||||||
// Force ISA Bus Controller to produce all ISA devices
|
|
||||||
//
|
|
||||||
gBS->ConnectController (IsaBusController, NULL, NULL, TRUE);
|
|
||||||
}
|
|
||||||
//
|
//
|
||||||
// Get the list of ISA controllers in the system
|
// Get the list of ISA controllers in the system
|
||||||
//
|
//
|
||||||
|
@ -229,6 +201,58 @@ LegacyBiosBuildSioData (
|
||||||
}
|
}
|
||||||
|
|
||||||
FreePool (HandleBuffer);
|
FreePool (HandleBuffer);
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Collect EFI Info about legacy devices.
|
||||||
|
|
||||||
|
@param Private Legacy BIOS Instance data
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS It should always work.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
LegacyBiosBuildSioData (
|
||||||
|
IN LEGACY_BIOS_INSTANCE *Private
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
DEVICE_PRODUCER_DATA_HEADER *SioPtr;
|
||||||
|
EFI_HANDLE IsaBusController;
|
||||||
|
UINTN HandleCount;
|
||||||
|
EFI_HANDLE *HandleBuffer;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Get the pointer to the SIO data structure
|
||||||
|
//
|
||||||
|
SioPtr = &Private->IntThunk->EfiToLegacy16BootTable.SioData;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Zero the data in the SIO data structure
|
||||||
|
//
|
||||||
|
gBS->SetMem (SioPtr, sizeof (DEVICE_PRODUCER_DATA_HEADER), 0);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Find the ISA Bus Controller used for legacy
|
||||||
|
//
|
||||||
|
Status = Private->LegacyBiosPlatform->GetPlatformHandle (
|
||||||
|
Private->LegacyBiosPlatform,
|
||||||
|
EfiGetPlatformIsaBusHandle,
|
||||||
|
0,
|
||||||
|
&HandleBuffer,
|
||||||
|
&HandleCount,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
IsaBusController = HandleBuffer[0];
|
||||||
|
if (!EFI_ERROR (Status)) {
|
||||||
|
//
|
||||||
|
// Force ISA Bus Controller to produce all ISA devices
|
||||||
|
//
|
||||||
|
gBS->ConnectController (IsaBusController, NULL, NULL, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
LegacyBiosBuildSioDataFromIsaIo (SioPtr);
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue