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.

TUSB422: After PD-negotiation Windows OS does not load any Driver

Part Number: TUSB422
Other Parts Discussed in Thread: TUSB1064

We have used the TUSB422 chip for the power delivery protocol in our board.
The TUSB422 has been driven by a microcontroller in order to perform the power delivery protocol.
We have used a USB-c-PD sniffer in order to verify that the exchange has been completed successfully.

Unfortunately Windows Device Manager shows a warning after few seconds.
It says:
Property -> status -> 01802400 (DN_HAS_PROBLEM)
Property -> power data -> current state D3

I think there is something wrong in that, do you have any suggestions?

  • support for this device may slow, but will try our best
  •  Hi,

    let me explain you our current board architecture.

    We have designed a daughter board using TI components mainly: USB-C (receptacle connector) + TUSB422 + TUSB1064.

    We are using the same code you provide in the TUSB422 webpage.

    We are able to get the USB 2 and USB 3 interface.

    We have tested the Display Port only and we was able to get image on a monitor with a warning on the OS side (no driver loaded).

    When we combine both features (USB and PD) we send the following configurations, but the OS shows the attached warning message and does not allow Alternate Mode to work properly.

    --------------------------------

    TUSB422 configuration:

    --------------------------------

    #define PORT0  0
    #define PDO1   0
    #define PDO2   1

    #define USB_VID 0x0451
    #define USB_PID 0x0422
    #define USB_BCD_DEVICE 0x0
    #define USB_CERT_STAT_VDO USB_VID

    const tcpc_config_t typec_config[NUM_TCPC_DEVICES] =
    {
        [PORT0].intf = SMBUS_MASTER0,
        [PORT0].slave_addr = (TUSB422_SLAVE_ADDR_NC),
        [PORT0].flags = 0,
        [PORT0].role = ROLE_SNK,
        [PORT0].rp_val = RP_HIGH_CURRENT,
    };

    const usb_pd_port_config_t pd_config[NUM_TCPC_DEVICES] =
    {
        [PORT0].usb_comm_capable = true,
        [PORT0].no_usb_suspend = true,
        [PORT0].usb_suspend_supported = false,
        [PORT0].externally_powered = false,
        [PORT0].dual_role_data = false,
        [PORT0].unchunked_msg_support = false, /* Always false for TUSB422 */

        [PORT0].num_src_pdos = 0,

        [PORT0].num_snk_pdos = 1,
        [PORT0].snk_caps[PDO1].SupplyType = SUPPLY_TYPE_FIXED,
        [PORT0].snk_caps[PDO1].MinV = PDO_VOLT(5000),
        [PORT0].snk_caps[PDO1].MaxV = 0, /* N/A */
        [PORT0].snk_caps[PDO1].MaxOperatingCurrent = PDO_CURR(3000),
        [PORT0].snk_caps[PDO1].MinOperatingCurrent = PDO_CURR(2500),
        [PORT0].snk_caps[PDO1].OperationalCurrent = PDO_CURR(3000),
        [PORT0].snk_caps[PDO1].MaxOperatingPower = 0, /* N/A */
        [PORT0].snk_caps[PDO1].MinOperatingPower = 0, /* N/A */
        [PORT0].snk_caps[PDO1].OperationalPower = 0,  /* N/A */

        [PORT0].higher_capability = false,
        [PORT0].giveback_flag = false,
        [PORT0].no_usb_suspend = true,
        [PORT0].fast_role_swap_support = FR_SWAP_NOT_SUPPORTED,
        [PORT0].pdo_priority = PRIORITY_VOLTAGE,

        [PORT0].auto_accept_swap_to_dfp = false,
        [PORT0].auto_accept_swap_to_ufp = false,
        [PORT0].auto_accept_swap_to_source = false,
        [PORT0].auto_accept_swap_to_sink = false,
        [PORT0].auto_accept_vconn_swap = false,

        [PORT0].multi_function_preferred = true,
        [PORT0].ufp_alt_mode_entry_timeout_enable = false,
        [PORT0].id_header_vdo = (0xEC000000 + USB_VID),
        [PORT0].cert_stat_vdo = USB_CERT_STAT_VDO,
        [PORT0].product_vdo = ((uint32_t)USB_PID << 16) | USB_BCD_DEVICE,

        [PORT0].num_product_type_vdos = 1,
        [PORT0].product_type_vdos[0] = 0x000A,
        [PORT0].product_type_vdos[1] = 0,
        [PORT0].product_type_vdos[2] = 0,
        [PORT0].num_svids = 2,
        [PORT0].svids[0] = 0xFF01,
        [PORT0].svids[1] = USB_VID,
        [PORT0].svids[2] = 0,

        [PORT0].modes[0] = 0x080045,
        [PORT0].modes[1] = 0x0,
        [PORT0].modes[2] = 0,
    };

    --------------------------------

    TUSB1064 configuration:

    --------------------------------

    Address, value

    0x0a, 0x13
    0x10, 0x00 (different equalization values have been tested too)
    0x11, 0x00 (different equalization values have been tested too)
    0x13, 0x00
    0x20, 0x66
    0x21, 0x08
    0x22, 0x04

    Do you have any suggestion or any tested configuration for Alternate Mode?

    Best regards

    Fabrizio

  • Do you have any news for me, today?

  • pls patient, we are looking at it.
  • thanks for your effort, please let me know any news about that

  • since PD is working and there are no windows drivers to load for 422 . Probably something with USB data muxing or role