diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-06-10 01:26:27 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-06-10 01:26:27 -0400 |
commit | e618a5609e504845786c71e2825e10b6a9728185 (patch) | |
tree | 6c9e1a40216b776923567f9b3506a8fee66dec89 /sound/pci/ctxfi/ctresource.h | |
parent | d3e3743694cbfd64450b3468e11b40ba8c6f4369 (diff) | |
parent | a5990dc5b96f537618b0f057c8723a6a0b0cdc74 (diff) |
Merge branch 'topic/ctxfi' into for-linus
* topic/ctxfi: (35 commits)
ALSA: ctxfi - Clear PCM resources at hw_params and hw_free
ALSA: ctxfi - Check the presence of SRC instance in PCM pointer callbacks
ALSA: ctxfi - Add missing start check in atc_pcm_playback_start()
ALSA: ctxfi - Add use_system_timer module option
ALSA: ctxfi - Fix wrong model id for UAA
ALSA: ctxfi - Clean up probe routines
ALSA: ctxfi - Fix / clean up hw20k2 chip code
ALSA: ctxfi - Fix possible buffer pointer overrun
ALSA: ctxfi - Remove useless initializations and cast
ALSA: ctxfi - Fix DMA mask for emu20k2 chip
ALSA: ctxfi - Make volume controls more intuitive
ALSA: ctxfi - Optimize the native timer handling using wc counter
ALSA: ctxfi - Add missing inclusion of linux/math64.h
ALSA: ctxfi - Set device 0 for mixer control elements
ALSA: ctxfi - Clean up / optimize
ALSA: ctxfi - Set periods_min to 2
ALSA: ctxfi - Use native timer interrupt on emu20k1
ALSA: ctxfi - Fix previous fix for 64bit DMA
ALSA: ctxfi - Fix endian-dependent codes
ALSA: ctxfi - Allow 64bit DMA
...
Diffstat (limited to 'sound/pci/ctxfi/ctresource.h')
-rw-r--r-- | sound/pci/ctxfi/ctresource.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/sound/pci/ctxfi/ctresource.h b/sound/pci/ctxfi/ctresource.h new file mode 100644 index 000000000000..0838c2e84f8b --- /dev/null +++ b/sound/pci/ctxfi/ctresource.h | |||
@@ -0,0 +1,72 @@ | |||
1 | /** | ||
2 | * Copyright (C) 2008, Creative Technology Ltd. All Rights Reserved. | ||
3 | * | ||
4 | * This source file is released under GPL v2 license (no other versions). | ||
5 | * See the COPYING file included in the main directory of this source | ||
6 | * distribution for the license terms and conditions. | ||
7 | * | ||
8 | * @File ctresource.h | ||
9 | * | ||
10 | * @Brief | ||
11 | * This file contains the definition of generic hardware resources for | ||
12 | * resource management. | ||
13 | * | ||
14 | * @Author Liu Chun | ||
15 | * @Date May 13 2008 | ||
16 | * | ||
17 | */ | ||
18 | |||
19 | #ifndef CTRESOURCE_H | ||
20 | #define CTRESOURCE_H | ||
21 | |||
22 | #include <linux/types.h> | ||
23 | |||
24 | enum RSCTYP { | ||
25 | SRC, | ||
26 | SRCIMP, | ||
27 | AMIXER, | ||
28 | SUM, | ||
29 | DAIO, | ||
30 | NUM_RSCTYP /* This must be the last one and less than 16 */ | ||
31 | }; | ||
32 | |||
33 | struct rsc_ops; | ||
34 | |||
35 | struct rsc { | ||
36 | u32 idx:12; /* The index of a resource */ | ||
37 | u32 type:4; /* The type (RSCTYP) of a resource */ | ||
38 | u32 conj:12; /* Current conjugate index */ | ||
39 | u32 msr:4; /* The Master Sample Rate a resource working on */ | ||
40 | void *ctrl_blk; /* Chip specific control info block for a resource */ | ||
41 | void *hw; /* Chip specific object for hardware access means */ | ||
42 | struct rsc_ops *ops; /* Generic resource operations */ | ||
43 | }; | ||
44 | |||
45 | struct rsc_ops { | ||
46 | int (*master)(struct rsc *rsc); /* Move to master resource */ | ||
47 | int (*next_conj)(struct rsc *rsc); /* Move to next conjugate resource */ | ||
48 | int (*index)(const struct rsc *rsc); /* Return the index of resource */ | ||
49 | /* Return the output slot number */ | ||
50 | int (*output_slot)(const struct rsc *rsc); | ||
51 | }; | ||
52 | |||
53 | int rsc_init(struct rsc *rsc, u32 idx, enum RSCTYP type, u32 msr, void *hw); | ||
54 | int rsc_uninit(struct rsc *rsc); | ||
55 | |||
56 | struct rsc_mgr { | ||
57 | enum RSCTYP type; /* The type (RSCTYP) of resource to manage */ | ||
58 | unsigned int amount; /* The total amount of a kind of resource */ | ||
59 | unsigned int avail; /* The amount of currently available resources */ | ||
60 | unsigned char *rscs; /* The bit-map for resource allocation */ | ||
61 | void *ctrl_blk; /* Chip specific control info block */ | ||
62 | void *hw; /* Chip specific object for hardware access */ | ||
63 | }; | ||
64 | |||
65 | /* Resource management is based on bit-map mechanism */ | ||
66 | int rsc_mgr_init(struct rsc_mgr *mgr, enum RSCTYP type, | ||
67 | unsigned int amount, void *hw); | ||
68 | int rsc_mgr_uninit(struct rsc_mgr *mgr); | ||
69 | int mgr_get_resource(struct rsc_mgr *mgr, unsigned int n, unsigned int *ridx); | ||
70 | int mgr_put_resource(struct rsc_mgr *mgr, unsigned int n, unsigned int idx); | ||
71 | |||
72 | #endif /* CTRESOURCE_H */ | ||