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