ALSA: line6/toneport: Move setup_timer() at the beginning
... so that timer_del_sync() in the destructor can be called safely at any time. Also move the mod_timer() call in toneport_setup(), which is a bit clearer place. Tested-by: Chris Rorvick <chris@rorvick.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
8a3b7c086a
commit
6dd1c05cd7
|
@ -360,6 +360,8 @@ static void toneport_setup(struct usb_line6_toneport *toneport)
|
||||||
|
|
||||||
if (toneport_has_led(toneport->type))
|
if (toneport_has_led(toneport->type))
|
||||||
toneport_update_led(&usbdev->dev);
|
toneport_update_led(&usbdev->dev);
|
||||||
|
|
||||||
|
mod_timer(&toneport->timer, jiffies + TONEPORT_PCM_DELAY * HZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -390,6 +392,9 @@ static int toneport_init(struct usb_interface *interface,
|
||||||
int err;
|
int err;
|
||||||
struct usb_line6_toneport *toneport = (struct usb_line6_toneport *) line6;
|
struct usb_line6_toneport *toneport = (struct usb_line6_toneport *) line6;
|
||||||
|
|
||||||
|
setup_timer(&toneport->timer, toneport_start_pcm,
|
||||||
|
(unsigned long)toneport);
|
||||||
|
|
||||||
line6->disconnect = line6_toneport_disconnect;
|
line6->disconnect = line6_toneport_disconnect;
|
||||||
|
|
||||||
/* initialize PCM subsystem: */
|
/* initialize PCM subsystem: */
|
||||||
|
@ -435,10 +440,6 @@ static int toneport_init(struct usb_interface *interface,
|
||||||
|
|
||||||
toneport_setup(toneport);
|
toneport_setup(toneport);
|
||||||
|
|
||||||
setup_timer(&toneport->timer, toneport_start_pcm,
|
|
||||||
(unsigned long)toneport);
|
|
||||||
mod_timer(&toneport->timer, jiffies + TONEPORT_PCM_DELAY * HZ);
|
|
||||||
|
|
||||||
/* register audio system: */
|
/* register audio system: */
|
||||||
return snd_card_register(line6->card);
|
return snd_card_register(line6->card);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue