Disable PD Functionality and Enable BC1.2 Snk Functionality

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
PrRe_3492461
Level 4
Level 4
First like received 50 sign-ins 50 replies posted

Hello RajathB_01​/All,

I'm using ccg3pa for my application development.

I need control to Enable/Disable PD Functionality and BC1.2 functionality.

only need any one of the state machine to run at a given time.

Is there any library function available such that by using that function i need to Disable PD functionality of ccg3pa.

My exact requirement is to test BC1.2 functionality of any provider only DUT which has PD and BC1.2 functionality .

Thanks in Advance.

Regards,

Pranay.

0 Likes
1 Solution

Hi Pranay,

The  DPM APIs we use for disabling the PD state machine is actually also disabling some registers needed for the port to be enabled. Hence we don't see only the BC state machine running. Since this functionality has not been tested on our side and there are no code examples, could you kindly create a case on this? It will be easier to check the feasibility and see if we have suitable APIs for your requirement.

Best Regards,
Sananya

View solution in original post

0 Likes
6 Replies
Sananya_14
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello Pranay,

Please check dpm_disable() function in the CCGx Power SDK API Guide. Could you please elaborate on how you'll be switching between the two modes?

Best Regards,

Sananya

0 Likes

Hello SananyaM_56​,

Thanks for the response.

This dpm_disable() is not helping. Even though After initiating this API still PD contract still exists and Happens again if we disconnect and connect DUT again manually which is not expected, or is it expected ?? (am I correct here)

And Even after sending this API Is it expected that ccg3pa respond to all PD packets (like SrcCaps,Vconnswap etc..) ???

I even tried using app_disable_pd_port(uint8_t port, dpm_typec_cmd_cbk_t cbk);  //@file app.c , even this approach doesn't help.

Have you verified it from your side. If so can you please elaborate how did you verified in your end ?

I've a mechanism to send any a codeword(API) using I2C and handle requirement accordingly .

I will repeat my exact requirement ::

I want to disable PD Functionality of ccg3pa, i.e., If i connect a provider DUT which supports BC and PD both, only BC should be triggered.

Is there any API so that If i use that only BC12 state machine should run and PD should be disabled ?

Thanks and Regards,

Pranay.

0 Likes

Hello Pranay,

If you are disconnecting the DUT while switching to BC 1.2 functionality, please try using dpm_typec_command() to disable the port.This should ensure no PD negotiation takes place on the port, please refer to the section 6.3.7.2 in the User Guide for the usage.

I have tested this on my end but have not tried enabling BC 1.2 after that. You could refer to the bc_pd_event_handler(), bc_set_config() APIs for running the BC state machine on the port after enabling LEGACY_DYN_CFG_ENABLE macro.

Best Regards,

Sananya

0 Likes

Hi SananyaM_56​,

Thanks for the response.

After Enabling LEGACY_DYN_CFG_ENABLE Macro I've tried these sequences:

Seq1:

After Turning On CCg3PA, Before Connecting DUT Sent  dpm_typec_command(G_PORT0, DPM_CMD_PORT_DISABLE,NULL); to disable the port and than Connected the DUT.

--Vbus is Down and Unable to detect any BC1.2 state machine running (No DCP/CDP Detections).

Seq2:

After turning On CCG3PA,Connected the DUT after PDC sent dpm_typec_command(G_PORT0, DPM_CMD_PORT_DISABLE,NULL); Port went to detach state and read BC1.2 status .

-- Tried initiating  bc_init(BC_PORT_0_IDX) and  bc_start(BC_PORT_0_IDX, BC_PORT_SINK) after sending Disable Command.

--Still Vbus is down and No BC1.2 Detections.

My requirement is to only make ccg3pa acts as BC12 SNK

but structure chg_cfg_params_t used in bc_set_config() refers to BC source right?

Correct me if I'm wrong here.

And If I mask bc_pd_event_handler(), we're unable to detect any BC1.2 state machine(DCP/CDP/SDP) which is as per our requirement.

But Now controlling PD state machine not to run and enabling BC is the only concern.

Is there anything I could try to Enable only BC12 state machine to run when PD Provider(BC supported) only DUT is connected?

How would Test a Provider only DUTs BC1.2 Functionality and Draw e-load based on DUT type(CDP/SDP/DCP) if connected DUT supports both PD and BC1.2 ?

Regards,

Pranay.

0 Likes

Hi SananyaM_56​,

Any update on this thread so far ?

Expecting an early reply.

Thanks,

Pranay.

0 Likes

Hi Pranay,

The  DPM APIs we use for disabling the PD state machine is actually also disabling some registers needed for the port to be enabled. Hence we don't see only the BC state machine running. Since this functionality has not been tested on our side and there are no code examples, could you kindly create a case on this? It will be easier to check the feasibility and see if we have suitable APIs for your requirement.

Best Regards,
Sananya

0 Likes