All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sangbeom Kim <sbkim73@samsung.com>
To: 'Jassi Brar' <jassisinghbrar@gmail.com>
Cc: alsa-devel@alsa-project.org, linux-samsung-soc@vger.kernel.org,
	broonie@opensource.wolfsonmicro.com, kgene.kim@samsung.com,
	ben-linux@fluff.org, lrg@slimlogic.co.uk
Subject: RE: [alsa-devel] [PATCH 3/4] ASoC: SAMSUNG: Change platform driver for SMDKs
Date: Mon, 13 Jun 2011 10:47:21 +0900	[thread overview]
Message-ID: <004401cc296b$d62fd440$828f7cc0$@com> (raw)
In-Reply-To: <BANLkTikswO-5LOreJq=OXutya_CzYUkh1g@mail.gmail.com>

On Thu, Jun 10, 2011 at 4:27 PM, Jassi Brar wrote:
> Though if then everything works fine with system and internal DMA,
> maybe it is better to assign platform_name string at runtime from some
> module parameter, and leaving the default to normal system DMA ?
OK, I will leaving the default to system DMA,
 
> > But I had found some problem and want to share.
> > Like this patch, If different platform driver is used for each channel,
> > 1st channel is overwritten by platform driver of 2nd channel.
> > Have you ever experienced before like this problem?
> IIRC, I successfully tested using system DMA with primary and iDMA
> with secondary channel. Only the sec chan would keep playing when
> the system went to suspend. Though tt was long time ago and I don't
> remember
> which Samsung kernel version.
Your test condition is little different with my test condition.
You are using wrapper architecture. 
But I used each driver architecture.
Like in this patch, I assigned like below

{ /* Primary DAI i/f */
                .name = "WM8994 AIF1",
                .stream_name = "Pri_Dai",
                .cpu_dai_name = "samsung-i2s.0",
                .codec_dai_name = "wm8994-aif1",
                .platform_name = "samsung-audio",
                .codec_name = "wm8994-codec",
                .init = smdk_wm8994_init_paiftx,
                .ops = &smdk_ops,
        },
        { /* Sec_Fifo Playback i/f */
                .name = "Sec_FIFO TX",
                .stream_name = "Sec_Dai",
                .cpu_dai_name = "samsung-i2s.4",
                .codec_dai_name = "wm8994-aif1",
                .platform_name = "samsung-idma",
                .codec_name = "wm8994-codec",
                .ops = &smdk_ops,
        },

Primary is used by system dma,
Secondary is used by idma,

I try to use secondary by aplay, It can work fine.
============================================================================
==============
[root@samsung ~]# /mars/bin/aplay -Dplughw:0,1,0
/mars/share/sounds/alsa/Front_Center.wav
Entered idma_open
Playing WAVE '/mars/share/sounds/alsa/Front_Center.wav' [I2S] Initialize
sec_fifo idma
[I2S] Done hw params 
Entered idma_hw_params
idma_setcallbk:125 dma_period=2000
DmaAddr=@2020000 Total=96000bytes PrdSz=8192 #Prds=11 dma_area=0xd0840000
Entered idma_mmap
Entered idma_prepare
: Signed 16 bit Little Endian, Rate 48000 Hz, Mono
Entered idma_trigger
Entered idma_pointer, regs=d0822000
Pointer 2020004 
Snip.................
Entered idma_pointer, regs=d0822000
Pointer 202e00c 
Entered idma_pointer, regs=d0822000
Pointer 203000c 
Entered idma_pointer, regs=d0822000
Pointer 203200c 
Entered idma_pointer, regs=d0822000
Pointer 203400c 
Entered idma_pointer, regs=d0822000
Pointer 203600c 
Entered idma_trigger
Entered idma_hw_free
Entered idma_hw_free
Entered idma_close, prtd = cedb8bc0
[root@Samsung ~]#
============================================================================
==============
There is no problem and sound is good,

But If I try to use primary i/f, It can't work properly.
============================================================================
==============
[root@samsung ~]# /mars/bin/aplay -Dplughw:0,0,0
/mars/share/sounds/alsa/Front_Center.wav
Entered dma_open
Playing WAVE '/mars/share/sounds/alsa/Front_Center.wav' : Signed 16 bit
Little Endian, Rate 48000 Hz, Mono
[I2S] Done hw params 
Entered dma_hw_params
params cf82e6b0, client cf82e6b0, channel 16
Entered idma_mmap
Entered dma_prepare
Entered dma_enqueue
dma_enqueue: loaded 0, limit 12
dma_loaded: 0
dma_loaded: 1
dma_loaded: 2
dma_loaded: 3
dma_loaded: 4
dma_loaded: 5
dma_loaded: 6
dma_loaded: 7
dma_loaded: 8
dma_loaded: 9
dma_loaded: 10
dma_loaded: 11
Entered dma_trigger
Entered idma_pointer, regs=d0822000
Pointer 2020000 
Entered audio_buffdone

Snip....................

Pointer 2020000 
Entered audio_buffdone
Entered idma_pointer, regs=d0822000
Pointer 2020000 
Entered dma_trigger
Entered audio_buffdone
Entered dma_prepare
Entered audio_buffdone
Entered audio_buffdone
Entered dma_enqueue
dma_enqueue: loaded 0, limit 12
dma_loaded: 0
dma_loaded: 1
dma_loaded: 2
dma_loaded: 3
dma_loaded: 4
dma_loaded: 5
dma_loaded: 6
dma_loaded: 7
dma_loaded: 8
dma_loaded: 9
dma_loaded: 10
dma_loaded: 11
underrun!!! (at least 0.072 ms long)
Entered dma_trigger
Entered idma_pointer, regs=d0822000
Pointer 2020000 
Entered audio_buffdone
Entered idma_pointer, regs=d0822000
Pointer 2020000 
Snip................
Entered audio_buffdone
Entered idma_pointer, regs=d0822000
Pointer 2020000 
Entered dma_trigger
Entered audio_buffdone
Entered dma_prepare
Entered audio_buffdone
Entered audio_buffdone
Entered audio_buffdone
Entered audio_buffdone
Entered dma_enqueue
dma_enqueue: loaded 0, limit 12
dma_loaded: 0
dma_loaded: 1
dma_loaded: 2
dma_loaded: 3
dma_loaded: 4
dma_loaded: 5
dma_loaded: 6
dma_loaded: 7
dma_loaded: 8
dma_loaded: 9
dma_loaded: 10
dma_loaded: 11
Entered dma_trigger
underrun!!! (at least 0.030 ms long)
Entered audio_buffdone
Entered idma_pointer, regs=d0822000
Pointer 2020000 
Entered audio_buffdone
Entered idma_pointer, regs=d0822000
Pointer 2020000 
Entered audio_buffdone
Snip ............
Entered audio_buffdone
Entered idma_pointer, regs=d0822000
Pointer 2020000 
Entered dma_trigger
Entered audio_buffdone
Entered dma_hw_free
Entered audio_buffdone
Entered audio_buffdone
Entered audio_buffdone
Entered audio_buffdone
Entered audio_buffdone
Entered dma_hw_free
Entered dma_close
============================================================================
====
As you see above debugging log, Although system dma is assigned, instead
using dma api, idma api is used.
This is not a dma & idma driver's bug. This is platform driver handling
bugs. 
There is no machine driver using different platform driver in the ASoC.
So I guess that It is never confirmed before.
I want to share this problem. and I want to fix this problem. 
So I want to get your opinion.
Please check the above debug log and give your advice.

Thanks,
SB Kim

  parent reply	other threads:[~2011-06-13  1:47 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-09  8:09 [PATCH 0/4] Adding idma driver for samsung SoCs Sangbeom Kim
2011-06-09  8:09 ` [PATCH 1/4] ASoC: SAMSUNG: Modify I2S driver to support idma Sangbeom Kim
2011-06-10 11:31   ` Jassi Brar
2011-06-13  7:58     ` [alsa-devel] " Sangbeom Kim
2011-06-13  8:57       ` Jassi Brar
2011-06-09  8:09 ` [PATCH 2/4] ASoC: SAMSUNG: Add I2S0 internal dma driver Sangbeom Kim
2011-06-09  9:50   ` Liam Girdwood
2011-06-09 23:31     ` Sangbeom Kim
2011-06-09 12:33   ` Kyungmin Park
2011-06-09 23:41     ` [alsa-devel] " Sangbeom Kim
2011-06-10 10:08   ` Jassi Brar
2011-06-13  7:55     ` [alsa-devel] " Sangbeom Kim
2011-06-13  9:07       ` Jassi Brar
2011-06-13  9:40       ` Jassi Brar
2011-06-09  8:09 ` [PATCH 3/4] ASoC: SAMSUNG: Change platform driver for SMDKs Sangbeom Kim
2011-06-09 10:46   ` Mark Brown
2011-06-09 23:36     ` [alsa-devel] " Sangbeom Kim
2011-06-10  7:03   ` Jassi Brar
2011-06-10  7:16     ` [alsa-devel] " Sangbeom Kim
2011-06-10  7:26       ` Jassi Brar
2011-06-10  9:49         ` [alsa-devel] " Mark Brown
2011-06-10 10:12           ` Jassi Brar
2011-06-10 10:16             ` Mark Brown
2011-06-10 10:43               ` [alsa-devel] " Jassi Brar
2011-06-13  1:47         ` Sangbeom Kim [this message]
2011-06-09  8:09 ` [PATCH 4/4] ARM: SAMSUNG: Add platform device for idma Sangbeom Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='004401cc296b$d62fd440$828f7cc0$@com' \
    --to=sbkim73@samsung.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=ben-linux@fluff.org \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=jassisinghbrar@gmail.com \
    --cc=kgene.kim@samsung.com \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=lrg@slimlogic.co.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.