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.

TUSB544: I2C Configuration for 4 Channel Custom Alt Mode, Source side

Part Number: TUSB544

Hello,

We are currently trying to use the TUSB544 as a cable redriver in 2 lanes custom alt mode (two pairs of TX/RX, same as "USB/Custom Source" side in Figure 49), we do not intend to redrive Displayport OR USB but a custom Gbs link.

Our design currently sets up the device in I2C mode and configures the DIR1/0, CTL1/0 and FLIP settings as Source Side "4 Channel Custom Alt Mode - No Flip":  DIR1 = H, DIR0 = L, CTL1 = H, CTL0 = L, FLIP = L. 

We have all upstream pins connected to an FPGA, and all downstream connected to an external connector where we wrap back the lanes further down a cable for performance testing.

Our register settings are:

0x0A = 0x12

0x0B = 0x00

0x0C = 0x52

0x10 = 0x80

0x11 = 0x80

0x13 = 0x00 

0x20 = 0x0D

0x21 = 0x0D

But, this does not perform as expected, no data received on our wrapback test, the only way we can get the redriver to function correctly is if we set register 0x0A to 0x13 which the datasheet states it sets the device in "One Port USB3.1 + 2 Channel Custom Alt - Mode".

Is there anything I am missing to set the device correctly in 2 lane custom mode?

Also I have checked the register value against datasheet statement: "In I2C mode, the operation of this mode requires setting AUX_SNOOP_DISABLE register 13h bit 7 to 0" and it is set to 0.

Thanks

Gary

  • Gary

    Does the lane ordering matter in your application? Is LN0/LN1 one pair and LN2/LN3 the second pair? If LN0/LN1 is independent from LN2/LN3, can you please set to two lane customer alt mode with flip (HLHHH)?

    Thanks
    David
  • David,

    The lanes are independant between LN0/LN1 and LN2/LN3. In fact, for our testing, we connect DTX2 to DRX1 and DTX1 to DRX2 to wrap back the signals.

    As stated I have tried HLHHL and this works, by setting register 0x0A to 0x13, I cannot see why changing FLIP would be appropriate as our source is connected to the upstream pins, and connector to downstream.

    My question is why does HLHLL not work at all for our configuration?

    Regards
    Gary
  • Gary

    For HLHHL, do you have DTX1 wrap back to DRX1? For HLHLL, can you repeat the same thing, DTX1 wrap back to DRX1, and DTX2 wrap back to DRX2?

    Thanks
    David
  • David,

    As stated above: for our testing, we connect DTX2 to DRX1 and DTX1 to DRX2 to wrap back the signals. There is no easy method for us to change this setup.

    Is this going to be a problem?

    Regards

    Gary

  • Gary

    By proposing wrap DTX1 back to DRX1, I was trying to separating the issue between USB and Custom mode.

    When configuring HLHHL, and with DTX2 wrap back to DRX1, and DTX1 wrap back to DRX2, can you please probe the output of URX2 and URX1 and see if there are data on them? I want to make sure the direction is correct in the configuration and whether the issue is no data or data corruption.

    Thanks
    David
  • Hi David,

    When setup in HLHHL I can see data on URX2 and URX1, the eye looks good and IBERT testing reports there are no errors.

    When configured as HLHLL, and in wrap back,  I have probed URX1 and URX2 and there is nothing on those pin: stuck low

    Also, when configured as HLHLL. we drove Gbs into DRX2, UTX2, UTX1, DRX1 and saw zero output on URX2, DTX2, DTX1 and URX1

    Regards

    Gary

  • Gary

    Are you AC or DC coupled the input and output of TUSB544?

    'Also, when configured as HLHLL. we drove Gbs into DRX2, UTX2, UTX1, DRX1 and saw zero output on URX2, DTX2, DTX1 and URX1', can you please repeat the same experiment for configuration of HLHHL?

    Thanks
    David
  • David,

    All inputs and outputs are AC coupled, 100nF.

    The same experiment was repeated for configuration HLHHL and worked as expected

    Regards

    Gary

  • Gary

    Can you please change URX1 to be driving and UTX1 to be receiving?

    Thanks
    David
  • David,

    That is not possible for our design, we have URX1 directly connected to receiver only pins of a device, and same fixed tx function for the UTX connection

    Regards

    Gary

  • Gary

    Last four bits of register 0x0Bh offers individual channel direction swap. If they are set to 1, are you seeing anything on the output when driving data on the input side?

    Thanks
    David
  • David,

    With the register settings: 0x0A = 0x12, 0x0C = 0x52, 0x10 = 0x80, 0x11 = 0x80, 0x13 = 0x00, 0x20 = 0x0D, 0x21 = 0x0D

    Then changing 0x0B = 0x00 ->0x08, to change RX1 direction, does not make any difference when we measure the signal on our expected output side of the redriver: no signal is coming out.

    We did also try swapping rest of the channels changing, 0x0B -> 0x0F, and this also made no difference to the other channels. No signals are getting through the device.

    Also note that in the working setup of 0x0A = 0x12, 0x0B = 0x00, 0x0C = 0x52, 0x10 = 0x80, 0x11 = 0x80, 0x13 = 0x00, 0x20 = 0x0D, 0x21 = 0x0D;

    I changed 0x0B to 0x0F, which stopped our link from working, as expected, but when we put the value of 0x0B back to 0x00 the link did not recover, data was being sent to the redriver but there was no longer any signal being driven out?? Not sure why this is the case and the only way to recover is to power cycle the device. We did try reseting all registers by setting the I2C_RST bit in 0x1B but this did not help to recover the device.

    Regards

    Gary

  • Gary

    I check this in the lab and verified all four lane paths work when 0x0A = 0x12 and 0x13, and 0x0C = 0x02.

    Would you please make sure

    HPDIN = H
    SLP_SO# = H, you may want to toggle L as well
    I2C_EN = H

    Thanks
    David
  • David,

    Setting HPDIN = H fixed the issue, it was not pulled high on our design, I didn't change set HPDIN high on the board but sent the command to override this , bit 3 of 0x0A to 1.

    So now my settings, which work are:

    0x0A = 0x1A, 0x0B = 0x00, 0x0C = 0x52, 0x10 = 0x80, 0x11 = 0x80, 0x13 = 0x00, 0x20 = 0x0D, 0x21 = 0x0D

    I cannot see anywhere in the datasheets to set this high when using custom mode, only if setting the device up in displayport mode.

    Thanks!

    Gary