Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
sst_platform.h
Go to the documentation of this file.
1 /*
2  * sst_platform.h - Intel MID Platform driver header file
3  *
4  * Copyright (C) 2010 Intel Corp
5  * Author: Vinod Koul <[email protected]>
6  * Author: Harsha Priya <[email protected]>
7  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; version 2 of the License.
12  *
13  * This program is distributed in the hope that it will be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License along
19  * with this program; if not, write to the Free Software Foundation, Inc.,
20  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
21  *
22  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23  *
24  *
25  */
26 
27 #ifndef __SST_PLATFORMDRV_H__
28 #define __SST_PLATFORMDRV_H__
29 
30 #include "sst_dsp.h"
31 
32 #define SST_MONO 1
33 #define SST_STEREO 2
34 #define SST_MAX_CAP 5
35 
36 #define SST_MIN_RATE 8000
37 #define SST_MAX_RATE 48000
38 #define SST_MIN_CHANNEL 1
39 #define SST_MAX_CHANNEL 5
40 #define SST_MAX_BUFFER (800*1024)
41 #define SST_MIN_BUFFER (800*1024)
42 #define SST_MIN_PERIOD_BYTES 32
43 #define SST_MAX_PERIOD_BYTES SST_MAX_BUFFER
44 #define SST_MIN_PERIODS 2
45 #define SST_MAX_PERIODS (1024*2)
46 #define SST_FIFO_SIZE 0
47 
49  int str_id;
52  unsigned long long buffer_ptr;
53  int sfreq;
54 };
55 
62 };
63 
65  SST_SND_ALLOC = 0x00,
66  SST_SND_PAUSE = 0x01,
68  SST_SND_DROP = 0x03,
69  SST_SND_FREE = 0x04,
72  SST_SND_START = 0x07,
74 };
75 
79 };
80 
88 };
89 
90 /* PCM Parameters */
92  u16 codec; /* codec type */
93  u8 num_chan; /* 1=Mono, 2=Stereo */
94  u8 pcm_wd_sz; /* 16/24 - bit*/
95  u32 reserved; /* Bitrate in bits per second */
96  u32 sfreq; /* Sampling rate in Hz */
98  u32 period_count; /* period elapsed in samples*/
100 };
101 
110 };
111 
113  void *param;
114  void (*compr_cb)(void *param);
115 };
116 
118  const char *name;
119  int (*open) (struct snd_sst_params *str_params,
120  struct sst_compress_cb *cb);
121  int (*control) (unsigned int cmd, unsigned int str_id);
122  int (*tstamp) (unsigned int str_id, struct snd_compr_tstamp *tstamp);
123  int (*ack) (unsigned int str_id, unsigned long bytes);
124  int (*close) (unsigned int str_id);
127 
128 };
129 
130 struct sst_ops {
131  int (*open) (struct sst_stream_params *str_param);
132  int (*device_control) (int cmd, void *arg);
133  int (*close) (unsigned int str_id);
134 };
135 
138  unsigned int id;
141  struct sst_ops *ops;
144 };
145 
146 struct sst_device {
147  char *name;
148  struct device *dev;
149  struct sst_ops *ops;
151 };
152 
153 int sst_register_dsp(struct sst_device *sst);
154 int sst_unregister_dsp(struct sst_device *sst);
155 #endif