Annotation of kernel/bsd/dev/snd_msgs.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
                      7:  * Reserved.  This file contains Original Code and/or Modifications of
                      8:  * Original Code as defined in and that are subject to the Apple Public
                      9:  * Source License Version 1.1 (the "License").  You may not use this file
                     10:  * except in compliance with the License.  Please obtain a copy of the
                     11:  * License at http://www.apple.com/publicsource and read it before using
                     12:  * this file.
                     13:  * 
                     14:  * The Original Code and all software distributed under the License are
                     15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     19:  * License for the specific language governing rights and limitations
                     20:  * under the License.
                     21:  * 
                     22:  * @APPLE_LICENSE_HEADER_END@
                     23:  */
                     24: 
                     25: /* 
                     26:  * Copyright (c) 1988 NeXT, Inc.
                     27:  */
                     28: /*
                     29:  * HISTORY
                     30:  * 01-Mar-93 Mike Minnick (mminnick) at NeXT
                     31:  *     Added generic stream format get/set.
                     32:  *
                     33:  * 29-Oct-91 Mike Minnick (mminnick) at NeXT
                     34:  *     Added stream owner port to snd_stream_msg_t.
                     35:  *
                     36:  * 23-Aug-90  Gregg Kellogg (gk) at NeXT
                     37:  *     Added SND_DSP_PROTO_TXD for 040 TXD interrupt support.
                     38:  *
                     39:  * 23-Aug-90  Gregg Kellogg (gk) at NeXT
                     40:  *     Support message passing protocol change so the reply port isn't
                     41:  *     used for passing permissions (set_owner, get_stream, dsp_proto,
                     42:  *     and get_dsp_cmd_port).
                     43:  *
                     44:  * 21-Aug-90  Julius Smith (jos) at NeXT
                     45:  *     Added protocol message type for setting the protocol from the
                     46:  *     dsp command queue.
                     47:  *
                     48:  * 10-Dec-88  Gregg Kellogg (gk) at NeXT
                     49:  *     Created.
                     50:  *
                     51:  */ 
                     52: #ifdef DRIVER_PRIVATE
                     53: 
                     54: #ifndef        _M68K_DEV_SND_MSGS_PRIV_
                     55: #define _M68K_DEV_SND_MSGS_PRIV_
                     56: 
                     57: #import <mach/mach_types.h>
                     58: #import <mach/message.h>
                     59: 
                     60: /*
                     61:  * Message component type codes on stream port.
                     62:  */
                     63: typedef struct {
                     64:        msg_type_t      typeType;
                     65:        unsigned int    type;
                     66: #define SND_MT_PLAY_DATA       0       // data to be played (with size)
                     67: #define SND_MT_RECORD_DATA     1       // number of bytes to record
                     68: #define SND_MT_OPTIONS         2       // high/low water and dma size options
                     69: #define SND_MT_CONTROL         3       // await/abort/pause/continue
                     70: #define SND_MT_NDMA            4       // number of dma descs in stream.
                     71: /* New for 3.1 */
                     72: #define SND_MT_FORMAT          5       // rate, encoding, chan count
                     73: } snd_msg_type_t;
                     74: 
                     75: /*
                     76:  * Interface message formats
                     77:  */
                     78: 
                     79: /*
                     80:  * Messages sent from the kernel
                     81:  */
                     82: typedef struct {
                     83:        msg_header_t    header;
                     84:        msg_type_t      data_tagType;
                     85:        int             data_tag;
                     86:        msg_type_long_t dataType;
                     87:        pointer_t       recorded_data;
                     88: } snd_recorded_data_t;
                     89: 
                     90: typedef struct {
                     91:        msg_header_t    header;
                     92:        msg_type_t      data_tagType;
                     93:        int             data_tag;
                     94: } snd_taged_reply_t;
                     95: 
                     96: typedef struct {
                     97:        msg_header_t    header;
                     98:        msg_type_t      dataType;
                     99:        int             nsamples;
                    100:        int             timeStamp;
                    101: } snd_ret_samples_t;
                    102: 
                    103: typedef struct {
                    104:        msg_header_t    header;
                    105:        msg_type_t      dataType;
                    106:        unsigned int    parms;
                    107: #define SND_PARM_LOWPASS       0x1
                    108: #define SND_PARM_SPEAKER       0x2
                    109: #define SND_PARM_ZEROFILL      0x4
                    110: } snd_ret_parms_t;
                    111: 
                    112: typedef struct {
                    113:        msg_header_t    header;
                    114:        msg_type_t      dataType;
                    115:        unsigned int    volume;
                    116: #define SND_VOLUME_RCHAN_MASK  0xff
                    117: #define SND_VOLUME_RCHAN_SHIFT 0
                    118: #define SND_VOLUME_LCHAN_MASK  0xff00
                    119: #define SND_VOLUME_LCHAN_SHIFT 8
                    120: } snd_ret_volume_t;
                    121: 
                    122: /* New for 3.1 */
                    123: typedef struct {
                    124:        msg_header_t    header;
                    125:        msg_type_t      Type;
                    126:        unsigned int    rate;
                    127: #define        SND_STREAM_FORMAT_RATE_CONTINUOUS       (1<<0)
                    128: #define        SND_STREAM_FORMAT_RATE_8000             (1<<1)
                    129: #define        SND_STREAM_FORMAT_RATE_11025            (1<<2)
                    130: #define        SND_STREAM_FORMAT_RATE_16000            (1<<3)
                    131: #define        SND_STREAM_FORMAT_RATE_22050            (1<<4)
                    132: #define        SND_STREAM_FORMAT_RATE_32000            (1<<5)
                    133: #define        SND_STREAM_FORMAT_RATE_44100            (1<<6)
                    134: #define        SND_STREAM_FORMAT_RATE_48000            (1<<7)
                    135:        unsigned int    low_rate;
                    136:        unsigned int    high_rate;
                    137:        unsigned int    encoding;
                    138: #define        SND_STREAM_FORMAT_ENCODING_MULAW_8      (1<<0)
                    139: #define        SND_STREAM_FORMAT_ENCODING_LINEAR_8     (1<<1)
                    140: #define        SND_STREAM_FORMAT_ENCODING_LINEAR_16    (1<<2)
                    141:        unsigned int    chan_count;
                    142: } snd_ret_stream_formats_t;
                    143: 
                    144: typedef struct {
                    145:        msg_header_t    header;
                    146:        msg_type_t      dataType;
                    147:        int             dsp_regs;
                    148: } snd_ret_dsp_regs_t;
                    149: 
                    150: typedef struct {
                    151:        msg_header_t    header;
                    152:        msg_type_t      dataType;
                    153:        unsigned int    ill_msgid;      // message id of bad message.
                    154:        unsigned int    ill_error;      // error returned
                    155: #define SND_NO_ERROR   100     // non-error ack.
                    156: #define SND_BAD_PORT   101     // message sent to wrong port
                    157: #define SND_BAD_MSG    102     // unknown message id
                    158: #define SND_BAD_PARM   103     // bad parameter list in message
                    159: #define SND_NO_MEMORY  104     // can't allocate memory (record)
                    160: #define SND_PORT_BUSY  105     // access req'd to existing excl access port
                    161: #define SND_NOT_OWNER  106     // must be owner to do this
                    162: #define SND_BAD_CHAN   107     // dsp channel hasn't been inited
                    163: #define SND_SEARCH     108     // couldn't find requested resource
                    164: #define SND_NODATA     109     // can't send data commands to dsp in this mode
                    165: #define SND_NOPAGER    110     // can't allocate from external pager (record).
                    166: #define SND_NOTALIGNED 111     // bad data alignment.
                    167: #define SND_BAD_HOST_PRIV 112  // bad host privilege port passed.
                    168: #define SND_BAD_PROTO  113     // can't do requested operation given protocol
                    169: } snd_illegal_msg_t;
                    170: 
                    171: typedef struct {msg_header_t header;} snd_ret_port_t;
                    172: 
                    173: typedef struct {
                    174:        msg_header_t    header;
                    175:        msg_type_t      dataType;
                    176:        unsigned int    mask;
                    177:        unsigned int    flags;
                    178:        unsigned int    value;
                    179: } snd_dsp_cond_true_t;
                    180: 
                    181: /*
                    182:  * Messages sent from the user to the device
                    183:  */
                    184: typedef struct {
                    185:        msg_header_t    header;
                    186:        msg_type_t      Type;
                    187:        unsigned int    stream;
                    188:        msg_type_t      ownerType;
                    189:        port_t          owner;
                    190: } snd_get_stream_t;
                    191: 
                    192: #define SND_GD_CHAN_MASK       0x7f
                    193: #define SND_GD_CHAN_SHIFT      0
                    194: #define SND_GD_DEVICE_MASK     0x80
                    195: #define SND_GD_DEVICE_SHIFT    7
                    196: 
                    197: #define snd_gd_bitmap(chan, device) \
                    198:        (((chan)<<SND_GD_CHAN_SHIFT) | ((device)<<SND_GD_DEVICE_SHIFT))
                    199: 
                    200: #define snd_gd_isdevice(bitmap)  ((bitmap)&SND_GD_DEVICE_MASK)
                    201: #define snd_gd_chan(bitmap) ((bitmap)&SND_GD_CHAN_MASK)
                    202: 
                    203: #define SND_GD_SOUT_44 snd_gd_bitmap(0, TRUE)
                    204: #define SND_GD_SOUT_22 snd_gd_bitmap(1, TRUE)
                    205: #define SND_GD_SIN     snd_gd_bitmap(2, TRUE)
                    206: #define SND_GD_DSP_OUT snd_gd_bitmap(DSP_SO_CHAN, FALSE) // sound out from dsp
                    207: #define SND_GD_DSP_IN  snd_gd_bitmap(DSP_SI_CHAN, FALSE) // sound in to dsp
                    208: 
                    209: typedef struct {
                    210:        msg_header_t    header;
                    211:        msg_type_t      Type;
                    212:        unsigned int    parms;
                    213: } snd_set_parms_t;
                    214: 
                    215: typedef struct {
                    216:        msg_header_t    header;
                    217:        msg_type_t      Type;
                    218:        unsigned int    volume;
                    219: } snd_set_volume_t;
                    220: 
                    221: typedef struct {
                    222:        msg_header_t    header;
                    223:        msg_type_t      Type;
                    224:        unsigned int    proto;
                    225:        msg_type_t      ownerType;
                    226:        port_t          owner;
                    227: } snd_dsp_proto_t;
                    228: 
                    229: #define SND_DSP_PROTO_DSPERR   0x1     // DSP error messages enabled
                    230: #define SND_DSP_PROTO_C_DMA    0x2     // complex dma mode
                    231: #define SND_DSP_PROTO_S_DMA    0x4     // simple dma mode
                    232: #define SND_DSP_PROTO_LINKOUT  0x8     // link directly to sound out
                    233: #define SND_DSP_PROTO_LINKIN   0x10    // link directly to sound out
                    234: #define SND_DSP_PROTO_SOUNDDATA        0x20    // all data to dsp is sound samples
                    235: #define SND_DSP_PROTO_HIGH     0x40    // 44khz sound out
                    236: #define SND_DSP_PROTO_HFABORT  0x80    // DSP abort indicated by HF2 & HF3
                    237: #define SND_DSP_PROTO_DSPMSG   0x100   // DSP messages enabled
                    238: #define SND_DSP_PROTO_RAW      0x200   // DSP messages enabled
                    239: #define SND_DSP_PROTO_TXD      0x400   // DSP txd interrupt enable (040 only)
                    240: 
                    241: typedef msg_header_t   snd_get_parms_t;
                    242: typedef msg_header_t   snd_get_volume_t;
                    243: /* New for 3.1 */
                    244: typedef msg_header_t   snd_get_stream_formats_t;
                    245: 
                    246: typedef struct {
                    247:        msg_header_t    header;
                    248:        msg_type_t      ownerType;
                    249:        port_t          owner;          // owner port
                    250: } snd_get_dsp_cmd_port_t;
                    251: 
                    252: typedef struct {
                    253:        msg_header_t    header;
                    254:        msg_type_t      negType;
                    255:        port_t          negotiation;    // negotiation port
                    256:        msg_type_t      ownerType;
                    257:        port_t          owner;          // owner port
                    258: } snd_set_owner_t;
                    259: 
                    260: typedef struct {
                    261:        msg_header_t    header;
                    262:        msg_type_t      old_ownerType;
                    263:        port_t          old_owner;
                    264:        msg_type_t      new_ownerType;
                    265:        port_t          new_owner;
                    266:        msg_type_t      new_negotiationType;
                    267:        port_t          new_negotiation;
                    268: } snd_reset_owner_t;
                    269: 
                    270: typedef struct {
                    271:        msg_header_t    header;
                    272:        msg_type_t      privType;
                    273:        port_t          priv;
                    274: } snd_new_device_t;
                    275: 
                    276: typedef struct {
                    277:        msg_header_t    header;
                    278:        msg_type_long_t dataType;
                    279: #define DSP_DEF_BUFSIZE        512                     // default #words in each buf
                    280:        unsigned int    data[DSP_DEF_BUFSIZE];
                    281: } snd_dsp_msg_t;
                    282: 
                    283: typedef struct {
                    284:        msg_header_t    header;
                    285:        msg_type_long_t dataType;
                    286: #define DSP_DEF_EBUFSIZE 32                    // default #words in each buf
                    287:        unsigned int    data[DSP_DEF_EBUFSIZE];
                    288: } snd_dsp_err_t;
                    289: 
                    290: /*
                    291:  * Messages sent from the user to a stream port
                    292:  * There's only one message, but it can contain some combination
                    293:  * of several different sub-messages.
                    294:  */
                    295: typedef struct snd_stream_msg {
                    296:        msg_header_t    header;
                    297:        msg_type_t      data_tagType;
                    298:        int             data_tag;               // tag for this request, 0 def
                    299:        msg_type_t      ownerType;
                    300:        port_t          streamOwner;            // stream owner port for 3.0
                    301: } snd_stream_msg_t;
                    302: 
                    303: typedef struct {
                    304:        snd_msg_type_t  msgtype;
                    305:        msg_type_t      optionsType;
                    306:        unsigned int    options;
                    307: #define SND_DM_STARTED_MSG     0x01
                    308: #define SND_DM_COMPLETED_MSG   0x02
                    309: #define SND_DM_ABORTED_MSG     0x04
                    310: #define SND_DM_PAUSED_MSG      0x08
                    311: #define SND_DM_RESUMED_MSG     0x10
                    312: #define SND_DM_OVERFLOW_MSG    0x20
                    313: #define SND_DM_PREEMPT         0x40
                    314:        msg_type_t      reg_portType;
                    315:        port_t          reg_port;       // remote port for region messages
                    316:        msg_type_long_t dataType;
                    317:        pointer_t       data;
                    318: } snd_stream_play_data_t;
                    319: 
                    320: typedef struct {
                    321:        snd_msg_type_t  msgtype;
                    322:        msg_type_t      optionsType;
                    323:        unsigned int    options;
                    324:        int             nbytes;
                    325:        msg_type_t      reg_portType;
                    326:        port_t          reg_port;       // remote port for region messages
                    327:        msg_type_t      filenameType;   // filename string follows inline
                    328: } snd_stream_record_data_t;
                    329: 
                    330: typedef struct {
                    331:        snd_msg_type_t  msgtype;
                    332:        msg_type_t      controlType;
                    333:        unsigned int    snd_control;
                    334: #define SND_DC_AWAIT   0x1
                    335: #define SND_DC_ABORT   0x2
                    336: #define SND_DC_PAUSE   0x4
                    337: #define SND_DC_RESUME  0x8
                    338: } snd_stream_control_t;
                    339: 
                    340: typedef struct {
                    341:        snd_msg_type_t  msg_type;
                    342:        msg_type_t      optionsType;
                    343:        unsigned int    high_water;
                    344:        unsigned int    low_water;
                    345:        unsigned int    dma_size;
                    346: } snd_stream_options_t;
                    347: 
                    348: /* New for 3.1 */
                    349: typedef struct {
                    350:        snd_msg_type_t  msg_type;
                    351:        msg_type_t      formatType;
                    352:        unsigned int    rate;
                    353:        unsigned int    encoding;
                    354:        unsigned int    chan_count;
                    355: } snd_stream_format_t;
                    356: 
                    357: /*
                    358:  * Number of dma descriptors used in stream.
                    359:  */
                    360: typedef struct {
                    361:        snd_msg_type_t  msg_type;
                    362:        msg_type_t      ndmaType;
                    363:        unsigned int    ndma;
                    364: } snd_stream_ndma_t;
                    365: 
                    366: /*
                    367:  * Nsamples is another message on a stream port.
                    368:  */
                    369: typedef struct {
                    370:        msg_header_t    header;
                    371: } snd_stream_nsamples_t;
                    372: 
                    373: /*
                    374:  * Messages sent by user to dsp command port.
                    375:  */
                    376: typedef struct {
                    377:        msg_header_t    header;
                    378:        msg_type_t      reg_maskType;
                    379:        unsigned int    mask;           // mask of flags to inspect
                    380:        unsigned int    flags;          // set of flags that must be on
                    381:        msg_type_t      ret_portType;
                    382:        port_t          ret_port;       // remote port for ret_msg
                    383:        msg_type_long_t ret_msgType;
                    384:        /*
                    385:         * follows is the body of the (simple) message to send
                    386:         * either to msg_remote_port, or to snd_var.dsp  (if PORT_NULL).
                    387:         */
                    388:        msg_header_t    ret_msg;        // possibly longer than this.
                    389: } snd_dspcmd_event_t;
                    390: 
                    391: typedef struct {
                    392:        msg_header_t    header;
                    393:        msg_type_t      dataType;
                    394:        int             addr;           // .. of dsp buffer
                    395:        int             size;           // .. of dsp buffer
                    396:        int             skip;           // dma skip factor
                    397: #define DSP_SKIP_0     1
                    398: #define DSP_SKIP_CONTIG        DSP_SKIP_0
                    399: #define DSP_SKIP_1     2
                    400: #define DSP_SKIP_2     3
                    401: #define DSP_SKIP_3     4
                    402: #define DSP_SKIP_4     5
                    403:        int             space;          // dsp space of buffer
                    404: #define        DSP_SPACE_X     1
                    405: #define DSP_SPACE_Y    2
                    406: #define DSP_SPACE_L    3
                    407: #define DSP_SPACE_P    4
                    408:        int             mode;           // mode of dma [1..5]
                    409: #define DSP_MODE8      1
                    410: #define DSP_MODE16     2
                    411: #define DSP_MODE24     3
                    412: #define DSP_MODE32     4
                    413: #define DSP_MODE2416   5               /* Pseudo-dma shift 24 to 16 bits */
                    414: #define SND_MODE_MIN   1               /* Minimum value for mode */
                    415: #define SND_MODE_MAX   5               /* Maximum value for mode */
                    416:        int             chan;           // channel for dma
                    417: #define DSP_USER_REQ_CHAN 0    // for user-requested dma's
                    418: #define DSP_SO_CHAN    1       // for sound-out dma's.
                    419: #define DSP_SI_CHAN    2       // for sound-in dma's
                    420: #define DSP_USER_CHAN  3       // first user chan
                    421: 
                    422: #define DSP_N_USER_CHAN        16      // 0..15 for user dma.
                    423: } snd_dspcmd_chandata_t;
                    424: 
                    425: typedef struct {
                    426:        msg_header_t    header;
                    427:        msg_type_t      chandataType;
                    428:        int             addr;           // .. of dsp buffer
                    429:        int             size;           // .. of dsp buffer
                    430:        int             skip;           // dma skip factor
                    431:        int             space;          // dsp space of buffer
                    432:        int             mode;           // mode of dma [1..5]
                    433:        msg_type_long_t dataType;
                    434:        pointer_t       data;           // data to output
                    435: } snd_dspcmd_dma_t;
                    436: 
                    437: typedef msg_header_t   snd_dspcmd_abortdma_t;
                    438: typedef msg_header_t   snd_dspcmd_req_err_t;
                    439: typedef msg_header_t   snd_dspcmd_req_msg_t;
                    440: 
                    441: /*
                    442:  * Multi-part dspcmd_msg.
                    443:  */
                    444: /*
                    445:  * Message component type codes on stream port.
                    446:  */
                    447: typedef struct {
                    448:        msg_type_t      typeType;
                    449:        unsigned int    type;
                    450: #define SND_DSP_MT_DATA                1       // 1, 2, or 4 byte data
                    451: #define SND_DSP_MT_HOST_COMMAND        2       // host command
                    452: #define SND_DSP_MT_HOST_FLAG   3       // host flag(s) to set
                    453: #define SND_DSP_MT_RET_MSG     4       // (simple) message to send
                    454: #define SND_DSP_MT_RESET       5       // hard reset the DSP
                    455: #define SND_DSP_MT_GET_REGS    6       // return DSP host I/F registers
                    456: #define SND_DSP_MT_CONDITION   7       // wait for condition (return msg)
                    457: #define SND_DSP_MT_RDATA       8       // read 1, 2, or 4 byte data
                    458: #define SND_DSP_MT_PROTO       9       // DSP protocol
                    459: } snd_dsp_type_t;
                    460: 
                    461: typedef struct {
                    462:        msg_header_t    header;
                    463:        msg_type_t      priType;
                    464:        int             pri;            // Priority of message group
                    465: #define DSP_MSG_HIGH           0
                    466: #define DSP_MSG_MED            1
                    467: #define DSP_MSG_LOW            2
                    468:        boolean_t       atomic;         // don't preempt this msg with another
                    469: } snd_dspcmd_msg_t;
                    470: 
                    471: typedef struct {
                    472:        snd_dsp_type_t  msgtype;
                    473:        msg_type_t      conditionType;
                    474:        unsigned int    mask;           // mask of flags to inspect
                    475:        unsigned int    flags;          // set of flags that must be on
                    476:        msg_type_t      reply_portType;
                    477:        port_t          reply_port;     // were to send device regs to
                    478: } snd_dsp_condition_t;
                    479: 
                    480: typedef struct {
                    481:        snd_dsp_type_t  msgtype;
                    482:        msg_type_long_t dataType;
                    483:        pointer_t       data;           // data to send
                    484: } snd_dsp_data_t;
                    485: 
                    486: typedef struct {
                    487:        snd_dsp_type_t  msgtype;
                    488:        msg_type_t      hcType;
                    489:        unsigned int    hc;             // host command
                    490: } snd_dsp_host_command_t;
                    491: 
                    492: typedef struct {
                    493:        snd_dsp_type_t  msgtype;
                    494:        msg_type_t      protoType;      // protocol modification
                    495:        unsigned int    proto;
                    496: } snd_dsp_mt_proto_t;
                    497: 
                    498: typedef struct {
                    499:        snd_dsp_type_t  msgtype;
                    500:        msg_type_t      hfType;
                    501:        unsigned int    mask;           // mask of HF0|HF1
                    502:        unsigned int    flags;          // flags to set
                    503: } snd_dsp_host_flag_t;
                    504: 
                    505: typedef struct {
                    506:        snd_dsp_type_t  msgtype;
                    507:        msg_type_t      ret_portType;
                    508:        port_t          ret_port;       // remote port for ret_msg
                    509:        msg_type_long_t ret_msgType;
                    510:        /*
                    511:         * follows is the body of the (simple) message to send
                    512:         * either to msg_remote_port, or to snd_var.dspowner (if PORT_NULL).
                    513:         */
                    514:        msg_header_t    ret_msg;        // possibly longer than this.
                    515: } snd_dsp_ret_msg_t;
                    516: 
                    517: typedef struct {
                    518:        snd_dsp_type_t  msgtype;
                    519: } snd_dsp_reset_t, snd_dsp_get_regs_t;
                    520: 
                    521: /*
                    522:  * Message Id's
                    523:  */
                    524: #define SND_MSG_BASE           0
                    525: 
                    526: /*
                    527:  * User messages on stream port
                    528:  */
                    529: #define SND_MSG_STREAM_BASE    SND_MSG_BASE+0
                    530: #define SND_MSG_STREAM_MSG     SND_MSG_STREAM_BASE+0
                    531: #define SND_MSG_STREAM_NSAMPLES        SND_MSG_STREAM_BASE+1
                    532: 
                    533: /*
                    534:  * User messages on device port
                    535:  */
                    536: #define SND_MSG_DEVICE_BASE            SND_MSG_BASE+100
                    537: #define SND_MSG_GET_STREAM             SND_MSG_DEVICE_BASE+0
                    538: #define SND_MSG_SET_PARMS              SND_MSG_DEVICE_BASE+1
                    539: #define SND_MSG_GET_PARMS              SND_MSG_DEVICE_BASE+2
                    540: #define SND_MSG_SET_VOLUME             SND_MSG_DEVICE_BASE+3
                    541: #define SND_MSG_GET_VOLUME             SND_MSG_DEVICE_BASE+4
                    542: #define SND_MSG_SET_DSPOWNER           SND_MSG_DEVICE_BASE+5
                    543: #define SND_MSG_SET_SNDINOWNER         SND_MSG_DEVICE_BASE+6
                    544: #define SND_MSG_SET_SNDOUTOWNER                SND_MSG_DEVICE_BASE+7
                    545: #define SND_MSG_DSP_PROTO              SND_MSG_DEVICE_BASE+8
                    546: #define SND_MSG_GET_DSP_CMD_PORT       SND_MSG_DEVICE_BASE+9
                    547: #define SND_MSG_NEW_DEVICE_PORT                SND_MSG_DEVICE_BASE+10
                    548: #define SND_MSG_RESET_DSPOWNER         SND_MSG_DEVICE_BASE+11
                    549: #define SND_MSG_RESET_SNDINOWNER       SND_MSG_DEVICE_BASE+12
                    550: #define SND_MSG_RESET_SNDOUTOWNER      SND_MSG_DEVICE_BASE+13
                    551: #define SND_MSG_SET_RAMP               SND_MSG_DEVICE_BASE+14
                    552: /*
                    553:  * Set ramp parameter
                    554:  */
                    555: #define SND_PARM_RAMPUP                0x1     /* Ramp sound up */
                    556: #define SND_PARM_RAMPDOWN      0x2     /* Ramp sound down */
                    557: 
                    558: /* New for 3.1 */
                    559: #define SND_MSG_GET_SNDOUT_FORMATS     SND_MSG_DEVICE_BASE+15
                    560: #define SND_MSG_GET_SNDIN_FORMATS      SND_MSG_DEVICE_BASE+16
                    561: 
                    562: /*
                    563:  * User messages on dsp command port
                    564:  */
                    565: #define SND_MSG_DSP_BASE       SND_MSG_BASE+200
                    566: #define SND_MSG_DSP_MSG                SND_MSG_DSP_BASE+0
                    567: #define SND_MSG_DSP_EVENT      SND_MSG_DSP_BASE+1
                    568: #define SND_MSG_DSP_CHANDATA   SND_MSG_DSP_BASE+2
                    569: #define SND_MSG_DSP_DMAOUT     SND_MSG_DSP_BASE+3
                    570: #define SND_MSG_DSP_DMAIN      SND_MSG_DSP_BASE+4
                    571: #define SND_MSG_DSP_ABORTDMA   SND_MSG_DSP_BASE+5
                    572: #define SND_MSG_DSP_REQ_MSG    SND_MSG_DSP_BASE+6
                    573: #define SND_MSG_DSP_REQ_ERR    SND_MSG_DSP_BASE+7
                    574: 
                    575: /*
                    576:  * Kernel messages returned.
                    577:  */
                    578: #define SND_MSG_KERN_BASE      SND_MSG_BASE+300
                    579: #define SND_MSG_RECORDED_DATA  SND_MSG_KERN_BASE+0
                    580: #define SND_MSG_TIMED_OUT      SND_MSG_KERN_BASE+1
                    581: #define SND_MSG_RET_SAMPLES    SND_MSG_KERN_BASE+2
                    582: #define SND_MSG_RET_DEVICE     SND_MSG_KERN_BASE+3
                    583: #define SND_MSG_RET_STREAM     SND_MSG_KERN_BASE+4
                    584: #define SND_MSG_RET_PARMS      SND_MSG_KERN_BASE+5
                    585: #define SND_MSG_RET_VOLUME     SND_MSG_KERN_BASE+6
                    586: #define SND_MSG_OVERFLOW       SND_MSG_KERN_BASE+7
                    587: #define SND_MSG_STARTED                SND_MSG_KERN_BASE+9
                    588: #define SND_MSG_COMPLETED      SND_MSG_KERN_BASE+10
                    589: #define SND_MSG_ABORTED                SND_MSG_KERN_BASE+11
                    590: #define SND_MSG_PAUSED         SND_MSG_KERN_BASE+12
                    591: #define SND_MSG_RESUMED                SND_MSG_KERN_BASE+13
                    592: #define SND_MSG_ILLEGAL_MSG    SND_MSG_KERN_BASE+14
                    593: #define SND_MSG_RET_DSP_ERR    SND_MSG_KERN_BASE+15
                    594: #define SND_MSG_RET_DSP_MSG    SND_MSG_KERN_BASE+16
                    595: #define SND_MSG_RET_CMD                SND_MSG_KERN_BASE+17
                    596: #define SND_MSG_DSP_REGS       SND_MSG_KERN_BASE+18
                    597: #define SND_MSG_DSP_COND_TRUE  SND_MSG_KERN_BASE+19
                    598: /* New for 3.1 */
                    599: #define SND_MSG_RET_STREAM_FORMATS     SND_MSG_KERN_BASE+20
                    600: 
                    601: /*
                    602:  * Ioctl for retrieving device port.
                    603:  */
                    604: #ifdef _IO
                    605: #define SOUNDIOCDEVPORT        _IO('A', 8)
                    606: #endif /* _IO */
                    607: 
                    608: /*
                    609:  * Routine prototypes
                    610:  */
                    611: #if    KERNEL
                    612: #ifdef m68k
                    613: kern_return_t snd_reply_recorded_data (
                    614:        port_t          remote_port,    // who to reply to
                    615:        int             data_tag,       // tag from region
                    616:        pointer_t       data,           // recorded data
                    617:        int             nbytes,         // number of bytes of data to send
                    618:        int             in_line);       // "Send data inline" flag.
                    619: kern_return_t snd_reply_timed_out (
                    620:        port_t          remote_port,    // who to send it to.
                    621:        int             data_tag);      // tag from region
                    622: kern_return_t snd_reply_ret_samples (
                    623:        port_t          remote_port,    // who to send it to.
                    624:        int             nsamples,       // number of bytes of data to record
                    625:        int             timeStamp);     
                    626: kern_return_t snd_reply_ret_device (
                    627:        port_name_t     remote_port,    // who to send it to.
                    628:        port_name_t     device_port);   // returned port.
                    629: kern_return_t snd_reply_ret_stream (
                    630:        port_t          remote_port,    // who to send it to.
                    631:        port_t          stream_port);   // returned port.
                    632: kern_return_t snd_reply_ret_parms (
                    633:        port_t          remote_port,    // who to send it to.
                    634:        unsigned int    parms);
                    635: kern_return_t snd_reply_ret_volume (
                    636:        port_t          remote_port,    // who to send it to.
                    637:        unsigned int    volume);
                    638: /* New for 3.1 */
                    639: kern_return_t snd_reply_ret_formats (
                    640:        port_name_t     remote_port,    // who to send it to.
                    641:        u_int           rates,
                    642:         u_int          low_rate,
                    643:         u_int          high_rate,
                    644:         u_int           encodings,
                    645:         u_int           chan_count);
                    646: kern_return_t snd_reply_overflow (
                    647:        port_t          remote_port,    // who to send it to.
                    648:        int             data_tag);      // from region
                    649: kern_return_t snd_reply_started (
                    650:        port_t          remote_port,    // who to send it to.
                    651:        int             data_tag);      // from region
                    652: kern_return_t snd_reply_completed (
                    653:        port_t          remote_port,    // who to send it to.
                    654:        int             data_tag);      // from region
                    655: kern_return_t snd_reply_aborted (
                    656:        port_t          remote_port,    // who to send it to.
                    657:        int             data_tag);      // from region
                    658: kern_return_t snd_reply_paused (
                    659:        port_t          remote_port,    // who to send it to.
                    660:        int             data_tag);      // from region
                    661: kern_return_t snd_reply_resumed (
                    662:        port_t          remote_port,    // who to send it to.
                    663:        int             data_tag);      // from region
                    664: kern_return_t snd_reply_illegal_msg (
                    665:        port_t          local_port,     // returned port of interest
                    666:        port_t          remote_port,    // who to send it to.
                    667:        int             msg_id,         // message id with illegal syntax       
                    668:        int             error);         // error code
                    669: kern_return_t snd_reply_dsp_err (
                    670:        port_t          remote_port);   // who to send it to.
                    671: kern_return_t snd_reply_dsp_msg (
                    672:        port_t          remote_port);   // who to send it to.
                    673: kern_return_t snd_reply_dsp_cmd_port(
                    674:        port_t          cmd_port,       // port to return.
                    675:        port_t          remote_port);   // where to return it
                    676: kern_return_t snd_reply_dsp_regs (
                    677:        int             regs);          // DSP host I/F registers (not recieve)
                    678: kern_return_t snd_reply_dsp_cond_true (        // reply indicating condition true
                    679:        vm_address_t    ret_cond);      // reply_port, status and conditions
                    680: #endif /* m68k */
                    681: #endif /* KERNEL */
                    682: 
                    683: #endif /* _M68K_DEV_SND_MSGS_PRIV_ */
                    684: 
                    685: #endif /* DRIVER_PRIVATE */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.