mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 12:52:30 +00:00
ASoC: rsnd: rsnd_ssi_can_output_clk() macro
For example SSI0/SSI1 case, SSI1 can share pin with SSI0. And then, SSI1 needs SSI0's clock. This clock controlling is very picky and difficult to understand in current code. This patch adds new rsnd_ssi_can_output_clk() macro, the code will be more understandable. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
bf23c6a381
commit
bb002f925a
@ -106,6 +106,7 @@ struct rsnd_ssi {
|
||||
(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)
|
||||
{
|
||||
@ -255,7 +256,6 @@ static int rsnd_ssi_master_clk_start(struct rsnd_mod *mod,
|
||||
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;
|
||||
@ -266,7 +266,7 @@ static int rsnd_ssi_master_clk_start(struct rsnd_mod *mod,
|
||||
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))
|
||||
@ -307,12 +307,11 @@ static void rsnd_ssi_master_clk_stop(struct rsnd_mod *mod,
|
||||
{
|
||||
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)
|
||||
|
Loading…
Reference in New Issue
Block a user