Skip to contentSkip to conversation

i2c-i801 / SMBus timeouts on BayTrail board (U-Boot)

DISCUSSION Stefan Roese 2 participants 3 messages Jun 24, 2016 I2C subsystem host drivers

lore
Share & tools
lore
#0 lore raw

Hi,

I'm currently trying to use the SMBus on a congatec BayTrail board. This works just fine when booting via the original BIOS. But when I boot into Linux using U-Boot as bootloader, I get the following errors:

[   81.877121] i801_smbus 0000:00:1f.3: Transaction timeout
[   81.879228] i801_smbus 0000:00:1f.3: Failed terminating the transaction
[   81.879320] i801_smbus 0000:00:1f.3: SMBus is busy, can't use it!
[   81.879373] i801_smbus 0000:00:1f.3: SMBus is busy, can't use it!
[   81.879421] i801_smbus 0000:00:1f.3: SMBus is busy, can't use it!
[   81.879496] i801_smbus 0000:00:1f.3: SMBus is busy, can't use it!

...

I checked with an oscilloscope and the SMBus clock is not toggling at all in this case. My feeling is, that some basic setup is missing in this non-BIOS case. Like some clock enabling. Does anyone of you have some idea here?

Thanks,
Stefan

#1 lore raw

Hi Stefan,

Quoted 13 lines · Stefan Roese

Hi,

I'm currently trying to use the SMBus on a congatec BayTrail board. This works just fine when booting via the original BIOS. But when I boot into Linux using U-Boot as bootloader, I get the following errors:

[   81.877121] i801_smbus 0000:00:1f.3: Transaction timeout
[   81.879228] i801_smbus 0000:00:1f.3: Failed terminating the transaction
[   81.879320] i801_smbus 0000:00:1f.3: SMBus is busy, can't use it!
[   81.879373] i801_smbus 0000:00:1f.3: SMBus is busy, can't use it!
[   81.879421] i801_smbus 0000:00:1f.3: SMBus is busy, can't use it!
[   81.879496] i801_smbus 0000:00:1f.3: SMBus is busy, can't use it!
Quoted 6 lines

...

I checked with an oscilloscope and the SMBus clock is not toggling at all in this case. My feeling is, that some basic setup is missing in this non-BIOS case. Like some clock enabling. Does anyone of you have some idea here?

No immediate idea, sorry. Two ideas:

* Is this problem specific to Baytrail systems, or does i2c-i801 fail on all U-Boot systems?

* Did you try comparing the PCI configuration space of the SMBus device between original BIOS boot (working) and U-Boot boot (not working)?

Signature · 2 lines
Jean Delvare
SUSE L3 Support
#2 lore raw

Hi Jean,

Quoted 21 lines · Jean Delvare
Quoted 13 lines · Stefan Roese

Hi,

I'm currently trying to use the SMBus on a congatec BayTrail board. This works just fine when booting via the original BIOS. But when I boot into Linux using U-Boot as bootloader, I get the following errors:

[   81.877121] i801_smbus 0000:00:1f.3: Transaction timeout
[   81.879228] i801_smbus 0000:00:1f.3: Failed terminating the transaction
[   81.879320] i801_smbus 0000:00:1f.3: SMBus is busy, can't use it!
[   81.879373] i801_smbus 0000:00:1f.3: SMBus is busy, can't use it!
[   81.879421] i801_smbus 0000:00:1f.3: SMBus is busy, can't use it!
[   81.879496] i801_smbus 0000:00:1f.3: SMBus is busy, can't use it!
Quoted 6 lines

...

I checked with an oscilloscope and the SMBus clock is not toggling at all in this case. My feeling is, that some basic setup is missing in this non-BIOS case. Like some clock enabling. Does anyone of you have some idea here?

Quoted 4 lines

No immediate idea, sorry. Two ideas:

* Is this problem specific to Baytrail systems, or does i2c-i801 fail on all U-Boot systems?

I only have BayTrail systems right now.

Quoted 2 lines

* Did you try comparing the PCI configuration space of the SMBus device between original BIOS boot (working) and U-Boot boot (not working)?

The issue seems to be solved just a few minutes ago. As it seems a pin-mux configuration was missing for the SMBus pins. Now the bus can be scanned in Linux without any issues.

Thanks,
Stefan