* [PATCH 0/2] ASoC: fsi: bugfix for DMAEngine
@ 2012-05-29 6:26 Kuninori Morimoto
2012-05-29 6:27 ` [PATCH 1/2] ASoC: fsi: bugfix: correct dma area Kuninori Morimoto
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Kuninori Morimoto @ 2012-05-29 6:26 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA, Liam Girdwood, Kuninori Morimoto
Hi Mark, Liam
These are bugfix for FSI DMAEngine.
Without these patches, FSI playback includes noise.
These are for v3.5 kernel
Kuninori Morimoto (2):
ASoC: fsi: bugfix: correct dma area
ASoC: fsi: bugfix: ensure dma is terminated
Best regards
---
Kuninori Morimoto
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] ASoC: fsi: bugfix: correct dma area
2012-05-29 6:26 [PATCH 0/2] ASoC: fsi: bugfix for DMAEngine Kuninori Morimoto
@ 2012-05-29 6:27 ` Kuninori Morimoto
2012-05-29 6:28 ` [PATCH 2/2] ASoC: fsi: bugfix: ensure dma is terminated Kuninori Morimoto
2012-05-30 10:04 ` [PATCH 0/2] ASoC: fsi: bugfix for DMAEngine Mark Brown
2 siblings, 0 replies; 4+ messages in thread
From: Kuninori Morimoto @ 2012-05-29 6:27 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA, Liam Girdwood, Kuninori Morimoto
FSI driver is using dma_sync_single_xxx(),
but the dma area was not correct.
This patch fix it up.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
-- this is v3.5 bugfix
sound/soc/sh/fsi.c | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/sound/soc/sh/fsi.c b/sound/soc/sh/fsi.c
index 0da021a..02ffe79 100644
--- a/sound/soc/sh/fsi.c
+++ b/sound/soc/sh/fsi.c
@@ -1052,6 +1052,13 @@ static int fsi_dma_quit(struct fsi_priv *fsi, struct fsi_stream *io)
return 0;
}
+static dma_addr_t fsi_dma_get_area(struct fsi_stream *io)
+{
+ struct snd_pcm_runtime *runtime = io->substream->runtime;
+
+ return io->dma + samples_to_bytes(runtime, io->buff_sample_pos);
+}
+
static void fsi_dma_complete(void *data)
{
struct fsi_stream *io = (struct fsi_stream *)data;
@@ -1061,7 +1068,7 @@ static void fsi_dma_complete(void *data)
enum dma_data_direction dir = fsi_stream_is_play(fsi, io) ?
DMA_TO_DEVICE : DMA_FROM_DEVICE;
- dma_sync_single_for_cpu(dai->dev, io->dma,
+ dma_sync_single_for_cpu(dai->dev, fsi_dma_get_area(io),
samples_to_bytes(runtime, io->period_samples), dir);
io->buff_sample_pos += io->period_samples;
@@ -1078,13 +1085,6 @@ static void fsi_dma_complete(void *data)
snd_pcm_period_elapsed(io->substream);
}
-static dma_addr_t fsi_dma_get_area(struct fsi_stream *io)
-{
- struct snd_pcm_runtime *runtime = io->substream->runtime;
-
- return io->dma + samples_to_bytes(runtime, io->buff_sample_pos);
-}
-
static void fsi_dma_do_tasklet(unsigned long data)
{
struct fsi_stream *io = (struct fsi_stream *)data;
@@ -1110,7 +1110,7 @@ static void fsi_dma_do_tasklet(unsigned long data)
len = samples_to_bytes(runtime, io->period_samples);
buf = fsi_dma_get_area(io);
- dma_sync_single_for_device(dai->dev, io->dma, len, dir);
+ dma_sync_single_for_device(dai->dev, buf, len, dir);
sg_init_table(&sg, 1);
sg_set_page(&sg, pfn_to_page(PFN_DOWN(buf)),
--
1.7.5.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] ASoC: fsi: bugfix: ensure dma is terminated
2012-05-29 6:26 [PATCH 0/2] ASoC: fsi: bugfix for DMAEngine Kuninori Morimoto
2012-05-29 6:27 ` [PATCH 1/2] ASoC: fsi: bugfix: correct dma area Kuninori Morimoto
@ 2012-05-29 6:28 ` Kuninori Morimoto
2012-05-30 10:04 ` [PATCH 0/2] ASoC: fsi: bugfix for DMAEngine Mark Brown
2 siblings, 0 replies; 4+ messages in thread
From: Kuninori Morimoto @ 2012-05-29 6:28 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA, Liam Girdwood, Kuninori Morimoto
FSI DMAEngine has to be stopped certainly at the start/stop time.
Without this patch, it will include noise on playback.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
this is v3.5 bugfix
sound/soc/sh/fsi.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/sound/soc/sh/fsi.c b/sound/soc/sh/fsi.c
index 02ffe79..18c920f 100644
--- a/sound/soc/sh/fsi.c
+++ b/sound/soc/sh/fsi.c
@@ -1178,6 +1178,8 @@ static void fsi_dma_push_start_stop(struct fsi_priv *fsi, struct fsi_stream *io,
fsi_reg_mask_set(fsi, OUT_DMAC, DMA_ON, enable);
+ dmaengine_terminate_all(io->chan);
+
if (fsi_is_clk_master(fsi))
fsi_master_mask_set(master, CLK_RST, clk, (enable) ? clk : 0);
}
--
1.7.5.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 0/2] ASoC: fsi: bugfix for DMAEngine
2012-05-29 6:26 [PATCH 0/2] ASoC: fsi: bugfix for DMAEngine Kuninori Morimoto
2012-05-29 6:27 ` [PATCH 1/2] ASoC: fsi: bugfix: correct dma area Kuninori Morimoto
2012-05-29 6:28 ` [PATCH 2/2] ASoC: fsi: bugfix: ensure dma is terminated Kuninori Morimoto
@ 2012-05-30 10:04 ` Mark Brown
2 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2012-05-30 10:04 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Liam Girdwood, Kuninori Morimoto
[-- Attachment #1.1: Type: text/plain, Size: 211 bytes --]
On Mon, May 28, 2012 at 11:26:41PM -0700, Kuninori Morimoto wrote:
> These are bugfix for FSI DMAEngine.
> Without these patches, FSI playback includes noise.
> These are for v3.5 kernel
Applied both, thanks.
[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-05-30 10:04 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-29 6:26 [PATCH 0/2] ASoC: fsi: bugfix for DMAEngine Kuninori Morimoto
2012-05-29 6:27 ` [PATCH 1/2] ASoC: fsi: bugfix: correct dma area Kuninori Morimoto
2012-05-29 6:28 ` [PATCH 2/2] ASoC: fsi: bugfix: ensure dma is terminated Kuninori Morimoto
2012-05-30 10:04 ` [PATCH 0/2] ASoC: fsi: bugfix for DMAEngine Mark Brown
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.