Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932178AbdCMWLC (ORCPT ); Mon, 13 Mar 2017 18:11:02 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:33587 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752229AbdCMWJg (ORCPT ); Mon, 13 Mar 2017 18:09:36 -0400 Message-Id: <20170313220931.691981020@gmail.com> User-Agent: quilt/0.63-1 Date: Mon, 13 Mar 2017 22:05:55 +0000 From: okash.khawaja@gmail.com To: Greg Kroah-Hartman , Jiri Slaby , Samuel Thibault , linux-kernel@vger.kernel.org Cc: William Hubbs , Chris Brannon , Kirk Reiser , speakup@linux-speakup.org, devel@driverdev.osuosl.org, Okash Khawaja Subject: [patch 4/7] staging: speakup: move spk_stop_serial_interrupt into synth-specific release function References: <20170313220551.312820470@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Disposition: inline; filename=04_refactor_spk_stop_serial_interrupt Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3435 Lines: 91 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 a TTY-based synth implementation wouldn't need spk_stop_serial_interrupt() call. Moving it into each synth's release() method gives the decision of calling spk_stop_serial_interrupt() to that synth. TTY-based synths which follow in this patchset simply wouldn't call it. Signed-off-by: Okash Khawaja Reviewed-by: Samuel Thibault Index: linux-4.10.1/drivers/staging/speakup/serialio.c =================================================================== --- linux-4.10.1.orig/drivers/staging/speakup/serialio.c +++ linux-4.10.1/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.10.1/drivers/staging/speakup/speakup_acntpc.c =================================================================== --- linux-4.10.1.orig/drivers/staging/speakup/speakup_acntpc.c +++ linux-4.10.1/drivers/staging/speakup/speakup_acntpc.c @@ -304,6 +304,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.10.1/drivers/staging/speakup/synth.c =================================================================== --- linux-4.10.1.orig/drivers/staging/speakup/synth.c +++ linux-4.10.1/drivers/staging/speakup/synth.c @@ -462,7 +462,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.10.1/drivers/staging/speakup/speakup_decpc.c =================================================================== --- linux-4.10.1.orig/drivers/staging/speakup/speakup_decpc.c +++ linux-4.10.1/drivers/staging/speakup/speakup_decpc.c @@ -483,6 +483,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.10.1/drivers/staging/speakup/speakup_dtlk.c =================================================================== --- linux-4.10.1.orig/drivers/staging/speakup/speakup_dtlk.c +++ linux-4.10.1/drivers/staging/speakup/speakup_dtlk.c @@ -375,6 +375,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.10.1/drivers/staging/speakup/speakup_keypc.c =================================================================== --- linux-4.10.1.orig/drivers/staging/speakup/speakup_keypc.c +++ linux-4.10.1/drivers/staging/speakup/speakup_keypc.c @@ -306,6 +306,7 @@ static void keynote_release(void) { + spk_stop_serial_interrupt(); if (synth_port) synth_release_region(synth_port, SYNTH_IO_EXTENT); synth_port = 0;