From 84b8365717590b63fde908f9a045b5499bb63f67 Mon Sep 17 00:00:00 2001 From: Jianwei Fan Date: Mon, 25 Nov 2024 15:38:06 +0800 Subject: [PATCH] media: i2c: rk628: fix debugfs "rk628" parent directory Signed-off-by: Jianwei Fan Change-Id: I57955e93c2441e62593c18e8aa5f538ad68f4ee9 --- drivers/media/i2c/rk628/rk628.c | 14 +++++++++++++- drivers/media/i2c/rk628/rk628.h | 1 + drivers/media/i2c/rk628/rk628_bt1120_v4l2.c | 2 +- drivers/media/i2c/rk628/rk628_csi_v4l2.c | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/media/i2c/rk628/rk628.c b/drivers/media/i2c/rk628/rk628.c index 95c97944adc1..db1e043608f2 100644 --- a/drivers/media/i2c/rk628/rk628.c +++ b/drivers/media/i2c/rk628/rk628.c @@ -488,7 +488,13 @@ static void rk628_dbg_en_node(struct rk628 *rk628) void rk628_debugfs_create(struct rk628 *rk628) { - rk628->debug_dir = debugfs_create_dir(dev_name(rk628->dev), debugfs_lookup("rk628", NULL)); + struct dentry *debugfs, *debugfs_tmp = debugfs_lookup("rk628", NULL); + + debugfs = debugfs_tmp; + if (!debugfs) + debugfs = debugfs_create_dir("rk628", NULL); + dput(debugfs_tmp); + rk628->debug_dir = debugfs_create_dir(dev_name(rk628->dev), debugfs); if (IS_ERR(rk628->debug_dir)) return; @@ -498,6 +504,12 @@ void rk628_debugfs_create(struct rk628 *rk628) } EXPORT_SYMBOL(rk628_debugfs_create); +void rk628_debugfs_remove(struct rk628 *rk628) +{ + debugfs_remove_recursive(rk628->debug_dir); +} +EXPORT_SYMBOL(rk628_debugfs_remove); + struct rk628 *rk628_i2c_register(struct i2c_client *client) { struct rk628 *rk628; diff --git a/drivers/media/i2c/rk628/rk628.h b/drivers/media/i2c/rk628/rk628.h index 77afcbb9f660..4cafbd1562b2 100644 --- a/drivers/media/i2c/rk628/rk628.h +++ b/drivers/media/i2c/rk628/rk628.h @@ -347,5 +347,6 @@ void rk628_post_process_en(struct rk628 *rk628, u64 *dst_pclk); void rk628_version_parse(struct rk628 *rk628); void rk628_debugfs_create(struct rk628 *rk628); +void rk628_debugfs_remove(struct rk628 *rk628); #endif diff --git a/drivers/media/i2c/rk628/rk628_bt1120_v4l2.c b/drivers/media/i2c/rk628/rk628_bt1120_v4l2.c index bc643379902d..d65aab33358f 100644 --- a/drivers/media/i2c/rk628/rk628_bt1120_v4l2.c +++ b/drivers/media/i2c/rk628/rk628_bt1120_v4l2.c @@ -2183,7 +2183,7 @@ static void rk628_bt1120_remove(struct i2c_client *client) { struct rk628_bt1120 *bt1120 = i2c_get_clientdata(client); - debugfs_remove_recursive(bt1120->rk628->debug_dir); + rk628_debugfs_remove(bt1120->rk628); if (!bt1120->hdmirx_irq) { del_timer_sync(&bt1120->timer); flush_work(&bt1120->work_i2c_poll); diff --git a/drivers/media/i2c/rk628/rk628_csi_v4l2.c b/drivers/media/i2c/rk628/rk628_csi_v4l2.c index d47f21c43898..cfe29aa72f5b 100644 --- a/drivers/media/i2c/rk628/rk628_csi_v4l2.c +++ b/drivers/media/i2c/rk628/rk628_csi_v4l2.c @@ -3774,7 +3774,7 @@ static int rk628_csi_remove(struct i2c_client *client) { struct rk628_csi *csi = i2c_get_clientdata(client); - debugfs_remove_recursive(csi->rk628->debug_dir); + rk628_debugfs_remove(csi->rk628); if (!csi->hdmirx_irq) { del_timer_sync(&csi->timer); flush_work(&csi->work_i2c_poll);