mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 14:19:09 -04:00
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:
parent
2b68f15142
commit
5c5deaac86
1 changed files with 60 additions and 0 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue