* [PATCH] via82xx: add option to disable 500ms delay in snd_via82xx_codec_wait
@ 2009-06-21 18:50 Simon Arlott
2009-06-22 5:57 ` Takashi Iwai
0 siblings, 1 reply; 2+ messages in thread
From: Simon Arlott @ 2009-06-21 18:50 UTC (permalink / raw)
To: Linux Kernel Mailing List, perex, tiwai; +Cc: alsa-devel
There's a large 500ms delay in snd_via82xx_codec_wait() that, at least
on my hardware, appears to be unnecessary. The rest of the init of
the card works without logging any warnings or errors and both audio
and mixer settings work.
This adds an "nodelay" parameter to disable this (undocumented in the
code) large delay improving bootup time by 489-500ms.
[ 1.034217] initcall alsa_card_via82xx_init+0x0/0x16 returned 0 after 505757 usecs
vs.
[ 0.533136] initcall alsa_card_via82xx_init+0x0/0x16 returned 0 after 15915 usecs
Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
---
sound/pci/via82xx.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c
index 1ef58c5..949fcaf 100644
--- a/sound/pci/via82xx.c
+++ b/sound/pci/via82xx.c
@@ -85,6 +85,7 @@ static int joystick;
static int ac97_clock = 48000;
static char *ac97_quirk;
static int dxs_support;
+static int nodelay;
module_param(index, int, 0444);
MODULE_PARM_DESC(index, "Index value for VIA 82xx bridge.");
@@ -102,6 +103,8 @@ module_param(ac97_quirk, charp, 0444);
MODULE_PARM_DESC(ac97_quirk, "AC'97 workaround for strange hardware.");
module_param(dxs_support, int, 0444);
MODULE_PARM_DESC(dxs_support, "Support for DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 = no VRA, 5 = enable any sample rate)");
+module_param(nodelay, int, 0444);
+MODULE_PARM_DESC(nodelay, "Disable 500ms init delay");
/* just for backward compatibility */
static int enable;
@@ -549,7 +552,8 @@ static void snd_via82xx_codec_wait(struct snd_ac97 *ac97)
int err;
err = snd_via82xx_codec_ready(chip, ac97->num);
/* here we need to wait fairly for long time.. */
- msleep(500);
+ if (!nodelay)
+ msleep(500);
}
static void snd_via82xx_codec_write(struct snd_ac97 *ac97,
--
1.6.3.1
--
Simon Arlott
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] via82xx: add option to disable 500ms delay in snd_via82xx_codec_wait
2009-06-21 18:50 [PATCH] via82xx: add option to disable 500ms delay in snd_via82xx_codec_wait Simon Arlott
@ 2009-06-22 5:57 ` Takashi Iwai
0 siblings, 0 replies; 2+ messages in thread
From: Takashi Iwai @ 2009-06-22 5:57 UTC (permalink / raw)
To: Simon Arlott; +Cc: Linux Kernel Mailing List, perex, alsa-devel
At Sun, 21 Jun 2009 19:50:48 +0100,
Simon Arlott wrote:
>
> There's a large 500ms delay in snd_via82xx_codec_wait() that, at least
> on my hardware, appears to be unnecessary. The rest of the init of
> the card works without logging any warnings or errors and both audio
> and mixer settings work.
>
> This adds an "nodelay" parameter to disable this (undocumented in the
> code) large delay improving bootup time by 489-500ms.
>
> [ 1.034217] initcall alsa_card_via82xx_init+0x0/0x16 returned 0 after 505757 usecs
> vs.
> [ 0.533136] initcall alsa_card_via82xx_init+0x0/0x16 returned 0 after 15915 usecs
>
> Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
Thanks, applied now.
Takashi
> ---
> sound/pci/via82xx.c | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c
> index 1ef58c5..949fcaf 100644
> --- a/sound/pci/via82xx.c
> +++ b/sound/pci/via82xx.c
> @@ -85,6 +85,7 @@ static int joystick;
> static int ac97_clock = 48000;
> static char *ac97_quirk;
> static int dxs_support;
> +static int nodelay;
>
> module_param(index, int, 0444);
> MODULE_PARM_DESC(index, "Index value for VIA 82xx bridge.");
> @@ -102,6 +103,8 @@ module_param(ac97_quirk, charp, 0444);
> MODULE_PARM_DESC(ac97_quirk, "AC'97 workaround for strange hardware.");
> module_param(dxs_support, int, 0444);
> MODULE_PARM_DESC(dxs_support, "Support for DXS channels (0 = auto, 1 = enable, 2 = disable, 3 = 48k only, 4 = no VRA, 5 = enable any sample rate)");
> +module_param(nodelay, int, 0444);
> +MODULE_PARM_DESC(nodelay, "Disable 500ms init delay");
>
> /* just for backward compatibility */
> static int enable;
> @@ -549,7 +552,8 @@ static void snd_via82xx_codec_wait(struct snd_ac97 *ac97)
> int err;
> err = snd_via82xx_codec_ready(chip, ac97->num);
> /* here we need to wait fairly for long time.. */
> - msleep(500);
> + if (!nodelay)
> + msleep(500);
> }
>
> static void snd_via82xx_codec_write(struct snd_ac97 *ac97,
> --
> 1.6.3.1
>
> --
> Simon Arlott
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-06-22 5:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-06-21 18:50 [PATCH] via82xx: add option to disable 500ms delay in snd_via82xx_codec_wait Simon Arlott
2009-06-22 5:57 ` Takashi Iwai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®