1 #ifndef __SST_DSP_H__ 2 #define __SST_DSP_H__ 3 /* 4 * sst_dsp.h - Intel SST Driver for audio engine 5 * 6 * Copyright (C) 2008-12 Intel Corporation 7 * Authors: Vinod Koul <vinod.koul@linux.intel.com> 8 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License as published by 12 * the Free Software Foundation; version 2 of the License. 13 * 14 * This program is distributed in the hope that it will be useful, but 15 * WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 * General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License along 20 * with this program; if not, write to the Free Software Foundation, Inc., 21 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 22 * 23 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 24 */ 25 26 enum sst_codec_types { 27 /* AUDIO/MUSIC CODEC Type Definitions */ 28 SST_CODEC_TYPE_UNKNOWN = 0, 29 SST_CODEC_TYPE_PCM, /* Pass through Audio codec */ 30 SST_CODEC_TYPE_MP3, 31 SST_CODEC_TYPE_MP24, 32 SST_CODEC_TYPE_AAC, 33 SST_CODEC_TYPE_AACP, 34 SST_CODEC_TYPE_eAACP, 35 }; 36 37 enum stream_type { 38 SST_STREAM_TYPE_NONE = 0, 39 SST_STREAM_TYPE_MUSIC = 1, 40 }; 41 42 struct snd_pcm_params { 43 u16 codec; /* codec type */ 44 u8 num_chan; /* 1=Mono, 2=Stereo */ 45 u8 pcm_wd_sz; /* 16/24 - bit*/ 46 u32 reserved; /* Bitrate in bits per second */ 47 u32 sfreq; /* Sampling rate in Hz */ 48 u8 use_offload_path; 49 u8 reserved2; 50 u16 reserved3; 51 u8 channel_map[8]; 52 } __packed; 53 54 /* MP3 Music Parameters Message */ 55 struct snd_mp3_params { 56 u16 codec; 57 u8 num_chan; /* 1=Mono, 2=Stereo */ 58 u8 pcm_wd_sz; /* 16/24 - bit*/ 59 u8 crc_check; /* crc_check - disable (0) or enable (1) */ 60 u8 reserved1; /* unused*/ 61 u16 reserved2; /* Unused */ 62 } __packed; 63 64 #define AAC_BIT_STREAM_ADTS 0 65 #define AAC_BIT_STREAM_ADIF 1 66 #define AAC_BIT_STREAM_RAW 2 67 68 /* AAC Music Parameters Message */ 69 struct snd_aac_params { 70 u16 codec; 71 u8 num_chan; /* 1=Mono, 2=Stereo*/ 72 u8 pcm_wd_sz; /* 16/24 - bit*/ 73 u8 bdownsample; /*SBR downsampling 0 - disable 1 -enabled AAC+ only */ 74 u8 bs_format; /* input bit stream format adts=0, adif=1, raw=2 */ 75 u16 reser2; 76 u32 externalsr; /*sampling rate of basic AAC raw bit stream*/ 77 u8 sbr_signalling;/*disable/enable/set automode the SBR tool.AAC+*/ 78 u8 reser1; 79 u16 reser3; 80 } __packed; 81 82 /* WMA Music Parameters Message */ 83 struct snd_wma_params { 84 u16 codec; 85 u8 num_chan; /* 1=Mono, 2=Stereo */ 86 u8 pcm_wd_sz; /* 16/24 - bit*/ 87 u32 brate; /* Use the hard coded value. */ 88 u32 sfreq; /* Sampling freq eg. 8000, 441000, 48000 */ 89 u32 channel_mask; /* Channel Mask */ 90 u16 format_tag; /* Format Tag */ 91 u16 block_align; /* packet size */ 92 u16 wma_encode_opt;/* Encoder option */ 93 u8 op_align; /* op align 0- 16 bit, 1- MSB, 2 LSB */ 94 u8 reserved; /* reserved */ 95 } __packed; 96 97 /* Codec params struture */ 98 union snd_sst_codec_params { 99 struct snd_pcm_params pcm_params; 100 struct snd_mp3_params mp3_params; 101 struct snd_aac_params aac_params; 102 struct snd_wma_params wma_params; 103 } __packed; 104 105 /* Address and size info of a frame buffer */ 106 struct sst_address_info { 107 u32 addr; /* Address at IA */ 108 u32 size; /* Size of the buffer */ 109 }; 110 111 struct snd_sst_alloc_params_ext { 112 struct sst_address_info ring_buf_info[8]; 113 u8 sg_count; 114 u8 reserved; 115 u16 reserved2; 116 u32 frag_size; /*Number of samples after which period elapsed 117 message is sent valid only if path = 0*/ 118 } __packed; 119 120 struct snd_sst_stream_params { 121 union snd_sst_codec_params uc; 122 } __packed; 123 124 struct snd_sst_params { 125 u32 stream_id; 126 u8 codec; 127 u8 ops; 128 u8 stream_type; 129 u8 device_type; 130 struct snd_sst_stream_params sparams; 131 struct snd_sst_alloc_params_ext aparams; 132 }; 133 134 #endif /* __SST_DSP_H__ */ 135