blob: 8d482d76475a63e0b92812907ab43ffc68df3e1c [file] [log] [blame]
Mark Browna4b12992014-03-12 23:04:35 +00001#ifndef __SST_MFLD_DSP_H__
2#define __SST_MFLD_DSP_H__
Vinod Koulc514a912012-08-16 17:10:42 +05303/*
Mark Browna4b12992014-03-12 23:04:35 +00004 * sst_mfld_dsp.h - Intel SST Driver for audio engine
Vinod Koulc514a912012-08-16 17:10:42 +05305 *
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 *
Vinod Koulc514a912012-08-16 17:10:42 +053019 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20 */
21
22enum sst_codec_types {
23 /* AUDIO/MUSIC CODEC Type Definitions */
24 SST_CODEC_TYPE_UNKNOWN = 0,
25 SST_CODEC_TYPE_PCM, /* Pass through Audio codec */
26 SST_CODEC_TYPE_MP3,
27 SST_CODEC_TYPE_MP24,
28 SST_CODEC_TYPE_AAC,
29 SST_CODEC_TYPE_AACP,
30 SST_CODEC_TYPE_eAACP,
31};
32
33enum stream_type {
34 SST_STREAM_TYPE_NONE = 0,
35 SST_STREAM_TYPE_MUSIC = 1,
36};
37
38struct snd_pcm_params {
Vinod Koulc514a912012-08-16 17:10:42 +053039 u8 num_chan; /* 1=Mono, 2=Stereo */
40 u8 pcm_wd_sz; /* 16/24 - bit*/
41 u32 reserved; /* Bitrate in bits per second */
42 u32 sfreq; /* Sampling rate in Hz */
43 u8 use_offload_path;
44 u8 reserved2;
45 u16 reserved3;
46 u8 channel_map[8];
47} __packed;
48
49/* MP3 Music Parameters Message */
50struct snd_mp3_params {
Vinod Koulc514a912012-08-16 17:10:42 +053051 u8 num_chan; /* 1=Mono, 2=Stereo */
52 u8 pcm_wd_sz; /* 16/24 - bit*/
53 u8 crc_check; /* crc_check - disable (0) or enable (1) */
54 u8 reserved1; /* unused*/
55 u16 reserved2; /* Unused */
56} __packed;
57
58#define AAC_BIT_STREAM_ADTS 0
59#define AAC_BIT_STREAM_ADIF 1
60#define AAC_BIT_STREAM_RAW 2
61
62/* AAC Music Parameters Message */
63struct snd_aac_params {
Vinod Koulc514a912012-08-16 17:10:42 +053064 u8 num_chan; /* 1=Mono, 2=Stereo*/
65 u8 pcm_wd_sz; /* 16/24 - bit*/
66 u8 bdownsample; /*SBR downsampling 0 - disable 1 -enabled AAC+ only */
67 u8 bs_format; /* input bit stream format adts=0, adif=1, raw=2 */
68 u16 reser2;
69 u32 externalsr; /*sampling rate of basic AAC raw bit stream*/
70 u8 sbr_signalling;/*disable/enable/set automode the SBR tool.AAC+*/
71 u8 reser1;
72 u16 reser3;
73} __packed;
74
75/* WMA Music Parameters Message */
76struct snd_wma_params {
Vinod Koulc514a912012-08-16 17:10:42 +053077 u8 num_chan; /* 1=Mono, 2=Stereo */
78 u8 pcm_wd_sz; /* 16/24 - bit*/
79 u32 brate; /* Use the hard coded value. */
80 u32 sfreq; /* Sampling freq eg. 8000, 441000, 48000 */
81 u32 channel_mask; /* Channel Mask */
82 u16 format_tag; /* Format Tag */
83 u16 block_align; /* packet size */
84 u16 wma_encode_opt;/* Encoder option */
85 u8 op_align; /* op align 0- 16 bit, 1- MSB, 2 LSB */
86 u8 reserved; /* reserved */
87} __packed;
88
89/* Codec params struture */
90union snd_sst_codec_params {
91 struct snd_pcm_params pcm_params;
92 struct snd_mp3_params mp3_params;
93 struct snd_aac_params aac_params;
94 struct snd_wma_params wma_params;
95} __packed;
96
97/* Address and size info of a frame buffer */
98struct sst_address_info {
99 u32 addr; /* Address at IA */
100 u32 size; /* Size of the buffer */
101};
102
103struct snd_sst_alloc_params_ext {
104 struct sst_address_info ring_buf_info[8];
105 u8 sg_count;
106 u8 reserved;
107 u16 reserved2;
108 u32 frag_size; /*Number of samples after which period elapsed
109 message is sent valid only if path = 0*/
110} __packed;
111
112struct snd_sst_stream_params {
113 union snd_sst_codec_params uc;
114} __packed;
115
116struct snd_sst_params {
117 u32 stream_id;
118 u8 codec;
119 u8 ops;
120 u8 stream_type;
121 u8 device_type;
122 struct snd_sst_stream_params sparams;
123 struct snd_sst_alloc_params_ext aparams;
124};
125
Mark Browna4b12992014-03-12 23:04:35 +0000126#endif /* __SST_MFLD_DSP_H__ */