On 26 April 2016 at 17:37, Bartosz Szczepanek bsz@semihalf.com wrote:
Hello Ard,
the commit can be disregarded, as the change was already introduced by Leif since we forked (50e8d39 - ArmPlatformPkg/IntelBds: call BdsLibConnectAll()).
Anyway, I'll explain a bit more so as to address your concerns. In our case, the need to call BdsLibConnectAll() emerged with introduction of I2C and EEPROM drivers. MvI2cDxe implements EFI_I2C_BUS_CONFIGURATION_MANAGEMENT_PROTOCOL, EFI_I2C_MASTER_PROTOCOL and EFI_I2C_ENUMERATE_PROTOCOL, which are required by generic I2C stack. These protocols are installed on a new handle, which should be recognized in I2cHostDriverSupported() call. On bad, without BdsLibConnectAll() this function is not called for newly created handle, hence I2C stack attachment doesn't proceed.
I found no other way to handle that. Please let me know if you know better solution.
What kind of devices are on the I2C bus? And why do you need to access them during boot? If you need I2C to implement architectural protocols rather than driver binding protocols, you should probably not be using the UEFI driver model in this case