Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit da10c06a authored by Lee Jones's avatar Lee Jones Committed by Wolfram Sang
Browse files

i2c: Make I2C ID tables non-mandatory for DT'ed devices



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: default avatarGrant Likely <grant.likely@linaro.org>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
Tested-by: default avatarKieran Bingham <kieran@bingham.xyz>
Reviewed-by: default avatarJavier Martinez Canillas <javier@osg.samsung.com>
Tested-by: default avatarJavier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: default avatarKieran Bingham <kieran@bingham.xyz>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent 298d4de1
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -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 */
@@ -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) {