Skip to content

Commit

Permalink
ASoC: fsi: add valid data position control support
Browse files Browse the repository at this point in the history
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: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Kuninori Morimoto authored and Mark Brown committed Nov 8, 2011
1 parent 2021139 commit 65ff03f
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions sound/soc/sh/fsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 65ff03f

Please sign in to comment.