Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
[linux-2.6] / include / asm-arm / arch-s3c2410 / audio.h
1 /* linux/include/asm-arm/arch-s3c2410/audio.h
2  *
3  * (c) 2004-2005 Simtec Electronics
4  *      http://www.simtec.co.uk/products/SWLINUX/
5  *      Ben Dooks <ben@simtec.co.uk>
6  *
7  * S3C24XX - Audio platfrom_device info
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 version 2 as
11  * published by the Free Software Foundation.
12  *
13  * Changelog:
14  *      20-Nov-2004 BJD  Created file
15  *      07-Mar-2005 BJD  Added suspend/resume calls
16 */
17
18 #ifndef __ASM_ARCH_AUDIO_H
19 #define __ASM_ARCH_AUDIO_H __FILE__
20
21 /* struct s3c24xx_iis_ops
22  *
23  * called from the s3c24xx audio core to deal with the architecture
24  * or the codec's setup and control.
25  *
26  * the pointer to itself is passed through in case the caller wants to
27  * embed this in an larger structure for easy reference to it's context.
28 */
29
30 struct s3c24xx_iis_ops {
31         struct module *owner;
32
33         int     (*startup)(struct s3c24xx_iis_ops *me);
34         void    (*shutdown)(struct s3c24xx_iis_ops *me);
35         int     (*suspend)(struct s3c24xx_iis_ops *me);
36         int     (*resume)(struct s3c24xx_iis_ops *me);
37
38         int     (*open)(struct s3c24xx_iis_ops *me, snd_pcm_substream_t *strm);
39         int     (*close)(struct s3c24xx_iis_ops *me, snd_pcm_substream_t *strm);
40         int     (*prepare)(struct s3c24xx_iis_ops *me, snd_pcm_substream_t *strm, snd_pcm_runtime_t *rt);
41 };
42
43 struct s3c24xx_platdata_iis {
44         const char              *codec_clk;
45         struct s3c24xx_iis_ops  *ops;
46         int                     (*match_dev)(struct device *dev);
47 };
48
49 #endif /* __ASM_ARCH_AUDIO_H */