Lines Matching +full:no +full:- +full:pc +full:- +full:write
1 /* -*- linux-c -*-
2 * dtlk.c - DoubleTalk PC driver for Linux
7 * 2000-03-18 Jim Van Zandt: Fix polling.
14 /* This driver is for the DoubleTalk PC, a speech synthesizer
19 The DoubleTalk PC contains four voice synthesizers: text-to-speech
29 DoubleTalk PC implement index markers. Both the TTS and LPC ports
32 The DoubleTalk PC generates no interrupts.
37 "write" sends bytes to the TTS port. It is the responsibility of
39 This driver was written for use with the text-to-speech
56 #include <linux/errno.h> /* for -EBUSY */
104 .write = dtlk_write,
133 /* printk("DoubleTalk PC - dtlk_read()\n"); */ in dtlk_read()
136 return -EINVAL; in dtlk_read()
143 return -EFAULT; in dtlk_read()
148 if (file->f_flags & O_NONBLOCK) in dtlk_read()
155 return -EAGAIN; in dtlk_read()
170 return -EFAULT; in dtlk_write()
181 return -EINVAL; in dtlk_write()
197 /* the RDY bit goes zero 2-3 usec in dtlk_write()
199 180-190 usec later. Here, we wait in dtlk_write()
213 if (file->f_flags & O_NONBLOCK) in dtlk_write()
218 if (++retries > 10 * HZ) { /* wait no more than 10 sec in dtlk_write()
219 from last write */ in dtlk_write()
220 printk("dtlk: write timeout. " in dtlk_write()
224 return -EBUSY; in dtlk_write()
228 return -EAGAIN; in dtlk_write()
240 printk("<%ld>", jiffies-j); in dtlk_poll()
253 /* there are no exception conditions */ in dtlk_poll()
284 return -EINVAL; in dtlk_ioctl()
292 return -EINVAL; in dtlk_ioctl()
305 return -EBUSY; in dtlk_open()
309 return -ENXIO; in dtlk_open()
340 printk(KERN_ERR "DoubleTalk PC - cannot register device\n"); in dtlk_init()
371 /* ------------------------------------------------------------------------ */
397 return -EBUSY; in dtlk_dev_probe()
401 printk("DoubleTalk PC - Port %03x = %04x\n", in dtlk_dev_probe()
414 printk("DoubleTalk PC at %03x-%03x, " in dtlk_dev_probe()
417 DTLK_IO_EXTENT - 1, in dtlk_dev_probe()
418 sp->rom_version, sp->serial_number); in dtlk_dev_probe()
497 printk(KERN_INFO "DoubleTalk PC - not found\n"); in dtlk_dev_probe()
498 return -ENODEV; in dtlk_dev_probe()
504 printk(KERN_INFO"\nDoubleTalk PC - MINOR: %d, OPCODE: %d, ERROR: %d\n",
510 /* interrogate the DoubleTalk PC and return its settings */
540 if (i < sizeof(status.rom_version) - 1) in dtlk_interrogate()
602 /* no need to test -- this is only called when the port is readable */ in dtlk_read_lpc()
608 /* acknowledging a read takes 3-4 in dtlk_read_lpc()
612 while (inb_p(dtlk_port_lpc) != 0x7f && --retries > 0); in dtlk_read_lpc()
620 /* write n bytes to tts port */
624 /* printk("dtlk_write_bytes(\"%-*s\", %d)\n", n, buf, n); */ in dtlk_write_bytes()
626 while (n-- > 0) in dtlk_write_bytes()
642 if (ch != DTLK_CLEAR) /* no flow control for CLEAR command */ in dtlk_write_tts()
650 /* the RDY bit goes zero 2-3 usec after writing, and goes in dtlk_write_tts()
651 1 again 180-190 usec later. Here, we wait up to 10 in dtlk_write_tts()