From 7165391abb9ae81dbd3e569e289bd2a3fd7e3121 Mon Sep 17 00:00:00 2001 From: xuwt2 Date: Fri, 23 Aug 2019 17:40:17 +0800 Subject: [PATCH] mmi_pl_chrg: create some sysfs node for setting mmi_params factory_charge_upper factory_image_mode force_demo_mode force_max_chrg_temp Change-Id: I4e40acf9a628becMontana3ca70652659b0b0b459be1 Signed-off-by: xuwt2 Reviewed-on: https://gerrit.mot.com/1408893 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Haijian Ma Reviewed-by: Jianqi Yang Submit-Approved: Jira Key Reviewed-on: https://gerrit.mot.com/1893551 Reviewed-by: Xiangpo Zhao Reviewed-by: Wei Xu --- .../mmi_parallel_charger/mmi_charger_core.c | 136 ++++++++++++++++++ .../mmi_parallel_charger/mmi_charger_core.h | 7 + 2 files changed, 143 insertions(+) diff --git a/drivers/power/mmi_parallel_charger/mmi_charger_core.c b/drivers/power/mmi_parallel_charger/mmi_charger_core.c index d4c55630bfa1..3bb2f4165c92 100644 --- a/drivers/power/mmi_parallel_charger/mmi_charger_core.c +++ b/drivers/power/mmi_parallel_charger/mmi_charger_core.c @@ -760,6 +760,118 @@ end_rate_check: } +#define CHG_SHOW_MAX_SIZE 50 +static ssize_t factory_image_mode_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + unsigned long r; + unsigned long mode; + + r = kstrtoul(buf, 0, &mode); + if (r) { + pr_err("Invalid factory image mode value = %lu\n", mode); + return -EINVAL; + } + + mmi_set_factory_image_mode(mode); + + return r ? r : count; +} + +static ssize_t factory_image_mode_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + int state; + state = mmi_get_factory_image_mode() ? 1 : 0; + + return scnprintf(buf, CHG_SHOW_MAX_SIZE, "%d\n", state); +} + +static DEVICE_ATTR(factory_image_mode, 0644, + factory_image_mode_show, + factory_image_mode_store); + +static ssize_t factory_charge_upper_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + int state; + state = mmi_get_factory_charge_upper(); + + return scnprintf(buf, CHG_SHOW_MAX_SIZE, "%d\n", state); +} + +static DEVICE_ATTR(factory_charge_upper, 0444, + factory_charge_upper_show, + NULL); + +static ssize_t force_demo_mode_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + unsigned long r; + unsigned long mode; + + r = kstrtoul(buf, 0, &mode); + if (r) { + pr_err("Invalid demo mode value = %lu\n", mode); + return -EINVAL; + } + + mmi_set_demo_mode(mode); + + return r ? r : count; +} + +static ssize_t force_demo_mode_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + int state; + + state = mmi_get_demo_mode(); + + return scnprintf(buf, CHG_SHOW_MAX_SIZE, "%d\n", state); +} + +static DEVICE_ATTR(force_demo_mode, 0644, + force_demo_mode_show, + force_demo_mode_store); + +static ssize_t force_max_chrg_temp_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + unsigned long r; + unsigned long mode; + + r = kstrtoul(buf, 0, &mode); + if (r) { + pr_err("Invalid max temp value = %lu\n", mode); + return -EINVAL; + } + + mmi_set_max_chrg_temp(mode); + + return r ? r : count; +} + +static ssize_t force_max_chrg_temp_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + int state; + state = mmi_get_max_chrg_temp(); + + return scnprintf(buf, CHG_SHOW_MAX_SIZE, "%d\n", state); +} + +static DEVICE_ATTR(force_max_chrg_temp, 0644, + force_max_chrg_temp_show, + force_max_chrg_temp_store); + static void kick_sm(struct mmi_charger_manager *chip, int ms) { if (!delayed_work_pending(&chip->mmi_chrg_sm_work)) { @@ -1378,6 +1490,30 @@ static int mmi_chrg_manager_probe(struct platform_device *pdev) mmi_chrg_err(chip, "Batt psy register failed\n"); goto cleanup; } + + ret = device_create_file(chip->dev, + &dev_attr_factory_image_mode); + if (ret) { + mmi_chrg_err(chip, "couldn't create factory_image_mode\n"); + } + + ret = device_create_file(chip->dev, + &dev_attr_force_demo_mode); + if (ret) { + mmi_chrg_err(chip, "couldn't create force_demo_mode\n"); + } + + ret = device_create_file(chip->dev, + &dev_attr_force_max_chrg_temp); + if (ret) { + mmi_chrg_err(chip, "couldn't create force_max_chrg_temp\n"); + } + + ret = device_create_file(chip->dev, + &dev_attr_factory_charge_upper); + if (ret) + mmi_chrg_err(chip, "couldn't create factory_charge_upper\n"); + } else chip->batt_psy = power_supply_get_by_name("battery"); diff --git a/drivers/power/mmi_parallel_charger/mmi_charger_core.h b/drivers/power/mmi_parallel_charger/mmi_charger_core.h index 3c5c3a5a828d..3754d6a46cd6 100644 --- a/drivers/power/mmi_parallel_charger/mmi_charger_core.h +++ b/drivers/power/mmi_parallel_charger/mmi_charger_core.h @@ -225,4 +225,11 @@ extern void mmi_update_all_charger_status(struct mmi_charger_manager *chip); extern void mmi_update_all_charger_error(struct mmi_charger_manager *chip); extern void mmi_dump_charger_error(struct mmi_charger_manager *chip, struct mmi_charger_device *chrg_dev); +extern ssize_t mmi_get_factory_image_mode(void); +extern ssize_t mmi_set_factory_image_mode(int mode); +extern ssize_t mmi_get_factory_charge_upper(void); +extern ssize_t mmi_get_demo_mode(void); +extern ssize_t mmi_set_demo_mode(int mode); +extern ssize_t mmi_get_max_chrg_temp(void); +extern ssize_t mmi_set_max_chrg_temp(int value); #endif \ No newline at end of file