The AC'97 support has had a special role within the ASoC framework with it being (in contrast to other audio buses) tightly integrated into the core. This patch series creates a clean separation between the core and the AC'97 support making AC'97 from the point of view of the core just another bus. Some of the changes in this series are required for the upcoming conversion of the AC'97 drivers to regmap, the other changes just fit nicely with the idea of componentization and having a generic ASoC core.
The series starts with moving AC'97 support to its own file and doing a few general cleanups. After that it drops support of two features which were mainly responsible for the tight integration but are seemingly unused. This is a) Delaying the initialization and registration of the AC'97 device until after the card has been registered. There doesn't seem to be a good reason to delay to registration, all the information we need to register the device is available at the time when the device is created. Furthermore this will be needed for regmap. b) Setting platform data for the AC'97 via the CPU DAI. This hasn't been used in the last 5 years and doesn't seem to be that useful in general.
If we should ever have a need for those features again they can still be implemented on top of the current code while keeping the clean separation. But for the time being it is simpler to just drop unused code rather than restructuring it.
Finally the series pushes the pointer to the AC'97 device from the snd_soc_codec struct out to the driver private structs.
Depends on asoc/topic/ad1980, asoc/topic/wm9705 and asoc/topic/wm971x
- Lars
Lars-Peter Clausen (11): ASoC: mpc5200_psc_ac97: Remove unused on-stack snd_ac97 device ASoC: mpc5200_dma: Don't overwrite ac97 device private_data ASoC: Properly handle AC'97 device lifetime management ASoC: Move AC'97 support to its own file ASoC: ac97: Use static ac97_bus ASoC: ac97: Merge soc_ac97_dev_{un,}register()/soc_{un,}register_ac97_codec() ASoC: ac97: Drop support for setting platform data via the CPU DAI ASoC: ac97: Drop delayed device registration ASoC: Drop ac97_control initialization from CODEC driver DAIs ASoC: Rename snd_soc_dai_driver struct ac97_control field to bus_control ASoC: ac97: Push snd_ac97 pointer to the driver level
include/sound/soc-dai.h | 4 +- include/sound/soc.h | 25 ++- sound/soc/Makefile | 4 + sound/soc/au1x/ac97c.c | 2 +- sound/soc/au1x/psc-ac97.c | 2 +- sound/soc/blackfin/bf5xx-ac97.c | 2 +- sound/soc/cirrus/ep93xx-ac97.c | 2 +- sound/soc/codecs/ac97.c | 18 +- sound/soc/codecs/ad1980.c | 28 +-- sound/soc/codecs/stac9766.c | 40 +++-- sound/soc/codecs/wm9705.c | 32 ++-- sound/soc/codecs/wm9712.c | 33 ++-- sound/soc/codecs/wm9713.c | 32 ++-- sound/soc/fsl/fsl_ssi.c | 2 +- sound/soc/fsl/imx-ssi.c | 2 +- sound/soc/fsl/mpc5200_dma.c | 3 - sound/soc/fsl/mpc5200_psc_ac97.c | 6 +- sound/soc/nuc900/nuc900-ac97.c | 2 +- sound/soc/pxa/pxa2xx-ac97.c | 6 +- sound/soc/samsung/ac97.c | 4 +- sound/soc/sh/hac.c | 2 +- sound/soc/soc-ac97.c | 256 +++++++++++++++++++++++++++ sound/soc/soc-core.c | 372 ++------------------------------------- sound/soc/tegra/tegra20_ac97.c | 2 +- sound/soc/txx9/txx9aclc-ac97.c | 2 +- 25 files changed, 428 insertions(+), 455 deletions(-) create mode 100644 sound/soc/soc-ac97.c