Jon Smirl wrote:
The drivers are creating their own platform devices. Constructing them in the driver builds in the assumption that if the driver is loaded, then the devices are present. But that's not right in my case, I have four fabric drivers built in and I only want one of them active.
You have two choices:
1) Load all drivers. In each driver's __init section, let it determine whether it should load or not. If not, it can fail silently. Off the top of my head, I don't remember how to do that.
2) Use the Kernel Module Loader to dynamically load the module you want. I don't know how this works either.
The devices are being created in the wrong place. So instead of my proposal of reading the platform name out of the device tree and loading the driver from fsl_ssi, in Timur's case the fabric device should be created in arch/powerpc/platforms/86xx/mpc8610_hpcd.c. PowerPC is already capable of making the codec device from the device tree.
True, but I chose to keep it in sound/soc/fsl so that I wouldn't have to push 3 drivers to alsa-devel and one driver to linuxppc-dev.