Hi,
You're assuming every i2c bus appears as a PCI device - that's not always the case. In fact, those Synopsys devices usually arent (AFAIK). Thanks, Pedro On Tue, 6 Sept 2022, 12:09 , <gordon...@gmail.com> wrote: > Hi all, > My platform information is as follows: > Minnowboard Max. > I use i2cdetect under Linux to detect multiple I2c buses, such as: > > I2c-0 Synopsys DesignWare I2C adapter > I2c-10 SMBus I801 adapter at 2000 > > I can scan the I2c-10 SMbus slave address 0x50 from the SpdRead code in > the UEFI shell to have a slave device. Methods as below: > > UINT32 FindSmBusDev() > { > ... > Addr = 0x80000000; > for(Bus = 0x00; Bus < 0xFF; Bus++) { > for(Dev = 0x00; Dev <= 0x1F; Dev++) { > for(Fun = 0x00; Fun <= 0x07; Fun++) { > Addr &= 0xFF000000;//clean the address > Addr |= ((Bus << 16) | (Dev << 11) | (Fun << 8));//set the pci bus dev and > fun IoWrite32(PCI_INDEX_IO_PORT, Addr); > if(IoRead32(PCI_DATA_IO_PORT) != 0xFFFFFFFF) { > Addr = Addr + 0x08;//read class code > IoWrite32(PCI_INDEX_IO_PORT, Addr); > if (IoRead32(PCI_DATA_IO_PORT) >> 16 == 0x0C05)//it's Smbus class code > { > return Addr - 0x08; > } > } > } > } > } > return Addr; > } > > > > My question is: > How to switch to I2c-0 bus under UEFI to perform I2C IO operation on the > slave device of Synopsys I2C controller? > Any suggestion is greatly appreciated! > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#93219): https://edk2.groups.io/g/devel/message/93219 Mute This Topic: https://groups.io/mt/93498087/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-