I've had a closer look at this and it seems you're messing around
with the clock of the codec's node (which is _not_ a subnode of
the simple-audio-card). I don't think this is correct.
I guess you should rather set the clock property in the codec
subnode of the simple-audio-card, which is then picked up by the
simple-audio-card driver and changed accordingly.
For example:
simple-audio-card,dai-link@0 {
reg = <0>;
bitclock-master = <&dailink0_master>;
frame-master = <&dailink0_master>;
format = "i2s";
cpu {
sound-dai = <&sai6>;
};
dailink0_master: codec {
sound-dai = <&wm8904>;
clocks = <&mclk>;
};
};
In this case mclk will be enabled and disabled accordingly.
Could you test this?