X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=drivers%2Fstaging%2Fspeakup%2Fspeakup_dtlk.c;h=33180937222d1a930eba0d79a4a4197606aca548;hb=9786e34e0a6055dbd1b46e16dfa791ac2b3da289;hp=e2bf20806d8deea16a6e93233dbf4c4cd14311f8;hpb=28b2013587e535cef8bd8d8e0eae5ad40868369b;p=karo-tx-linux.git diff --git a/drivers/staging/speakup/speakup_dtlk.c b/drivers/staging/speakup/speakup_dtlk.c index e2bf20806d8d..33180937222d 100644 --- a/drivers/staging/speakup/speakup_dtlk.c +++ b/drivers/staging/speakup/speakup_dtlk.c @@ -43,6 +43,7 @@ static int port_forced; static unsigned int synth_portlist[] = { 0x25e, 0x29e, 0x2de, 0x31e, 0x35e, 0x39e, 0 }; + static u_char synth_status; static struct var_t vars[] = { @@ -128,6 +129,7 @@ static struct spk_synth synth_dtlk = { .startup = SYNTH_START, .checkval = SYNTH_CHECK, .vars = vars, + .io_ops = &spk_serial_io_ops, .probe = synth_probe, .release = dtlk_release, .synth_immediate = synth_immediate, @@ -209,6 +211,7 @@ static void do_catch_up(struct spk_synth *synth) synth->flush(synth); continue; } + synth_buffer_skip_nonlatin1(); if (synth_buffer_empty()) { spin_unlock_irqrestore(&speakup_info.spinlock, flags); break; @@ -297,7 +300,7 @@ static struct synth_settings *synth_interrogate(struct spk_synth *synth) t += 2; for (i = 0; *t != '\r'; t++) { status.rom_version[i] = *t; - if (i < sizeof(status.rom_version)-1) + if (i < sizeof(status.rom_version) - 1) i++; } status.rom_version[i] = 0; @@ -373,12 +376,13 @@ 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; } -module_param_named(port, port_forced, int, 0444); +module_param_hw_named(port, port_forced, int, ioport, 0444); module_param_named(start, synth_dtlk.startup, short, 0444); MODULE_PARM_DESC(port, "Set the port for the synthesizer (override probing).");