aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/soc/sh/fsi.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/sound/soc/sh/fsi.c b/sound/soc/sh/fsi.c
index 1bd0df060afa..53d1a7c0a6bb 100644
--- a/sound/soc/sh/fsi.c
+++ b/sound/soc/sh/fsi.c
@@ -1333,12 +1333,17 @@ static int fsi_hw_startup(struct fsi_priv *fsi,
1333 /* fifo init */ 1333 /* fifo init */
1334 fsi_fifo_init(fsi, io, dev); 1334 fsi_fifo_init(fsi, io, dev);
1335 1335
1336 /* start master clock */
1337 if (fsi_is_clk_master(fsi))
1338 fsi_set_master_clk(dev, fsi, fsi->rate, 1);
1339
1336 return 0; 1340 return 0;
1337} 1341}
1338 1342
1339static void fsi_hw_shutdown(struct fsi_priv *fsi, 1343static void fsi_hw_shutdown(struct fsi_priv *fsi,
1340 struct device *dev) 1344 struct device *dev)
1341{ 1345{
1346 /* stop master clock */
1342 if (fsi_is_clk_master(fsi)) 1347 if (fsi_is_clk_master(fsi))
1343 fsi_set_master_clk(dev, fsi, fsi->rate, 0); 1348 fsi_set_master_clk(dev, fsi, fsi->rate, 0);
1344} 1349}
@@ -1461,19 +1466,11 @@ static int fsi_dai_hw_params(struct snd_pcm_substream *substream,
1461 struct snd_soc_dai *dai) 1466 struct snd_soc_dai *dai)
1462{ 1467{
1463 struct fsi_priv *fsi = fsi_get_priv(substream); 1468 struct fsi_priv *fsi = fsi_get_priv(substream);
1464 long rate = params_rate(params);
1465 int ret;
1466
1467 if (!fsi_is_clk_master(fsi))
1468 return 0;
1469
1470 ret = fsi_set_master_clk(dai->dev, fsi, rate, 1);
1471 if (ret < 0)
1472 return ret;
1473 1469
1474 fsi->rate = rate; 1470 if (fsi_is_clk_master(fsi))
1471 fsi->rate = params_rate(params);
1475 1472
1476 return ret; 1473 return 0;
1477} 1474}
1478 1475
1479static const struct snd_soc_dai_ops fsi_dai_ops = { 1476static const struct snd_soc_dai_ops fsi_dai_ops = {
@@ -1770,10 +1767,6 @@ static void __fsi_resume(struct fsi_priv *fsi,
1770 return; 1767 return;
1771 1768
1772 fsi_hw_startup(fsi, io, dev); 1769 fsi_hw_startup(fsi, io, dev);
1773
1774 if (fsi_is_clk_master(fsi) && fsi->rate)
1775 fsi_set_master_clk(dev, fsi, fsi->rate, 1);
1776
1777 fsi_stream_start(fsi, io); 1770 fsi_stream_start(fsi, io);
1778} 1771}
1779 1772