Skip to content

Commit

Permalink
i2c: Make I2C ID tables non-mandatory for DT'ed devices
Browse files Browse the repository at this point in the history
Currently the I2C framework insists on devices supplying an I2C ID
table.  Many of the devices which do so unnecessarily adding quite a
few wasted lines to kernel code.  This patch allows drivers a means
to 'not' supply the aforementioned table and match on DT match tables
instead.

Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Tested-by: Kieran Bingham <kieran@bingham.xyz>
Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
Tested-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Kieran Bingham <kieran@bingham.xyz>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
  • Loading branch information
Lee Jones authored and Wolfram Sang committed Nov 17, 2016
1 parent 298d4de commit da10c06
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions drivers/i2c/i2c-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -697,7 +697,7 @@ static int i2c_device_match(struct device *dev, struct device_driver *drv)


/* Attempt an OF style match */
if (of_driver_match_device(dev, drv))
if (i2c_of_match_device(drv->of_match_table, client))
return 1;

/* Then ACPI style match */
Expand Down Expand Up @@ -923,7 +923,15 @@ static int i2c_device_probe(struct device *dev)
}

driver = to_i2c_driver(dev->driver);
if (!driver->probe || !driver->id_table)
if (!driver->probe)
return -EINVAL;

/*
* An I2C ID table is not mandatory, if and only if, a suitable Device
* Tree match table entry is supplied for the probing device.
*/
if (!driver->id_table &&
!i2c_of_match_device(dev->driver->of_match_table, client))
return -ENODEV;

if (client->flags & I2C_CLIENT_WAKE) {
Expand Down

0 comments on commit da10c06

Please sign in to comment.