* [PATCH 06/10] input: touchscreen: edt-ft5x06: fix driver autoprobing
[not found] <1416334028-7766-1-git-send-email-balbi@ti.com>
@ 2014-11-18 18:07 ` Felipe Balbi
2014-11-18 18:38 ` Dmitry Torokhov
2014-11-18 18:07 ` [PATCH 07/10] arm: boot: dts: am437x-sk: switch over to new edt-ft5306 compatible Felipe Balbi
` (3 subsequent siblings)
4 siblings, 1 reply; 8+ messages in thread
From: Felipe Balbi @ 2014-11-18 18:07 UTC (permalink / raw)
To: Tony Lindgren
Cc: Linux OMAP Mailing List, Linux ARM Kernel Mailing List,
Felipe Balbi, Lothar Waßmann, Rob Herring, Dmitry Torokhov,
devicetree, linux-input, stable
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 <lw@karo-electronics.de>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: <devicetree@vger.kernel.org>
Cc: <linux-input@vger.kernel.org>
Cc: <stable@vger.kernel.org> # v3.15+
Fixes: dac90dc2 (Input: edt-ft5x06 - add DT support)
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
.../bindings/input/touchscreen/edt-ft5x06.txt | 9 ++++++---
drivers/input/touchscreen/edt-ft5x06.c | 17 ++++++-----------
2 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt b/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt
index 76db967..50bd5d2 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt
@@ -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
diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
index ee3434f..f161ff9 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -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,
--
2.1.0.GIT
--
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
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 07/10] arm: boot: dts: am437x-sk: switch over to new edt-ft5306 compatible
[not found] <1416334028-7766-1-git-send-email-balbi@ti.com>
2014-11-18 18:07 ` [PATCH 06/10] input: touchscreen: edt-ft5x06: fix driver autoprobing Felipe Balbi
@ 2014-11-18 18:07 ` Felipe Balbi
2014-11-18 18:07 ` [PATCH 08/10] arm: boot: dts: imx28-tx28: switch over to new edt-ft5x06 compatible Felipe Balbi
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Felipe Balbi @ 2014-11-18 18:07 UTC (permalink / raw)
To: Tony Lindgren
Cc: Linux OMAP Mailing List, Linux ARM Kernel Mailing List,
Felipe Balbi, devicetree
now that we have the new vendor-less edt-ft5306
i2c_device_id, we can use it
Cc: <devicetree@vger.kernel.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
arch/arm/boot/dts/am437x-sk-evm.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/am437x-sk-evm.dts b/arch/arm/boot/dts/am437x-sk-evm.dts
index 859ff3d..26133cb 100644
--- a/arch/arm/boot/dts/am437x-sk-evm.dts
+++ b/arch/arm/boot/dts/am437x-sk-evm.dts
@@ -404,7 +404,7 @@
edt-ft5306@38 {
status = "okay";
- compatible = "edt,edt-ft5306", "edt,edt-ft5x06";
+ compatible = "edt-ft5306", "edt-ft5x06";
pinctrl-names = "default";
pinctrl-0 = <&edt_ft5306_ts_pins>;
--
2.1.0.GIT
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 08/10] arm: boot: dts: imx28-tx28: switch over to new edt-ft5x06 compatible
[not found] <1416334028-7766-1-git-send-email-balbi@ti.com>
2014-11-18 18:07 ` [PATCH 06/10] input: touchscreen: edt-ft5x06: fix driver autoprobing Felipe Balbi
2014-11-18 18:07 ` [PATCH 07/10] arm: boot: dts: am437x-sk: switch over to new edt-ft5306 compatible Felipe Balbi
@ 2014-11-18 18:07 ` Felipe Balbi
2014-11-18 18:07 ` [PATCH 09/10] arm: boot: dts: imx53-tx53-x03x: " Felipe Balbi
2014-11-18 18:07 ` [PATCH 10/10] arm: boot: dts: imx6qdl-tx6: " Felipe Balbi
4 siblings, 0 replies; 8+ messages in thread
From: Felipe Balbi @ 2014-11-18 18:07 UTC (permalink / raw)
To: Tony Lindgren
Cc: Linux OMAP Mailing List, Linux ARM Kernel Mailing List,
Felipe Balbi, devicetree
now that we have the new vendor-less edt-ft5x06
i2c_device_id, we can use it
Cc: <devicetree@vger.kernel.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
arch/arm/boot/dts/imx28-tx28.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/imx28-tx28.dts b/arch/arm/boot/dts/imx28-tx28.dts
index a5b27c8..5c5c988 100644
--- a/arch/arm/boot/dts/imx28-tx28.dts
+++ b/arch/arm/boot/dts/imx28-tx28.dts
@@ -319,7 +319,7 @@
};
polytouch: edt-ft5x06@38 {
- compatible = "edt,edt-ft5x06";
+ compatible = "edt-ft5x06";
reg = <0x38>;
pinctrl-names = "default";
pinctrl-0 = <&tx28_edt_ft5x06_pins>;
--
2.1.0.GIT
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 09/10] arm: boot: dts: imx53-tx53-x03x: switch over to new edt-ft5x06 compatible
[not found] <1416334028-7766-1-git-send-email-balbi@ti.com>
` (2 preceding siblings ...)
2014-11-18 18:07 ` [PATCH 08/10] arm: boot: dts: imx28-tx28: switch over to new edt-ft5x06 compatible Felipe Balbi
@ 2014-11-18 18:07 ` Felipe Balbi
2014-11-18 18:07 ` [PATCH 10/10] arm: boot: dts: imx6qdl-tx6: " Felipe Balbi
4 siblings, 0 replies; 8+ messages in thread
From: Felipe Balbi @ 2014-11-18 18:07 UTC (permalink / raw)
To: Tony Lindgren
Cc: Linux OMAP Mailing List, Linux ARM Kernel Mailing List,
Felipe Balbi, devicetree
now that we have the new vendor-less edt-ft5x06
i2c_device_id, we can use it
Cc: <devicetree@vger.kernel.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
arch/arm/boot/dts/imx53-tx53-x03x.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/imx53-tx53-x03x.dts b/arch/arm/boot/dts/imx53-tx53-x03x.dts
index 3b73e81..27bf29d 100644
--- a/arch/arm/boot/dts/imx53-tx53-x03x.dts
+++ b/arch/arm/boot/dts/imx53-tx53-x03x.dts
@@ -211,7 +211,7 @@
};
polytouch: edt-ft5x06@38 {
- compatible = "edt,edt-ft5x06";
+ compatible = "edt-ft5x06";
reg = <0x38>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_edt_ft5x06_1>;
--
2.1.0.GIT
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 10/10] arm: boot: dts: imx6qdl-tx6: switch over to new edt-ft5x06 compatible
[not found] <1416334028-7766-1-git-send-email-balbi@ti.com>
` (3 preceding siblings ...)
2014-11-18 18:07 ` [PATCH 09/10] arm: boot: dts: imx53-tx53-x03x: " Felipe Balbi
@ 2014-11-18 18:07 ` Felipe Balbi
4 siblings, 0 replies; 8+ messages in thread
From: Felipe Balbi @ 2014-11-18 18:07 UTC (permalink / raw)
To: Tony Lindgren
Cc: Linux OMAP Mailing List, Linux ARM Kernel Mailing List,
Felipe Balbi, devicetree
now that we have the new vendor-less edt-ft5x06
i2c_device_id, we can use it
Cc: <devicetree@vger.kernel.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
arch/arm/boot/dts/imx6qdl-tx6.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/imx6qdl-tx6.dtsi b/arch/arm/boot/dts/imx6qdl-tx6.dtsi
index f02b80b..5ecf3bf 100644
--- a/arch/arm/boot/dts/imx6qdl-tx6.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-tx6.dtsi
@@ -267,7 +267,7 @@
};
polytouch: edt-ft5x06@38 {
- compatible = "edt,edt-ft5x06";
+ compatible = "edt-ft5x06";
reg = <0x38>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_edt_ft5x06>;
--
2.1.0.GIT
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 06/10] input: touchscreen: edt-ft5x06: fix driver autoprobing
2014-11-18 18:07 ` [PATCH 06/10] input: touchscreen: edt-ft5x06: fix driver autoprobing Felipe Balbi
@ 2014-11-18 18:38 ` Dmitry Torokhov
2014-11-18 19:09 ` Felipe Balbi
0 siblings, 1 reply; 8+ messages in thread
From: Dmitry Torokhov @ 2014-11-18 18:38 UTC (permalink / raw)
To: Felipe Balbi
Cc: Tony Lindgren, Linux OMAP Mailing List,
Linux ARM Kernel Mailing List, Lothar Waßmann, Rob Herring,
devicetree, linux-input, stable
Hi Felipe,
On Tue, Nov 18, 2014 at 12:07:04PM -0600, Felipe Balbi wrote:
> 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?
>
> 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.
--
Dmitry
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 06/10] input: touchscreen: edt-ft5x06: fix driver autoprobing
2014-11-18 18:38 ` Dmitry Torokhov
@ 2014-11-18 19:09 ` Felipe Balbi
2014-11-18 19:21 ` Felipe Balbi
0 siblings, 1 reply; 8+ messages in thread
From: Felipe Balbi @ 2014-11-18 19:09 UTC (permalink / raw)
To: Dmitry Torokhov
Cc: Felipe Balbi, Tony Lindgren, Linux OMAP Mailing List,
Linux ARM Kernel Mailing List, Lothar Waßmann, Rob Herring,
devicetree, linux-input, stable
[-- Attachment #1: Type: text/plain, Size: 2929 bytes --]
On Tue, Nov 18, 2014 at 10:38:47AM -0800, Dmitry Torokhov wrote:
> Hi Felipe,
>
> On Tue, Nov 18, 2014 at 12:07:04PM -0600, Felipe Balbi wrote:
> > 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:
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 2f90ac6..f0dc16e 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -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.
> > 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.
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 06/10] input: touchscreen: edt-ft5x06: fix driver autoprobing
2014-11-18 19:09 ` Felipe Balbi
@ 2014-11-18 19:21 ` Felipe Balbi
0 siblings, 0 replies; 8+ messages in thread
From: Felipe Balbi @ 2014-11-18 19:21 UTC (permalink / raw)
To: Felipe Balbi
Cc: Dmitry Torokhov, Tony Lindgren, Linux OMAP Mailing List,
Linux ARM Kernel Mailing List, Lothar Waßmann, Rob Herring,
devicetree, linux-input, stable
[-- Attachment #1: Type: text/plain, Size: 2830 bytes --]
Hi,
On Tue, Nov 18, 2014 at 01:09:22PM -0600, Felipe Balbi wrote:
> On Tue, Nov 18, 2014 at 10:38:47AM -0800, Dmitry Torokhov wrote:
> > Hi Felipe,
> >
> > On Tue, Nov 18, 2014 at 12:07:04PM -0600, Felipe Balbi wrote:
> > > 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:
>
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index 2f90ac6..f0dc16e 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -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.
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.
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-11-18 19:21 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1416334028-7766-1-git-send-email-balbi@ti.com>
2014-11-18 18:07 ` [PATCH 06/10] input: touchscreen: edt-ft5x06: fix driver autoprobing Felipe Balbi
2014-11-18 18:38 ` Dmitry Torokhov
2014-11-18 19:09 ` Felipe Balbi
2014-11-18 19:21 ` Felipe Balbi
2014-11-18 18:07 ` [PATCH 07/10] arm: boot: dts: am437x-sk: switch over to new edt-ft5306 compatible Felipe Balbi
2014-11-18 18:07 ` [PATCH 08/10] arm: boot: dts: imx28-tx28: switch over to new edt-ft5x06 compatible Felipe Balbi
2014-11-18 18:07 ` [PATCH 09/10] arm: boot: dts: imx53-tx53-x03x: " Felipe Balbi
2014-11-18 18:07 ` [PATCH 10/10] arm: boot: dts: imx6qdl-tx6: " Felipe Balbi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).