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

Commit b8636f58 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "power: qpnp-smblite: Update USB-type based on charger type"

parents 6c2dbc41 73920348
Loading
Loading
Loading
Loading
+25 −1
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@
#include "smblite-lib.h"
#include "schgm-flashlite.h"

static struct power_supply_desc usb_psy_desc;

static struct smb_params smblite_params = {
	.fcc			= {
		.name   = "fast charge current",
@@ -382,6 +384,8 @@ static enum power_supply_property smblite_usb_props[] = {
	POWER_SUPPLY_PROP_REAL_TYPE,
	POWER_SUPPLY_PROP_CONNECTOR_TYPE,
	POWER_SUPPLY_PROP_SCOPE,
	POWER_SUPPLY_PROP_CURRENT_MAX,
	POWER_SUPPLY_PROP_VOLTAGE_MAX,
};

static int smblite_usb_get_prop(struct power_supply *psy,
@@ -433,6 +437,12 @@ static int smblite_usb_get_prop(struct power_supply *psy,
	case POWER_SUPPLY_PROP_SCOPE:
		rc = smblite_lib_get_prop_scope(chg, val);
		break;
	case POWER_SUPPLY_PROP_CURRENT_MAX:
		val->intval = get_effective_result_locked(chg->usb_icl_votable);
		break;
	case POWER_SUPPLY_PROP_VOLTAGE_MAX:
		val->intval = 5000000;
		break;
	default:
		pr_err("get prop %d is not supported in usb\n", psp);
		rc = -EINVAL;
@@ -447,6 +457,20 @@ static int smblite_usb_get_prop(struct power_supply *psy,
	return 0;
}

void smblite_update_usb_desc(struct smb_charger *chg)
{
	switch (chg->real_charger_type) {
	case POWER_SUPPLY_TYPE_USB_CDP:
	case POWER_SUPPLY_TYPE_USB_DCP:
	case POWER_SUPPLY_TYPE_USB:
		usb_psy_desc.type = chg->real_charger_type;
		break;
	default:
		usb_psy_desc.type = POWER_SUPPLY_TYPE_USB;
		break;
	}
}

#define MIN_THERMAL_VOTE_UA	500000
static int smblite_usb_set_prop(struct power_supply *psy,
		enum power_supply_property psp,
@@ -486,7 +510,7 @@ static int smblite_usb_prop_is_writeable(struct power_supply *psy,
	return rc;
}

static const struct power_supply_desc usb_psy_desc = {
static struct power_supply_desc usb_psy_desc = {
	.name = "usb",
	.type = POWER_SUPPLY_TYPE_USB,
	.properties = smblite_usb_props,
+1 −0
Original line number Diff line number Diff line
@@ -378,6 +378,7 @@ static void smblite_lib_update_usb_type(struct smb_charger *chg,
					enum power_supply_type type)
{
	chg->real_charger_type = type;
	smblite_update_usb_desc(chg);
}

static int smblite_lib_notifier_call(struct notifier_block *nb,
+1 −1
Original line number Diff line number Diff line
@@ -470,7 +470,7 @@ int smblite_lib_get_irq_status(struct smb_charger *chg,
				union power_supply_propval *val);
int smblite_lib_set_prop_usb_type(struct smb_charger *chg,
				const union power_supply_propval *val);

void smblite_update_usb_desc(struct smb_charger *chg);
int smblite_lib_init(struct smb_charger *chg);
int smblite_lib_deinit(struct smb_charger *chg);
#endif /* __SMBLITE_LIB_H */