root/drivers/accessibility/speakup/speakup_dtlk.h
/* SPDX-License-Identifier: GPL-2.0 */
/* speakup_dtlk.h - header file for speakups DoubleTalk driver. */

#define SYNTH_IO_EXTENT 0x02
#define SYNTH_CLEAR     0x18            /* stops speech */
        /* TTS Port Status Flags */
#define TTS_READABLE    0x80    /* mask for bit which is nonzero if a
                                 * byte can be read from the TTS port
                                 */
#define TTS_SPEAKING    0x40    /* mask for SYNC bit, which is nonzero
                                 * while DoubleTalk is producing
                                 * output with TTS, PCM or CVSD
                                 * synthesizers or tone generators
                                 * (that is, all but LPC)
                                 */
#define TTS_SPEAKING2   0x20    /* mask for SYNC2 bit,
                                 * which falls to zero up to 0.4 sec
                                 * before speech stops
                                 */
#define TTS_WRITABLE    0x10    /* mask for RDY bit, which when set to
                                 * 1, indicates the TTS port is ready
                                 * to accept a byte of data.  The RDY
                                 * bit goes zero 2-3 usec after
                                 * writing, and goes 1 again 180-190
                                 * usec later.
                                 */
#define TTS_ALMOST_FULL 0x08    /* mask for AF bit: When set to 1,
                                 * indicates that less than 300 bytes
                                 * are available in the TTS input
                                 * buffer. AF is always 0 in the PCM,
                                 * TGN and CVSD modes.
                                 */
#define TTS_ALMOST_EMPTY 0x04   /* mask for AE bit: When set to 1,
                                 * indicates that less than 300 bytes
                                 * are remaining in DoubleTalk's input
                                 * (TTS or PCM) buffer. AE is always 1
                                 * in the TGN and CVSD modes.
                                 */

                                /* data returned by Interrogate command */
struct synth_settings {
        u_short serial_number;  /* 0-7Fh:0-7Fh */
        u_char rom_version[24]; /* null terminated string */
        u_char mode;            /* 0=Character; 1=Phoneme; 2=Text */
        u_char punc_level;      /* nB; 0-7 */
        u_char formant_freq;    /* nF; 0-9 */
        u_char pitch;           /* nP; 0-99 */
        u_char speed;           /* nS; 0-9 */
        u_char volume;          /* nV; 0-9 */
        u_char tone;            /* nX; 0-2 */
        u_char expression;      /* nE; 0-9 */
        u_char ext_dict_loaded; /* 1=exception dictionary loaded */
        u_char ext_dict_status; /* 1=exception dictionary enabled */
        u_char free_ram;        /* # pages (truncated) remaining for
                                 * text buffer
                                 */
        u_char articulation;    /* nA; 0-9 */
        u_char reverb;          /* nR; 0-9 */
        u_char eob;             /* 7Fh value indicating end of
                                 * parameter block
                                 */
        u_char has_indexing;    /* nonzero if indexing is implemented */
};