Subject: Re: Initcall ordering

From: Gary Thomas <[email-masked]>
Date: Sat, 24 Apr 2010 08:26:18 -0600

On 04/23/2010 07:24 PM, Wolfram Sang wrote:
> Hi Gary,
>
> (adding linux-i2c)
>
> On Fri, Apr 23, 2010 at 09:56:07AM -0600, Gary Thomas wrote:
>> I'm having trouble with the I2C devices on my 8347 platform.
>> The problem is that I2C device probe() functions are only called
>> once, as the I2C bus is being initialized (in this case fsl_i2c_init())
>> I have 2 devices on this bus, one device gets it's initcall
>> before fsl_i2c_init, the second one does not :-(  This means
>> that the second device is never probed.
>
> Can you try this patch?

No improvement, I'm afraid.

Boot log with initcall_debug=1 attached.  I have 2 devices on I2C-1
   0x48 == tsc2007 touch screen controller
   0x60 == pca9551 LED controller
You can see that the tsc2007 driver gets initialized before the bus
starts, but the pca9551 driver comes too late and never gets probed :-(

Here's the snippet of my device tree:
		i2c@3100 {
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <1>;
			compatible = "fsl-i2c";
			reg = <0x3100 0x100>;
			interrupts = <15 0x8>;
			interrupt-parent = <&ipic>;
			dfsrr;

			ts@01 {
				compatible = "ti,tsc2007";
				reg = <0x48>;
			};

			leds@01 {
				compatible = "philips,leds-pca955x";
				reg = <0x60>;
			};
		};

-- 
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------