Hi Jiada
2nd, can we keep usrcnt setup as-is ? I guess we can just avoid rsnd_ssi_master_clk_start() if ssi->rate was not 0 ?
I don't fully understand your 2nd question, in case of rsnd_ssi_master_clk_stop(), if avoid rsnd_ssi_master_clk_stop() when ssi->rate is 0 by apply following change
static void rsnd_ssi_master_clk_stop(struct rsnd_mod *mod, struct rsnd_dai_stream *io) { ...
if (ssi->usrcnt > 1)
... }if (ssi->rate == 0) return;
then when any IO stream with same SSI calls .hw_free, the other IO stream's clock will be stopped too.
I think we can find more simple solution if we can find good ideas. For example, how about to add new counter for hw_params/hw_free ? Anyway, [3/3] patch is too much over-kill to me.
And, please don't exchange usrcnt inc/dec position at [2/3]. It is for open/close.
Thank you for your help !! Best regards --- Kuninori Morimoto