2014-04-14 09:43:56

by Li, ZhenHua

[permalink] [raw]
Subject: [PATCH 1/1] driver/snd: es18xx driver should use udelay error

From: "Li, Zhen-Hua" <[email protected]>

udelay with more than 20000 may cause __bad_udelay.
Use mdelay for instead.

Signed-off-by: Li, Zhen-Hua <[email protected]>
---
sound/isa/es18xx.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/sound/isa/es18xx.c b/sound/isa/es18xx.c
index 1c16830..8d3a3b6 100644
--- a/sound/isa/es18xx.c
+++ b/sound/isa/es18xx.c
@@ -520,7 +520,7 @@ static int snd_es18xx_playback1_trigger(struct snd_es18xx *chip,
snd_es18xx_mixer_write(chip, 0x78, 0x93);
#ifdef AVOID_POPS
/* Avoid pops */
- udelay(100000);
+ mudelay(100);
if (chip->caps & ES18XX_PCM2)
/* Restore Audio 2 volume */
snd_es18xx_mixer_write(chip, 0x7C, chip->audio2_vol);
@@ -537,7 +537,7 @@ static int snd_es18xx_playback1_trigger(struct snd_es18xx *chip,
/* Stop DMA */
snd_es18xx_mixer_write(chip, 0x78, 0x00);
#ifdef AVOID_POPS
- udelay(25000);
+ mdelay(25);
if (chip->caps & ES18XX_PCM2)
/* Set Audio 2 volume to 0 */
snd_es18xx_mixer_write(chip, 0x7C, 0);
@@ -596,7 +596,7 @@ static int snd_es18xx_capture_prepare(struct snd_pcm_substream *substream)
snd_es18xx_write(chip, 0xA5, count >> 8);

#ifdef AVOID_POPS
- udelay(100000);
+ mdelay(100);
#endif

/* Set format */
@@ -691,7 +691,7 @@ static int snd_es18xx_playback2_trigger(struct snd_es18xx *chip,
snd_es18xx_write(chip, 0xB8, 0x05);
#ifdef AVOID_POPS
/* Avoid pops */
- udelay(100000);
+ mdelay(100);
/* Enable Audio 1 */
snd_es18xx_dsp_command(chip, 0xD1);
#endif
@@ -705,7 +705,7 @@ static int snd_es18xx_playback2_trigger(struct snd_es18xx *chip,
snd_es18xx_write(chip, 0xB8, 0x00);
#ifdef AVOID_POPS
/* Avoid pops */
- udelay(25000);
+ mdelay(25);
/* Disable Audio 1 */
snd_es18xx_dsp_command(chip, 0xD3);
#endif
--
1.7.10.4


2014-04-14 12:00:45

by Clemens Ladisch

[permalink] [raw]
Subject: Re: [PATCH 1/1] driver/snd: es18xx driver should use udelay error

Li, Zhen-Hua wrote:
> udelay with more than 20000 may cause __bad_udelay.
> Use mdelay for instead.
>
> #ifdef AVOID_POPS
> /* Avoid pops */
> - udelay(100000);
> + mudelay(100);

This will not compile. Please test with AVOID_POPS enabled.


Regards,
Clemens

2014-04-14 12:30:20

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH 1/1] driver/snd: es18xx driver should use udelay error

At Mon, 14 Apr 2014 14:00:40 +0200,
Clemens Ladisch wrote:
>
> Li, Zhen-Hua wrote:
> > udelay with more than 20000 may cause __bad_udelay.
> > Use mdelay for instead.
> >
> > #ifdef AVOID_POPS
> > /* Avoid pops */
> > - udelay(100000);
> > + mudelay(100);
>
> This will not compile. Please test with AVOID_POPS enabled.

Oops, thanks for spotting. I fixed it now.


Takashi