Hi
The main problem is about sysclk: when there is no clock in the DT, you get the clock of the CPU or CODEC DAI. In my system, two clocks are declared in the controller CPU DAI, but there is no .set_sysclk pointer. So, snd_soc_dai_set_sysclk() returns -EINVAL and the card is not created.
set_sysclk() should be returning -ENOTSUPP in this case as with set_fmt() and the generic code then ignoring that error.
As I don't know why you need these fmt and sysclk, may you have a look at these problems?
The overwhelming majority of combinations of devices need a format specifying (usually one will be imposed by the system design even if both devices could be master).
If my understanding is correct, this patch is the reason ?
71467e46414d3bab220de77d3d085be0c0aa03e1 (ASoC: simple-card: Add device's module clock selection)
It seems break non .set_sysclk drivers.