]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Input: edt-ft5x06 - use per-client debugfs directory
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Tue, 1 Jul 2025 18:40:06 +0000 (11:40 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 1 Jul 2025 18:42:14 +0000 (11:42 -0700)
The I2C core now provides a debugfs entry for each client. Let this
driver use it instead of the custom directory in debugfs root. Further
improvements by this change: support of multiple instances.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Link: https://lore.kernel.org/r/20250318091904.22468-1-wsa+renesas@sang-engineering.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Documentation/input/devices/edt-ft5x06.rst
drivers/input/touchscreen/edt-ft5x06.c

index 1ccc94b192b7edacd8a42ff81de923b4a35a27e7..e410d73d4841e8b6a91386fcaf7742f222c531c1 100644 (file)
@@ -29,8 +29,25 @@ The driver allows configuration of the touch screen via a set of sysfs files:
 
 
 For debugging purposes the driver provides a few files in the debug
-filesystem (if available in the kernel). In /sys/kernel/debug/edt_ft5x06
-you'll find the following files:
+filesystem (if available in the kernel). They are located in:
+
+    /sys/kernel/debug/i2c/<i2c-bus>/<i2c-device>/
+
+If you don't know the bus and device numbers, you can look them up with this
+command:
+
+    $ ls -l /sys/bus/i2c/drivers/edt_ft5x06
+
+The dereference of the symlink will contain the needed information. You will
+need the last two elements of its path:
+
+    0-0038 -> ../../../../devices/platform/soc/fcfee800.i2c/i2c-0/0-0038
+
+So in this case, the location for the debug files is:
+
+    /sys/kernel/debug/i2c/i2c-0/0-0038/
+
+There, you'll find the following files:
 
 num_x, num_y:
     (readonly) contains the number of sensor fields in X- and
index 0d7bf18e25087ca9a215bf3da1f38bf28800f07b..abc5bbb5c8c9c53859c094e8e6153d0a5f22ad22 100644 (file)
@@ -120,7 +120,6 @@ struct edt_ft5x06_ts_data {
        struct regmap *regmap;
 
 #if defined(CONFIG_DEBUG_FS)
-       struct dentry *debug_dir;
        u8 *raw_buffer;
        size_t raw_bufsize;
 #endif
@@ -815,23 +814,21 @@ static const struct file_operations debugfs_raw_data_fops = {
        .read = edt_ft5x06_debugfs_raw_data_read,
 };
 
-static void edt_ft5x06_ts_prepare_debugfs(struct edt_ft5x06_ts_data *tsdata,
-                                         const char *debugfs_name)
+static void edt_ft5x06_ts_prepare_debugfs(struct edt_ft5x06_ts_data *tsdata)
 {
-       tsdata->debug_dir = debugfs_create_dir(debugfs_name, NULL);
+       struct dentry *debug_dir = tsdata->client->debugfs;
 
-       debugfs_create_u16("num_x", S_IRUSR, tsdata->debug_dir, &tsdata->num_x);
-       debugfs_create_u16("num_y", S_IRUSR, tsdata->debug_dir, &tsdata->num_y);
+       debugfs_create_u16("num_x", S_IRUSR, debug_dir, &tsdata->num_x);
+       debugfs_create_u16("num_y", S_IRUSR, debug_dir, &tsdata->num_y);
 
        debugfs_create_file("mode", S_IRUSR | S_IWUSR,
-                           tsdata->debug_dir, tsdata, &debugfs_mode_fops);
+                           debug_dir, tsdata, &debugfs_mode_fops);
        debugfs_create_file("raw_data", S_IRUSR,
-                           tsdata->debug_dir, tsdata, &debugfs_raw_data_fops);
+                           debug_dir, tsdata, &debugfs_raw_data_fops);
 }
 
 static void edt_ft5x06_ts_teardown_debugfs(struct edt_ft5x06_ts_data *tsdata)
 {
-       debugfs_remove_recursive(tsdata->debug_dir);
        kfree(tsdata->raw_buffer);
 }
 
@@ -842,8 +839,7 @@ static int edt_ft5x06_factory_mode(struct edt_ft5x06_ts_data *tsdata)
        return -ENOSYS;
 }
 
-static void edt_ft5x06_ts_prepare_debugfs(struct edt_ft5x06_ts_data *tsdata,
-                                         const char *debugfs_name)
+static void edt_ft5x06_ts_prepare_debugfs(struct edt_ft5x06_ts_data *tsdata)
 {
 }
 
@@ -1349,7 +1345,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client)
        if (error)
                return error;
 
-       edt_ft5x06_ts_prepare_debugfs(tsdata, dev_driver_string(&client->dev));
+       edt_ft5x06_ts_prepare_debugfs(tsdata);
 
        dev_dbg(&client->dev,
                "EDT FT5x06 initialized: IRQ %d, WAKE pin %d, Reset pin %d.\n",