There is has an example of I2cDxe driver in edk2, the path is \MdeModulePkg\Bus\I2c\I2cDxe. However, I can't find an I2C example related to the app. I use the following function, try to get the I2C handle:
EFI_STATUS LocateI2CIO(void) { EFI_STATUS Status; EFI_HANDLE* I2CIOHandleBuffer = NULL; UINTNHandleIndex = 0; UINTNHandleCount = 0; //get the handles which supports Status = gBS->LocateHandleBuffer( ByProtocol, &gEfiI2cIoProtocolGuid, NULL, &HandleCount, &I2CIOHandleBuffer ); But the return value is EFI_NOT_FOUND. My system : Minnowboard Max. By the way, I also loaded I2CDxe.efi, Command : load I2CDxe.efi The result is as follows: EFI_STATUS EFIAPI I2cBusDriverSupported ( IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { EFI_STATUS Status; EFI_I2C_ENUMERATE_PROTOCOL *I2cEnumerate; EFI_I2C_HOST_PROTOCOL *I2cHost; EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; EFI_DEVICE_PATH_PROTOCOL *DevPathNode; BOOLEAN RemainingHasControllerNode; UINT32 RemainingControllerNumber; RemainingHasControllerNode = FALSE; RemainingControllerNumber = 0; // // Determine if the I2c Enumerate Protocol is available // Status = gBS->OpenProtocol ( Controller, &gEfiI2cEnumerateProtocolGuid, (VOID**)&I2cEnumerate, This->DriverBindingHandle, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER ); The above function return value: Status : EFI_UNSUPPORTED My questions are as follows: 1. Is there any full example in edk2 with I2C operation? 2. Do I need to load I2CDxe.efi before I2c operation? 3. Does I2cDxe.efi need to be modified to be loaded? Any suggestion is greatly appreciated. Thanks! -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#92007): https://edk2.groups.io/g/devel/message/92007 Mute This Topic: https://groups.io/mt/92743920/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-