Hi, I had faced the same issue with pxa2xx-ac97 driver, just 3-4 months before. My working was with kernel version 2.6.29 & Marvell's PXA270. My problem was solved when i disabled the inclusion of the sound/soc/ pxa/pxa2xx-ac97.c driver, in menuconfig itself. So only the sound/arm/ pxa2xx-ac97.c driver is used in my case, which also communicates with the sound/pci/ac97/ac97_codec.c to perform my codec related operations. I encountered this solution by chance & it is fine with me for playing audio & audio call in android. We need to take care of unmute & volume operation, in android HAL or in driver.
Initially i followed the alsa standard and wrote a machine driver, which maps the platform driver & codec driver. But in the working copy i had to disable the machine driver too, bcoz it was mapped to the sound/soc/pxa/pxa2xx-ac97.c driver. But my doubt in first place is, have you checked for modification/ addition to pxa2xx-ac97 driver for PXA3XX platform since you are using PXA320 & the pxa2xx-ac97 driver. I ask this since i have seen a pxa3xx- ac97 driver for PXA3XX platform, it was along with Marvell's Littleton. Regards, Stan On Aug 23, 4:57 am, "Matt K. Jeon" <mattkj...@gmail.com> wrote: > 2011/8/22 Matt K. Jeon <mattkj...@gmail.com>: > > > Hello All, > > > I am suffering from enabling "pxa2xx-ac97" driver at kernel version 2.6.35. > > There are 2 different points of registering platform drivers in > > different source code; > > - sound/arm/pxa2xx-ac97.c through pxa2xx_ac97_init() > > static struct platform_driver pxa2xx_ac97_driver = { > > .probe = pxa2xx_ac97_driver_probe, > > .remove = __devexit_p(pxa2xx_ac97_remove), > > .driver = { > > .name = "pxa2xx-ac97", > > .owner = THIS_MODULE, > > #ifdef CONFIG_PM > > .pm = &pxa2xx_ac97_pm_ops, > > #endif > > }, > > }; > > > - sound/soc/pxa/pxa2xx-ac97.c through pxa_ac97_init() > > static struct platform_driver pxa2xx_ac97_driver = { > > .probe = pxa2xx_ac97_dev_probe, > > .remove = __devexit_p(pxa2xx_ac97_dev_remove), > > .driver = { > > .name = "pxa2xx-ac97", > > .owner = THIS_MODULE, > > }, > > }; > > > those are the same name of functions and the name of each drivers are > > the same so, > > when try to register the later driver at platform driver, it complains > > that a driver is already registered with the same name at > > > other = driver_find(drv->name, drv->bus); > > if (other) { > > put_driver(other); > > printk(KERN_ERR "Error: Driver '%s' is already registered, " > > "aborting...\n", drv->name); > > return -EBUSY; > > } > > > above code compares 2 drivers with each driver's name!!! > > > Any idea? > > > Of course I had changed the name of one driver to something different > > and the result is fine but in that case DAI (digital audio interface) > > couldn't be registered at device (soc ac97), because DAI registering > > procedure compares the addresses of each drivers not name!!! > > > Thanks in advance, > > Matt -- unsubscribe: android-kernel+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-kernel