This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TPS65983B: Support request for single-port, self-powered AR device with TPS65983B, cont.

Part Number: TPS65983B

Somebody locked my thread so this may get a little confusing.  We got the self-powered AR LP to work with properly configured firmware.  Thanks for the assistance.  

Unfortunately we’re having PCIe enumeration problems on PC hosts (NUC, Dell, etc).  Mac is OK.  After DUT powers up TB3 always connects but PCIe fails to enumerate properly half the time.  The host always sees the Intel vendor ID on the bridge.  But half the time the PCIe core in our FPGA (Spartan-6, 1x1, Gen1) fails to complete link-training and thus fails to update the IDs.  That occurs around half way through its state machine making it fail to initialize config space with our vendor and device IDs.

We’ve made a few crude attempts to delay and re-assert DG_RST_L (from the TPS65983B).  We’ve seen no data integrity errors so we’ve ruled out SI.  The DUT has passed pre-cert PCIe and CIO tests.  When PCIe does initialize successfully we can repeatedly unplug/plug and it always enumerates after that (unless we power cycle the DUT).  In comparing the signaling between success vs. failure cases we see no difference in timing of power sequencing, resets, etc. from the PD and AR.

We’re using the latest versions of the TI and Intel base images.  We’ve tried enabling hot swap in the Intel firmware - unsuccessful.  We suspect it may be a timing issue where the PC may be expecting the AR bridge and our device to be available too soon.  What kicks off the sequence is the PD firmware de-asserting DG_RST_L to AR.  Is there a register we can tune to delay de-assertion of DG_RST_L?

Could you please review the above info and provide feedback?  Any known errata which might explain what we're seeing?  Our timeframe is immediate (blocker!).  Thanks.

  • Adding Link to previous thread for continuity: e2e.ti.com/.../2813169
  • Hi Chris,

    We can think of two things to check with respect to the PD controller.

    Can you describe how the system is being powered up? Is your device connected to the host/dock before or after power is applied? We are considering '83B dead battery behavior here.

    Can you scope the link for LS TX/RX? You should be able to see a reply echo from the low speed UART. We expect that the Ridge device has had time to boot and probe the PD firmware.

    There is no tuning or delay register. You can check the timing for MRESET. The RESETZ output is also asserted when the MRESET input is asserted.

    Regards,
    Scott
  • Hi Scott,

    as far as how the system is being powered up, we've tried all methods including powering host first, then powering DUT while plugged-in, before plugging, etc. 

    What might solve our problem is asserting MRESET until our FPGA is fully initialized, then deassert it.  The datasheet says "By default,this pinasserts RESETZ whenpulled high."  You said the same thing.  Problem is when I manually assert MRESET (pull high) it has no effect on RESETZ (DG_RST_N).  The Intel ref. design pulls RESETZ low through 10K however Intel told us to float it.  I tried pulling it down anyway but it doesn't fix our problem. 

    After power up VIN_3V3 is 0V so the chip may think the host battery is dead.  However, we're self-powered, not bus powered so would it care?  Haven't had a chance to probe LSTX/RX or play with HRESET.  Should HRESET have a similar affect as MRESET is supposed to?

  • Hi Chris,

    I am checking on your reported behavior for MRESET / RESETZ. Because you are working with TPS6598B, the PD behavior is less configurable / more fixed because the design is constrained to match the Thunderbolt Reference exactly.

    Could you check the firmware version / configuration tool version you are working with?

    Regards,
    Scott
  • As far as the tools, we're using Config Tool v4.09 and FW v4.57.

  • Hi Chris,

    We expect the behavior of MRESET/RESETZ should match the datasheet, Figure 5. RESETZ Assertion Timing. I see you mention that forcing RESETZ low does not solve the issue anyway.

    The suggestion to probe low speed serial was to check the ridge device status.

    Boot in dead battery mode will change parts of device behavior. I am checking if this could change operation.

    Regards,
    Scott
  • Thanks, Scott.  Please let me know about the reset behavior.  When I assert MRESET (pull high) it definitely has no effect on RESETZ.  Doesn't matter if it's successfully connected to a host or not.  Perhaps the datasheet is incorrect or there are end cases which exhibit different behavior.

  • Hi Chris,

    One thing I want to mention is that "After power up VIN_3V3 is 0V", so you will be booting into dead battery mode. Does your system send the 4CC DBCI to exit from dead battery mode? A dead battery mode boot is different than a regular power up sequence in that TPS65983 samples the BUSPOWERZ pin to determine if VBUS is received by the system through the PP_EXT path, or the PP_HV path.

    There is more information about dead battery mode in the data sheet in scection 9.3.3.17 BUSPOWERZ.

    Regards,
    Scott