summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/sound/sh_fsi.h4
-rw-r--r--sound/soc/sh/fsi.c17
2 files changed, 10 insertions, 11 deletions
diff --git a/include/sound/sh_fsi.h b/include/sound/sh_fsi.h
index 27ee1dcc3e2e4..cc1c919c64365 100644
--- a/include/sound/sh_fsi.h
+++ b/include/sound/sh_fsi.h
@@ -47,8 +47,8 @@
/* D: clock selecter if master mode */
#define SH_FSI_CLK_MASK 0x0000F000
-#define SH_FSI_CLK_EXTERNAL (1 << 12)
-#define SH_FSI_CLK_CPG (2 << 12) /* FSIxCK + FSI-DIV */
+#define SH_FSI_CLK_EXTERNAL (0 << 12)
+#define SH_FSI_CLK_CPG (1 << 12) /* FSIxCK + FSI-DIV */
/*
* set_rate return value
diff --git a/sound/soc/sh/fsi.c b/sound/soc/sh/fsi.c
index cc81a4966df56..77747b0753698 100644
--- a/sound/soc/sh/fsi.c
+++ b/sound/soc/sh/fsi.c
@@ -264,6 +264,7 @@ struct fsi_priv {
int chan_num:16;
int clk_master:1;
+ int clk_cpg:1;
int spdif:1;
long rate;
@@ -1779,7 +1780,6 @@ static int fsi_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
{
struct fsi_priv *fsi = fsi_get_priv_frm_dai(dai);
set_rate_func set_rate = fsi_get_info_set_rate(fsi);
- u32 flags = fsi_get_info_flags(fsi);
int ret;
/* set master/slave audio interface */
@@ -1802,16 +1802,12 @@ static int fsi_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
if (set_rate)
dev_warn(dai->dev, "set_rate will be removed soon\n");
- switch (flags & SH_FSI_CLK_MASK) {
- case SH_FSI_CLK_EXTERNAL:
- fsi_clk_init(dai->dev, fsi, 1, 1, 0,
- fsi_clk_set_rate_external);
- break;
- case SH_FSI_CLK_CPG:
+ if (fsi->clk_cpg)
fsi_clk_init(dai->dev, fsi, 0, 1, 1,
fsi_clk_set_rate_cpg);
- break;
- }
+ else
+ fsi_clk_init(dai->dev, fsi, 1, 1, 0,
+ fsi_clk_set_rate_external);
}
/* set format */
@@ -1989,6 +1985,9 @@ static void fsi_port_info_init(struct fsi_priv *fsi,
{
if (info->flags & SH_FSI_FMT_SPDIF)
fsi->spdif = 1;
+
+ if (info->flags & SH_FSI_CLK_CPG)
+ fsi->clk_cpg = 1;
}
static void fsi_handler_init(struct fsi_priv *fsi,