[patch 3/4] staging: speakup: move spk_stop_serial_interrupt into synth-specific release function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>

Reviewed-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx>

Index: linux-4.11-rc2/drivers/staging/speakup/serialio.c
===================================================================
--- linux-4.11-rc2.orig/drivers/staging/speakup/serialio.c
+++ linux-4.11-rc2/drivers/staging/speakup/serialio.c
@@ -149,6 +149,7 @@
 	/* 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)
 {
@@ -224,6 +225,7 @@
 
 void spk_serial_release(void)
 {
+	spk_stop_serial_interrupt();
 	if (speakup_info.port_tts == 0)
 		return;
 	synth_release_region(speakup_info.port_tts, 8);
Index: linux-4.11-rc2/drivers/staging/speakup/speakup_acntpc.c
===================================================================
--- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_acntpc.c
+++ linux-4.11-rc2/drivers/staging/speakup/speakup_acntpc.c
@@ -303,6 +303,7 @@
 
 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;
Index: linux-4.11-rc2/drivers/staging/speakup/synth.c
===================================================================
--- linux-4.11-rc2.orig/drivers/staging/speakup/synth.c
+++ linux-4.11-rc2/drivers/staging/speakup/synth.c
@@ -432,7 +432,6 @@
 		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;
 }
Index: linux-4.11-rc2/drivers/staging/speakup/speakup_decpc.c
===================================================================
--- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_decpc.c
+++ linux-4.11-rc2/drivers/staging/speakup/speakup_decpc.c
@@ -482,6 +482,7 @@
 
 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;
Index: linux-4.11-rc2/drivers/staging/speakup/speakup_dtlk.c
===================================================================
--- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_dtlk.c
+++ linux-4.11-rc2/drivers/staging/speakup/speakup_dtlk.c
@@ -374,6 +374,7 @@
 
 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;
Index: linux-4.11-rc2/drivers/staging/speakup/speakup_keypc.c
===================================================================
--- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_keypc.c
+++ linux-4.11-rc2/drivers/staging/speakup/speakup_keypc.c
@@ -305,6 +305,7 @@
 
 static void keynote_release(void)
 {
+	spk_stop_serial_interrupt();
 	if (synth_port)
 		synth_release_region(synth_port, SYNTH_IO_EXTENT);
 	synth_port = 0;

_______________________________________________
Speakup mailing list
Speakup@xxxxxxxxxxxxxxxxx
http://linux-speakup.org/cgi-bin/mailman/listinfo/speakup




[Index of Archives]     [Linux for the Blind]     [Fedora Discussioin]     [Linux Kernel]     [Yosemite News]     [Big List of Linux Books]
  Powered by Linux