On 02/03/11 09:03, ext Andres Salomon wrote:
I believe some drivers are even using the parent device already. See drivers/leds/leds-mc13783.c, for example, whose parent device drvdata is used to pass around a struct mc13783 to its children. Sounds like a possibility, will need to look into it further.
I briefly looked at the drivers/leds/leds-mc13783.c, and the related drivers/mfd/mc13xxx.c drivers. This also uses the same way to pass the needed platform data to it's child devices, as the twl4030 (audio/codec/vibra) MFD does. Also the leds-mc13783.c does not actually uses any config values from the parent dev. The mc13783_led->master is needed to be locally stored, since the led driver calls functions from the MFD core, which needs that as parameter.
I don't really see any need to change the drivers in this regard, however it would be nicer, if we replace for example the: struct twl4030_codec_data *pdata = pdev->dev.platform_data; with struct twl4030_codec_data *pdata = dev_get_platdata(&pdev->dev);
The information passed to the vibra, and ASoC codec driver is for them only, so there is no need for the vibra driver to know anything about things, which concerns only the ASoC codec driver.