Jon Smirl wrote:
For this model to work you need to split your driver. fsl-ssi and mpc8610_hpcd need to be in two separate drivers.
They are two separate drivers. sound/soc/fsl/fsl_ssi.c and sound/soc/fsl/mpc8610_hpcd.c
fsl-ssi is easy enough to load since it has a device tree entry.
mpc8610_hpcd is the harder one to load since it doesn't have a device tree entry. What you want to do it match on the compatible field of the root node.
static struct of_device_id fabric_of_match[] = { { .compatible = "fsl,MPC8610HPCD", }, {}, };
But this doesn't work since the root is the device tree isn't passed down into the device probe code. (Could this be fixed?)
I don't understand that sentence. Is there a typo?
Instead we could make the separated mpc8610_hpcd fabric driver attach to fsl,ssi.
static struct of_device_id fabric_of_match[] = { { .compatible = "fsl,ssi", }, {}, };
Then in it's probe code check for the right platform.
That's what I do. I attach to fsl,ssi, gather the information from the device tree, and then call a private API to initialize the SSI driver.