From: Jongpil Jung <jongpil19.jung@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> To backup current config, we can store current config into nvram. Change-Id: Ibea246526a9e586d89e226cfb058d40829fb2a42 --- drivers/input/touchscreen/atmel_mxt_ts.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c index cabe746607fc..cb3a608f60bf 100644 --- a/drivers/input/touchscreen/atmel_mxt_ts.c +++ b/drivers/input/touchscreen/atmel_mxt_ts.c @@ -2679,6 +2679,23 @@ static int mxt_configure_objects(struct mxt_data *data, return 0; } +static ssize_t mxt_backupnv_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct mxt_data *data = dev_get_drvdata(dev); + int ret; + + /* Backup non-volatile memory */ + ret = mxt_write_object(data, MXT_GEN_COMMAND_T6, + MXT_COMMAND_BACKUPNV, MXT_BACKUP_VALUE); + if (ret) + return ret; + msleep(MXT_BACKUP_TIME); + + return count; +} + static ssize_t mxt_calibrate_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) @@ -2953,6 +2970,7 @@ static ssize_t mxt_update_fw_store(struct device *dev, return count; } +static DEVICE_ATTR(backupnv, S_IWUSR, NULL, mxt_backupnv_store); static DEVICE_ATTR(calibrate, S_IWUSR, NULL, mxt_calibrate_store); static DEVICE_ATTR(config_csum, S_IRUGO, mxt_config_csum_show, NULL); static DEVICE_ATTR(fw_version, S_IRUGO, mxt_fw_version_show, NULL); @@ -2962,6 +2980,7 @@ static DEVICE_ATTR(object, S_IRUGO, mxt_object_show, NULL); static DEVICE_ATTR(update_fw, S_IWUSR, NULL, mxt_update_fw_store); static struct attribute *mxt_attrs[] = { + &dev_attr_backupnv.attr, &dev_attr_calibrate.attr, &dev_attr_config_csum.attr, &dev_attr_fw_version.attr, -- 2.17.1