Hi Konstantin, On 15 November 2016 at 06:56, Konstantin Porotchkin <kos...@gmail.com> wrote: > Hi, All, > > I am currently porting the Marvell (mvebu) pin control driver for Armada-8K > family to the current u-boot sources. > The Armada 8K SoC is a hybrid chip that contains several interconnected > dies in a single package. > Each such device (AP, CP0, CP1) has an independent pin controller with > different memory mapping. > The DTS for such configuration looks like the following: > / { > ap806 { > config-space { > pinctl: pinctl@6F4000 { > ... > }; > }; > }; > cp110-master { > config-space { > cpm_pinctl: pinctl@44000 { > ... > }; > }; > }; > cp110-slave { > config-space { > cps_pinctl: pinctl@44000 { > ... > }; > }; > }; > }; > > I expect that my driver "probe" method will be called 3 times - one for > every controller. > However, according to my test, only the first controller is probed > (pinctl@6F4000). > Two others are listed in the DM tree, but are not active (not probed). > > I can do a trick and sequentially call uclass_get_device() function for > the UCLASS_PINCTRL type, causing all 3 controller to be probed and > activated. > However I think this is not the way it should work. > Is my assumption wrong and such hybrid devices should use the above trick > for bringing up all controllers in the package?
They should be activated automatically by devices that use them. This is the pinctrl-0 property in the device. Can you take a look at why that is not working? Specifically, see pinctrl_select_state() in device_probe(). Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot