30 { ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR }, 0x3F8, 8
32 { ACPI_END_TAG_DESCRIPTOR, 0 }
41 { ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR }, 0x2F8, 8
43 { ACPI_END_TAG_DESCRIPTOR, 0 }
52 { ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR }, 0x60, 5
54 { ACPI_END_TAG_DESCRIPTOR, 0 }
65 { (ACPI_SMALL_RESOURCE_HEADER *)&mCom1Resources }
70 { (ACPI_SMALL_RESOURCE_HEADER *)&mCom2Resources }
75 { (ACPI_SMALL_RESOURCE_HEADER *)&mPs2KeyboardDeviceResources }
134 IN BOOLEAN ExitCfgMode,
170 if (ResourceList ==
NULL) {
171 return EFI_INVALID_PARAMETER;
174 SioDevice = SIO_DEV_FROM_SIO (This);
175 if (SioDevice->DeviceIndex <
ARRAY_SIZE (mDevicesInfo)) {
176 *ResourceList = mDevicesInfo[SioDevice->DeviceIndex].Resources;
282 IN UINT32 DeviceIndex
292 if (SioDevice ==
NULL) {
293 return EFI_OUT_OF_RESOURCES;
296 SioDevice->Signature = SIO_DEV_SIGNATURE;
297 SioDevice->Handle =
NULL;
298 SioDevice->PciIo = PciIo;
303 mAcpiDeviceNodeTemplate.
HID = mDevicesInfo[DeviceIndex].Hid;
304 mAcpiDeviceNodeTemplate.
UID = mDevicesInfo[DeviceIndex].Uid;
309 if (SioDevice->DevicePath ==
NULL) {
310 Status = EFI_OUT_OF_RESOURCES;
315 SioDevice->DeviceIndex = DeviceIndex;
320 Status =
gBS->InstallMultipleProtocolInterfaces (
322 &gEfiDevicePathProtocolGuid,
323 SioDevice->DevicePath,
324 &gEfiSioProtocolGuid,
328 if (EFI_ERROR (Status)) {
332 Status =
gBS->OpenProtocol (
334 &gEfiPciIoProtocolGuid,
336 This->DriverBindingHandle,
338 EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
340 if (EFI_ERROR (Status)) {
341 gBS->UninstallMultipleProtocolInterfaces (
343 &gEfiDevicePathProtocolGuid,
344 SioDevice->DevicePath,
345 &gEfiSioProtocolGuid,
352 if (EFI_ERROR (Status)) {
353 if (SioDevice->DevicePath !=
NULL) {
384 UINT32 ChildDeviceNumber;
387 ChildDeviceNumber = 0;
389 for (Index = 0; Index <
ARRAY_SIZE (mDevicesInfo); Index++) {
397 if (!EFI_ERROR (Status)) {
402 return ChildDeviceNumber;
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
EFI_DEVICE_PATH_PROTOCOL *EFIAPI AppendDevicePathNode(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL, IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathNode OPTIONAL)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
#define ARRAY_SIZE(Array)
#define GLOBAL_REMOVE_IF_UNREFERENCED
EFI_STATUS EFIAPI Register(IN EFI_PEI_RSC_HANDLER_CALLBACK Callback)
UINT32 SioCreateAllChildDevices(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_PCI_IO_PROTOCOL *PciIo, IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath)
EFI_STATUS EFIAPI SioGetResources(IN CONST EFI_SIO_PROTOCOL *This, OUT ACPI_RESOURCE_HEADER_PTR *ResourceList)
EFI_STATUS EFIAPI SioPossibleResources(IN CONST EFI_SIO_PROTOCOL *This, OUT ACPI_RESOURCE_HEADER_PTR *ResourceCollection)
EFI_STATUS EFIAPI SioRegisterAccess(IN CONST EFI_SIO_PROTOCOL *This, IN BOOLEAN Write, IN BOOLEAN ExitCfgMode, IN UINT8 Register, IN OUT UINT8 *Value)
EFI_STATUS EFIAPI SioSetResources(IN CONST EFI_SIO_PROTOCOL *This, IN ACPI_RESOURCE_HEADER_PTR ResourceList)
EFI_STATUS EFIAPI SioModify(IN CONST EFI_SIO_PROTOCOL *This, IN CONST EFI_SIO_REGISTER_MODIFY *Command, IN UINTN NumberOfCommands)
EFI_STATUS SioCreateChildDevice(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_PCI_IO_PROTOCOL *PciIo, IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath, IN UINT32 DeviceIndex)