Jon Smirl wrote:
I'd like for the fabric driver to be dynamically loaded by the device tree.
You have a PPC problem, not an ASoC problem. You're trying to use the device tree to load a device without specifying a specific node. This is particularly difficult with device trees because once a driver has claimed a node via a probe, that node isn't probed again. So you can't use any I2S, DMA, or codec nodes.
The root of my problem is that I want to handle my four board variants with a single kernel. So when the kernel loads, I need to figure out which board specific code to load. In the current ASOC design it is assumed that this code is permanently linked in as a platform driver.
Not with ASoC V2. I load my fabric driver as a regular module. It also doesn't matter what order I load the drivers in. Once the fourth driver is loaded, ASoC does its magic and creates a sound card (or two) for me.
So do what I did: deal with the limitations of ASoC V1 as best you can, and port your driver to ASoC V2.