Skip to contentSkip to conversation

arm: omap: omap2plus_defconfig: remove unwanted ethernet drivers

PATCH New Felipe Balbi 4 participants 22 messages Nov 18, 2014 – Nov 22, 2014

Subsystems (7)
lore
Share & tools
lore
#0 lore raw

PATCH 1/10 arm: omap: omap2plus_defconfig: remove unwanted ethernet drivers

None of these drivers are known to be used on
any platform supported by omap2plus_defconfig,
by removing them we get a slight smaller kernel.

---

Depends on [1]

[1] http://marc.info/?l=linux-omap&m=141632534806371&w=2

 arch/arm/configs/omap2plus_defconfig | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
arch/arm/configs/omap2plus_defconfig +16 -0
index 82dc4d6..24d6fe2 100644
@@ -129,11 +129,27 @@ CONFIG_BLK_DEV_SD=y
 CONFIG_SCSI_SCAN_ASYNC=y
 CONFIG_MD=y
 CONFIG_NETDEVICES=y
+# CONFIG_NET_VENDOR_ARC is not set
+# CONFIG_NET_CADENCE is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_HISILICON is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
 CONFIG_KS8851=y
 CONFIG_KS8851_MLL=y
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_QUALCOMM is not set
+# CONFIG_NET_VENDOR_SAMSUNG is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
 CONFIG_SMC91X=y
 CONFIG_SMSC911X=y
+# CONFIG_NET_VENDOR_STMICRO is not set
 CONFIG_TI_CPSW=y
+# CONFIG_NET_VENDOR_VIA is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
 CONFIG_AT803X_PHY=y
 CONFIG_SMSC_PHY=y
 CONFIG_USB_USBNET=y
Signature · 1 line
2.1.0.GIT
#1 lore raw

PATCH 2/10 arm: omap: omap2plus_defconfig: enable EDT FT5X06 touchscreen

AM437x Starter Kit ships with EDT FT5306 touchscreen device. By enabling the driver we make sure touchscreen will work out of the box.

---
 arch/arm/configs/omap2plus_defconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm/configs/omap2plus_defconfig +1 -0
index 24d6fe2..c893487 100644
@@ -177,6 +177,7 @@ CONFIG_KEYBOARD_MATRIX=m
 CONFIG_KEYBOARD_TWL4030=y
 CONFIG_INPUT_TOUCHSCREEN=y
 CONFIG_TOUCHSCREEN_ADS7846=m
+CONFIG_TOUCHSCREEN_EDT_FT5X06=m
 CONFIG_TOUCHSCREEN_TSC2005=m
 CONFIG_TOUCHSCREEN_TSC2007=m
 CONFIG_INPUT_MISC=y
Signature · 1 line
2.1.0.GIT
#2 lore raw

PATCH 3/10 arm: omap: omap2plus_defconfig: enable AM33XX SoC sound

In reply to Felipe Balbi

Without this, sound on AM437x Starter Kit will
not work.

---
 arch/arm/configs/omap2plus_defconfig | 2 ++
 1 file changed, 2 insertions(+)
arch/arm/configs/omap2plus_defconfig +2 -0
index c893487..a5abc67 100644
@@ -281,6 +281,8 @@ CONFIG_SND_VERBOSE_PRINTK=y
 CONFIG_SND_DEBUG=y
 CONFIG_SND_USB_AUDIO=m
 CONFIG_SND_SOC=m
+CONFIG_SND_EDMA_SOC=m
+CONFIG_SND_AM33XX_SOC_EVM=m
 CONFIG_SND_OMAP_SOC=m
 CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m
 CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m
Signature · 1 line
2.1.0.GIT
#3 lore raw

PATCH 4/10 arm: omap: omap2plus_defconfig: enable XHCI

In reply to Felipe Balbi

AM437x devices have a DWC3 IP inside of them.

The host side implementation of DWC3 is XHCI compliant. By enabling XHCI driver, we get the USB host port on AM437x Starter Kit working out of the box.

---
 arch/arm/configs/omap2plus_defconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm/configs/omap2plus_defconfig +1 -0
index a5abc67..3837a3e 100644
@@ -292,6 +292,7 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 CONFIG_USB_DYNAMIC_MINORS=y
 CONFIG_USB_OTG=y
 CONFIG_USB_MON=y
+CONFIG_USB_XHCI_HCD=m
 CONFIG_USB_WDM=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_MUSB_HDRC=m
Signature · 1 line
2.1.0.GIT
#4 lore raw

PATCH 5/10 arm: omap: omap2plus_defconfig: enable ECAP and EHRPWM

In reply to Felipe Balbi

Many of AM335x and AM437x hook backlight to
one of these two devices. By enabling their
drivers we make sure pwm-backlight can do
its thing.

---
 arch/arm/configs/omap2plus_defconfig | 2 ++
 1 file changed, 2 insertions(+)
arch/arm/configs/omap2plus_defconfig +2 -0
index 3837a3e..9be67b7 100644
@@ -401,6 +401,8 @@ CONFIG_DMA_OMAP=y
 CONFIG_EXTCON=y
 CONFIG_EXTCON_PALMAS=y
 CONFIG_PWM=y
+CONFIG_PWM_TIECAP=y
+CONFIG_PWM_TIEHRPWM=y
 CONFIG_PWM_TWL=y
 CONFIG_PWM_TWL_LED=y
 CONFIG_OMAP_USB2=y
Signature · 1 line
2.1.0.GIT
maintainer
#5 lore raw

PATCH 5/10 arm: omap: omap2plus_defconfig: enable ECAP and EHRPWM

Quoted 4 lines · Felipe Balbi

Many of AM335x and AM437x hook backlight to
one of these two devices. By enabling their
drivers we make sure pwm-backlight can do
its thing.

Applying patches 1 - 5 to omap-for-v3.19/soc thanks.

Tony

#6 lore raw

PATCH 6/10 input: touchscreen: edt-ft5x06: fix driver autoprobing

In reply to Felipe Balbi

i2c devices match against struct i2c_device_id even for CONFIG_OF case, so adding a struct of_device_id doesn't change anything. As a result, currently, edt-ft5x06 will not autoprobe if built as a module.

To fix the issue and still maintain backwards compatibility with all DTS files currently in tree, we're just moving all ids from of_device_id to i2c_device_id while also adding the following specific ids which should be used from now on:

	{ "edt-ft5206", 0, }
	{ "edt-ft5306", 0, }
	{ "edt-ft5406", 0, }
Cc Lothar Wa?mann <[email protected]>
Cc Rob Herring <[email protected]>
Cc Dmitry Torokhov <[email protected]>
Cc <[email protected]> # v3.15+
Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)
---
 .../bindings/input/touchscreen/edt-ft5x06.txt           |  9 ++++++---
 drivers/input/touchscreen/edt-ft5x06.c                  | 17 ++++++-----------
 2 files changed, 12 insertions(+), 14 deletions(-)
Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt +6 -3
index 76db967..50bd5d2 100644
@@ -14,9 +14,12 @@ bindings.
 
 
 Required properties:
- - compatible:  "edt,edt-ft5206"
-           or:  "edt,edt-ft5306"
-           or:  "edt,edt-ft5406"
+ - compatible:  "edt-ft5206"
+	   or:  "edt-ft5306"
+	   or:  "edt-ft5406"
+	   or:  "edt,edt-ft5206" (deprecated)
+           or:  "edt,edt-ft5306" (deprecated)
+           or:  "edt,edt-ft5406" (deprecated)
 
  - reg:         I2C slave address of the chip (0x38)
  - interrupt-parent: a phandle pointing to the interrupt controller
drivers/input/touchscreen/edt-ft5x06.c +6 -11
index ee3434f..f161ff9 100644
@@ -1119,25 +1119,20 @@ static SIMPLE_DEV_PM_OPS(edt_ft5x06_ts_pm_ops,
 
 static const struct i2c_device_id edt_ft5x06_ts_id[] = {
 	{ "edt-ft5x06", 0, },
+	{ "edt-ft5206", 0, },
+	{ "edt-ft5306", 0, },
+	{ "edt-ft5406", 0, },
+	{ "edt,edt-ft5206", 0, },
+	{ "edt,edt-ft5306", 0, },
+	{ "edt,edt-ft5406", 0, },
 	{ /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(i2c, edt_ft5x06_ts_id);
 
-#ifdef CONFIG_OF
-static const struct of_device_id edt_ft5x06_of_match[] = {
-	{ .compatible = "edt,edt-ft5206", },
-	{ .compatible = "edt,edt-ft5306", },
-	{ .compatible = "edt,edt-ft5406", },
-	{ /* sentinel */ }
-};
-MODULE_DEVICE_TABLE(of, edt_ft5x06_of_match);
-#endif
-
 static struct i2c_driver edt_ft5x06_ts_driver = {
 	.driver = {
 		.owner = THIS_MODULE,
 		.name = "edt_ft5x06",
-		.of_match_table = of_match_ptr(edt_ft5x06_of_match),
 		.pm = &edt_ft5x06_ts_pm_ops,
 	},
 	.id_table = edt_ft5x06_ts_id,
Signature · 1 line
2.1.0.GIT
maintainer
#7 lore raw

PATCH 6/10 input: touchscreen: edt-ft5x06: fix driver autoprobing

Hi Felipe,

Quoted 4 lines · Felipe Balbi

i2c devices match against struct i2c_device_id even for CONFIG_OF case, so adding a struct of_device_id doesn't change anything. As a result, currently, edt-ft5x06 will not autoprobe if built as a module.

Why doe snot it autoprobe? We properly declare MODULE_DEVICE_TABLE for OF, is it because we are missing some data in device uevent?

Quoted 10 lines

To fix the issue and still maintain backwards compatibility with all DTS files currently in tree, we're just moving all ids from of_device_id to i2c_device_id while also adding the following specific ids which should be used from now on:

	{ "edt-ft5206", 0, }
	{ "edt-ft5306", 0, }
	{ "edt-ft5406", 0, }

Is this a tee-wide change? Link to the discussion?

Thanks.

Signature · 1 line
Dmitry
#8 lore raw

PATCH 6/10 input: touchscreen: edt-ft5x06: fix driver autoprobing

Quoted 10 lines · Dmitry Torokhov

Hi Felipe,

Quoted 4 lines · Felipe Balbi

i2c devices match against struct i2c_device_id even for CONFIG_OF case, so adding a struct of_device_id doesn't change anything. As a result, currently, edt-ft5x06 will not autoprobe if built as a module.

Why doe snot it autoprobe? We properly declare MODULE_DEVICE_TABLE for OF, is it because we are missing some data in device uevent?

because of of_i2c_register_devices(). Maybe Wolfram can give a better explanation here, but it just doesn't match through of_device_id.

Apply this:

drivers/i2c/i2c-core.c +8 -2
index 2f90ac6..f0dc16e 100644
@@ -449,8 +449,10 @@ static const struct i2c_device_id *i2c_match_id(const struct i2c_device_id *id,
 						const struct i2c_client *client)
 {
 	while (id->name[0]) {
-		if (strcmp(client->name, id->name) == 0)
+		if (strcmp(client->name, id->name) == 0) {
+			dev_info(&client->dev, "i2c_device_id match\n");
 			return id;
+		}
 		id++;
 	}
 	return NULL;
@@ -465,8 +467,10 @@ static int i2c_device_match(struct device *dev, struct device_driver *drv)
 		return 0;
 
 	/* Attempt an OF style match */
-	if (of_driver_match_device(dev, drv))
+	if (of_driver_match_device(dev, drv)) {
+		dev_info(dev, "of driver match\n");
 		return 1;
+	}
 
 	/* Then ACPI style match */
 	if (acpi_driver_match_device(dev, drv))
@@ -1081,6 +1085,7 @@ i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
 	client->dev.bus = &i2c_bus_type;
 	client->dev.type = &i2c_client_type;
 	client->dev.of_node = info->of_node;
+	dev_info(&adap->dev, "%s: of_node %p\n", __func__, info->of_node);
 	ACPI_COMPANION_SET(&client->dev, info->acpi_node.companion);
 
 	i2c_dev_set_name(adap, client);
@@ -1411,6 +1416,7 @@ static void of_i2c_register_devices(struct i2c_adapter *adap)
 
 		info.irq = irq_of_parse_and_map(node, 0);
 		info.of_node = of_node_get(node);
+		dev_info(&adap->dev, "%s: of_node %p\n", __func__, info.of_node);
 		info.archdata = &dev_ad;
 
 		if (of_get_property(node, "wakeup-source", NULL))

then boot the board and you get http://hastebin.com/oqemezajez

Interesting, it's matching against of but only when I modprobe.

Let me debug this one a little more.

Quoted 11 lines
Quoted 9 lines

To fix the issue and still maintain backwards compatibility with all DTS files currently in tree, we're just moving all ids from of_device_id to i2c_device_id while also adding the following specific ids which should be used from now on:

	{ "edt-ft5206", 0, }
	{ "edt-ft5306", 0, }
	{ "edt-ft5406", 0, }

Is this a tee-wide change? Link to the discussion?

nope, just found it with my AM437x Starter Kit.

Signature · 8 lines
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20141118/743c97ad/attachment.sig>
#9 lore raw

PATCH 6/10 input: touchscreen: edt-ft5x06: fix driver autoprobing

Hi,

Quoted 62 lines · Felipe Balbi
Quoted 10 lines · Dmitry Torokhov

Hi Felipe,

Quoted 4 lines · Felipe Balbi

i2c devices match against struct i2c_device_id even for CONFIG_OF case, so adding a struct of_device_id doesn't change anything. As a result, currently, edt-ft5x06 will not autoprobe if built as a module.

Why doe snot it autoprobe? We properly declare MODULE_DEVICE_TABLE for OF, is it because we are missing some data in device uevent?

because of of_i2c_register_devices(). Maybe Wolfram can give a better explanation here, but it just doesn't match through of_device_id.

Apply this:

drivers/i2c/i2c-core.c +8 -2
index 2f90ac6..f0dc16e 100644
@@ -449,8 +449,10 @@ static const struct i2c_device_id *i2c_match_id(const struct i2c_device_id *id,
 						const struct i2c_client *client)
 {
 	while (id->name[0]) {
-		if (strcmp(client->name, id->name) == 0)
+		if (strcmp(client->name, id->name) == 0) {
+			dev_info(&client->dev, "i2c_device_id match\n");
 			return id;
+		}
 		id++;
 	}
 	return NULL;
@@ -465,8 +467,10 @@ static int i2c_device_match(struct device *dev, struct device_driver *drv)
 		return 0;
 
 	/* Attempt an OF style match */
-	if (of_driver_match_device(dev, drv))
+	if (of_driver_match_device(dev, drv)) {
+		dev_info(dev, "of driver match\n");
 		return 1;
+	}
 
 	/* Then ACPI style match */
 	if (acpi_driver_match_device(dev, drv))
@@ -1081,6 +1085,7 @@ i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
 	client->dev.bus = &i2c_bus_type;
 	client->dev.type = &i2c_client_type;
 	client->dev.of_node = info->of_node;
+	dev_info(&adap->dev, "%s: of_node %p\n", __func__, info->of_node);
 	ACPI_COMPANION_SET(&client->dev, info->acpi_node.companion);
 
 	i2c_dev_set_name(adap, client);
@@ -1411,6 +1416,7 @@ static void of_i2c_register_devices(struct i2c_adapter *adap)
 
 		info.irq = irq_of_parse_and_map(node, 0);
 		info.of_node = of_node_get(node);
+		dev_info(&adap->dev, "%s: of_node %p\n", __func__, info.of_node);
 		info.archdata = &dev_ad;
 
 		if (of_get_property(node, "wakeup-source", NULL))
Quoted 5 lines

then boot the board and you get http://hastebin.com/oqemezajez

Interesting, it's matching against of but only when I modprobe.

Let me debug this one a little more.

this is a simpler patch:

+MODULE_ALIAS("i2c:edt-ft5206");
+MODULE_ALIAS("i2c:edt-ft5306");
+MODULE_ALIAS("i2c:edt-ft5406");

I'll send it in a bit.

Signature · 8 lines
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20141118/0b3f18f4/attachment.sig>
#10 lore raw

PATCH v2 1/1 input: touchscreen: edt-ft5x06: fix driver autoprobing

Because with OF we can pass more specific compatible flags (such as edt-ft5306) instead of generic edt-ft5x06, when i2c-core's of_i2c_register_devices() tries to request_module(), it'll request it with a non-existent specific module alias.

In order to have this driver autoprobing again, we just need to add missing MODULE_ALIAS() entries to edt-ft5x06 driver.

Thanks to Dmitry for noticing that it actually should autoprobe even with of_device_id.

Cc Dmitry Torokhov <[email protected]>
Cc <[email protected]> # v3.15+
Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)
---
 drivers/input/touchscreen/edt-ft5x06.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/input/touchscreen/edt-ft5x06.c +3 -0
index ee3434f..bcbf688 100644
@@ -1147,6 +1147,9 @@ static struct i2c_driver edt_ft5x06_ts_driver = {
 
 module_i2c_driver(edt_ft5x06_ts_driver);
 
+MODULE_ALIAS("i2c:edt-ft5206");
+MODULE_ALIAS("i2c:edt-ft5306");
+MODULE_ALIAS("i2c:edt-ft5406");
 MODULE_AUTHOR("Simon Budig <[email protected]>");
 MODULE_DESCRIPTION("EDT FT5x06 I2C Touchscreen Driver");
 MODULE_LICENSE("GPL");
Signature · 1 line
2.1.0.GIT
#11 lore raw

Re: [PATCH v2] input: touchscreen: edt-ft5x06: fix driver autoprobing

Quoted 14 lines · Felipe Balbi

Because with OF we can pass more specific compatible flags (such as edt-ft5306) instead of generic edt-ft5x06, when i2c-core's of_i2c_register_devices() tries to request_module(), it'll request it with a non-existent specific module alias.

In order to have this driver autoprobing again, we just need to add missing MODULE_ALIAS() entries to edt-ft5x06 driver.

Thanks to Dmitry for noticing that it actually should autoprobe even with of_device_id.

Quoted 6 lines
Cc Dmitry Torokhov <[email protected]>
Cc <[email protected]> # v3.15+
Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)

---

btw, with this, patches 7 through 10 can be ignored.

Signature · 1 line
balbi
maintainer
#12 lore raw

Re: [PATCH v2] input: touchscreen: edt-ft5x06: fix driver autoprobing

In reply to Felipe Balbi
Quoted 40 lines · Felipe Balbi

Because with OF we can pass more specific compatible flags (such as edt-ft5306) instead of generic edt-ft5x06, when i2c-core's of_i2c_register_devices() tries to request_module(), it'll request it with a non-existent specific module alias.

In order to have this driver autoprobing again, we just need to add missing MODULE_ALIAS() entries to edt-ft5x06 driver.

Thanks to Dmitry for noticing that it actually should autoprobe even with of_device_id.

Cc Dmitry Torokhov <[email protected]>
Cc <[email protected]> # v3.15+
Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)
---
 drivers/input/touchscreen/edt-ft5x06.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/input/touchscreen/edt-ft5x06.c +3 -0
index ee3434f..bcbf688 100644
@@ -1147,6 +1147,9 @@ static struct i2c_driver edt_ft5x06_ts_driver = {
 
 module_i2c_driver(edt_ft5x06_ts_driver);
 
+MODULE_ALIAS("i2c:edt-ft5206");
+MODULE_ALIAS("i2c:edt-ft5306");
+MODULE_ALIAS("i2c:edt-ft5406");
 MODULE_AUTHOR("Simon Budig <[email protected]>");
 MODULE_DESCRIPTION("EDT FT5x06 I2C Touchscreen Driver");
 MODULE_LICENSE("GPL");
Signature · 1 line
2.1.0.GIT

Here is what I see if I run modinfo on the module:

dtor@dtor-ws:~/kernel/work$ modinfo
drivers/input/touchscreen/edt-ft5x06.ko
filename:
/home/dtor/kernel/work/drivers/input/touchscreen/edt-ft5x06.ko
license:        GPL
description:    EDT FT5x06 I2C Touchscreen Driver
author:         Simon Budig <[email protected]>
alias:          i2c:edt-ft5x06
alias:          of:N*T*Cedt,edt-ft5406*
alias:          of:N*T*Cedt,edt-ft5306*
alias:          of:N*T*Cedt,edt-ft5206*
depends:        i2c-core
intree:         Y
vermagic:       3.17.0+ SMP preempt mod_unload 

As you can see we already have what I consider proper modaliases for the driver. Why don't they work? Is it because modprobe doe snot know how to handle OF-style modaliases or device's uevents are missing OF data in them?

Thanks.

Signature · 1 line
Dmitry
#13 lore raw

Re: [PATCH v2] input: touchscreen: edt-ft5x06: fix driver autoprobing

Quoted 59 lines · Dmitry Torokhov
Quoted 40 lines · Felipe Balbi

Because with OF we can pass more specific compatible flags (such as edt-ft5306) instead of generic edt-ft5x06, when i2c-core's of_i2c_register_devices() tries to request_module(), it'll request it with a non-existent specific module alias.

In order to have this driver autoprobing again, we just need to add missing MODULE_ALIAS() entries to edt-ft5x06 driver.

Thanks to Dmitry for noticing that it actually should autoprobe even with of_device_id.

Cc Dmitry Torokhov <[email protected]>
Cc <[email protected]> # v3.15+
Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)
---
 drivers/input/touchscreen/edt-ft5x06.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/input/touchscreen/edt-ft5x06.c +3 -0
index ee3434f..bcbf688 100644
@@ -1147,6 +1147,9 @@ static struct i2c_driver edt_ft5x06_ts_driver = {
 
 module_i2c_driver(edt_ft5x06_ts_driver);
 
+MODULE_ALIAS("i2c:edt-ft5206");
+MODULE_ALIAS("i2c:edt-ft5306");
+MODULE_ALIAS("i2c:edt-ft5406");
 MODULE_AUTHOR("Simon Budig <[email protected]>");
 MODULE_DESCRIPTION("EDT FT5x06 I2C Touchscreen Driver");
 MODULE_LICENSE("GPL");
Signature · 1 line
2.1.0.GIT

Here is what I see if I run modinfo on the module:

dtor@dtor-ws:~/kernel/work$ modinfo
drivers/input/touchscreen/edt-ft5x06.ko
filename:
/home/dtor/kernel/work/drivers/input/touchscreen/edt-ft5x06.ko
license:        GPL
description:    EDT FT5x06 I2C Touchscreen Driver
author:         Simon Budig <[email protected]>
alias:          i2c:edt-ft5x06
alias:          of:N*T*Cedt,edt-ft5406*
alias:          of:N*T*Cedt,edt-ft5306*
alias:          of:N*T*Cedt,edt-ft5206*
depends:        i2c-core
intree:         Y
vermagic:       3.17.0+ SMP preempt mod_unload 
Quoted 4 lines

As you can see we already have what I consider proper modaliases for the driver. Why don't they work? Is it because modprobe doe snot know how to handle OF-style modaliases or device's uevents are missing OF data in them?

no, it's because i2c call request_module for i2c:edt-ft5306. i2c core never uses any of the of aliases.

Signature · 1 line
balbi
maintainer
#14 lore raw

Re: [PATCH v2] input: touchscreen: edt-ft5x06: fix driver autoprobing

Quoted 60 lines · Felipe Balbi
Quoted 59 lines · Dmitry Torokhov
Quoted 40 lines · Felipe Balbi

Because with OF we can pass more specific compatible flags (such as edt-ft5306) instead of generic edt-ft5x06, when i2c-core's of_i2c_register_devices() tries to request_module(), it'll request it with a non-existent specific module alias.

In order to have this driver autoprobing again, we just need to add missing MODULE_ALIAS() entries to edt-ft5x06 driver.

Thanks to Dmitry for noticing that it actually should autoprobe even with of_device_id.

Cc Dmitry Torokhov <[email protected]>
Cc <[email protected]> # v3.15+
Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)
---
 drivers/input/touchscreen/edt-ft5x06.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/input/touchscreen/edt-ft5x06.c +3 -0
index ee3434f..bcbf688 100644
@@ -1147,6 +1147,9 @@ static struct i2c_driver edt_ft5x06_ts_driver = {
 
 module_i2c_driver(edt_ft5x06_ts_driver);
 
+MODULE_ALIAS("i2c:edt-ft5206");
+MODULE_ALIAS("i2c:edt-ft5306");
+MODULE_ALIAS("i2c:edt-ft5406");
 MODULE_AUTHOR("Simon Budig <[email protected]>");
 MODULE_DESCRIPTION("EDT FT5x06 I2C Touchscreen Driver");
 MODULE_LICENSE("GPL");
Signature · 1 line
2.1.0.GIT

Here is what I see if I run modinfo on the module:

dtor@dtor-ws:~/kernel/work$ modinfo
drivers/input/touchscreen/edt-ft5x06.ko
filename:
/home/dtor/kernel/work/drivers/input/touchscreen/edt-ft5x06.ko
license:        GPL
description:    EDT FT5x06 I2C Touchscreen Driver
author:         Simon Budig <[email protected]>
alias:          i2c:edt-ft5x06
alias:          of:N*T*Cedt,edt-ft5406*
alias:          of:N*T*Cedt,edt-ft5306*
alias:          of:N*T*Cedt,edt-ft5206*
depends:        i2c-core
intree:         Y
vermagic:       3.17.0+ SMP preempt mod_unload 
Quoted 7 lines
Quoted 4 lines

As you can see we already have what I consider proper modaliases for the driver. Why don't they work? Is it because modprobe doe snot know how to handle OF-style modaliases or device's uevents are missing OF data in them?

no, it's because i2c call request_module for i2c:edt-ft5306. i2c core never uses any of the of aliases.

1. I think both i2c and spi are cheating in this regard: they should rely on normal driver request paths through udev.

2. I2C should emit proper modalias for devices coming by the way of devicetree. It already does special handling for ACPI, it needs to do the same for OF. I think SPI does the right thing there.

Thanks.

Signature · 1 line
Dmitry
#15 lore raw

Re: [PATCH v2] input: touchscreen: edt-ft5x06: fix driver autoprobing

Quoted 69 lines · Dmitry Torokhov
Quoted 60 lines · Felipe Balbi
Quoted 59 lines · Dmitry Torokhov
Quoted 40 lines · Felipe Balbi

Because with OF we can pass more specific compatible flags (such as edt-ft5306) instead of generic edt-ft5x06, when i2c-core's of_i2c_register_devices() tries to request_module(), it'll request it with a non-existent specific module alias.

In order to have this driver autoprobing again, we just need to add missing MODULE_ALIAS() entries to edt-ft5x06 driver.

Thanks to Dmitry for noticing that it actually should autoprobe even with of_device_id.

Cc Dmitry Torokhov <[email protected]>
Cc <[email protected]> # v3.15+
Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)
---
 drivers/input/touchscreen/edt-ft5x06.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/input/touchscreen/edt-ft5x06.c +3 -0
index ee3434f..bcbf688 100644
@@ -1147,6 +1147,9 @@ static struct i2c_driver edt_ft5x06_ts_driver = {
 
 module_i2c_driver(edt_ft5x06_ts_driver);
 
+MODULE_ALIAS("i2c:edt-ft5206");
+MODULE_ALIAS("i2c:edt-ft5306");
+MODULE_ALIAS("i2c:edt-ft5406");
 MODULE_AUTHOR("Simon Budig <[email protected]>");
 MODULE_DESCRIPTION("EDT FT5x06 I2C Touchscreen Driver");
 MODULE_LICENSE("GPL");
Signature · 1 line
2.1.0.GIT

Here is what I see if I run modinfo on the module:

dtor@dtor-ws:~/kernel/work$ modinfo
drivers/input/touchscreen/edt-ft5x06.ko
filename:
/home/dtor/kernel/work/drivers/input/touchscreen/edt-ft5x06.ko
license:        GPL
description:    EDT FT5x06 I2C Touchscreen Driver
author:         Simon Budig <[email protected]>
alias:          i2c:edt-ft5x06
alias:          of:N*T*Cedt,edt-ft5406*
alias:          of:N*T*Cedt,edt-ft5306*
alias:          of:N*T*Cedt,edt-ft5206*
depends:        i2c-core
intree:         Y
vermagic:       3.17.0+ SMP preempt mod_unload 
Quoted 7 lines
Quoted 4 lines

As you can see we already have what I consider proper modaliases for the driver. Why don't they work? Is it because modprobe doe snot know how to handle OF-style modaliases or device's uevents are missing OF data in them?

no, it's because i2c call request_module for i2c:edt-ft5306. i2c core never uses any of the of aliases.

Quoted 6 lines

1. I think both i2c and spi are cheating in this regard: they should rely on normal driver request paths through udev.

2. I2C should emit proper modalias for devices coming by the way of devicetree. It already does special handling for ACPI, it needs to do the same for OF. I think SPI does the right thing there.

I'll let Wolfram comment here for I2C.

Signature · 1 line
balbi
#16 lore raw

Re: [PATCH v2] input: touchscreen: edt-ft5x06: fix driver autoprobing

Hi Wolfram,

Quoted 70 lines · Felipe Balbi
Quoted 69 lines · Dmitry Torokhov
Quoted 67 lines · Felipe Balbi
Quoted 59 lines · Dmitry Torokhov
Quoted 40 lines · Felipe Balbi

Because with OF we can pass more specific compatible flags (such as edt-ft5306) instead of generic edt-ft5x06, when i2c-core's of_i2c_register_devices() tries to request_module(), it'll request it with a non-existent specific module alias.

In order to have this driver autoprobing again, we just need to add missing MODULE_ALIAS() entries to edt-ft5x06 driver.

Thanks to Dmitry for noticing that it actually should autoprobe even with of_device_id.

Cc Dmitry Torokhov <[email protected]>
Cc <[email protected]> # v3.15+
Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)
---
 drivers/input/touchscreen/edt-ft5x06.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/input/touchscreen/edt-ft5x06.c +3 -0
index ee3434f..bcbf688 100644
@@ -1147,6 +1147,9 @@ static struct i2c_driver edt_ft5x06_ts_driver = {
 
 module_i2c_driver(edt_ft5x06_ts_driver);
 
+MODULE_ALIAS("i2c:edt-ft5206");
+MODULE_ALIAS("i2c:edt-ft5306");
+MODULE_ALIAS("i2c:edt-ft5406");
 MODULE_AUTHOR("Simon Budig <[email protected]>");
 MODULE_DESCRIPTION("EDT FT5x06 I2C Touchscreen Driver");
 MODULE_LICENSE("GPL");
Signature · 1 line
2.1.0.GIT

Here is what I see if I run modinfo on the module:

dtor@dtor-ws:~/kernel/work$ modinfo
drivers/input/touchscreen/edt-ft5x06.ko
filename:
/home/dtor/kernel/work/drivers/input/touchscreen/edt-ft5x06.ko
license:        GPL
description:    EDT FT5x06 I2C Touchscreen Driver
author:         Simon Budig <[email protected]>
alias:          i2c:edt-ft5x06
alias:          of:N*T*Cedt,edt-ft5406*
alias:          of:N*T*Cedt,edt-ft5306*
alias:          of:N*T*Cedt,edt-ft5206*
depends:        i2c-core
intree:         Y
vermagic:       3.17.0+ SMP preempt mod_unload 
Quoted 4 lines

As you can see we already have what I consider proper modaliases for the driver. Why don't they work? Is it because modprobe doe snot know how to handle OF-style modaliases or device's uevents are missing OF data in them?

no, it's because i2c call request_module for i2c:edt-ft5306. i2c core never uses any of the of aliases.

Quoted 8 lines
Quoted 6 lines

1. I think both i2c and spi are cheating in this regard: they should rely on normal driver request paths through udev.

2. I2C should emit proper modalias for devices coming by the way of devicetree. It already does special handling for ACPI, it needs to do the same for OF. I think SPI does the right thing there.

I'll let Wolfram comment here for I2C.

Can you comment on this ? As of today i2c-based drivers will probe with DT-based boot if DT's compatible is set to the same id as in struct i2c_device_id. No i2c driver with of_device_id can autoprobe using OF ids.

cheers

Signature · 1 line
balbi
#17 lore raw

Re: [PATCH v2] input: touchscreen: edt-ft5x06: fix driver autoprobing

Quoted 5 lines

Can you comment on this ? As of today i2c-based drivers will probe with DT-based boot if DT's compatible is set to the same id as in struct i2c_device_id. No i2c driver with of_device_id can autoprobe using OF ids.

Long standing problem. Last one to tackle this was Lee Jones:

https://lkml.org/lkml/2014/8/28/283

#18 lore raw

PATCH 7/10 arm: boot: dts: am437x-sk: switch over to new edt-ft5306 compatible

In reply to Felipe Balbi

now that we have the new vendor-less edt-ft5306
i2c_device_id, we can use it

---
 arch/arm/boot/dts/am437x-sk-evm.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/am437x-sk-evm.dts +1 -1
index 859ff3d..26133cb 100644
@@ -404,7 +404,7 @@
 
 	edt-ft5306 at 38 {
 		status = "okay";
-		compatible = "edt,edt-ft5306", "edt,edt-ft5x06";
+		compatible = "edt-ft5306", "edt-ft5x06";
 		pinctrl-names = "default";
 		pinctrl-0 = <&edt_ft5306_ts_pins>;
 
Signature · 1 line
2.1.0.GIT
#19 lore raw

PATCH 8/10 arm: boot: dts: imx28-tx28: switch over to new edt-ft5x06 compatible

In reply to Felipe Balbi

now that we have the new vendor-less edt-ft5x06
i2c_device_id, we can use it

---
 arch/arm/boot/dts/imx28-tx28.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/imx28-tx28.dts +1 -1
index a5b27c8..5c5c988 100644
@@ -319,7 +319,7 @@
 	};
 
 	polytouch: edt-ft5x06 at 38 {
-		compatible = "edt,edt-ft5x06";
+		compatible = "edt-ft5x06";
 		reg = <0x38>;
 		pinctrl-names = "default";
 		pinctrl-0 = <&tx28_edt_ft5x06_pins>;
Signature · 1 line
2.1.0.GIT
#20 lore raw

PATCH 9/10 arm: boot: dts: imx53-tx53-x03x: switch over to new edt-ft5x06 compatible

In reply to Felipe Balbi

now that we have the new vendor-less edt-ft5x06
i2c_device_id, we can use it

---
 arch/arm/boot/dts/imx53-tx53-x03x.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/imx53-tx53-x03x.dts +1 -1
index 3b73e81..27bf29d 100644
@@ -211,7 +211,7 @@
 	};
 
 	polytouch: edt-ft5x06 at 38 {
-		compatible = "edt,edt-ft5x06";
+		compatible = "edt-ft5x06";
 		reg = <0x38>;
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_edt_ft5x06_1>;
Signature · 1 line
2.1.0.GIT
#21 lore raw

PATCH 10/10 arm: boot: dts: imx6qdl-tx6: switch over to new edt-ft5x06 compatible

In reply to Felipe Balbi

now that we have the new vendor-less edt-ft5x06
i2c_device_id, we can use it

---
 arch/arm/boot/dts/imx6qdl-tx6.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/imx6qdl-tx6.dtsi +1 -1
index f02b80b..5ecf3bf 100644
@@ -267,7 +267,7 @@
 	};
 
 	polytouch: edt-ft5x06 at 38 {
-		compatible = "edt,edt-ft5x06";
+		compatible = "edt-ft5x06";
 		reg = <0x38>;
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_edt_ft5x06>;
Signature · 1 line
2.1.0.GIT