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);