Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cdcfcac9 authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown
Browse files

ASoC: rcar: add rsnd_scu_hpbif_is_enable()



Current SSI needs RSND_SSI_DEPENDENT flag to
decide dependent/independent mode.
And SCU needs RSND_SCU_USE_HPBIF flag
to decide HPBIF is enable/disable.
But these 2 means same things.

This patch adds new rsnd_scu_hpbif_is_enable()
function, and merges above methods.

Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 2192f81c
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@
#define RSND_SSI_CLK_PIN_SHARE		(1 << 31)
#define RSND_SSI_CLK_FROM_ADG		(1 << 30) /* clock parent is master */
#define RSND_SSI_SYNC			(1 << 29) /* SSI34_sync etc */
#define RSND_SSI_DEPENDENT		(1 << 28) /* SSI needs SRU/SCU */

#define RSND_SSI_PLAY			(1 << 24)

+1 −0
Original line number Diff line number Diff line
@@ -281,6 +281,7 @@ int rsnd_scu_probe(struct platform_device *pdev,
void rsnd_scu_remove(struct platform_device *pdev,
		     struct rsnd_priv *priv);
struct rsnd_mod *rsnd_scu_mod_get(struct rsnd_priv *priv, int id);
bool rsnd_scu_hpbif_is_enable(struct rsnd_mod *mod);
#define rsnd_scu_nr(priv) ((priv)->scu_nr)

/*
+9 −3
Original line number Diff line number Diff line
@@ -146,20 +146,26 @@ static int rsnd_scu_set_hpbif(struct rsnd_priv *priv,
	return 0;
}

bool rsnd_scu_hpbif_is_enable(struct rsnd_mod *mod)
{
	struct rsnd_scu *scu = rsnd_mod_to_scu(mod);
	u32 flags = rsnd_scu_mode_flags(scu);

	return !!(flags & RSND_SCU_USE_HPBIF);
}

static int rsnd_scu_start(struct rsnd_mod *mod,
			  struct rsnd_dai *rdai,
			  struct rsnd_dai_stream *io)
{
	struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
	struct rsnd_scu *scu = rsnd_mod_to_scu(mod);
	struct device *dev = rsnd_priv_to_dev(priv);
	u32 flags = rsnd_scu_mode_flags(scu);
	int ret;

	/*
	 * SCU will be used if it has RSND_SCU_USE_HPBIF flags
	 */
	if (!(flags & RSND_SCU_USE_HPBIF)) {
	if (!rsnd_scu_hpbif_is_enable(mod)) {
		/* it use PIO transter */
		dev_dbg(dev, "%s%d is not used\n",
			rsnd_mod_name(mod), rsnd_mod_id(mod));
+5 −3
Original line number Diff line number Diff line
@@ -106,6 +106,7 @@ static void rsnd_ssi_mode_init(struct rsnd_priv *priv,
{
	struct device *dev = rsnd_priv_to_dev(priv);
	struct rsnd_ssi *ssi;
	struct rsnd_mod *scu;
	u32 flags;
	u32 val;
	int i;
@@ -116,13 +117,14 @@ static void rsnd_ssi_mode_init(struct rsnd_priv *priv,
	ssiu->ssi_mode0 = 0;
	for_each_rsnd_ssi(ssi, priv, i) {
		flags = rsnd_ssi_mode_flags(ssi);
		scu   = rsnd_scu_mod_get(priv, rsnd_mod_id(&ssi->mod));

		/* see also BUSIF_MODE */
		if (!(flags & RSND_SSI_DEPENDENT)) {
		if (rsnd_scu_hpbif_is_enable(scu)) {
			dev_dbg(dev, "SSI%d uses DEPENDENT mode\n", i);
		} else {
			ssiu->ssi_mode0 |= (1 << i);
			dev_dbg(dev, "SSI%d uses INDEPENDENT mode\n", i);
		} else {
			dev_dbg(dev, "SSI%d uses DEPENDENT mode\n", i);
		}
	}