From: Felipe Balbi <balbi@ti.com>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: "Felipe Balbi" <balbi@ti.com>, "Tony Lindgren" <tony@atomide.com>,
"Linux OMAP Mailing List" <linux-omap@vger.kernel.org>,
"Linux ARM Kernel Mailing List"
<linux-arm-kernel@lists.infradead.org>,
"Lothar Waßmann" <lw@karo-electronics.de>,
"Rob Herring" <robh+dt@kernel.org>,
devicetree@vger.kernel.org, linux-input@vger.kernel.org,
stable@vger.kernel.org
Subject: Re: [PATCH 06/10] input: touchscreen: edt-ft5x06: fix driver autoprobing
Date: Tue, 18 Nov 2014 13:09:22 -0600 [thread overview]
Message-ID: <20141118190922.GL6179@saruman> (raw)
In-Reply-To: <20141118183847.GE3003@dtor-ws>
[-- 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 --]
WARNING: multiple messages have this Message-ID (diff)
From: balbi@ti.com (Felipe Balbi)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 06/10] input: touchscreen: edt-ft5x06: fix driver autoprobing
Date: Tue, 18 Nov 2014 13:09:22 -0600 [thread overview]
Message-ID: <20141118190922.GL6179@saruman> (raw)
In-Reply-To: <20141118183847.GE3003@dtor-ws>
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
-------------- 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>
next prev parent reply other threads:[~2014-11-18 19:09 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-18 18:06 [PATCH 01/10] arm: omap: omap2plus_defconfig: remove unwanted ethernet drivers Felipe Balbi
2014-11-18 18:06 ` Felipe Balbi
2014-11-18 18:07 ` [PATCH 02/10] arm: omap: omap2plus_defconfig: enable EDT FT5X06 touchscreen Felipe Balbi
2014-11-18 18:07 ` Felipe Balbi
2014-11-18 18:07 ` [PATCH 03/10] arm: omap: omap2plus_defconfig: enable AM33XX SoC sound Felipe Balbi
2014-11-18 18:07 ` Felipe Balbi
2014-11-18 18:07 ` [PATCH 04/10] arm: omap: omap2plus_defconfig: enable XHCI Felipe Balbi
2014-11-18 18:07 ` Felipe Balbi
2014-11-18 18:07 ` [PATCH 05/10] arm: omap: omap2plus_defconfig: enable ECAP and EHRPWM Felipe Balbi
2014-11-18 18:07 ` Felipe Balbi
2014-11-22 0:31 ` Tony Lindgren
2014-11-22 0:31 ` Tony Lindgren
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:38 ` Dmitry Torokhov
2014-11-18 18:38 ` Dmitry Torokhov
2014-11-18 19:09 ` Felipe Balbi [this message]
2014-11-18 19:09 ` Felipe Balbi
2014-11-18 19:21 ` Felipe Balbi
2014-11-18 19:21 ` Felipe Balbi
2014-11-18 19:27 ` [PATCH v2] " Felipe Balbi
2014-11-18 19:37 ` Felipe Balbi
2014-11-18 19:59 ` Dmitry Torokhov
2014-11-18 20:03 ` Felipe Balbi
2014-11-18 20:14 ` Dmitry Torokhov
2014-11-18 20:19 ` Felipe Balbi
2014-11-22 1:05 ` Felipe Balbi
2014-11-22 9:06 ` Wolfram Sang
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 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 09/10] arm: boot: dts: imx53-tx53-x03x: " Felipe Balbi
2014-11-18 18:07 ` Felipe Balbi
2014-11-18 18:07 ` [PATCH 10/10] arm: boot: dts: imx6qdl-tx6: " Felipe Balbi
2014-11-18 18:07 ` Felipe Balbi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20141118190922.GL6179@saruman \
--to=balbi@ti.com \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=lw@karo-electronics.de \
--cc=robh+dt@kernel.org \
--cc=stable@vger.kernel.org \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.