devices/virtio/snd/
constants.rs

1// Copyright 2020 The ChromiumOS Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5pub const VIRTIO_SND_R_JACK_INFO: u32 = 1;
6pub const VIRTIO_SND_R_JACK_REMAP: u32 = 2;
7
8/* PCM control request types */
9pub const VIRTIO_SND_R_PCM_INFO: u32 = 0x0100;
10pub const VIRTIO_SND_R_PCM_SET_PARAMS: u32 = 0x0101;
11pub const VIRTIO_SND_R_PCM_PREPARE: u32 = 0x0102;
12pub const VIRTIO_SND_R_PCM_RELEASE: u32 = 0x0103;
13pub const VIRTIO_SND_R_PCM_START: u32 = 0x0104;
14pub const VIRTIO_SND_R_PCM_STOP: u32 = 0x0105;
15
16/* channel map control request types */
17pub const VIRTIO_SND_R_CHMAP_INFO: u32 = 0x0200;
18
19/* jack event types */
20pub const VIRTIO_SND_EVT_JACK_CONNECTED: u32 = 0x1000;
21pub const VIRTIO_SND_EVT_JACK_DISCONNECTED: u32 = 0x1001;
22
23/* PCM event types */
24pub const VIRTIO_SND_EVT_PCM_PERIOD_ELAPSED: u32 = 0x1100;
25pub const VIRTIO_SND_EVT_PCM_XRUN: u32 = 0x1101;
26
27/* common status codes */
28pub const VIRTIO_SND_S_OK: u32 = 0x8000;
29pub const VIRTIO_SND_S_BAD_MSG: u32 = 0x8001;
30pub const VIRTIO_SND_S_NOT_SUPP: u32 = 0x8002;
31pub const VIRTIO_SND_S_IO_ERR: u32 = 0x8003;
32
33pub enum StatusCode {
34    OK = VIRTIO_SND_S_OK as isize,
35    IoErr = VIRTIO_SND_S_IO_ERR as isize,
36}
37
38/* stream direction */
39pub const VIRTIO_SND_D_OUTPUT: u8 = 0;
40pub const VIRTIO_SND_D_INPUT: u8 = 1;
41
42/* supported jack features */
43pub const VIRTIO_SND_JACK_F_REMAP: u32 = 0;
44
45/* supported PCM The features */
46pub const VIRTIO_SND_F_CTLS: u32 = 0;
47
48/* supported control request types */
49pub const VIRTIO_SND_R_CTL_INFO: u32 = 0x0300;
50pub const VIRTIO_SND_R_CTL_ENUM_ITEMS: u32 = 0x0301;
51pub const VIRTIO_SND_R_CTL_READ: u32 = 0x0302;
52pub const VIRTIO_SND_R_CTL_WRITE: u32 = 0x0303;
53pub const VIRTIO_SND_R_CTL_TLV_READ: u32 = 0x0304;
54pub const VIRTIO_SND_R_CTL_TLV_WRITE: u32 = 0x0305;
55pub const VIRTIO_SND_R_CTL_TLV_COMMAND: u32 = 0x0306;
56
57/* supported control element roles */
58pub const VIRTIO_SND_CTL_ROLE_UNDEFINED: u32 = 0;
59pub const VIRTIO_SND_CTL_ROLE_VOLUME: u32 = 1;
60pub const VIRTIO_SND_CTL_ROLE_MUTE: u32 = 2;
61pub const VIRTIO_SND_CTL_ROLE_GAIN: u32 = 3;
62
63/* supported control element types */
64pub const VIRTIO_SND_CTL_TYPE_BOOLEAN: u32 = 0;
65pub const VIRTIO_SND_CTL_TYPE_INTEGER: u32 = 1;
66pub const VIRTIO_SND_CTL_TYPE_INTEGER64: u32 = 2;
67pub const VIRTIO_SND_CTL_TYPE_ENUMERATED: u32 = 3;
68pub const VIRTIO_SND_CTL_TYPE_BYTES: u32 = 4;
69pub const VIRTIO_SND_CTL_TYPE_IEC958: u32 = 5;
70
71/* supported control element access */
72pub const VIRTIO_SND_CTL_ACCESS_READ: u32 = 0;
73pub const VIRTIO_SND_CTL_ACCESS_WRITE: u32 = 1;
74pub const VIRTIO_SND_CTL_ACCESS_VOLATILE: u32 = 2;
75pub const VIRTIO_SND_CTL_ACCESS_INACTIVE: u32 = 3;
76pub const VIRTIO_SND_CTL_ACCESS_TLV_READ: u32 = 4;
77pub const VIRTIO_SND_CTL_ACCESS_TLV_WRITE: u32 = 5;
78pub const VIRTIO_SND_CTL_ACCESS_TLV_COMMAND: u32 = 6;
79
80/* supported PCM stream features */
81pub const VIRTIO_SND_PCM_F_SHMEM_HOST: u8 = 0;
82pub const VIRTIO_SND_PCM_F_SHMEM_GUEST: u8 = 1;
83pub const VIRTIO_SND_PCM_F_MSG_POLLING: u8 = 2;
84pub const VIRTIO_SND_PCM_F_EVT_SHMEM_PERIODS: u8 = 3;
85pub const VIRTIO_SND_PCM_F_EVT_XRUNS: u8 = 4;
86
87/* supported PCM sample formats */
88pub const VIRTIO_SND_PCM_FMT_IMA_ADPCM: u8 = 0;
89pub const VIRTIO_SND_PCM_FMT_MU_LAW: u8 = 1;
90pub const VIRTIO_SND_PCM_FMT_A_LAW: u8 = 2;
91pub const VIRTIO_SND_PCM_FMT_S8: u8 = 3;
92pub const VIRTIO_SND_PCM_FMT_U8: u8 = 4;
93pub const VIRTIO_SND_PCM_FMT_S16: u8 = 5;
94pub const VIRTIO_SND_PCM_FMT_U16: u8 = 6;
95pub const VIRTIO_SND_PCM_FMT_S18_3: u8 = 7;
96pub const VIRTIO_SND_PCM_FMT_U18_3: u8 = 8;
97pub const VIRTIO_SND_PCM_FMT_S20_3: u8 = 9;
98pub const VIRTIO_SND_PCM_FMT_U20_3: u8 = 10;
99pub const VIRTIO_SND_PCM_FMT_S24_3: u8 = 11;
100pub const VIRTIO_SND_PCM_FMT_U24_3: u8 = 12;
101pub const VIRTIO_SND_PCM_FMT_S20: u8 = 13;
102pub const VIRTIO_SND_PCM_FMT_U20: u8 = 14;
103pub const VIRTIO_SND_PCM_FMT_S24: u8 = 15;
104pub const VIRTIO_SND_PCM_FMT_U24: u8 = 16;
105pub const VIRTIO_SND_PCM_FMT_S32: u8 = 17;
106pub const VIRTIO_SND_PCM_FMT_U32: u8 = 18;
107pub const VIRTIO_SND_PCM_FMT_FLOAT: u8 = 19;
108pub const VIRTIO_SND_PCM_FMT_FLOAT64: u8 = 20;
109/* digital formats (width / physical width) */
110pub const VIRTIO_SND_PCM_FMT_DSD_U8: u8 = 21;
111pub const VIRTIO_SND_PCM_FMT_DSD_U16: u8 = 22;
112pub const VIRTIO_SND_PCM_FMT_DSD_U32: u8 = 23;
113pub const VIRTIO_SND_PCM_FMT_IEC958_SUBFRAME: u8 = 24;
114
115/* supported PCM frame rates */
116pub const VIRTIO_SND_PCM_RATE_5512: u8 = 0;
117pub const VIRTIO_SND_PCM_RATE_8000: u8 = 1;
118pub const VIRTIO_SND_PCM_RATE_11025: u8 = 2;
119pub const VIRTIO_SND_PCM_RATE_16000: u8 = 3;
120pub const VIRTIO_SND_PCM_RATE_22050: u8 = 4;
121pub const VIRTIO_SND_PCM_RATE_32000: u8 = 5;
122pub const VIRTIO_SND_PCM_RATE_44100: u8 = 6;
123pub const VIRTIO_SND_PCM_RATE_48000: u8 = 7;
124pub const VIRTIO_SND_PCM_RATE_64000: u8 = 8;
125pub const VIRTIO_SND_PCM_RATE_88200: u8 = 9;
126pub const VIRTIO_SND_PCM_RATE_96000: u8 = 10;
127pub const VIRTIO_SND_PCM_RATE_176400: u8 = 11;
128pub const VIRTIO_SND_PCM_RATE_192000: u8 = 12;
129pub const VIRTIO_SND_PCM_RATE_384000: u8 = 13;
130
131/* standard channel position definition */
132pub const VIRTIO_SND_CHMAP_NONE: u8 = 0; /* undefined */
133pub const VIRTIO_SND_CHMAP_NA: u8 = 1; /* silent */
134pub const VIRTIO_SND_CHMAP_MONO: u8 = 2; /* mono stream */
135pub const VIRTIO_SND_CHMAP_FL: u8 = 3; /* front left */
136pub const VIRTIO_SND_CHMAP_FR: u8 = 4; /* front right */
137pub const VIRTIO_SND_CHMAP_RL: u8 = 5; /* rear left */
138pub const VIRTIO_SND_CHMAP_RR: u8 = 6; /* rear right */
139pub const VIRTIO_SND_CHMAP_FC: u8 = 7; /* front center */
140pub const VIRTIO_SND_CHMAP_LFE: u8 = 8; /* low frequency (LFE) */
141pub const VIRTIO_SND_CHMAP_SL: u8 = 9; /* side left */
142pub const VIRTIO_SND_CHMAP_SR: u8 = 10; /* side right */
143pub const VIRTIO_SND_CHMAP_RC: u8 = 11; /* rear center */
144pub const VIRTIO_SND_CHMAP_FLC: u8 = 12; /* front left center */
145pub const VIRTIO_SND_CHMAP_FRC: u8 = 13; /* front right center */
146pub const VIRTIO_SND_CHMAP_RLC: u8 = 14; /* rear left center */
147pub const VIRTIO_SND_CHMAP_RRC: u8 = 15; /* rear right center */
148pub const VIRTIO_SND_CHMAP_FLW: u8 = 16; /* front left wide */
149pub const VIRTIO_SND_CHMAP_FRW: u8 = 17; /* front right wide */
150pub const VIRTIO_SND_CHMAP_FLH: u8 = 18; /* front left high */
151pub const VIRTIO_SND_CHMAP_FCH: u8 = 19; /* front center high */
152pub const VIRTIO_SND_CHMAP_FRH: u8 = 20; /* front right high */
153pub const VIRTIO_SND_CHMAP_TC: u8 = 21; /* top center */
154pub const VIRTIO_SND_CHMAP_TFL: u8 = 22; /* top front left */
155pub const VIRTIO_SND_CHMAP_TFR: u8 = 23; /* top front right */
156pub const VIRTIO_SND_CHMAP_TFC: u8 = 24; /* top front center */
157pub const VIRTIO_SND_CHMAP_TRL: u8 = 25; /* top rear left */
158pub const VIRTIO_SND_CHMAP_TRR: u8 = 26; /* top rear right */
159pub const VIRTIO_SND_CHMAP_TRC: u8 = 27; /* top rear center */
160pub const VIRTIO_SND_CHMAP_TFLC: u8 = 28; /* top front left center */
161pub const VIRTIO_SND_CHMAP_TFRC: u8 = 29; /* top front right center */
162pub const VIRTIO_SND_CHMAP_TSL: u8 = 34; /* top side left */
163pub const VIRTIO_SND_CHMAP_TSR: u8 = 35; /* top side right */
164pub const VIRTIO_SND_CHMAP_LLFE: u8 = 36; /* left LFE */
165pub const VIRTIO_SND_CHMAP_RLFE: u8 = 37; /* right LFE */
166pub const VIRTIO_SND_CHMAP_BC: u8 = 38; /* bottom center */
167pub const VIRTIO_SND_CHMAP_BLC: u8 = 39; /* bottom left center */
168pub const VIRTIO_SND_CHMAP_BRC: u8 = 40; /* bottom right center */
169
170pub const VIRTIO_SND_CHMAP_MAX_SIZE: usize = 18;