From 26ea22923e15869db4e7a1bddd7f85f23307cad5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcolas=20F=2E=20R=2E=20A=2E=20Prado?= <nfraprado@collabora.com> Date: Thu, 17 Jun 2021 12:08:00 -0300 Subject: [PATCH] HACK: Add spmi registers write through debugfs Format is 'address,mask,value', all in hex. It uses the same file as the read. --- drivers/leds/flash/leds-qcom-spmi-flash.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/leds/flash/leds-qcom-spmi-flash.c b/drivers/leds/flash/leds-qcom-spmi-flash.c index 385a3de7eddb2..5819c010a073f 100644 --- a/drivers/leds/flash/leds-qcom-spmi-flash.c +++ b/drivers/leds/flash/leds-qcom-spmi-flash.c @@ -271,9 +271,30 @@ ssize_t debugfs_spmi_regs_read(struct file *file, char __user *buf, size_t size, return simple_read_from_buffer(buf, size, ppos, my_buf, total); } +ssize_t debugfs_spmi_regs_write(struct file *file, const char __user *buf, + size_t size, loff_t *ppos) +{ + const int SIZE = 20; + char my_buf[SIZE]; + ssize_t len = simple_write_to_buffer(my_buf, PAGE_SIZE, ppos, buf, size); + unsigned int addr, mask, val; + int rc; + + rc = sscanf(my_buf, "%x,%x,%x", &addr, &mask, &val); + if (rc < 3) + return -EINVAL; + + mutex_lock(&debugfs_leds_dev->lock); + qcom_flash_masked_write(debugfs_leds_dev, addr, mask, val); + mutex_unlock(&debugfs_leds_dev->lock); + + return len; +} + static struct dentry *debugfs_dir; const struct file_operations debugfs_spmi_regs_fops = { .read = debugfs_spmi_regs_read, + .write = debugfs_spmi_regs_write, }; static u8 qcom_flash_duration_to_reg(u32 us) -- GitLab