From: Yadi <yadi.hu@windriver.com>
To: Wolfram Sang <wsa@the-dreams.de>, Jean Delvare <jdelvare@suse.de>
Cc: linux-i2c@vger.kernel.org
Subject: Re: [PATCH] i2c-eg20t: use dynamically registered adapter number
Date: Mon, 19 Sep 2016 11:25:58 +0800 [thread overview]
Message-ID: <57DF5AC6.4050504@windriver.com> (raw)
In-Reply-To: <20160917214912.GA4395@katana>
On 2016年09月18日 05:49, Wolfram Sang wrote:
>>> The eg20t driver uses i2c_add_numbered_adapter() to register adapter:
>>>
>>> pch_adap->nr = i;
>>> ret = i2c_add_numbered_adapter(pch_adap);
>>>
>>> Variable i is assigned to 0, it means that i2c_eg20t is the first adapter
>>> by default. if another adapter registers before eg20t, above code return
>>> error for index conflict:
>>>
>>> i2c_eg20t 0000:05:0c.2: pch_i2c_probe :i2c_add_adapter[ch:0] FAILED
>>> i2c_eg20t: probe of 0000:05:0c.2 failed with error -16
>>>
>>> So, we can replace i2c_add_numbered_adapter() with i2c_add_adapter()
>>> interface.since it dynamically allocates the index number.
>> This does the exact opposite of:
>>
>> commit 07e8a51ff68353e01d795cceafbac9f54c49132b
>> Author: Feng Tang <feng.tang@intel.com>
>> Date: Thu Jan 12 15:38:02 2012 +0800
>>
>> i2c-eg20t: use i2c_add_numbered_adapter to get a fixed bus number
> We have the same problem with i2c-pasemi:
> http://www.spinics.net/lists/linux-i2c/msg25761.html
>
> PCI + i2c_add_numbered_adapter + another device adding i2c busses
>
> And we cannot simply change back to i2c_add_adapter() because it will
> regress on those systems which originally wanted to have
> i2c_add_numbered_adapter().
I think the is one totally different issue with i2c-pasemi, in which
PCI device prior to probed occupied bus number supposed to be used by
i2c-pasemi.
For my case, i2c-kempld register dynamically itself by default,
consequently it would occupied i2c bus 0 and cause to fails for adding
new i2c bus with i2c_add_number_adpater(0).
although i2c-kempld provide variable 'i2c_bus' to control bus
assignment, it isso inconvenient we have to manually modify it to avoid
possible conflict. so the reasonable solution looks like:
i2c-kempld.c
i2c->adap.nr = i2c_bus;
if (i2c_bus >= -1) /* using pci id to register if default=-1
for dynamic assignment*/
i2c->adap.n = pdev->id;
ret = i2c_add_numbered_adapter(&i2c->adap);
how do you like it?
Yadi
>
>> Looking at
>>
>> commit 03bde7c31a360f814ca42101d60563b1b803dca1
>> Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
>> Date: Thu Mar 12 17:17:59 2015 +0100
>>
>> i2c: busses with dynamic ids should start after fixed ids for DT
>>
>> it could be that you need to set some OF attribute to reserve i2c bus
>> numbers <= 1 for static usage. Assuming you use OF. Or is it automatic,
>> Wolfram?
> No, you need to define an alias in the devicetree. I don't think this
> platform is a DT user, though?
>
>> If not, it may make sense to add a helper function exposing
>> __i2c_first_dynamic_bus_num to drivers (something like
>> i2c_is_dynamic_bus_num().) After all, i2c_add_numbered_adapter() mostly
>> makes sense if static i2c device definitions exist. If not,
>> i2c_add_adapter() is just as good. So something like:
>>
>> if (i2c_is_dynamic_bus_num(i))
>> ret = i2c_add_adapter(pch_adap);
>> else {
>> pch_adap->nr = i;
>> ret = i2c_add_numbered_adapter(pch_adap);
>> }
>>
>> may make sense. Unless someone has a better idea.
> Interesting idea. Need to think about it some more. I didn't have a
> proper solution so far...
>
> Thanks,
>
> Wolfram
>
next prev parent reply other threads:[~2016-09-19 3:26 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-23 9:05 [PATCH] i2c-eg20t: use dynamically registered adapter number Yadi Hu
2016-08-26 15:30 ` Jean Delvare
2016-09-02 9:44 ` Yadi
2016-09-17 21:49 ` Wolfram Sang
2016-09-19 3:25 ` Yadi [this message]
2016-09-19 6:44 ` Wolfram Sang
2016-09-18 19:22 ` Wolfram Sang
2016-09-19 9:02 ` Jean Delvare
2016-09-20 15:48 ` Jean Delvare
-- strict thread matches above, loose matches on Subject: below --
2016-08-23 8:55 Yadi Hu
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=57DF5AC6.4050504@windriver.com \
--to=yadi.hu@windriver.com \
--cc=jdelvare@suse.de \
--cc=linux-i2c@vger.kernel.org \
--cc=wsa@the-dreams.de \
/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.