From: Wolfram Sang <wsa@the-dreams.de>
To: Lee Jones <lee.jones@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, kernel@stlinux.com,
grant.likely@linaro.org, linux-i2c@vger.kernel.org,
devicetree@vger.kernel.org, linus.walleij@linaro.org
Subject: Re: [PATCH 2/8] i2c: Add the ability to match device to compatible string without an of_node
Date: Fri, 12 Sep 2014 15:46:48 +0200 [thread overview]
Message-ID: <20140912134648.GF1930@katana> (raw)
In-Reply-To: <1409236538-21274-3-git-send-email-lee.jones@linaro.org>
[-- Attachment #1: Type: text/plain, Size: 2202 bytes --]
On Thu, Aug 28, 2014 at 03:35:32PM +0100, Lee Jones wrote:
> A great deal of I2C devices are currently matched via DT node name, and
> as such the compatible naming convention of '<vendor>,<device>' has gone
> somewhat awry - some nodes don't supply one, some supply an arbitrary
> string and others the correct device name with an arbitrary vendor prefix.
>
> In an effort to correct this problem we have to supply a mechanism to
> match a device by compatible string AND by simple device name. This
> function strips off the '<vendor>,' part of a supplied compatible string
> and attempts to match without it.
>
> The plan is to remove this function once all of the compatible strings
> for each device have been brought into line.
Is this really the plan? I mean, the old matching mechanism has been out
there for ages and I dunno how many already deployed DTs depend on it.
I'd think we need to keep this around forever.
>
> Acked-by: Grant Likely <grant.likely@linaro.org>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> ---
> drivers/i2c/i2c-core.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index d3c8e9f..eb46d15 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -1095,6 +1095,27 @@ struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node *node)
> return i2c_verify_adapter(dev);
> }
> EXPORT_SYMBOL(of_find_i2c_adapter_by_node);
> +
> +static const struct of_device_id*
> +i2c_of_match_device_strip_vendor(const struct of_device_id *matches,
> + struct i2c_client *client)
> +{
> + const char *name;
> +
> + for (; matches->compatible[0]; matches++) {
> + name = strchr(matches->compatible, ',');
> + if (!name)
> + name = matches->compatible;
> + else
> + name++;
> +
> + if (!strnicmp(client->name, name, strlen(client->name)))
Are compatible-properties case-independent? I though they were not.
> + return matches;
> + }
> +
> + return NULL;
> +}
> +
> #else
> static void of_i2c_register_devices(struct i2c_adapter *adap) { }
> #endif /* CONFIG_OF */
> --
> 1.9.1
>
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: wsa@the-dreams.de (Wolfram Sang)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/8] i2c: Add the ability to match device to compatible string without an of_node
Date: Fri, 12 Sep 2014 15:46:48 +0200 [thread overview]
Message-ID: <20140912134648.GF1930@katana> (raw)
In-Reply-To: <1409236538-21274-3-git-send-email-lee.jones@linaro.org>
On Thu, Aug 28, 2014 at 03:35:32PM +0100, Lee Jones wrote:
> A great deal of I2C devices are currently matched via DT node name, and
> as such the compatible naming convention of '<vendor>,<device>' has gone
> somewhat awry - some nodes don't supply one, some supply an arbitrary
> string and others the correct device name with an arbitrary vendor prefix.
>
> In an effort to correct this problem we have to supply a mechanism to
> match a device by compatible string AND by simple device name. This
> function strips off the '<vendor>,' part of a supplied compatible string
> and attempts to match without it.
>
> The plan is to remove this function once all of the compatible strings
> for each device have been brought into line.
Is this really the plan? I mean, the old matching mechanism has been out
there for ages and I dunno how many already deployed DTs depend on it.
I'd think we need to keep this around forever.
>
> Acked-by: Grant Likely <grant.likely@linaro.org>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> ---
> drivers/i2c/i2c-core.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index d3c8e9f..eb46d15 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -1095,6 +1095,27 @@ struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node *node)
> return i2c_verify_adapter(dev);
> }
> EXPORT_SYMBOL(of_find_i2c_adapter_by_node);
> +
> +static const struct of_device_id*
> +i2c_of_match_device_strip_vendor(const struct of_device_id *matches,
> + struct i2c_client *client)
> +{
> + const char *name;
> +
> + for (; matches->compatible[0]; matches++) {
> + name = strchr(matches->compatible, ',');
> + if (!name)
> + name = matches->compatible;
> + else
> + name++;
> +
> + if (!strnicmp(client->name, name, strlen(client->name)))
Are compatible-properties case-independent? I though they were not.
> + return matches;
> + }
> +
> + return NULL;
> +}
> +
> #else
> static void of_i2c_register_devices(struct i2c_adapter *adap) { }
> #endif /* CONFIG_OF */
> --
> 1.9.1
>
-------------- 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/20140912/b13801fa/attachment-0001.sig>
next prev parent reply other threads:[~2014-09-12 13:46 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-28 14:35 [PATCH RESEND 0/8] i2c: Relax mandatory I2C ID table passing Lee Jones
2014-08-28 14:35 ` Lee Jones
2014-08-28 14:35 ` Lee Jones
2014-08-28 14:35 ` [PATCH 1/8] i2c: Add pointer dereference protection to i2c_match_id() Lee Jones
2014-08-28 14:35 ` Lee Jones
2014-08-28 14:35 ` [PATCH 3/8] i2c: Match using traditional OF methods, then by vendor-less compatible strings Lee Jones
2014-08-28 14:35 ` Lee Jones
2014-08-28 14:35 ` [PATCH 4/8] i2c: Make I2C ID tables non-mandatory for DT'ed devices Lee Jones
2014-08-28 14:35 ` Lee Jones
[not found] ` <1409236538-21274-1-git-send-email-lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-08-28 14:35 ` [PATCH 2/8] i2c: Add the ability to match device to compatible string without an of_node Lee Jones
2014-08-28 14:35 ` Lee Jones
2014-08-28 14:35 ` Lee Jones
2014-09-12 13:46 ` Wolfram Sang [this message]
2014-09-12 13:46 ` Wolfram Sang
2014-08-28 14:35 ` [PATCH 5/8] i2c: Export i2c_match_id() for direct use by device drivers Lee Jones
2014-08-28 14:35 ` Lee Jones
2014-08-28 14:35 ` Lee Jones
2014-08-28 14:35 ` [PATCH 8/8] mfd: as3722: Rid driver of superfluous I2C device ID structure Lee Jones
2014-08-28 14:35 ` Lee Jones
2014-08-28 14:35 ` Lee Jones
2014-08-29 8:45 ` [PATCH RESEND 0/8] i2c: Relax mandatory I2C ID table passing Wolfram Sang
2014-08-29 8:45 ` Wolfram Sang
2014-08-29 8:45 ` Wolfram Sang
2014-08-29 8:58 ` Lee Jones
2014-08-29 8:58 ` Lee Jones
2014-08-29 8:58 ` Lee Jones
2014-09-12 13:46 ` Wolfram Sang
2014-09-12 13:46 ` Wolfram Sang
2014-09-12 13:46 ` Wolfram Sang
2014-09-12 17:32 ` Javier Martinez Canillas
2014-09-12 17:32 ` Javier Martinez Canillas
2014-09-12 17:32 ` Javier Martinez Canillas
2014-09-15 22:46 ` Lee Jones
2014-09-15 22:46 ` Lee Jones
2014-09-16 8:00 ` Javier Martinez Canillas
2014-09-16 8:00 ` Javier Martinez Canillas
2014-08-28 14:35 ` [PATCH 6/8] i2c: Provide a temporary .probe2() call-back type Lee Jones
2014-08-28 14:35 ` Lee Jones
[not found] ` <1409236538-21274-7-git-send-email-lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-09-12 13:50 ` Wolfram Sang
2014-09-12 13:50 ` Wolfram Sang
2014-09-12 13:50 ` Wolfram Sang
2014-08-28 14:35 ` [PATCH 7/8] mfd: 88pm860x: Move over to new I2C device .probe() call Lee Jones
2014-08-28 14:35 ` Lee Jones
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=20140912134648.GF1930@katana \
--to=wsa@the-dreams.de \
--cc=devicetree@vger.kernel.org \
--cc=grant.likely@linaro.org \
--cc=kernel@stlinux.com \
--cc=lee.jones@linaro.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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.