Commit 1c418d1f authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown

ASoC: fsi: Add over_period flag to prevent the misunderstanding

Signed-off-by: default avatarKuninori Morimoto <morimoto.kuninori@renesas.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 5b617355
...@@ -373,14 +373,16 @@ static int fsi_data_push(struct fsi_priv *fsi) ...@@ -373,14 +373,16 @@ static int fsi_data_push(struct fsi_priv *fsi)
int fifo_free; int fifo_free;
int width; int width;
u8 *start; u8 *start;
int i; int i, over_period;
if (!fsi || if (!fsi ||
!fsi->substream || !fsi->substream ||
!fsi->substream->runtime) !fsi->substream->runtime)
return -EINVAL; return -EINVAL;
runtime = fsi->substream->runtime; over_period = 0;
substream = fsi->substream;
runtime = substream->runtime;
/* FSI FIFO has limit. /* FSI FIFO has limit.
* So, this driver can not send periods data at a time * So, this driver can not send periods data at a time
...@@ -388,7 +390,7 @@ static int fsi_data_push(struct fsi_priv *fsi) ...@@ -388,7 +390,7 @@ static int fsi_data_push(struct fsi_priv *fsi)
if (fsi->byte_offset >= if (fsi->byte_offset >=
fsi->period_len * (fsi->periods + 1)) { fsi->period_len * (fsi->periods + 1)) {
substream = fsi->substream; over_period = 1;
fsi->periods = (fsi->periods + 1) % runtime->periods; fsi->periods = (fsi->periods + 1) % runtime->periods;
if (0 == fsi->periods) if (0 == fsi->periods)
...@@ -429,7 +431,7 @@ static int fsi_data_push(struct fsi_priv *fsi) ...@@ -429,7 +431,7 @@ static int fsi_data_push(struct fsi_priv *fsi)
fsi_irq_enable(fsi, 1); fsi_irq_enable(fsi, 1);
if (substream) if (over_period)
snd_pcm_period_elapsed(substream); snd_pcm_period_elapsed(substream);
return 0; return 0;
...@@ -443,14 +445,16 @@ static int fsi_data_pop(struct fsi_priv *fsi) ...@@ -443,14 +445,16 @@ static int fsi_data_pop(struct fsi_priv *fsi)
int fifo_fill; int fifo_fill;
int width; int width;
u8 *start; u8 *start;
int i; int i, over_period;
if (!fsi || if (!fsi ||
!fsi->substream || !fsi->substream ||
!fsi->substream->runtime) !fsi->substream->runtime)
return -EINVAL; return -EINVAL;
runtime = fsi->substream->runtime; over_period = 0;
substream = fsi->substream;
runtime = substream->runtime;
/* FSI FIFO has limit. /* FSI FIFO has limit.
* So, this driver can not send periods data at a time * So, this driver can not send periods data at a time
...@@ -458,7 +462,7 @@ static int fsi_data_pop(struct fsi_priv *fsi) ...@@ -458,7 +462,7 @@ static int fsi_data_pop(struct fsi_priv *fsi)
if (fsi->byte_offset >= if (fsi->byte_offset >=
fsi->period_len * (fsi->periods + 1)) { fsi->period_len * (fsi->periods + 1)) {
substream = fsi->substream; over_period = 1;
fsi->periods = (fsi->periods + 1) % runtime->periods; fsi->periods = (fsi->periods + 1) % runtime->periods;
if (0 == fsi->periods) if (0 == fsi->periods)
...@@ -498,7 +502,7 @@ static int fsi_data_pop(struct fsi_priv *fsi) ...@@ -498,7 +502,7 @@ static int fsi_data_pop(struct fsi_priv *fsi)
fsi_irq_enable(fsi, 0); fsi_irq_enable(fsi, 0);
if (substream) if (over_period)
snd_pcm_period_elapsed(substream); snd_pcm_period_elapsed(substream);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment