Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * Driver for Digigram VX soundcards
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  * Definitions of DSP commands
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  * Copyright (c) 2002 by Takashi Iwai <tiwai@suse.de>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #ifndef __VX_CMD_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #define __VX_CMD_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) enum {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 	CMD_VERSION,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 	CMD_SUPPORTED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 	CMD_TEST_IT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 	CMD_SEND_IRQA,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 	CMD_IBL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 	CMD_ASYNC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 	CMD_RES_PIPE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	CMD_FREE_PIPE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	CMD_CONF_PIPE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	CMD_ABORT_CONF_PIPE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	CMD_PARAM_OUTPUT_PIPE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	CMD_STOP_PIPE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	CMD_PIPE_STATE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	CMD_PIPE_SPL_COUNT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	CMD_CAN_START_PIPE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	CMD_SIZE_HBUFFER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	CMD_START_STREAM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	CMD_START_ONE_STREAM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	CMD_PAUSE_STREAM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	CMD_PAUSE_ONE_STREAM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	CMD_STREAM_OUT_LEVEL_ADJUST,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 	CMD_STOP_STREAM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	CMD_FORMAT_STREAM_OUT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	CMD_FORMAT_STREAM_IN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	CMD_GET_STREAM_STATE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	CMD_DROP_BYTES_AWAY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	CMD_GET_REMAINING_BYTES,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	CMD_CONNECT_AUDIO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	CMD_AUDIO_LEVEL_ADJUST,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	CMD_AUDIO_VU_PIC_METER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	CMD_GET_AUDIO_LEVELS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	CMD_GET_NOTIFY_EVENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	CMD_INFO_NOTIFIED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	CMD_ACCESS_IO_FCT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	CMD_STATUS_R_BUFFERS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	CMD_UPDATE_R_BUFFERS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	CMD_LOAD_EFFECT_CONTEXT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	CMD_EFFECT_ONE_PIPE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	CMD_MODIFY_CLOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	CMD_STREAM1_OUT_SET_N_LEVELS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	CMD_PURGE_STREAM_DCMDS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	CMD_NOTIFY_PIPE_TIME,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	CMD_LOAD_EFFECT_CONTEXT_PACKET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	CMD_RELIC_R_BUFFER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	CMD_RESYNC_AUDIO_INPUTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	CMD_NOTIFY_STREAM_TIME,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	CMD_STREAM_SAMPLE_COUNT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	CMD_CONFIG_TIME_CODE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	CMD_GET_TIME_CODE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	CMD_MANAGE_SIGNAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	CMD_PARAMETER_STREAM_OUT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	CMD_READ_BOARD_FREQ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	CMD_GET_STREAM_LEVELS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	CMD_PURGE_PIPE_DCMDS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	// CMD_SET_STREAM_OUT_EFFECTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	// CMD_GET_STREAM_OUT_EFFECTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	CMD_CONNECT_MONITORING,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	CMD_STREAM2_OUT_SET_N_LEVELS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	CMD_CANCEL_R_BUFFERS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	CMD_NOTIFY_END_OF_BUFFER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	CMD_GET_STREAM_VU_METER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	CMD_LAST_INDEX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) struct vx_cmd_info {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	unsigned int opcode;	/* command word */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	int length;		/* command length (in words) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	int st_type;		/* status type (RMH_SSIZE_XXX) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	int st_length;		/* fixed length */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) /* Family and code op of some DSP requests. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) #define CODE_OP_PIPE_TIME                       0x004e0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) #define CODE_OP_START_STREAM                    0x00800000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) #define CODE_OP_PAUSE_STREAM                    0x00810000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) #define CODE_OP_OUT_STREAM_LEVEL                0x00820000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) #define CODE_OP_UPDATE_R_BUFFERS                0x00840000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) #define CODE_OP_OUT_STREAM1_LEVEL_CURVE         0x00850000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) #define CODE_OP_OUT_STREAM2_LEVEL_CURVE         0x00930000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) #define CODE_OP_OUT_STREAM_FORMAT               0x00860000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) #define CODE_OP_STREAM_TIME                     0x008f0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) #define CODE_OP_OUT_STREAM_EXTRAPARAMETER       0x00910000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) #define CODE_OP_OUT_AUDIO_LEVEL                 0x00c20000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) #define NOTIFY_LAST_COMMAND     0x00400000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) /* Values for a user delay */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) #define DC_DIFFERED_DELAY       (1<<BIT_DIFFERED_COMMAND)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define DC_NOTIFY_DELAY         (1<<BIT_NOTIFIED_COMMAND)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #define DC_HBUFFER_DELAY        (1<<BIT_TIME_RELATIVE_TO_BUFFER)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #define DC_MULTIPLE_DELAY       (1<<BIT_RESERVED)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #define DC_STREAM_TIME_DELAY    (1<<BIT_STREAM_TIME)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #define DC_CANCELLED_DELAY      (1<<BIT_CANCELLED_COMMAND)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) /* Values for tiDelayed field in TIME_INFO structure,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)  * and for pbPause field in PLAY_BUFFER_INFO structure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) #define BIT_DIFFERED_COMMAND                0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #define BIT_NOTIFIED_COMMAND                1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define BIT_TIME_RELATIVE_TO_BUFFER         2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define BIT_RESERVED                        3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define BIT_STREAM_TIME                     4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) #define BIT_CANCELLED_COMMAND               5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) /* Access to the "Size" field of the response of the CMD_GET_NOTIFY_EVENT request. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define GET_NOTIFY_EVENT_SIZE_FIELD_MASK    0x000000ff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) /* DSP commands general masks */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define OPCODE_MASK                 0x00ff0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) #define DSP_DIFFERED_COMMAND_MASK   0x0000C000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) /* Notifications (NOTIFY_INFO) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) #define ALL_CMDS_NOTIFIED                   0x0000  // reserved
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) #define START_STREAM_NOTIFIED               0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) #define PAUSE_STREAM_NOTIFIED               0x0002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #define OUT_STREAM_LEVEL_NOTIFIED           0x0003
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #define OUT_STREAM_PARAMETER_NOTIFIED       0x0004  // left for backward compatibility
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) #define OUT_STREAM_FORMAT_NOTIFIED          0x0004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #define PIPE_TIME_NOTIFIED                  0x0005
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #define OUT_AUDIO_LEVEL_NOTIFIED            0x0006
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define OUT_STREAM_LEVEL_CURVE_NOTIFIED     0x0007
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) #define STREAM_TIME_NOTIFIED                0x0008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) #define OUT_STREAM_EXTRAPARAMETER_NOTIFIED  0x0009
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define UNKNOWN_COMMAND_NOTIFIED            0xffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) /* Output pipe parameters setting */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #define MASK_VALID_PIPE_MPEG_PARAM      0x000040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define MASK_VALID_PIPE_BACKWARD_PARAM  0x000020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #define MASK_SET_PIPE_MPEG_PARAM        0x000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define MASK_SET_PIPE_BACKWARD_PARAM    0x000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) #define MASK_DSP_WORD           0x00FFFFFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) #define MASK_ALL_STREAM         0x00FFFFFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) #define MASK_DSP_WORD_LEVEL     0x000001FF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) #define MASK_FIRST_FIELD        0x0000001F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) #define FIELD_SIZE              5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) #define COMMAND_RECORD_MASK     0x000800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) /* PipeManagement definition bits (PIPE_DECL_INFO) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) #define P_UNDERRUN_SKIP_SOUND_MASK				0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) #define P_PREPARE_FOR_MPEG3_MASK				0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) #define P_DO_NOT_RESET_ANALOG_LEVELS			0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) #define P_ALLOW_UNDER_ALLOCATION_MASK			0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) #define P_DATA_MODE_MASK				0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) #define P_ASIO_BUFFER_MANAGEMENT_MASK			0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) #define BIT_SKIP_SOUND					0x08	// bit 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) #define BIT_DATA_MODE					0x10	// bit 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)     
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) /* Bits in the CMD_MODIFY_CLOCK request. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) #define CMD_MODIFY_CLOCK_FD_BIT     0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) #define CMD_MODIFY_CLOCK_T_BIT      0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) #define CMD_MODIFY_CLOCK_S_BIT      0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) /* Access to the results of the CMD_GET_TIME_CODE RMH. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) #define TIME_CODE_V_MASK            0x00800000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) #define TIME_CODE_N_MASK            0x00400000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) #define TIME_CODE_B_MASK            0x00200000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) #define TIME_CODE_W_MASK            0x00100000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) /* Values for the CMD_MANAGE_SIGNAL RMH. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) #define MANAGE_SIGNAL_TIME_CODE     0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) #define MANAGE_SIGNAL_MIDI          0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) /* Values for the CMD_CONFIG_TIME_CODE RMH. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) #define CONFIG_TIME_CODE_CANCEL     0x00001000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)     
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) /* Mask to get only the effective time from the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183)  * high word out of the 2 returned by the DSP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) #define PCX_TIME_HI_MASK        0x000fffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) /* Values for setting a H-Buffer time */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) #define HBUFFER_TIME_HIGH       0x00200000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) #define HBUFFER_TIME_LOW        0x00000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) #define NOTIFY_MASK_TIME_HIGH   0x00400000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) #define MULTIPLE_MASK_TIME_HIGH 0x00100000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) #define STREAM_MASK_TIME_HIGH   0x00800000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) void vx_init_rmh(struct vx_rmh *rmh, unsigned int cmd);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)  * vx_send_pipe_cmd_params - fill first command word for pipe commands
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203)  * @rmh: the rmh to be modified
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204)  * @is_capture: 0 = playback, 1 = capture operation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)  * @param1: first pipe-parameter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206)  * @param2: second pipe-parameter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) static inline void vx_set_pipe_cmd_params(struct vx_rmh *rmh, int is_capture,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 					  int param1, int param2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 	if (is_capture)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 		rmh->Cmd[0] |= COMMAND_RECORD_MASK;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 	rmh->Cmd[0] |= (((u32)param1 & MASK_FIRST_FIELD) << FIELD_SIZE) & MASK_DSP_WORD;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 		
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 	if (param2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 		rmh->Cmd[0] |= ((u32)param2 & MASK_FIRST_FIELD) & MASK_DSP_WORD;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 	
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221)  * vx_set_stream_cmd_params - fill first command word for stream commands
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222)  * @rmh: the rmh to be modified
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223)  * @is_capture: 0 = playback, 1 = capture operation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224)  * @pipe: the pipe index (zero-based)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) static inline void vx_set_stream_cmd_params(struct vx_rmh *rmh, int is_capture, int pipe)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 	if (is_capture)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) 		rmh->Cmd[0] |= COMMAND_RECORD_MASK;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 	rmh->Cmd[0] |= (((u32)pipe & MASK_FIRST_FIELD) << FIELD_SIZE) & MASK_DSP_WORD;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) #endif /* __VX_CMD_H */