Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 146971e6 authored by Hans de Goede's avatar Hans de Goede Committed by Greg Kroah-Hartman
Browse files

typec: tcpm: Correctly report power_supply current and voltage for non pd supply



Commit f2a8aa05 ("typec: tcpm: Represent source supply through
power_supply") moved the code to register a power_supply representing
the device supplying power to the type-C connector, from the fusb302
code to the generic tcpm code so that we have a psy reporting the
supply voltage and current for all tcpm devices.

This broke the reporting of current and voltage through the psy interface
when supplied by a a non pd supply (5V, current as reported by
get_current_limit). The cause of this breakage is port->supply_voltage
and port->current_limit not being set in that case.

This commit fixes this by setting port->supply_voltage and
port->current_limit from tcpm_set_current_limit().

This commit also removes setting supply_voltage and current_limit
from tcpm_reset_port() as that calls tcpm_set_current_limit(0, 0)
which now already sets these to 0.

Fixes: f2a8aa05 ("typec: tcpm: Represent source supply through...")
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
Reviewed-by: default avatarAdam Thomson <Adam.Thomson.Opensource@diasemi.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 74cb319b
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -725,6 +725,9 @@ static int tcpm_set_current_limit(struct tcpm_port *port, u32 max_ma, u32 mv)

	tcpm_log(port, "Setting voltage/current limit %u mV %u mA", mv, max_ma);

	port->supply_voltage = mv;
	port->current_limit = max_ma;

	if (port->tcpc->set_current_limit)
		ret = port->tcpc->set_current_limit(port->tcpc, max_ma, mv);

@@ -2595,8 +2598,6 @@ static void tcpm_reset_port(struct tcpm_port *port)
	tcpm_set_attached_state(port, false);
	port->try_src_count = 0;
	port->try_snk_count = 0;
	port->supply_voltage = 0;
	port->current_limit = 0;
	port->usb_type = POWER_SUPPLY_USB_TYPE_C;

	power_supply_changed(port->psy);