On Mon, Feb 02, 2009 at 03:22:05PM +0530, Manikandan Pillai wrote: > +int omap_i2c_register_child(struct platform_device *pdev_parent, > + const char *name, struct platform_device **pdev) > +{ > + (*pdev)->dev.parent = &pdev_parent->dev; > + if (!strcmp(name, "vdd2_consumer")) > + (*pdev)->dev.platform_data = &vdd2_tps_regulator_data; > + else if (!strcmp(name, "vdd1_consumer")) > + (*pdev)->dev.platform_data = &vdd1_tps_regulator_data; With a name like that this function shouldn't have this sort of device specific stuff in it. I'm really not clear what you're trying to do here so it's difficult to comment in any detail. > + /* Initialize the regulator consumer platform devices here */ > + pdev = &omap_i2c_devices[0]; > + omap_i2c_register_child(pdev, "vdd2_consumer", \ > + &vdd2_platform_device); > + omap_i2c_register_child(pdev, "vdd1_consumer", \ > + &vdd1_platform_device); > + tps62352_core_consumers.dev = &vdd2_platform_device->dev; > + tps62352_mpu_consumers.dev = &vdd1_platform_device->dev; The concerns previously raised by myself and David still appear to exist here: you shouldn't be adding platform devices as children of the I2C controller like this and the "vdd1_consumer" and "vdd2_consumer" names look very suspicious - I'd be surprised to see someone adding a device driver with either name. Given the large number of interations this has been through I feel it would be better if you were to remove configuration of the consumers from this patch and then add it in later along with the code for the consumer devices. I expect that review of the drivers for the consumer devices is likely to also address the issues here. > #define OMAP_I2C_SIZE 0x3f > #define OMAP1_I2C_BASE 0xfffb3800 > @@ -69,7 +71,7 @@ static struct resource i2c_resources[][2] = { > } > > static u32 i2c_rate[ARRAY_SIZE(i2c_resources)]; > -static struct platform_device omap_i2c_devices[] = { > +struct platform_device omap_i2c_devices[] = { > I2C_DEV_BUILDER(1, i2c_resources[0], &i2c_rate[0]), > #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) > I2C_DEV_BUILDER(2, i2c_resources[1], &i2c_rate[1]), You should not need to do this. > diff --git a/drivers/regulator/tps6235x-regulator.c b/drivers/regulator/tps6235x-regulator.c > index f10fae6..36e6fcf 100644 > --- a/drivers/regulator/tps6235x-regulator.c > +++ b/drivers/regulator/tps6235x-regulator.c > @@ -82,12 +82,12 @@ static inline int tps_6235x_write_reg(struct tps *tps, u8 reg, u8 val) As previously mentioned you should merge this in with the regulator patch if it is required. Either this patch is broken or the regulator driver is quite clearly broken without this patch. -- 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