summaryrefslogtreecommitdiff
path: root/sound/core/timer.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2015-01-29 18:12:26 +0100
committerTakashi Iwai <tiwai@suse.de>2015-02-02 14:42:44 +0100
commit89da061f0a556f1324d8ac84f1012107bf08d2e1 (patch)
tree7f0d6e745eabc08880e8508ba35dcdef01096b63 /sound/core/timer.c
parent7c35860d1ae555a040f561c7cfdde066053787f0 (diff)
ALSA: timer: Handle the device directly
This is a relatively straightforward change, using the struct device directly for managing the ALSA timer device. Reviewed-by: Jaroslav Kysela <perex@perex.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/core/timer.c')
-rw-r--r--sound/core/timer.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sound/core/timer.c b/sound/core/timer.c
index 28b673d4f812..dae40ac11e04 100644
--- a/sound/core/timer.c
+++ b/sound/core/timer.c
@@ -1951,6 +1951,8 @@ static void snd_timer_free_all(void)
snd_timer_free(timer);
}
+static struct device timer_dev;
+
/*
* ENTRY functions
*/
@@ -1959,6 +1961,9 @@ static int __init alsa_timer_init(void)
{
int err;
+ snd_device_initialize(&timer_dev, NULL);
+ dev_set_name(&timer_dev, "timer");
+
#ifdef SNDRV_OSS_INFO_DEV_TIMERS
snd_oss_info_register(SNDRV_OSS_INFO_DEV_TIMERS, SNDRV_CARDS - 1,
"system timer");
@@ -1967,14 +1972,17 @@ static int __init alsa_timer_init(void)
err = snd_timer_register_system();
if (err < 0) {
pr_err("ALSA: unable to register system timer (%i)\n", err);
+ put_device(&timer_dev);
return err;
}
- err = snd_register_device(SNDRV_DEVICE_TYPE_TIMER, NULL, 0,
- &snd_timer_f_ops, NULL, "timer");
+ err = snd_register_device_for_dev(SNDRV_DEVICE_TYPE_TIMER, NULL, 0,
+ &snd_timer_f_ops, NULL,
+ &timer_dev, NULL, NULL);
if (err < 0) {
pr_err("ALSA: unable to register timer device (%i)\n", err);
snd_timer_free_all();
+ put_device(&timer_dev);
return err;
}
@@ -1986,6 +1994,7 @@ static void __exit alsa_timer_exit(void)
{
snd_unregister_device(SNDRV_DEVICE_TYPE_TIMER, NULL, 0);
snd_timer_free_all();
+ put_device(&timer_dev);
snd_timer_proc_done();
#ifdef SNDRV_OSS_INFO_DEV_TIMERS
snd_oss_info_unregister(SNDRV_OSS_INFO_DEV_TIMERS, SNDRV_CARDS - 1);