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
aoa
aoa.h
Go to the documentation of this file.
1
/*
2
* Apple Onboard Audio definitions
3
*
4
* Copyright 2006 Johannes Berg <
[email protected]
>
5
*
6
* GPL v2, can be found in COPYING.
7
*/
8
9
#ifndef __AOA_H
10
#define __AOA_H
11
#include <asm/prom.h>
12
#include <linux/module.h>
13
#include <
sound/core.h
>
14
#include <
sound/asound.h
>
15
#include <
sound/control.h
>
16
#include "
aoa-gpio.h
"
17
#include "
soundbus/soundbus.h
"
18
19
#define MAX_CODEC_NAME_LEN 32
20
21
struct
aoa_codec
{
22
char
name
[
MAX_CODEC_NAME_LEN
];
23
24
struct
module
*
owner
;
25
26
/* called when the fabric wants to init this codec.
27
* Do alsa card manipulations from here. */
28
int
(*
init
)(
struct
aoa_codec
*
codec
);
29
30
/* called when the fabric is done with the codec.
31
* The alsa card will be cleaned up so don't bother. */
32
void
(*
exit
)(
struct
aoa_codec
*
codec
);
33
34
/* May be NULL, but can be used by the fabric.
35
* Refcounting is the codec driver's responsibility */
36
struct
device_node
*
node
;
37
38
/* assigned by fabric before init() is called, points
39
* to the soundbus device. Cannot be NULL. */
40
struct
soundbus_dev
*
soundbus_dev
;
41
42
/* assigned by the fabric before init() is called, points
43
* to the fabric's gpio runtime record for the relevant
44
* device. */
45
struct
gpio_runtime
*
gpio
;
46
47
/* assigned by the fabric before init() is called, contains
48
* a codec specific bitmask of what outputs and inputs are
49
* actually connected */
50
u32
connected
;
51
52
/* data the fabric can associate with this structure */
53
void
*
fabric_data
;
54
55
/* private! */
56
struct
list_head
list
;
57
struct
aoa_fabric
*
fabric
;
58
};
59
60
/* return 0 on success */
61
extern
int
62
aoa_codec_register
(
struct
aoa_codec
*
codec
);
63
extern
void
64
aoa_codec_unregister
(
struct
aoa_codec
*
codec
);
65
66
#define MAX_LAYOUT_NAME_LEN 32
67
68
struct
aoa_fabric
{
69
char
name
[
MAX_LAYOUT_NAME_LEN
];
70
71
struct
module
*
owner
;
72
73
/* once codecs register, they are passed here after.
74
* They are of course not initialised, since the
75
* fabric is responsible for initialising some fields
76
* in the codec structure! */
77
int
(*
found_codec
)(
struct
aoa_codec
*
codec
);
78
/* called for each codec when it is removed,
79
* also in the case that aoa_fabric_unregister
80
* is called and all codecs are removed
81
* from this fabric.
82
* Also called if found_codec returned 0 but
83
* the codec couldn't initialise. */
84
void
(*
remove_codec
)(
struct
aoa_codec
*
codec
);
85
/* If found_codec returned 0, and the codec
86
* could be initialised, this is called. */
87
void
(*
attached_codec
)(
struct
aoa_codec
*
codec
);
88
};
89
90
/* return 0 on success, -EEXIST if another fabric is
91
* registered, -EALREADY if the same fabric is registered.
92
* Passing NULL can be used to test for the presence
93
* of another fabric, if -EALREADY is returned there is
94
* no other fabric present.
95
* In the case that the function returns -EALREADY
96
* and the fabric passed is not NULL, all codecs
97
* that are not assigned yet are passed to the fabric
98
* again for reconsideration. */
99
extern
int
100
aoa_fabric_register
(
struct
aoa_fabric
*
fabric
,
struct
device
*
dev
);
101
102
/* it is vital to call this when the fabric exits!
103
* When calling, the remove_codec will be called
104
* for all codecs, unless it is NULL. */
105
extern
void
106
aoa_fabric_unregister
(
struct
aoa_fabric
*
fabric
);
107
108
/* if for some reason you want to get rid of a codec
109
* before the fabric is removed, use this.
110
* Note that remove_codec is called for it! */
111
extern
void
112
aoa_fabric_unlink_codec
(
struct
aoa_codec
*
codec
);
113
114
/* alsa help methods */
115
struct
aoa_card
{
116
struct
snd_card
*
alsa_card
;
117
};
118
119
extern
int
aoa_snd_device_new
(
snd_device_type_t
type
,
120
void
* device_data,
struct
snd_device_ops
* ops);
121
extern
struct
snd_card
*
aoa_get_card
(
void
);
122
extern
int
aoa_snd_ctl_add
(
struct
snd_kcontrol
*
control
);
123
124
/* GPIO stuff */
125
extern
struct
gpio_methods
*
pmf_gpio_methods
;
126
extern
struct
gpio_methods
*
ftr_gpio_methods
;
127
/* extern struct gpio_methods *map_gpio_methods; */
128
129
#endif
/* __AOA_H */
Generated on Thu Jan 10 2013 15:03:27 for Linux Kernel by
1.8.2