All of lore.kernel.org
 help / color / mirror / Atom feed
From: Raymond Yau <superquad.vortex2@gmail.com>
To: ALSA Development Mailing List <alsa-devel@alsa-project.org>,
	Takashi Iwai <tiwai@suse.de>
Subject: [PATCH] ALSA - HDA - Add period time constraint to hda-intel
Date: Tue, 24 May 2011 12:15:05 +0800	[thread overview]
Message-ID: <BANLkTimy_SFEFfTx55wFNdQmNPbDiguFdg@mail.gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 2099 bytes --]

As there is a 10 seconds schedule_timeout in alsa-kernel

The following error occur when aplay/arecord using a period time
longer than 10 seconds for for those hda codec which support rate
lower than 32000 when prealloc = 4096

ALSA hda_intel.c:1680: azx_pcm_prepare: bufsize=0x1aeb00, format=0x4111
...
ALSA pcm_native.c:1531: playback drain error (DMA or IRQ trouble?)


aplay -v -Dhw:1 --period-time=10001000 22050.wav
Playing WAVE '22050.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo
Hardware PCM card 1 'HDA Intel' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 22050
  exact rate   : 22050 (22050/1)
  msbits       : 16
  buffer_size  : 441024
  period_size  : 220512
  period_time  : 10000544
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 220512
  period_event : 0
  start_threshold  : 441024
  stop_threshold   : 441024
  silence_threshold: 0
  silence_size : 0
  boundary     : 1806434304
  appl_ptr     : 0
  hw_ptr       : 0


ALSA hda_intel.c:1680: azx_pcm_prepare: bufsize=0x9c500, format=0x511
ALSA hda_codec.c:1295: hda_codec_setup_stream: NID=0x8, stream=0x1,
channel=0, format=0x511
ALSA pcm_lib.c:1789: capture write error (DMA or IRQ trouble?)

arecord -Dhw:1  -v --period-time=10005000 -r 8000 -c2 -f S16_LE /dev/null
Recording WAVE '/dev/null' : Signed 16 bit Little Endian, Rate 8000 Hz, Stereo
Hardware PCM card 1 'HDA Intel' device 0 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 8000
  exact rate   : 8000 (8000/1)
  msbits       : 16
  buffer_size  : 160064
  period_size  : 80032
  period_time  : 10004000
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 80032
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 160064
  silence_threshold: 0
  silence_size : 0
  boundary     : 1311244288
  appl_ptr     : 0
  hw_ptr       : 0
arecord: pcm_read:1773: read error: Input/output error

[-- Attachment #2: 0001-Add-period-time-constraint-to-hda-intel.patch --]
[-- Type: application/octet-stream, Size: 2921 bytes --]

From 7db88ab08c9690f92a2fe03a1e3c97767e74f17a Mon Sep 17 00:00:00 2001
From: Raymond Yau <superquad.vortex2@gmail.com>
Date: Tue, 24 May 2011 10:20:17 +0800
Subject: [PATCH ALSA - HDA - Add period time constraint to hda-intel

As there is a 10 seconds schedule_timeout in alsa-kernel

ALSA hda_intel.c:1680: azx_pcm_prepare: bufsize=0x1aeb00, format=0x4111
...
ALSA pcm_native.c:1531: playback drain error (DMA or IRQ trouble?)

occur when application using a period time longer than 10 seconds for for those hda codec which support rate lower than 32000 when prealloc = 4096

aplay -v -Dhw:1 --period-time=10001000 22050.wav
Playing WAVE '22050.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo
Hardware PCM card 1 'HDA Intel' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 22050
  exact rate   : 22050 (22050/1)
  msbits       : 16
  buffer_size  : 441024
  period_size  : 220512
  period_time  : 10000544
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 220512
  period_event : 0
  start_threshold  : 441024
  stop_threshold   : 441024
  silence_threshold: 0
  silence_size : 0
  boundary     : 1806434304
  appl_ptr     : 0
  hw_ptr       : 0


ALSA hda_intel.c:1680: azx_pcm_prepare: bufsize=0x9c500, format=0x511
ALSA hda_codec.c:1295: hda_codec_setup_stream: NID=0x8, stream=0x1, channel=0, format=0x511
ALSA pcm_lib.c:1789: capture write error (DMA or IRQ trouble?)

arecord -Dhw:1  -v --period-time=10005000 -r 8000 -c2 -f S16_LE /dev/null
Recording WAVE '/dev/null' : Signed 16 bit Little Endian, Rate 8000 Hz, Stereo
Hardware PCM card 1 'HDA Intel' device 0 subdevice 0
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 8000
  exact rate   : 8000 (8000/1)
  msbits       : 16
  buffer_size  : 160064
  period_size  : 80032
  period_time  : 10004000
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 80032
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 160064
  silence_threshold: 0
  silence_size : 0
  boundary     : 1311244288
  appl_ptr     : 0
  hw_ptr       : 0
arecord: pcm_read:1773: read error: Input/output error



Signed-off-by: Raymond Yau <superquad.vortex2@gmail.com>

diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 43a0367..7682bc0 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -1587,6 +1587,8 @@ static int azx_pcm_open(struct snd_pcm_substream *substream)
 				   128);
 	snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_BYTES,
 				   128);
+	snd_pcm_hw_constraint_minmax
+		(runtime, SNDRV_PCM_HW_PARAM_PERIOD_TIME, 166, 10000000);
 	snd_hda_power_up(apcm->codec);
 	err = hinfo->ops.open(hinfo, apcm->codec, substream);
 	if (err < 0) {
-- 
1.6.0.6


[-- Attachment #3: Type: text/plain, Size: 0 bytes --]



             reply	other threads:[~2011-05-24  4:15 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-24  4:15 Raymond Yau [this message]
2011-05-24  6:09 ` [PATCH] ALSA - HDA - Add period time constraint to hda-intel Takashi Iwai
2011-05-26  2:01   ` Raymond Yau
2011-05-26  6:15     ` Takashi Iwai
2011-06-23  1:14       ` Raymond Yau

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=BANLkTimy_SFEFfTx55wFNdQmNPbDiguFdg@mail.gmail.com \
    --to=superquad.vortex2@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=tiwai@suse.de \
    /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.