summaryrefslogtreecommitdiff
path: root/kernel/framework/include/ossddk/oss_exports.h
blob: 437e3f4be2f53d59a24b7101659f3b071617dd0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#ifndef _OSS_EXPORTS_H
#define _OSS_EXPORTS_H
/*
 *
 * This file is part of Open Sound System.
 *
 * Copyright (C) 4Front Technologies 1996-2008.
 *
 * This this source file is released under GPL v2 license (no other versions).
 * See the COPYING file included in the main directory of this source
 * distribution for the license terms and conditions.
 *
 */

/*
 * Driver (bus) types
 *
 * Note that OSSDDK drivers can only use DRV_PCI or DRV_VIRTUAL. The other
 * bus types will not work properly because support for them is missing
 * from the DDK layer.
 */

#define DRV_UNKNOWN	0
#define DRV_PCI		1
#define DRV_USB		2
#define DRV_VIRTUAL	3
#define DRV_VMIX	4	/* Like DRV_VIRTUAL. Used by the vmix module. */
#define DRV_STREAMS	5
#define DRV_ISA		6
#define DRV_FIREWIRE	7
#define DRV_CLONE	8	/* Clone of some other device */

/*
 * Device class numbers. Unlike with earlier OSS versions (up to v4.0)
 * the minor number doesn't have any special meaning. Minor numbers
 * will be allocated in the order the device files are initialized. Even
 * the major number doesn't necessaily be the same for all OSS devices.
 * Minor numbers will be just indexes to a table (in os.c) that contains
 * the device class code, instance number, driver call table and things like that.
 * Ideally OSS will use devfs to expose the available devices.
 */

extern int oss_max_audio_devfiles;
extern int oss_max_audio_engines;

#define MAX_SYNTH_DEV	6	// TODO: Remove
#define MAX_AUDIO_DEVFILES 	oss_max_audio_devfiles
#define MAX_AUDIO_ENGINES 	oss_max_audio_engines
#define SYNC_DEVICE_MASK	0xffff

#include "oss_limits.h"
/*
 * Device file class codes. Note that these numbers don't have any kind of relationship with minor numbers.
 */

#define OSS_DEV_STATUS		0	/* /dev/sndstat */
#define OSS_DEV_VDSP		1	/* /dev/dsp (multiplexer device) */
#define OSS_DEV_VAUDIO		2	/* /dev/audio (multiplexer device) */
#define OSS_DEV_AWFM		3	/* Reserved for historic purposes */
#define OSS_DEV_OSSD		4	/* /dev/ossd - ossd process support */
#define OSS_DEV_AUDIOCTL	5	/* Audioctl device */
#define OSS_DEV_MIXER		6	/* /dev/mixer0 */
#define OSS_DEV_SEQ		7	/* /dev/sequencer */
#define OSS_DEV_MUSIC		8	/* /dev/music AKA /dev/sequencer2 */
#define OSS_DEV_VMIDI		9	/* /dev/midi (multiplexer device) */
#define OSS_DEV_MIDI		10	/* /dev/midi## */
#define OSS_DEV_DEVAUDIO	11	/* /dev/audio# */
#define OSS_DEV_DSP		12	/* /dev/dsp# */
#define OSS_DEV_MISC		13	/* Special purpose device files */
#define OSS_DEV_DSP_ENGINE	14	/* Hidden DSP engines */

extern int oss_max_cdevs;
#define OSS_MAX_CDEVS	oss_max_cdevs

/*
 * Misc definitions 
 */

typedef struct _oss_device_t oss_device_t;

#if defined(linux) && defined(OSS_MAINLINE_BUILD)
#include <stdint.h>
#endif

/*
 * AC97
 */
typedef int (*ac97_readfunc_t) (void *, int);
typedef int (*ac97_writefunc_t) (void *, int, int);
typedef struct _ac97_handle_t ac97_handle_t;

/*
 * Mixer
 */
typedef struct _mixer_driver_t mixer_driver_t;
typedef struct _mixer_operations_t mixer_operations_t;
typedef int (*mixer_create_controls_t) (int dev);
typedef int (*mixer_ext_fn) (int dev, int ctrl, unsigned int cmd, int value);

extern void oss_audio_delayed_attach (void);
#endif