Annotation of kernel/bsd/dev/snd_msgs.h, revision 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.