Skip to content

Commit a4b5e48

Browse files
committed
Merge tag 'i2c-for-6.14-rc1-take2' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
Pull i2c fixes from Wolfram Sang: - add a missing Kconfig dependency for imx-lpi2c - in the core, handle the new per-client debugfs directory during probe/remove, not during {un}register * tag 'i2c-for-6.14-rc1-take2' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: i2c: Fix core-managed per-client debugfs handling i2c: imx-lpi2c: select CONFIG_I2C_SLAVE
2 parents c06310f + 6250ebe commit a4b5e48

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

drivers/i2c/busses/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -756,6 +756,7 @@ config I2C_IMX
756756
config I2C_IMX_LPI2C
757757
tristate "IMX Low Power I2C interface"
758758
depends on ARCH_MXC || COMPILE_TEST
759+
select I2C_SLAVE
759760
help
760761
Say Y here if you want to use the Low Power IIC bus controller
761762
on the Freescale i.MX processors.

drivers/i2c/i2c-core-base.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,9 @@ static int i2c_device_probe(struct device *dev)
583583
goto err_detach_pm_domain;
584584
}
585585

586+
client->debugfs = debugfs_create_dir(dev_name(&client->dev),
587+
client->adapter->debugfs);
588+
586589
if (driver->probe)
587590
status = driver->probe(client);
588591
else
@@ -602,6 +605,7 @@ static int i2c_device_probe(struct device *dev)
602605
return 0;
603606

604607
err_release_driver_resources:
608+
debugfs_remove_recursive(client->debugfs);
605609
devres_release_group(&client->dev, client->devres_group_id);
606610
err_detach_pm_domain:
607611
dev_pm_domain_detach(&client->dev, do_power_on);
@@ -627,6 +631,8 @@ static void i2c_device_remove(struct device *dev)
627631
driver->remove(client);
628632
}
629633

634+
debugfs_remove_recursive(client->debugfs);
635+
630636
devres_release_group(&client->dev, client->devres_group_id);
631637

632638
dev_pm_domain_detach(&client->dev, true);
@@ -1015,8 +1021,6 @@ i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *inf
10151021
if (status)
10161022
goto out_remove_swnode;
10171023

1018-
client->debugfs = debugfs_create_dir(dev_name(&client->dev), adap->debugfs);
1019-
10201024
dev_dbg(&adap->dev, "client [%s] registered with bus id %s\n",
10211025
client->name, dev_name(&client->dev));
10221026

@@ -1061,7 +1065,6 @@ void i2c_unregister_device(struct i2c_client *client)
10611065
if (ACPI_COMPANION(&client->dev))
10621066
acpi_device_clear_enumerated(ACPI_COMPANION(&client->dev));
10631067

1064-
debugfs_remove_recursive(client->debugfs);
10651068
device_remove_software_node(&client->dev);
10661069
device_unregister(&client->dev);
10671070
}

0 commit comments

Comments
 (0)