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.

TUSB1044: Switch between GPIO and I2C Mode

Part Number: TUSB1044

Tool/software:

Hello,

I have a Type-C application where we support USB 3.0 Gen2 x 1 as well as 4-Lane DP Alt-mode input and output. I would like to use the TUSB1044 in I2C mode so that we have greater control over the equalization settings and signal directions. However, I2C is not available in the SOC bootloader mode to configure the redriver. The redriver is connected directly to the Type-C connector, and the default setting in I2C mode has a single Tx/Rx pair enabled. If the connector is flipped, then we won't be able to connect the USB3.0 signals in bootloader mode.

One solution is to boot the redriver in GPIO mode and either use the FLIP pin to configure which lanes are active or set it to a custom mode that enables all four lanes. Then once the SOC is booted, reset the redriver and bring-up in I2C mode. This is messy as it involves sending GPIOs to the FLIP pin which also doubles as the I2C_SCL. It also requires resetting the redriver which could disrupt any existing link negotiation.

1) Are there any better alternatives to support this use-case? This includes a different operating mode or a different redriver IC

2) Is the only way to transition between GPIO and I2C mode to power-cycle the redriver?

Thanks,

Ryan

  • Hi Ryan,

    I'm having a look.

  • Can you send a block diagram for your system? Is the 1044 used in a DisplayPort source or sink application?

  • Unfortunately, we dont have any part that can easily swap between GPIO mode and I2C mode. The possible solution you have laid out seems to to be the best way to handle it. 

    1) Are there any better alternatives to support this use-case? This includes a different operating mode or a different redriver IC

    No, we dont have any parts to support tis use case

    2) Is the only way to transition between GPIO and I2C mode to power-cycle the redriver?

    Yes

    Why does the SoC not have I2C enabled? What triggers the I2C to start?

  • The end product can be a DisplayPort source or sink as alternate modes, or USB 3.0 Gen2 x 1. I think this issue I brought up exists even if we didn't support alternate modes.

    The SOC eventually has I2C, but it is not available in the bootloader mode. Once the SOC is flashed and booted, we can control the redriver via I2C. The problem I see is that only one of the redriver USB Tx/Rx pairs is active by default, so if the connector is flipped, we won't have USB3 access. I can use a GPIO to toggle the redriver in bootloader mode which fixes the initial issue, but then we don't have a way to enable the finer I2C control.

  • Hi Ryan,

    How many GPIO pins do you have available?

    You may be able to use a switch on the VCC lines to power cycle the part after I2C is enables on the SoC.

    This mean you will need GPIO control of the I2C_EN pin, the VCC bus (triggering a switch to pulse power), and the FLIP/SCL pin control. Other than this option you may need to use another SoC or another redriver.

  • That is our current plan (using the switch on the VCC lines). I just wanted to double check to see if there was any other way to handle our scenario. Thank you for help!