summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Reichel <sebastian.reichel@collabora.com>2022-11-20 22:09:22 +0300
committerSebastian Reichel <sebastian.reichel@collabora.com>2022-11-20 22:09:22 +0300
commit2f88b7050d6721cdb0771beec2dc85ab4c17c2eb (patch)
treed2d7635a1215feec621882a503de0ec486c0e0e4
parent332d7d0c6dd7db50109d304802e0d1a9d086188f (diff)
parent662233731d66cf41e7494e532e702849c8ce18f3 (diff)
downloadlinux-2f88b7050d6721cdb0771beec2dc85ab4c17c2eb.tar.xz
Merge 'i2c/client_device_id_helper-immutable'
Merge immutable branch adding 'i2c_client_get_device_id()' function, so that drivers can easily be converted to use i2c_driver::probe_new. Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
-rw-r--r--drivers/i2c/i2c-core-base.c14
-rw-r--r--include/linux/i2c.h1
2 files changed, 15 insertions, 0 deletions
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index b4edf10e8fd0..9aa7b9d9a485 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -2236,6 +2236,20 @@ int i2c_get_device_id(const struct i2c_client *client,
}
EXPORT_SYMBOL_GPL(i2c_get_device_id);
+/**
+ * i2c_client_get_device_id - get the driver match table entry of a device
+ * @client: the device to query. The device must be bound to a driver
+ *
+ * Returns a pointer to the matching entry if found, NULL otherwise.
+ */
+const struct i2c_device_id *i2c_client_get_device_id(const struct i2c_client *client)
+{
+ const struct i2c_driver *drv = to_i2c_driver(client->dev.driver);
+
+ return i2c_match_id(drv->id_table, client);
+}
+EXPORT_SYMBOL_GPL(i2c_client_get_device_id);
+
/* ----------------------------------------------------
* the i2c address scanning function
* Will not work for 10-bit addresses!
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index f7c49bbdb8a1..d84e0e99f084 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -189,6 +189,7 @@ s32 i2c_smbus_read_i2c_block_data_or_emulated(const struct i2c_client *client,
u8 *values);
int i2c_get_device_id(const struct i2c_client *client,
struct i2c_device_identity *id);
+const struct i2c_device_id *i2c_client_get_device_id(const struct i2c_client *client);
#endif /* I2C */
/**