diff options
Diffstat (limited to 'of-i2c-fix-module-aliases.patch')
-rw-r--r-- | of-i2c-fix-module-aliases.patch | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/of-i2c-fix-module-aliases.patch b/of-i2c-fix-module-aliases.patch deleted file mode 100644 index 3c737f6e8..000000000 --- a/of-i2c-fix-module-aliases.patch +++ /dev/null @@ -1,69 +0,0 @@ -From af503716ac1444db61d80cb6d17cfe62929c21df Mon Sep 17 00:00:00 2001 -From: Javier Martinez Canillas <javierm@redhat.com> -Date: Sun, 3 Dec 2017 22:40:50 +0100 -Subject: i2c: core: report OF style module alias for devices registered via OF - -The buses should honor the firmware interface used to register the device, -but the I2C core reports a MODALIAS of the form i2c:<device> even for I2C -devices registered via OF. - -This means that user-space will never get an OF stype uevent MODALIAS even -when the drivers modules contain aliases exported from both the I2C and OF -device ID tables. For example, an Atmel maXTouch Touchscreen registered by -a DT node with compatible "atmel,maxtouch" has the following module alias: - -$ cat /sys/class/i2c-adapter/i2c-8/8-004b/modalias -i2c:maxtouch - -So udev won't be able to auto-load a module for an OF-only device driver. -Many OF-only drivers duplicate the OF device ID table entries in an I2C ID -table only has a workaround for how the I2C core reports the module alias. - -This patch changes the I2C core to report an OF related MODALIAS uevent if -the device was registered via OF. So for the previous example, after this -patch, the reported MODALIAS for the Atmel maXTouch will be the following: - -$ cat /sys/class/i2c-adapter/i2c-8/8-004b/modalias -of:NtrackpadT<NULL>Catmel,maxtouch - -NOTE: This patch may break out-of-tree drivers that were relying on this - behavior, and only had an I2C device ID table even when the device - was registered via OF. There are no remaining drivers in mainline - that do this, but out-of-tree drivers have to be fixed and define - a proper OF device ID table to have module auto-loading working. - -Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> -Tested-by: Dmitry Mastykin <mastichi@gmail.com> -Signed-off-by: Wolfram Sang <wsa@the-dreams.de> ---- - drivers/i2c/i2c-core-base.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c -index 5a00bf4..edfc23e4 100644 ---- a/drivers/i2c/i2c-core-base.c -+++ b/drivers/i2c/i2c-core-base.c -@@ -124,6 +124,10 @@ static int i2c_device_uevent(struct device *dev, struct kobj_uevent_env *env) - struct i2c_client *client = to_i2c_client(dev); - int rc; - -+ rc = of_device_uevent_modalias(dev, env); -+ if (rc != -ENODEV) -+ return rc; -+ - rc = acpi_device_uevent_modalias(dev, env); - if (rc != -ENODEV) - return rc; -@@ -439,6 +443,10 @@ show_modalias(struct device *dev, struct device_attribute *attr, char *buf) - struct i2c_client *client = to_i2c_client(dev); - int len; - -+ len = of_device_modalias(dev, buf, PAGE_SIZE); -+ if (len != -ENODEV) -+ return len; -+ - len = acpi_device_modalias(dev, buf, PAGE_SIZE -1); - if (len != -ENODEV) - return len; --- -cgit v1.1 |