Skip to content

Commit 17da6ea

Browse files
nathanaelhuffmanlabbott
authored andcommitted
Wait a bit before issuing the first i2c transaction to tofino after power up.
1 parent 25efc6a commit 17da6ea

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

drv/sidecar-seq-server/src/tofino.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ impl Tofino {
8585
self.sequencer.set_enable(true)?;
8686

8787
// Wait for the VID to become valid, retrying as needed.
88+
// Note that we don't check that the FPGA is in the correct state here
89+
// before looping, which means that we might already be timed out before
90+
// even starting this loop if the SP had been paused by the debugger at
91+
// an in-opportune moment during bootup.
8892
for i in 0..8 {
8993
ringbuf_entry!(Trace::TofinoVidAttempt(i));
9094
// Sleep first since there is a delay between the sequencer
@@ -106,6 +110,12 @@ impl Tofino {
106110
self.sequencer.ack_vid()?;
107111
ringbuf_entry!(Trace::TofinoVidAck);
108112

113+
// Let's give the Tofino some time to load before playing with
114+
// the i2c interface. This is underspecified, but some systems
115+
// need more than 0 time here for the i2c interface to
116+
// ACK properly.
117+
hl::sleep_for(50);
118+
109119
// Keep the PCIe PHY lanes in reset and delay PCIE_INIT so
110120
// changes to the config can be made after loading parameters
111121
// from EEPROM.

0 commit comments

Comments
 (0)