Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
sound
pci
ctxfi
ctresource.h
Go to the documentation of this file.
1
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 */
Generated on Thu Jan 10 2013 15:06:05 for Linux Kernel by
1.8.2