CCG4 CYPD4236, Soft reset behavior after PR_SWAP

Announcements

Live Webinar: USB-C adoption. Simple & Cost-efficient solutions | April 18th @9am or 5pm CEST. Register now !

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
MaLi_3529141
Level 3
Level 3
25 replies posted 25 sign-ins 10 replies posted

Dear,

I encountered some problems when making HUB project using CYPD4236 of CCG4.

After my PR_SWAP, a soft reset message appeared.

TypeC2+FDC55_Charge.PNG

Compared with the commercially available HUB, the message is as shown below.

J5+FDC55.PNG

When I encounter this problem, how can I modify it?

Thanks.

0 Likes
1 Solution

Hi ,

1. From the CC log, it cannot be identified. The way to identify it which is add a debug into the CCGx firmware to confirm whether CCGx have been sent soft reset or not.

2. Kindly refer below contents for add cable discovery function:

a. Add VCONN circuits into CCGx design.

b. Enable cable discovery with EZ-PD configuration and update config.c in the firmware project.

c. Add VCONN control functions into the project and register them into Application callback functions for the DPM.

  (1)Add two pins named VCONN_CC1 and VCONN_CC2 into TopDesign.cysch for VCONN support.

(2)VCONN control functions are as follows:

#define VCONN_SUPPORT_ENABLE    (1)

#if VCONN_SUPPORT_ENABLE

#define VCONN_SWITCH_ON_VALUE  (0)

#define VCONN_SWITCH_OFF_VALUE (1)

void pb_vconn_enable(uint8_t port, uint8_t channel)

{

    if (channel == CC_CHANNEL_1)

    {

        VCONN_CC1_Write(VCONN_SWITCH_ON_VALUE);

    }

    else

    {

        VCONN_CC2_Write(VCONN_SWITCH_ON_VALUE);

    }

    /* Reset RX Protocol for cable */

    dpm_prot_reset_rx(port, SOP_PRIME);

    dpm_prot_reset_rx(port, SOP_DPRIME);

}

void pb_vconn_disable(uint8_t port, uint8_t channel)

{

    if (channel == CC_CHANNEL_1)

    {

        VCONN_CC1_Write(VCONN_SWITCH_OFF_VALUE);

    }

    else

    {

        VCONN_CC2_Write(VCONN_SWITCH_OFF_VALUE);

    }

}

bool pb_vconn_is_present(uint8_t port)

{

    bool state;

   

    if (dpm_get_info(port)->rev_pol == 0)

    {

        state = VCONN_CC1_Read();

    }

    else

    {

        state = VCONN_CC2_Read();

    }

   

    if (state == VCONN_SWITCH_ON_VALUE)

    {

        return true;

    }

    return false;

}

#endif /* VCONN_SUPPORT_ENABLE */

  (3). Register the updated functions into Application callback functions for the DPM.

Best Regards,

Lisa

View solution in original post

0 Likes
3 Replies
ShifangZ_26
Moderator
Moderator
Moderator
10 likes given 250 sign-ins 1000 replies posted

Hi ,

The soft reset is SOP_PRIME, which is for cable negotiation. It is no problem to have this message on CC line, it shall not block any negotiation between DFP and UFP.

If you need to clean those, please kindly add cable discovery and enable VCONN in your design.

Best Regards,

Lisa

0 Likes

Dear Lisa,

I have two questions:

1. Is this soft reset message sent by DFP or UFP?

2. In which paragraph in the example can I know that this message is sent and customize the behavior?

Thanks.

0 Likes

Hi ,

1. From the CC log, it cannot be identified. The way to identify it which is add a debug into the CCGx firmware to confirm whether CCGx have been sent soft reset or not.

2. Kindly refer below contents for add cable discovery function:

a. Add VCONN circuits into CCGx design.

b. Enable cable discovery with EZ-PD configuration and update config.c in the firmware project.

c. Add VCONN control functions into the project and register them into Application callback functions for the DPM.

  (1)Add two pins named VCONN_CC1 and VCONN_CC2 into TopDesign.cysch for VCONN support.

(2)VCONN control functions are as follows:

#define VCONN_SUPPORT_ENABLE    (1)

#if VCONN_SUPPORT_ENABLE

#define VCONN_SWITCH_ON_VALUE  (0)

#define VCONN_SWITCH_OFF_VALUE (1)

void pb_vconn_enable(uint8_t port, uint8_t channel)

{

    if (channel == CC_CHANNEL_1)

    {

        VCONN_CC1_Write(VCONN_SWITCH_ON_VALUE);

    }

    else

    {

        VCONN_CC2_Write(VCONN_SWITCH_ON_VALUE);

    }

    /* Reset RX Protocol for cable */

    dpm_prot_reset_rx(port, SOP_PRIME);

    dpm_prot_reset_rx(port, SOP_DPRIME);

}

void pb_vconn_disable(uint8_t port, uint8_t channel)

{

    if (channel == CC_CHANNEL_1)

    {

        VCONN_CC1_Write(VCONN_SWITCH_OFF_VALUE);

    }

    else

    {

        VCONN_CC2_Write(VCONN_SWITCH_OFF_VALUE);

    }

}

bool pb_vconn_is_present(uint8_t port)

{

    bool state;

   

    if (dpm_get_info(port)->rev_pol == 0)

    {

        state = VCONN_CC1_Read();

    }

    else

    {

        state = VCONN_CC2_Read();

    }

   

    if (state == VCONN_SWITCH_ON_VALUE)

    {

        return true;

    }

    return false;

}

#endif /* VCONN_SUPPORT_ENABLE */

  (3). Register the updated functions into Application callback functions for the DPM.

Best Regards,

Lisa

0 Likes