+++ /dev/null
-/** @file\r
- Implement the driver binding protocol for Asix AX88772 Ethernet driver.\r
- \r
- Copyright (c) 2011-2013, Intel Corporation. All rights reserved.\r
- SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#include "Ax88772.h"\r
-\r
-ASIX_DONGLE ASIX_DONGLES[] = {\r
- { 0x05AC, 0x1402, FLAG_TYPE_AX88772 }, // Apple USB Ethernet Adapter\r
- // ASIX 88772B\r
- { 0x0B95, 0x772B, FLAG_TYPE_AX88772B | FLAG_EEPROM_MAC },\r
- { 0x0000, 0x0000, FLAG_NONE } // END - Do not remove\r
-};\r
-\r
-/**\r
- Verify the controller type\r
-\r
- @param [in] pThis Protocol instance pointer.\r
- @param [in] Controller Handle of device to test.\r
- @param [in] pRemainingDevicePath Not used.\r
-\r
- @retval EFI_SUCCESS This driver supports this device.\r
- @retval other This driver does not support this device.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-DriverSupported (\r
- IN EFI_DRIVER_BINDING_PROTOCOL * pThis,\r
- IN EFI_HANDLE Controller,\r
- IN EFI_DEVICE_PATH_PROTOCOL * pRemainingDevicePath\r
- )\r
-{\r
- EFI_USB_DEVICE_DESCRIPTOR Device;\r
- EFI_USB_IO_PROTOCOL * pUsbIo;\r
- EFI_STATUS Status;\r
- UINT32 Index;\r
-\r
- //\r
- // Connect to the USB stack\r
- //\r
- Status = gBS->OpenProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- (VOID **) &pUsbIo,\r
- pThis->DriverBindingHandle, \r
- Controller,\r
- EFI_OPEN_PROTOCOL_BY_DRIVER\r
- );\r
- if (!EFI_ERROR ( Status )) {\r
-\r
- //\r
- // Get the interface descriptor to check the USB class and find a transport\r
- // protocol handler.\r
- //\r
- Status = pUsbIo->UsbGetDeviceDescriptor ( pUsbIo, &Device );\r
- if (EFI_ERROR ( Status )) {\r
- Status = EFI_UNSUPPORTED;\r
- }\r
- else {\r
- //\r
- // Validate the adapter\r
- //\r
- for (Index = 0; ASIX_DONGLES[Index].VendorId != 0; Index++) {\r
- if (ASIX_DONGLES[Index].VendorId == Device.IdVendor &&\r
- ASIX_DONGLES[Index].ProductId == Device.IdProduct) {\r
- DEBUG ((EFI_D_INFO, "Found the AX88772B\r\n"));\r
- break;\r
- }\r
- }\r
-\r
- if (ASIX_DONGLES[Index].VendorId == 0)\r
- Status = EFI_UNSUPPORTED;\r
- }\r
- \r
- //\r
- // Done with the USB stack\r
- //\r
- gBS->CloseProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- Controller\r
- );\r
- }\r
- return Status;\r
-}\r
-\r
-\r
-/**\r
- Start this driver on Controller by opening UsbIo and DevicePath protocols.\r
- Initialize PXE structures, create a copy of the Controller Device Path with the\r
- NIC's MAC address appended to it, install the NetworkInterfaceIdentifier protocol\r
- on the newly created Device Path.\r
-\r
- @param [in] pThis Protocol instance pointer.\r
- @param [in] Controller Handle of device to work with.\r
- @param [in] pRemainingDevicePath Not used, always produce all possible children.\r
-\r
- @retval EFI_SUCCESS This driver is added to Controller.\r
- @retval other This driver does not support this device.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-DriverStart (\r
- IN EFI_DRIVER_BINDING_PROTOCOL * pThis,\r
- IN EFI_HANDLE Controller,\r
- IN EFI_DEVICE_PATH_PROTOCOL * pRemainingDevicePath\r
- )\r
-{\r
-\r
- EFI_STATUS Status;\r
- NIC_DEVICE *pNicDevice;\r
- UINTN LengthInBytes;\r
- EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath = NULL;\r
- MAC_ADDR_DEVICE_PATH MacDeviceNode;\r
- EFI_USB_DEVICE_DESCRIPTOR Device;\r
- UINT32 Index;\r
-\r
- //\r
- // Allocate the device structure\r
- //\r
- LengthInBytes = sizeof ( *pNicDevice );\r
- Status = gBS->AllocatePool (\r
- EfiRuntimeServicesData,\r
- LengthInBytes,\r
- (VOID **) &pNicDevice\r
- );\r
-\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "gBS->AllocatePool:pNicDevice ERROR Status = %r\n", Status));\r
- goto EXIT;\r
- }\r
- \r
- //\r
- // Set the structure signature\r
- //\r
- ZeroMem ( pNicDevice, LengthInBytes );\r
- pNicDevice->Signature = DEV_SIGNATURE;\r
-\r
- Status = gBS->OpenProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- (VOID **) &pNicDevice->pUsbIo,\r
- pThis->DriverBindingHandle,\r
- Controller,\r
- EFI_OPEN_PROTOCOL_BY_DRIVER\r
- );\r
-\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "gBS->OpenProtocol:EFI_USB_IO_PROTOCOL ERROR Status = %r\n", Status));\r
- gBS->FreePool ( pNicDevice );\r
- goto EXIT;\r
- }\r
-\r
- //\r
- // Initialize the simple network protocol\r
- //\r
- Status = SN_Setup ( pNicDevice );\r
-\r
- if (EFI_ERROR(Status)){\r
- DEBUG ((EFI_D_ERROR, "SN_Setup ERROR Status = %r\n", Status));\r
- gBS->CloseProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- Controller\r
- );\r
- gBS->FreePool ( pNicDevice );\r
- goto EXIT;\r
- }\r
-\r
- Status = pNicDevice->pUsbIo->UsbGetDeviceDescriptor ( pNicDevice->pUsbIo, &Device );\r
- if (EFI_ERROR ( Status )) {\r
- gBS->CloseProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- Controller\r
- );\r
- gBS->FreePool ( pNicDevice );\r
- goto EXIT;\r
- } else {\r
- //\r
- // Validate the adapter\r
- //\r
- for (Index = 0; ASIX_DONGLES[Index].VendorId != 0; Index++) {\r
- if (ASIX_DONGLES[Index].VendorId == Device.IdVendor &&\r
- ASIX_DONGLES[Index].ProductId == Device.IdProduct) {\r
- break;\r
- }\r
- }\r
-\r
- if (ASIX_DONGLES[Index].VendorId == 0) {\r
- gBS->CloseProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- Controller\r
- );\r
- gBS->FreePool ( pNicDevice );\r
- goto EXIT;\r
- }\r
-\r
- pNicDevice->Flags = ASIX_DONGLES[Index].Flags;\r
- }\r
-\r
- //\r
- // Set Device Path\r
- // \r
- Status = gBS->OpenProtocol (\r
- Controller,\r
- &gEfiDevicePathProtocolGuid,\r
- (VOID **) &ParentDevicePath,\r
- pThis->DriverBindingHandle,\r
- Controller,\r
- EFI_OPEN_PROTOCOL_BY_DRIVER\r
- );\r
- if (EFI_ERROR(Status)) {\r
- DEBUG ((EFI_D_ERROR, "gBS->OpenProtocol:EFI_DEVICE_PATH_PROTOCOL error. Status = %r\n",\r
- Status)); \r
- gBS->CloseProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- Controller\r
- );\r
- gBS->FreePool ( pNicDevice );\r
- goto EXIT;\r
- }\r
-\r
- ZeroMem (&MacDeviceNode, sizeof (MAC_ADDR_DEVICE_PATH));\r
- MacDeviceNode.Header.Type = MESSAGING_DEVICE_PATH;\r
- MacDeviceNode.Header.SubType = MSG_MAC_ADDR_DP;\r
-\r
- SetDevicePathNodeLength (&MacDeviceNode.Header, sizeof (MAC_ADDR_DEVICE_PATH));\r
- \r
- CopyMem (&MacDeviceNode.MacAddress,\r
- &pNicDevice->SimpleNetworkData.CurrentAddress,\r
- PXE_HWADDR_LEN_ETHER);\r
- \r
- MacDeviceNode.IfType = pNicDevice->SimpleNetworkData.IfType;\r
-\r
- pNicDevice->MyDevPath = AppendDevicePathNode (\r
- ParentDevicePath,\r
- (EFI_DEVICE_PATH_PROTOCOL *) &MacDeviceNode\r
- );\r
-\r
- pNicDevice->Controller = NULL;\r
-\r
- //\r
- // Install both the simple network and device path protocols.\r
- //\r
- Status = gBS->InstallMultipleProtocolInterfaces (\r
- &pNicDevice->Controller,\r
- &gEfiCallerIdGuid,\r
- pNicDevice,\r
- &gEfiSimpleNetworkProtocolGuid, \r
- &pNicDevice->SimpleNetwork,\r
- &gEfiDevicePathProtocolGuid,\r
- pNicDevice->MyDevPath,\r
- NULL\r
- );\r
-\r
- if (EFI_ERROR(Status)){\r
- DEBUG ((EFI_D_ERROR, "gBS->InstallMultipleProtocolInterfaces error. Status = %r\n",\r
- Status)); \r
- gBS->CloseProtocol (\r
- Controller,\r
- &gEfiDevicePathProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- Controller);\r
- gBS->CloseProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- Controller\r
- );\r
- gBS->FreePool ( pNicDevice );\r
- goto EXIT;\r
- }\r
-\r
- //\r
- // Open For Child Device\r
- //\r
- Status = gBS->OpenProtocol ( \r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- (VOID **) &pNicDevice->pUsbIo,\r
- pThis->DriverBindingHandle,\r
- pNicDevice->Controller,\r
- EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
- );\r
-\r
- if (EFI_ERROR(Status)){\r
- gBS->UninstallMultipleProtocolInterfaces (\r
- &pNicDevice->Controller,\r
- &gEfiCallerIdGuid,\r
- pNicDevice,\r
- &gEfiSimpleNetworkProtocolGuid, \r
- &pNicDevice->SimpleNetwork,\r
- &gEfiDevicePathProtocolGuid,\r
- pNicDevice->MyDevPath,\r
- NULL\r
- );\r
- gBS->CloseProtocol (\r
- Controller,\r
- &gEfiDevicePathProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- Controller);\r
- gBS->CloseProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- Controller\r
- );\r
- gBS->FreePool ( pNicDevice );\r
- }\r
-\r
-EXIT:\r
- return Status;\r
-\r
-}\r
-\r
-/**\r
- Stop this driver on Controller by removing NetworkInterfaceIdentifier protocol and\r
- closing the DevicePath and PciIo protocols on Controller.\r
-\r
- @param [in] pThis Protocol instance pointer.\r
- @param [in] Controller Handle of device to stop driver on.\r
- @param [in] NumberOfChildren How many children need to be stopped.\r
- @param [in] pChildHandleBuffer Not used.\r
-\r
- @retval EFI_SUCCESS This driver is removed Controller.\r
- @retval EFI_DEVICE_ERROR The device could not be stopped due to a device error.\r
- @retval other This driver was not removed from this device.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-DriverStop (\r
- IN EFI_DRIVER_BINDING_PROTOCOL * pThis,\r
- IN EFI_HANDLE Controller,\r
- IN UINTN NumberOfChildren,\r
- IN EFI_HANDLE * ChildHandleBuffer\r
- )\r
-{\r
- BOOLEAN AllChildrenStopped;\r
- UINTN Index;\r
- EFI_SIMPLE_NETWORK_PROTOCOL *SimpleNetwork;\r
- EFI_STATUS Status = EFI_SUCCESS;\r
- NIC_DEVICE *pNicDevice;\r
- \r
- //\r
- // Complete all outstanding transactions to Controller.\r
- // Don't allow any new transaction to Controller to be started.\r
- //\r
- if (NumberOfChildren == 0) {\r
- \r
- Status = gBS->OpenProtocol (\r
- Controller,\r
- &gEfiSimpleNetworkProtocolGuid,\r
- (VOID **) &SimpleNetwork,\r
- pThis->DriverBindingHandle,\r
- Controller,\r
- EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
- );\r
- \r
- if (EFI_ERROR(Status)) {\r
- //\r
- // This is a 2nd type handle(multi-lun root), it needs to close devicepath\r
- // and usbio protocol.\r
- //\r
- gBS->CloseProtocol (\r
- Controller,\r
- &gEfiDevicePathProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- Controller\r
- );\r
- gBS->CloseProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- Controller\r
- );\r
- return EFI_SUCCESS;\r
- }\r
- \r
- pNicDevice = DEV_FROM_SIMPLE_NETWORK ( SimpleNetwork );\r
- \r
- Status = gBS->UninstallMultipleProtocolInterfaces (\r
- Controller, \r
- &gEfiCallerIdGuid,\r
- pNicDevice,\r
- &gEfiSimpleNetworkProtocolGuid, \r
- &pNicDevice->SimpleNetwork,\r
- &gEfiDevicePathProtocolGuid,\r
- pNicDevice->MyDevPath,\r
- NULL\r
- );\r
- \r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
- //\r
- // Close the bus driver\r
- //\r
- Status = gBS->CloseProtocol (\r
- Controller,\r
- &gEfiDevicePathProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- Controller\r
- );\r
-\r
- if (EFI_ERROR(Status)){\r
- DEBUG ((EFI_D_ERROR, "driver stop: gBS->CloseProtocol:EfiDevicePathProtocol error. Status %r\n", Status));\r
- }\r
-\r
- Status = gBS->CloseProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- Controller\r
- );\r
-\r
- if (EFI_ERROR(Status)){\r
- DEBUG ((EFI_D_ERROR, "driver stop: gBS->CloseProtocol:EfiUsbIoProtocol error. Status %r\n", Status));\r
- }\r
- return EFI_SUCCESS;\r
- } \r
- AllChildrenStopped = TRUE;\r
-\r
- for (Index = 0; Index < NumberOfChildren; Index++) {\r
-\r
- Status = gBS->OpenProtocol (\r
- ChildHandleBuffer[Index],\r
- &gEfiSimpleNetworkProtocolGuid,\r
- (VOID **) &SimpleNetwork,\r
- pThis->DriverBindingHandle,\r
- Controller,\r
- EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
- );\r
- \r
- if (EFI_ERROR (Status)) {\r
- AllChildrenStopped = FALSE;\r
- DEBUG ((EFI_D_ERROR, "Fail to stop No.%d multi-lun child handle when opening SimpleNetwork\n", (UINT32)Index));\r
- continue;\r
- } \r
- \r
- pNicDevice = DEV_FROM_SIMPLE_NETWORK ( SimpleNetwork );\r
- \r
- gBS->CloseProtocol (\r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- pThis->DriverBindingHandle,\r
- ChildHandleBuffer[Index]\r
- ); \r
- \r
- Status = gBS->UninstallMultipleProtocolInterfaces (\r
- ChildHandleBuffer[Index], \r
- &gEfiCallerIdGuid,\r
- pNicDevice,\r
- &gEfiSimpleNetworkProtocolGuid, \r
- &pNicDevice->SimpleNetwork,\r
- &gEfiDevicePathProtocolGuid,\r
- pNicDevice->MyDevPath,\r
- NULL\r
- );\r
- \r
- if (EFI_ERROR (Status)) {\r
- Status = gBS->OpenProtocol ( \r
- Controller,\r
- &gEfiUsbIoProtocolGuid,\r
- (VOID **) &pNicDevice->pUsbIo,\r
- pThis->DriverBindingHandle,\r
- ChildHandleBuffer[Index],\r
- EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
- );\r
- }\r
- else {\r
- int i;\r
- RX_PKT * pCurr = pNicDevice->QueueHead;\r
- RX_PKT * pFree;\r
- \r
- for ( i = 0 ; i < MAX_QUEUE_SIZE ; i++) {\r
- if ( NULL != pCurr ) {\r
- pFree = pCurr;\r
- pCurr = pCurr->pNext;\r
- gBS->FreePool (pFree);\r
- }\r
- }\r
- \r
- if ( NULL != pNicDevice->pRxTest)\r
- gBS->FreePool (pNicDevice->pRxTest);\r
-\r
- if ( NULL != pNicDevice->pTxTest)\r
- gBS->FreePool (pNicDevice->pTxTest);\r
-\r
- if ( NULL != pNicDevice->MyDevPath)\r
- gBS->FreePool (pNicDevice->MyDevPath);\r
- \r
- if ( NULL != pNicDevice)\r
- gBS->FreePool (pNicDevice);\r
- }\r
- }\r
- \r
- if (!AllChildrenStopped) {\r
- return EFI_DEVICE_ERROR;\r
- }\r
- return EFI_SUCCESS;\r
-}\r
-\r
-\r
-/**\r
- Driver binding protocol declaration\r
-**/\r
-EFI_DRIVER_BINDING_PROTOCOL gDriverBinding = {\r
- DriverSupported,\r
- DriverStart,\r
- DriverStop,\r
- 0xa,\r
- NULL,\r
- NULL\r
-};\r
-\r
-\r
-/**\r
- Ax88772 driver unload routine.\r
-\r
- @param [in] ImageHandle Handle for the image.\r
-\r
- @retval EFI_SUCCESS Image may be unloaded\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-DriverUnload (\r
- IN EFI_HANDLE ImageHandle\r
- )\r
-{\r
- UINTN BufferSize;\r
- UINTN Index;\r
- UINTN Max;\r
- EFI_HANDLE * pHandle;\r
- EFI_STATUS Status;\r
-\r
- //\r
- // Determine which devices are using this driver\r
- //\r
- BufferSize = 0;\r
- pHandle = NULL;\r
- Status = gBS->LocateHandle (\r
- ByProtocol,\r
- &gEfiCallerIdGuid,\r
- NULL,\r
- &BufferSize,\r
- NULL );\r
- if ( EFI_BUFFER_TOO_SMALL == Status ) {\r
- for ( ; ; ) {\r
- //\r
- // One or more block IO devices are present\r
- //\r
- Status = gBS->AllocatePool (\r
- EfiRuntimeServicesData,\r
- BufferSize,\r
- (VOID **) &pHandle\r
- );\r
- if ( EFI_ERROR ( Status )) {\r
- DEBUG ((EFI_D_ERROR, "Insufficient memory, failed handle buffer allocation\r\n"));\r
- break;\r
- }\r
-\r
- //\r
- // Locate the block IO devices\r
- //\r
- Status = gBS->LocateHandle (\r
- ByProtocol,\r
- &gEfiCallerIdGuid,\r
- NULL,\r
- &BufferSize,\r
- pHandle );\r
- if ( EFI_ERROR ( Status )) {\r
- //\r
- // Error getting handles\r
- //\r
- break;\r
- }\r
- \r
- //\r
- // Remove any use of the driver\r
- //\r
- Max = BufferSize / sizeof ( pHandle[ 0 ]);\r
- for ( Index = 0; Max > Index; Index++ ) {\r
- Status = DriverStop ( &gDriverBinding,\r
- pHandle[ Index ],\r
- 0,\r
- NULL );\r
- if ( EFI_ERROR ( Status )) {\r
- DEBUG ((EFI_D_ERROR, "WARNING - Failed to shutdown the driver on handle %08x\r\n", pHandle[ Index ]));\r
- break;\r
- }\r
- }\r
- break;\r
- }\r
- }\r
- else {\r
- if ( EFI_NOT_FOUND == Status ) {\r
- //\r
- // No devices were found\r
- //\r
- Status = EFI_SUCCESS;\r
- }\r
- }\r
-\r
- //\r
- // Free the handle array \r
- //\r
- if ( NULL != pHandle ) {\r
- gBS->FreePool ( pHandle );\r
- }\r
-\r
- //\r
- // Remove the protocols installed by the EntryPoint routine.\r
- //\r
- if ( !EFI_ERROR ( Status )) {\r
- gBS->UninstallMultipleProtocolInterfaces (\r
- ImageHandle,\r
- &gEfiDriverBindingProtocolGuid,\r
- &gDriverBinding, \r
- &gEfiComponentNameProtocolGuid,\r
- &gComponentName,\r
- &gEfiComponentName2ProtocolGuid,\r
- &gComponentName2,\r
- NULL\r
- );\r
-\r
- DEBUG (( DEBUG_POOL | DEBUG_INIT | DEBUG_INFO,\r
- "Removed: gEfiComponentName2ProtocolGuid from 0x%08x\r\n",\r
- ImageHandle ));\r
- DEBUG (( DEBUG_POOL | DEBUG_INIT | DEBUG_INFO,\r
- "Removed: gEfiComponentNameProtocolGuid from 0x%08x\r\n",\r
- ImageHandle ));\r
- DEBUG (( DEBUG_POOL | DEBUG_INIT | DEBUG_INFO,\r
- "Removed: gEfiDriverBindingProtocolGuid from 0x%08x\r\n",\r
- ImageHandle ));\r
-\r
- }\r
-\r
- return Status;\r
-}\r
-\r
-\r
-/**\r
-Ax88772 driver entry point.\r
-\r
-@param [in] ImageHandle Handle for the image.\r
-@param [in] pSystemTable Address of the system table.\r
-\r
-@retval EFI_SUCCESS Image successfully loaded.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-EntryPoint (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE * pSystemTable\r
- )\r
-{\r
- EFI_STATUS Status;\r
-\r
- //\r
- // Add the driver to the list of drivers\r
- //\r
- Status = EfiLibInstallDriverBindingComponentName2 (\r
- ImageHandle,\r
- pSystemTable,\r
- &gDriverBinding,\r
- ImageHandle,\r
- &gComponentName,\r
- &gComponentName2\r
- );\r
- if ( !EFI_ERROR ( Status )) {\r
- DEBUG ((EFI_D_INFO, "Installed: gEfiDriverBindingProtocolGuid on 0x%08x\r\n",\r
- ImageHandle));\r
- DEBUG ((EFI_D_INFO, "Installed: gEfiComponentNameProtocolGuid on 0x%08x\r\n",\r
- ImageHandle));\r
- DEBUG ((EFI_D_INFO,"Installed: gEfiComponentName2ProtocolGuid on 0x%08x\r\n",\r
- ImageHandle ));\r
-\r
- }\r
- return Status;\r
-}\r