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
drivers
media
i2c
cx25840
cx25840-core.h
Go to the documentation of this file.
1
/* cx25840 internal API header
2
*
3
* Copyright (C) 2003-2004 Chris Kennedy
4
*
5
* This program is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU General Public License
7
* as published by the Free Software Foundation; either version 2
8
* of the License, or (at your option) any later version.
9
*
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18
*/
19
20
#ifndef _CX25840_CORE_H_
21
#define _CX25840_CORE_H_
22
23
24
#include <linux/videodev2.h>
25
#include <
media/v4l2-device.h
>
26
#include <
media/v4l2-chip-ident.h
>
27
#include <
media/v4l2-ctrls.h
>
28
#include <linux/i2c.h>
29
30
struct
cx25840_ir_state
;
31
32
struct
cx25840_state
{
33
struct
i2c_client
*
c
;
34
struct
v4l2_subdev
sd
;
35
struct
v4l2_ctrl_handler
hdl
;
36
struct
{
37
/* volume cluster */
38
struct
v4l2_ctrl
*
volume
;
39
struct
v4l2_ctrl
*
mute
;
40
};
41
int
pvr150_workaround
;
42
int
radio
;
43
v4l2_std_id
std
;
44
enum
cx25840_video_input
vid_input
;
45
enum
cx25840_audio_input
aud_input
;
46
u32
audclk_freq
;
47
int
audmode
;
48
int
vbi_line_offset
;
49
u32
id
;
50
u32
rev
;
51
int
is_initialized
;
52
wait_queue_head_t
fw_wait
;
/* wake up when the fw load is finished */
53
struct
work_struct
fw_work
;
/* work entry for fw load */
54
struct
cx25840_ir_state
*
ir_state
;
55
};
56
57
static
inline
struct
cx25840_state
*to_state(
struct
v4l2_subdev
*
sd
)
58
{
59
return
container_of
(sd,
struct
cx25840_state
, sd);
60
}
61
62
static
inline
struct
v4l2_subdev
*to_sd(
struct
v4l2_ctrl
*
ctrl
)
63
{
64
return
&
container_of
(ctrl->
handler
,
struct
cx25840_state
, hdl)->sd;
65
}
66
67
static
inline
bool
is_cx2583x(
struct
cx25840_state
*
state
)
68
{
69
return
state->
id
==
V4L2_IDENT_CX25836
||
70
state->
id
==
V4L2_IDENT_CX25837
;
71
}
72
73
static
inline
bool
is_cx231xx(
struct
cx25840_state
*
state
)
74
{
75
return
state->
id
==
V4L2_IDENT_CX2310X_AV
;
76
}
77
78
static
inline
bool
is_cx2388x(
struct
cx25840_state
*
state
)
79
{
80
return
state->
id
==
V4L2_IDENT_CX23885_AV
||
81
state->
id
==
V4L2_IDENT_CX23887_AV
||
82
state->
id
==
V4L2_IDENT_CX23888_AV
;
83
}
84
85
static
inline
bool
is_cx23885(
struct
cx25840_state
*
state
)
86
{
87
return
state->
id
==
V4L2_IDENT_CX23885_AV
;
88
}
89
90
static
inline
bool
is_cx23887(
struct
cx25840_state
*
state
)
91
{
92
return
state->
id
==
V4L2_IDENT_CX23887_AV
;
93
}
94
95
static
inline
bool
is_cx23888(
struct
cx25840_state
*
state
)
96
{
97
return
state->
id
==
V4L2_IDENT_CX23888_AV
;
98
}
99
100
/* ----------------------------------------------------------------------- */
101
/* cx25850-core.c */
102
int
cx25840_write
(
struct
i2c_client
*
client
,
u16
addr
,
u8
value
);
103
int
cx25840_write4
(
struct
i2c_client
*
client
,
u16
addr
,
u32
value
);
104
u8
cx25840_read
(
struct
i2c_client
*
client
,
u16
addr
);
105
u32
cx25840_read4
(
struct
i2c_client
*
client
,
u16
addr
);
106
int
cx25840_and_or
(
struct
i2c_client
*
client
,
u16
addr
,
unsigned
mask
,
u8
value
);
107
int
cx25840_and_or4
(
struct
i2c_client
*
client
,
u16
addr
,
u32
and_mask,
108
u32
or_value);
109
void
cx25840_std_setup
(
struct
i2c_client
*
client
);
110
111
/* ----------------------------------------------------------------------- */
112
/* cx25850-firmware.c */
113
int
cx25840_loadfw
(
struct
i2c_client
*
client
);
114
115
/* ----------------------------------------------------------------------- */
116
/* cx25850-audio.c */
117
void
cx25840_audio_set_path
(
struct
i2c_client
*
client
);
118
int
cx25840_s_clock_freq
(
struct
v4l2_subdev
*
sd
,
u32
freq
);
119
120
extern
const
struct
v4l2_ctrl_ops
cx25840_audio_ctrl_ops
;
121
122
/* ----------------------------------------------------------------------- */
123
/* cx25850-vbi.c */
124
int
cx25840_s_raw_fmt
(
struct
v4l2_subdev
*
sd
,
struct
v4l2_vbi_format
*
fmt
);
125
int
cx25840_s_sliced_fmt
(
struct
v4l2_subdev
*
sd
,
struct
v4l2_sliced_vbi_format
*
fmt
);
126
int
cx25840_g_sliced_fmt
(
struct
v4l2_subdev
*
sd
,
struct
v4l2_sliced_vbi_format
*
fmt
);
127
int
cx25840_decode_vbi_line
(
struct
v4l2_subdev
*
sd
,
struct
v4l2_decode_vbi_line
*vbi);
128
129
/* ----------------------------------------------------------------------- */
130
/* cx25850-ir.c */
131
extern
const
struct
v4l2_subdev_ir_ops
cx25840_ir_ops
;
132
int
cx25840_ir_log_status
(
struct
v4l2_subdev
*
sd
);
133
int
cx25840_ir_irq_handler
(
struct
v4l2_subdev
*
sd
,
u32
status
,
bool
*handled);
134
int
cx25840_ir_probe
(
struct
v4l2_subdev
*
sd
);
135
int
cx25840_ir_remove
(
struct
v4l2_subdev
*
sd
);
136
137
#endif
Generated on Thu Jan 10 2013 13:46:33 for Linux Kernel by
1.8.2