mirror of https://gitee.com/openkylin/linux.git
staging: speakup: move spk_stop_serial_interrupt into synth-specific release function
This moves call to spk_stop_serial_interrupt() function out of synth_release() and into release() method of specific spk_synth instances. This is because the spk_stop_serial_interrupt() call is specific to current serial i/o implementation. Moving it into each synth's release() method gives the decision of calling spk_stop_serial_interrupt() to that synth. Signed-off-by: Okash Khawaja <okash.khawaja@gmail.com> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1e441594e5
commit
a50ef31654
|
@ -148,6 +148,7 @@ void spk_stop_serial_interrupt(void)
|
|||
/* Free IRQ */
|
||||
free_irq(serstate->irq, (void *)synth_readbuf_handler);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(spk_stop_serial_interrupt);
|
||||
|
||||
int spk_wait_for_xmitr(struct spk_synth *in_synth)
|
||||
{
|
||||
|
@ -223,6 +224,7 @@ int spk_serial_out(struct spk_synth *in_synth, const char ch)
|
|||
|
||||
void spk_serial_release(void)
|
||||
{
|
||||
spk_stop_serial_interrupt();
|
||||
if (speakup_info.port_tts == 0)
|
||||
return;
|
||||
synth_release_region(speakup_info.port_tts, 8);
|
||||
|
|
|
@ -304,6 +304,7 @@ static int synth_probe(struct spk_synth *synth)
|
|||
|
||||
static void accent_release(void)
|
||||
{
|
||||
spk_stop_serial_interrupt();
|
||||
if (speakup_info.port_tts)
|
||||
synth_release_region(speakup_info.port_tts-1, SYNTH_IO_EXTENT);
|
||||
speakup_info.port_tts = 0;
|
||||
|
|
|
@ -481,6 +481,7 @@ static int synth_probe(struct spk_synth *synth)
|
|||
|
||||
static void dtpc_release(void)
|
||||
{
|
||||
spk_stop_serial_interrupt();
|
||||
if (speakup_info.port_tts)
|
||||
synth_release_region(speakup_info.port_tts, SYNTH_IO_EXTENT);
|
||||
speakup_info.port_tts = 0;
|
||||
|
|
|
@ -375,6 +375,7 @@ static int synth_probe(struct spk_synth *synth)
|
|||
|
||||
static void dtlk_release(void)
|
||||
{
|
||||
spk_stop_serial_interrupt();
|
||||
if (speakup_info.port_tts)
|
||||
synth_release_region(speakup_info.port_tts-1, SYNTH_IO_EXTENT);
|
||||
speakup_info.port_tts = 0;
|
||||
|
|
|
@ -306,6 +306,7 @@ static int synth_probe(struct spk_synth *synth)
|
|||
|
||||
static void keynote_release(void)
|
||||
{
|
||||
spk_stop_serial_interrupt();
|
||||
if (synth_port)
|
||||
synth_release_region(synth_port, SYNTH_IO_EXTENT);
|
||||
synth_port = 0;
|
||||
|
|
|
@ -462,7 +462,6 @@ void synth_release(void)
|
|||
sysfs_remove_group(speakup_kobj, &synth->attributes);
|
||||
for (var = synth->vars; var->var_id != MAXVARS; var++)
|
||||
speakup_unregister_var(var->var_id);
|
||||
spk_stop_serial_interrupt();
|
||||
synth->release();
|
||||
synth = NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue