Jon Smirl wrote:
I've been out of the loop for a few months working on something else. I just looked at this driver. My understanding of the fabric driver is different than the way you implemented it.
Well, my fabric driver does work, so it can't be that different. :-)
I thought the fabric driver would only contain the essence of code specific to the board.
No, the fabric driver also tells ASoC how the other three drivers are connected. That is, it tells ASoC "please connect SSI1 to the codec at address 4F, and here's the DMA information that the SSI driver needs".
In my model a lot of the code in your fabric driver would be pushed into the ssi driver. So if you used ssi and a codec in the standard manner, the board wouldn't need a fabric driver at all. That would probably be the case for most AC97/HDA systems.
The SSI driver is only concerned with talking to an SSI. I don't see how you could get away with no fabric driver. That just isn't the model.
My fabric driver contains code for hooking processor GPIOs up to the codec, initializing an external clock generator, etc. All of the code for parsing the device tree and setting up DMA is in the ssi driver.
That's how my driver *used* to be. With ASoC V2, I chose to move some of that code from the SSI driver into the fabric driver. It just makes more sense to me.