diff --git a/drivers/leds/flash/leds-qcom-spmi-flash.c b/drivers/leds/flash/leds-qcom-spmi-flash.c
index 385a3de7eddb289c0547ad3096244d89b1b90024..5819c010a073f042ec0d625c206e1eccf3366f65 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)