From: Ryan Mallon <ryan@bluewatersys.com>
To: Jean Delvare <khali@linux-fr.org>
Cc: David Brownell <david-b@pacbell.net>,
Uli Luckas <u.luckas@road.de>,
Russell King - ARM Linux <linux@arm.linux.org.uk>,
i2c@lm-sensors.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH, RFC] Earlier I2C initialization
Date: Wed, 11 Jun 2008 09:33:55 +1200 [thread overview]
Message-ID: <484EF343.9090102@bluewatersys.com> (raw)
In-Reply-To: <20080610085708.12c2d2a2@hyperion.delvare>
Jean Delvare wrote:
> On Tue, 10 Jun 2008 09:27:34 +1200, Ryan Mallon wrote:
>
>> David Brownell wrote:
>>
>>> On Monday 09 June 2008, Ryan Mallon wrote:
>>>
>>>
>>>>> Talk to i2c and framebuffer people about changing the link order.
>>>>>
>>>>> i2c should really be initialised before framebuffer devices because
>>>>> framebuffer devices tend to want to read DDC from monitors, which is
>>>>> basically a I2C EEPROM in the monitor.
>>>>>
>
> This is already the case. i2c-core is initialized with
> subsys_initcall(), so it's available to all drivers initialized with
> module_init().
>
>
>>>>> ... but there's probably some reason why it's done the way it is today,
>>>>> and changing it could well cause stuff to break.
>>>>>
>>>>>
>>>> We have made i2c the first driver subsystem to come up in our 2.6.20
>>>> kernel since we use i2c io expanders for power domain control. All we
>>>> did was change drivers/Makefile so that obj-$(CONFIG_I2C) += i2c/ is at
>>>> the very top of the file. We didn't have any problems with doing this.
>>>> YMMV of course.
>>>>
>
> Why don't you simply initialize the drivers in question with
> subsys_initcall()? That's what i2c-pnx, i2c-omap, i2c-davinci and
> tps65010 are doing at the moment.
>
>
How does this work for embedded devices where the same architecture is
used in many different configurations? For example, we have a PXA270
setup where we need i2c early, but many other PXA setups do not, so
making i2c-pxa subsys_initcall to support a single board is maybe the
wrong way to go?
>>> OMAP does much the same thing, for the same reason, and the I2C
>>> adapter gets initialized earlier too (so power management chips
>>> will be fully usable before driver_initcall code runs).
>>>
>>> Unless there's a downside on x86, I'd just suggest someone submit
>>> a patch moving I2C init "early" so it merges in 2.6.27 ... cc to
>>> LKML to scare out more potential problems, but I have a hard time
>>> imagining there'd really be any.
>>>
>> Okay, heres the patch. Is untested though (other than our experience
>> under 2.6.20), so it probably needs some people to test. I'm not
>> subscribed to LKML, so can people CC me if necessary.
>>
>> Signed-off-by: Ryan Mallon <ryan@bluewatersys.com>
>>
>> diff --git a/drivers/Makefile b/drivers/Makefile
>> index f65deda..9eaf236 100644
>> --- a/drivers/Makefile
>> +++ b/drivers/Makefile
>> @@ -5,6 +5,7 @@
>> # Rewritten to use lists instead of if-statements.
>> #
>>
>> +obj-y += i2c/
>> obj-$(CONFIG_HAVE_GPIO_LIB) += gpio/
>>
>
> Some i2c bus drivers bit-bang GPIO pins...
>
>
>> obj-$(CONFIG_PCI) += pci/
>>
>
> ... and many are PCI devices, so will this work OK?
>
Probably not :-). I didn't have hardware to test, it was just easy
to put together the patch. I figured a change like this would
require extensive testing anyway, since it is bound to break
some obscure setup at least.
I still think that possibly a better solution is to allow the link
order for the driver subsystems to be configured somehow. At least
for the embedded space this is useful if a particular board has
some dependency on i2c, spi or some other subsystem being available
early on, then it can be configured on a per board basis, rather
than per arch, or per driver.
I'm not sure how to accomplish this though, I don't think Kconfig
lends it self to this sort of thing very well, and I don't
understand the kernel build process well enough to attempt it
myself.
~Ryan
next prev parent reply other threads:[~2008-06-10 21:33 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200806091541.43899.u.luckas@road.de>
[not found] ` <20080609135739.GE30971@flint.arm.linux.org.uk>
[not found] ` <484D947D.1090900@bluewatersys.com>
[not found] ` <484D947D.1090900-7Wk5F4Od5/oYd5yxfr4S2w@public.gmane.org>
2008-06-09 20:59 ` Earlier I2C initialization David Brownell
[not found] ` <200806091359.12791.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-06-09 21:27 ` [PATCH, RFC] " Ryan Mallon
2008-06-09 21:27 ` Ryan Mallon
2008-06-10 6:57 ` Jean Delvare
2008-06-10 20:55 ` David Brownell
[not found] ` <200806101355.07792.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-06-11 8:11 ` Jean Delvare
2008-06-11 8:11 ` Jean Delvare
2008-06-11 9:00 ` Russell King - ARM Linux
[not found] ` <20080611090016.GA5338-f404yB8NqCZvn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2008-06-11 9:14 ` Jean Delvare
2008-06-11 9:14 ` Jean Delvare
2008-06-11 18:31 ` David Brownell
2008-06-12 18:44 ` Jean Delvare
2008-06-12 19:57 ` David Brownell
2008-06-24 17:06 ` Jean Delvare
[not found] ` <20080611101130.1a667abe-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-11 20:23 ` Ryan Mallon
2008-06-11 20:23 ` Ryan Mallon
[not found] ` <48503432.6010105-7Wk5F4Od5/oYd5yxfr4S2w@public.gmane.org>
2008-06-11 12:05 ` Jean Delvare
2008-06-11 12:05 ` Jean Delvare
2008-06-10 21:33 ` Ryan Mallon [this message]
2008-06-10 9:46 ` Uli Luckas
2008-06-11 3:12 ` Ryan Mallon
2008-06-11 7:40 ` Jean Delvare
2008-06-11 20:13 ` Ryan Mallon
[not found] ` <485031D5.3020606-7Wk5F4Od5/oYd5yxfr4S2w@public.gmane.org>
2008-06-11 12:18 ` Jean Delvare
2008-06-11 12:18 ` Jean Delvare
2008-06-11 20:27 ` David Brownell
2008-06-11 20:54 ` Jean Delvare
2008-06-11 21:24 ` Ryan Mallon
[not found] ` <485042A6.3030705-7Wk5F4Od5/oYd5yxfr4S2w@public.gmane.org>
2008-06-24 16:39 ` Jean Delvare
2008-06-24 16:39 ` Jean Delvare
2008-06-26 21:12 ` Ryan Mallon
2008-06-27 10:41 ` Jean Delvare
2008-06-29 20:34 ` Ryan Mallon
2008-06-11 21:31 ` Maciej W. Rozycki
2008-06-12 20:21 ` David Brownell
[not found] ` <20080611094039.287ac136-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-11 20:13 ` Ryan Mallon
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=484EF343.9090102@bluewatersys.com \
--to=ryan@bluewatersys.com \
--cc=david-b@pacbell.net \
--cc=i2c@lm-sensors.org \
--cc=khali@linux-fr.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=u.luckas@road.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.