(rsnd_ssi_multi_slaves(io) & (1 << rsnd_mod_id(mod)))
 #define rsnd_ssi_is_run_mods(mod, io) \
        (rsnd_ssi_run_mods(io) & (1 << rsnd_mod_id(mod)))
+#define rsnd_ssi_can_output_clk(mod) (!__rsnd_ssi_is_pin_sharing(mod))
 
 int rsnd_ssi_hdmi_port(struct rsnd_dai_stream *io)
 {
        struct device *dev = rsnd_priv_to_dev(priv);
        struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
        struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
-       struct rsnd_mod *ssi_parent_mod = rsnd_io_to_mod_ssip(io);
        int chan = rsnd_runtime_channel_for_ssi(io);
        int idx, ret;
        unsigned int main_rate;
        if (!rsnd_rdai_is_clk_master(rdai))
                return 0;
 
-       if (ssi_parent_mod && !rsnd_ssi_is_parent(mod, io))
+       if (!rsnd_ssi_can_output_clk(mod))
                return 0;
 
        if (rsnd_ssi_is_multi_slave(mod, io))
 {
        struct rsnd_dai *rdai = rsnd_io_to_rdai(io);
        struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
-       struct rsnd_mod *ssi_parent_mod = rsnd_io_to_mod_ssip(io);
 
        if (!rsnd_rdai_is_clk_master(rdai))
                return;
 
-       if (ssi_parent_mod && !rsnd_ssi_is_parent(mod, io))
+       if (!rsnd_ssi_can_output_clk(mod))
                return;
 
        if (ssi->usrcnt > 1)