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

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

ASoC: fsi: add valid data position control support



FSI2 can control valid data position, like
package in front/back or stream  mode (16bit x 2).
But current fsi driver is assuming it was in-back.

Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 20211391
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -32,7 +32,9 @@
#define REG_DIDT	0x0020
#define REG_DODT	0x0024
#define REG_MUTE_ST	0x0028
#define REG_OUT_DMAC	0x002C
#define REG_OUT_SEL	0x0030
#define REG_IN_DMAC	0x0038

/* master register */
#define MST_CLK_RST	0x0210
@@ -886,6 +888,8 @@ static int fsi_hw_startup(struct fsi_priv *fsi,
			  int is_play,
			  struct device *dev)
{
	struct fsi_master *master = fsi_get_master(fsi);
	int fsi_ver = master->core->ver;
	u32 flags = fsi_get_info_flags(fsi);
	u32 data = 0;

@@ -920,6 +924,17 @@ static int fsi_hw_startup(struct fsi_priv *fsi,
		fsi_reg_mask_set(fsi, OUT_SEL, DMMD, DMMD);
	}

	/*
	 * FIXME
	 *
	 * FSI driver assumed that data package is in-back.
	 * FSI2 chip can select it.
	 */
	if (fsi_ver >= 2) {
		fsi_reg_write(fsi, OUT_DMAC,	(1 << 4));
		fsi_reg_write(fsi, IN_DMAC,	(1 << 4));
	}

	/* irq clear */
	fsi_irq_disable(fsi, is_play);
	fsi_irq_clear_status(fsi);