arm: omap: omap2plus_defconfig: remove unwanted ethernet drivers
Subsystems (7)
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
@@ -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
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
@@ -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
PATCH 3/10 arm: omap: omap2plus_defconfig: enable AM33XX SoC sound
In reply to Felipe BalbiWithout 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
@@ -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
PATCH 4/10 arm: omap: omap2plus_defconfig: enable XHCI
In reply to Felipe BalbiAM437x 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
@@ -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
PATCH 5/10 arm: omap: omap2plus_defconfig: enable ECAP and EHRPWM
In reply to Felipe BalbiMany 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
@@ -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
Tony Lindgren
maintainerPATCH 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
PATCH 6/10 input: touchscreen: edt-ft5x06: fix driver autoprobing
In reply to Felipe Balbii2c 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, }--- .../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
@@ -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
@@ -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
Dmitry Torokhov
maintainerPATCH 6/10 input: touchscreen: edt-ft5x06: fix driver autoprobing
Hi Felipe,
Quoted 4 lines · Felipe Balbi
i2c devices match against struct
i2c_device_ideven forCONFIG_OFcase, so adding a structof_device_iddoesn'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_idtoi2c_device_idwhile 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
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_ideven forCONFIG_OFcase, so adding a structof_device_iddoesn'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_TABLEfor 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
@@ -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_idtoi2c_device_idwhile 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>
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_ideven forCONFIG_OFcase, so adding a structof_device_iddoesn'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_TABLEfor 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 throughof_device_id.Apply this:
drivers/i2c/i2c-core.c +8
-2@@ -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>
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.
--- drivers/input/touchscreen/edt-ft5x06.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/input/touchscreen/edt-ft5x06.c +3 -0
@@ -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
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 torequest_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]>Cc <[email protected]> # v3.15+Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)Signed-off-by Felipe Balbi <[email protected]>---
btw, with this, patches 7 through 10 can be ignored.
Signature · 1 line
balbi
Dmitry Torokhov
maintainerRe: [PATCH v2] input: touchscreen: edt-ft5x06: fix driver autoprobing
In reply to Felipe BalbiQuoted 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 torequest_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]>Cc <[email protected]> # v3.15+Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)Signed-off-by Felipe Balbi <[email protected]>--- drivers/input/touchscreen/edt-ft5x06.c | 3 +++ 1 file changed, 3 insertions(+)drivers/input/touchscreen/edt-ft5x06.c +3
-0@@ -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
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 torequest_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]>Cc <[email protected]> # v3.15+Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)Signed-off-by Felipe Balbi <[email protected]>--- drivers/input/touchscreen/edt-ft5x06.c | 3 +++ 1 file changed, 3 insertions(+)drivers/input/touchscreen/edt-ft5x06.c +3
-0@@ -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.GITHere 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
Dmitry Torokhov
maintainerRe: [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 torequest_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]>Cc <[email protected]> # v3.15+Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)Signed-off-by Felipe Balbi <[email protected]>--- drivers/input/touchscreen/edt-ft5x06.c | 3 +++ 1 file changed, 3 insertions(+)drivers/input/touchscreen/edt-ft5x06.c +3
-0@@ -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.GITHere 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_modulefor 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
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 torequest_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]>Cc <[email protected]> # v3.15+Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)Signed-off-by Felipe Balbi <[email protected]>--- drivers/input/touchscreen/edt-ft5x06.c | 3 +++ 1 file changed, 3 insertions(+)drivers/input/touchscreen/edt-ft5x06.c +3
-0@@ -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.GITHere 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_unloadQuoted 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_modulefor 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
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 torequest_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]>Cc <[email protected]> # v3.15+Fixes dac90dc2 (Input: edt-ft5x06 - add DT support)Signed-off-by Felipe Balbi <[email protected]>--- drivers/input/touchscreen/edt-ft5x06.c | 3 +++ 1 file changed, 3 insertions(+)drivers/input/touchscreen/edt-ft5x06.c +3
-0@@ -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.GITHere 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_unloadQuoted 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_modulefor 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
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 withof_device_idcan autoprobe using OF ids.
Long standing problem. Last one to tackle this was Lee Jones:
PATCH 7/10 arm: boot: dts: am437x-sk: switch over to new edt-ft5306 compatible
In reply to Felipe Balbinow that we have the new vendor-less edt-ft5306i2c_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
@@ -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
PATCH 8/10 arm: boot: dts: imx28-tx28: switch over to new edt-ft5x06 compatible
In reply to Felipe Balbinow that we have the new vendor-less edt-ft5x06i2c_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
@@ -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
PATCH 9/10 arm: boot: dts: imx53-tx53-x03x: switch over to new edt-ft5x06 compatible
In reply to Felipe Balbinow that we have the new vendor-less edt-ft5x06i2c_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
@@ -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
PATCH 10/10 arm: boot: dts: imx6qdl-tx6: switch over to new edt-ft5x06 compatible
In reply to Felipe Balbinow that we have the new vendor-less edt-ft5x06i2c_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
@@ -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