On Thu, Feb 26, 2009 at 02:41:54PM +0530, Aggarwal, Anuj wrote: > Since all the five regulators can be controlled using a single i2c > device, I made a single i2c_board_info structure in my platform > specific file and put all the regulator_init_data information there: This is very common - most of the devices that have multiple regulators also have some other subsystems on them (eg, an RTC or a watchdog) and use a core driver in drivers/mfd with the individual functions of the device as child platform drivers so this hasn't come up much. > Now, the problem is in the tps_65023_probe function. Since it will be > called only once as there is only one i2c device, I have to register > all the regulators in that only. But I am not able to communicate the > same to the regulator core layer. Inside the regulator_register(), > variable init_data, which equals to dev->platform_data, is always > pointing to the first array member, which is coming from the evm > specific file. And it fails to register my second regulator instance, > set_consumer_device_supply() specifically failing for the second > iteration. Because of this, the probe function fails. > How should I handle this scenario? Am I missing something in my implementation? Use -next or the regulator git at: git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 There the init data is passed as a parameter to regulator_register() rather than being read from the platform data so the problem goes away. The relevant commit is 8ec143c801ff0514ce92e69aa2f7bd48e73b9baa. [Please fix your mail client to wrap at 80 columns - currently you have no line breaks in paragraphs which makes your mails a bit hard to read and reply to.] -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html