On 6/15/2009 6:07 PM, Mark Brown wrote:
On Mon, Jun 15, 2009 at 04:54:49PM +0900, Joonyoung Shim wrote:
I have one question. Currently, the amp driver of ASoC is included in machine driver. (ex. neo1973_wm8753 machine driver) I want to use the same amp driver in more than one machine driver, but then the same amp driver code exists double in each machine driver.
So, how about spliting between the amp driver and the machine driver? and Is it possible?
Put the generic bits of the amp driver in sound/soc/codecs (there won't be much). At the minute you'll need to glue it in in via the machine driver in the same way that OpenMoko does, there's not really any support for multiple devices in the analouge part of the audio subsystem. This is on my radar to deal with, I have some systems where it is relevant, but it's not there yet.
This is heard me there is no way to split the amp driver from machine driver at the minute.
The lm4857 amp driver is a complete i2c driver seperated in neo1973_wm8753.c. It makes me confused that two complete drivers exist in a same file. The controls of the lm4857 amp driver is depended only by neo1973 machine driver because of registration through init() of snd_soc_dai_link. I considered following some modification to solve this dependency. For example, the amp_init field is added in snd_soc_dai_link struct and the machine driver assigns the init function of amp driver in amp_init field of dai_link, and snd_soc_init_card() calls amp_init() of dai_link as init() call in soc-core.
Is this wrong solution?
Thank you for your reply.