staging: typec: tcpm: explicit_contract is always established
PATCH 2/2 staging: typec: tcpm: explicit_contract is always established
While in SNK_READY state, the explicit_contract seems to be set to true irrespective of whether an explicit contract was established for the current connection. TCPM also seems to report the pwr_opmode as TYPEC_PWR_MODE_PD always once the port gets into SNK_READY state. This isn't completely true as port gets into the SNK_READY state for non-pd type-c ports as well.
This patch sets the explicit_contract flag only when the PS_READY message is received and the vbus has been detected by the port controller.
--- drivers/staging/typec/tcpm.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
drivers/staging/typec/tcpm.c +7 -4
@@ -1367,6 +1367,7 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port,tcpm_set_current_limit (port, port->current_limit, port->supply_voltage); + port->explicit_contract = true;tcpm_set_state (port,SNK_READY ,0 ); }else {/*
@@ -2458,10 +2459,11 @@ static void run_state_machine(struct tcpm_port *port)break ;case SNK_READY : port->try_snk_count =0 ; - port->explicit_contract = true; -typec_set_pwr_opmode (port->typec_port,TYPEC_PWR_MODE_PD ); - port->pwr_opmode =TYPEC_PWR_MODE_PD ; - +if (port->explicit_contract) { +typec_set_pwr_opmode (port->typec_port, +TYPEC_PWR_MODE_PD ); + port->pwr_opmode =TYPEC_PWR_MODE_PD ; + }tcpm_typec_connect (port);tcpm_check_send_discover (port);
@@ -2951,6 +2953,7 @@ static void _tcpm_pd_vbus_on(struct tcpm_port *port) port->vbus_present = true;switch (port->state) {case SNK_TRANSITION_SINK_VBUS : + port->explicit_contract = true;tcpm_set_state (port,SNK_READY ,0 );break ;case SNK_DISCOVERY :
Signature · 1 line
2.14.1.480.gb18f417b89-goog
Quoted 8 lines · Badhri Jagan Sridharan
While in
SNK_READYstate, theexplicit_contractseems to be set to true irrespective of whether an explicit contract was established for the current connection. TCPM also seems to report thepwr_opmodeasTYPEC_PWR_MODE_PDalways once the port gets intoSNK_READYstate. This isn't completely true as port gets into theSNK_READYstate for non-pd type-c ports as well.
Quoted 5 lines
This patch sets the
explicit_contractflag only when thePS_READYmessage is received and the vbus has been detected by the port controller.Signed-off-by Badhri Jagan Sridharan <[email protected]>
Quoted 41 lines
--- drivers/staging/typec/tcpm.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)drivers/staging/typec/tcpm.c +7
-4@@ -1367,6 +1367,7 @@ static void tcpm_pd_ctrl_request(struct tcpm_port *port,tcpm_set_current_limit (port, port->current_limit, port->supply_voltage); + port->explicit_contract = true;tcpm_set_state (port,SNK_READY ,0 ); }else {/* @@ -2458,10 +2459,11 @@ static void run_state_machine(struct tcpm_port *port)break ;case SNK_READY : port->try_snk_count =0 ; - port->explicit_contract = true; -typec_set_pwr_opmode (port->typec_port,TYPEC_PWR_MODE_PD ); - port->pwr_opmode =TYPEC_PWR_MODE_PD ; - +if (port->explicit_contract) { +typec_set_pwr_opmode (port->typec_port, +TYPEC_PWR_MODE_PD ); + port->pwr_opmode =TYPEC_PWR_MODE_PD ; + }tcpm_typec_connect (port);tcpm_check_send_discover (port);@@ -2951,6 +2953,7 @@ static void _tcpm_pd_vbus_on(struct tcpm_port *port) port->vbus_present = true;switch (port->state) {case SNK_TRANSITION_SINK_VBUS : + port->explicit_contract = true;tcpm_set_state (port,SNK_READY ,0 );break ;case SNK_DISCOVERY :
Greg Kroah-Hartman
maintainerQuoted 12 lines · Badhri Jagan Sridharan
While in
SNK_READYstate, theexplicit_contractseems to be set to true irrespective of whether an explicit contract was established for the current connection. TCPM also seems to report thepwr_opmodeasTYPEC_PWR_MODE_PDalways once the port gets intoSNK_READYstate. This isn't completely true as port gets into theSNK_READYstate for non-pd type-c ports as well.This patch sets the
explicit_contractflag only when thePS_READYmessage is received and the vbus has been detected by the port controller.
Quoted 5 lines
Signed-off-by Badhri Jagan Sridharan <[email protected]>Reviewed-by Guenter Roeck <[email protected]>--- drivers/staging/typec/tcpm.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
This patch doesn't apply to the tree now that Guenter's other patches are applied :(
Please rebase and resend.
thanks,
greg k-h
Greg,
Sure. Resending the patch based on
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
staging-testing branch.
Thanks,
Badhri
Quoted 27 lines · Greg Kroah-Hartman
Quoted 12 lines · Badhri Jagan Sridharan
While in
SNK_READYstate, theexplicit_contractseems to be set to true irrespective of whether an explicit contract was established for the current connection. TCPM also seems to report thepwr_opmodeasTYPEC_PWR_MODE_PDalways once the port gets intoSNK_READYstate. This isn't completely true as port gets into theSNK_READYstate for non-pd type-c ports as well.This patch sets the
explicit_contractflag only when thePS_READYmessage is received and the vbus has been detected by the port controller.Quoted 5 lines
Signed-off-by Badhri Jagan Sridharan <[email protected]>Reviewed-by Guenter Roeck <[email protected]>--- drivers/staging/typec/tcpm.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)This patch doesn't apply to the tree now that Guenter's other patches are applied :(
Please rebase and resend.
thanks,
greg k-h