Message ID | 1432208546-18615-3-git-send-email-geert+renesas@glider.be (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, May 21, 2015 at 01:42:26PM +0200, Geert Uytterhoeven wrote: > From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> > > The I2C subsystem can match devices without explicit OF support based on > the part of their compatible property after the comma. However, this > mechanism uses the first compatible value only. For adxl34x OF device > nodes the compatible property will contain the more specific > "adi,adxl345" or "adi,adxl346" value first. This prevents the device > node from being matched with the adxl34x driver. > > Fix this by adding an OF match table with an "adi,adxl345" compatible > entry. There's no need to add the "adi,adxl346" entry as the ADXL346 is > backward-compatible with the ADXL345 with differences handled by runtime > detection of the device model. > > Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> > Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com> > Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> > --- > v2: > - Add Reviewed-by. Reviewed-by: Simon Horman <horms+renesas@verge.net.au> -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/input/misc/adxl34x-i2c.c b/drivers/input/misc/adxl34x-i2c.c index 470bfd6f08304c67..bdb5d03b296ec6db 100644 --- a/drivers/input/misc/adxl34x-i2c.c +++ b/drivers/input/misc/adxl34x-i2c.c @@ -10,6 +10,7 @@ #include <linux/input.h> /* BUS_I2C */ #include <linux/i2c.h> #include <linux/module.h> +#include <linux/of.h> #include <linux/types.h> #include <linux/pm.h> #include "adxl34x.h" @@ -135,11 +136,31 @@ static const struct i2c_device_id adxl34x_id[] = { MODULE_DEVICE_TABLE(i2c, adxl34x_id); +#ifdef CONFIG_OF +static const struct of_device_id adxl34x_of_id[] = { + /* + * The ADXL346 is backward-compatible with the ADXL345. Differences are + * handled by runtime detection of the device model, there's thus no + * need for listing the "adi,adxl346" compatible value explicitly. + */ + { .compatible = "adi,adxl345", }, + /* + * Deprecated, DT nodes should use one or more of the device-specific + * compatible values "adi,adxl345" and "adi,adxl346". + */ + { .compatible = "adi,adxl34x", }, + { } +}; + +MODULE_DEVICE_TABLE(of, adxl34x_of_id); +#endif + static struct i2c_driver adxl34x_driver = { .driver = { .name = "adxl34x", .owner = THIS_MODULE, .pm = &adxl34x_i2c_pm, + .of_match_table = of_match_ptr(adxl34x_of_id), }, .probe = adxl34x_i2c_probe, .remove = adxl34x_i2c_remove,