qti_glink_charger: Add sys node to pass TCMD to ADSP

Add TCMD sys node to deliver message to ADSP by glink
For example:
echo 1 > tcmd /*force turn on master switchedcap*/
echo 2 > tcmd /*force turn off master switchedcap*/

Change-Id: I4a530148f234d8af7d5a4c9a9af21865602f9217
Signed-off-by: xuwt2 <xuwt2@lenovo.com>
Reviewed-on: https://gerrit.mot.com/1920513
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Yonghua Yan <yanyh2@motorola.com>
Reviewed-by: Tao Sun <suntao2@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
xuwt2 2021-04-09 10:46:52 +08:00 • committed by Wentao Xu
commit 5c5deaac86

View file

@ -64,6 +64,7 @@ enum oem_property_type {
OEM_PROP_DEMO_MODE,
OEM_PROP_FACTORY_MODE,
OEM_PROP_FACTORY_VERSION,
OEM_PROP_TCMD,
OEM_PROP_MAX,
};
@ -667,6 +668,56 @@ static int qti_charger_write_profile(struct qti_charger *chg)
return rc;
}
static ssize_t tcmd_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t count)
{
unsigned long r;
unsigned long mode;
struct qti_charger *chg = dev_get_drvdata(dev);
if (!chg) {
pr_err("QTI: chip not valid\n");
return -ENODEV;
}
r = kstrtoul(buf, 0, &mode);
if (r) {
mmi_err(chg, "Invalid TCMD = %lu\n", mode);
return -EINVAL;
}
r = qti_charger_write(chg, OEM_PROP_TCMD,
&mode,
sizeof(mode));
return r ? r : count;
}
static ssize_t tcmd_show(struct device *dev,
struct device_attribute *attr,
char *buf)
{
int data;
struct qti_charger *chg = dev_get_drvdata(dev);
if (!chg) {
pr_err("QTI: chip not valid\n");
return -ENODEV;
}
qti_charger_read(chg, OEM_PROP_TCMD,
&data,
sizeof(int));
return scnprintf(buf, CHG_SHOW_MAX_SIZE, "%d\n", data);
}
static DEVICE_ATTR(tcmd, 0664,
tcmd_show,
tcmd_store);
static int qti_charger_init(struct qti_charger *chg)
{
int rc;
@ -730,6 +781,13 @@ static int qti_charger_init(struct qti_charger *chg)
mmi_info(chg, "qti charger init successfully\n");
}
rc = device_create_file(chg->dev,
&dev_attr_tcmd);
if (rc) {
mmi_err(chg,
"Couldn't create tcmd\n");
}
return 0;
}
@ -742,6 +800,8 @@ static void qti_charger_deinit(struct qti_charger *chg)
return;
}
device_remove_file(chg->dev, &dev_attr_tcmd);
/* unregister driver from mmi charger */
rc = mmi_unregister_charger_driver(chg->driver);
if (rc) {