diff options
Diffstat (limited to 'drivers/media/i2c/msp3400-driver.h')
-rw-r--r-- | drivers/media/i2c/msp3400-driver.h | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/drivers/media/i2c/msp3400-driver.h b/drivers/media/i2c/msp3400-driver.h new file mode 100644 index 000000000000..fbe5e0715f93 --- /dev/null +++ b/drivers/media/i2c/msp3400-driver.h | |||
@@ -0,0 +1,137 @@ | |||
1 | /* | ||
2 | */ | ||
3 | |||
4 | #ifndef MSP3400_DRIVER_H | ||
5 | #define MSP3400_DRIVER_H | ||
6 | |||
7 | #include <media/msp3400.h> | ||
8 | #include <media/v4l2-device.h> | ||
9 | #include <media/v4l2-ctrls.h> | ||
10 | |||
11 | /* ---------------------------------------------------------------------- */ | ||
12 | |||
13 | /* This macro is allowed for *constants* only, gcc must calculate it | ||
14 | at compile time. Remember -- no floats in kernel mode */ | ||
15 | #define MSP_CARRIER(freq) ((int)((float)(freq / 18.432) * (1 << 24))) | ||
16 | |||
17 | #define MSP_MODE_AM_DETECT 0 | ||
18 | #define MSP_MODE_FM_RADIO 2 | ||
19 | #define MSP_MODE_FM_TERRA 3 | ||
20 | #define MSP_MODE_FM_SAT 4 | ||
21 | #define MSP_MODE_FM_NICAM1 5 | ||
22 | #define MSP_MODE_FM_NICAM2 6 | ||
23 | #define MSP_MODE_AM_NICAM 7 | ||
24 | #define MSP_MODE_BTSC 8 | ||
25 | #define MSP_MODE_EXTERN 9 | ||
26 | |||
27 | #define SCART_IN1 0 | ||
28 | #define SCART_IN2 1 | ||
29 | #define SCART_IN3 2 | ||
30 | #define SCART_IN4 3 | ||
31 | #define SCART_IN1_DA 4 | ||
32 | #define SCART_IN2_DA 5 | ||
33 | #define SCART_MONO 6 | ||
34 | #define SCART_MUTE 7 | ||
35 | |||
36 | #define SCART_DSP_IN 0 | ||
37 | #define SCART1_OUT 1 | ||
38 | #define SCART2_OUT 2 | ||
39 | |||
40 | #define OPMODE_AUTO -1 | ||
41 | #define OPMODE_MANUAL 0 | ||
42 | #define OPMODE_AUTODETECT 1 /* use autodetect (>= msp3410 only) */ | ||
43 | #define OPMODE_AUTOSELECT 2 /* use autodetect & autoselect (>= msp34xxG) */ | ||
44 | |||
45 | /* module parameters */ | ||
46 | extern int msp_debug; | ||
47 | extern bool msp_once; | ||
48 | extern bool msp_amsound; | ||
49 | extern int msp_standard; | ||
50 | extern bool msp_dolby; | ||
51 | extern int msp_stereo_thresh; | ||
52 | |||
53 | struct msp_state { | ||
54 | struct v4l2_subdev sd; | ||
55 | struct v4l2_ctrl_handler hdl; | ||
56 | int rev1, rev2; | ||
57 | int ident; | ||
58 | u8 has_nicam; | ||
59 | u8 has_radio; | ||
60 | u8 has_headphones; | ||
61 | u8 has_ntsc_jp_d_k3; | ||
62 | u8 has_scart2; | ||
63 | u8 has_scart3; | ||
64 | u8 has_scart4; | ||
65 | u8 has_scart2_out; | ||
66 | u8 has_scart2_out_volume; | ||
67 | u8 has_i2s_conf; | ||
68 | u8 has_subwoofer; | ||
69 | u8 has_sound_processing; | ||
70 | u8 has_virtual_dolby_surround; | ||
71 | u8 has_dolby_pro_logic; | ||
72 | u8 force_btsc; | ||
73 | |||
74 | int radio; | ||
75 | int opmode; | ||
76 | int std; | ||
77 | int mode; | ||
78 | v4l2_std_id v4l2_std, detected_std; | ||
79 | int nicam_on; | ||
80 | int acb; | ||
81 | int in_scart; | ||
82 | int i2s_mode; | ||
83 | int main, second; /* sound carrier */ | ||
84 | int input; | ||
85 | u32 route_in; | ||
86 | u32 route_out; | ||
87 | |||
88 | /* v4l2 */ | ||
89 | int audmode; | ||
90 | int rxsubchans; | ||
91 | |||
92 | struct { | ||
93 | /* volume cluster */ | ||
94 | struct v4l2_ctrl *volume; | ||
95 | struct v4l2_ctrl *muted; | ||
96 | }; | ||
97 | |||
98 | int scan_in_progress; | ||
99 | |||
100 | /* thread */ | ||
101 | struct task_struct *kthread; | ||
102 | wait_queue_head_t wq; | ||
103 | unsigned int restart:1; | ||
104 | unsigned int watch_stereo:1; | ||
105 | }; | ||
106 | |||
107 | static inline struct msp_state *to_state(struct v4l2_subdev *sd) | ||
108 | { | ||
109 | return container_of(sd, struct msp_state, sd); | ||
110 | } | ||
111 | |||
112 | static inline struct msp_state *ctrl_to_state(struct v4l2_ctrl *ctrl) | ||
113 | { | ||
114 | return container_of(ctrl->handler, struct msp_state, hdl); | ||
115 | } | ||
116 | |||
117 | /* msp3400-driver.c */ | ||
118 | int msp_write_dem(struct i2c_client *client, int addr, int val); | ||
119 | int msp_write_dsp(struct i2c_client *client, int addr, int val); | ||
120 | int msp_read_dem(struct i2c_client *client, int addr); | ||
121 | int msp_read_dsp(struct i2c_client *client, int addr); | ||
122 | int msp_reset(struct i2c_client *client); | ||
123 | void msp_set_scart(struct i2c_client *client, int in, int out); | ||
124 | void msp_update_volume(struct msp_state *state); | ||
125 | int msp_sleep(struct msp_state *state, int timeout); | ||
126 | |||
127 | /* msp3400-kthreads.c */ | ||
128 | const char *msp_standard_std_name(int std); | ||
129 | void msp_set_audmode(struct i2c_client *client); | ||
130 | int msp_detect_stereo(struct i2c_client *client); | ||
131 | int msp3400c_thread(void *data); | ||
132 | int msp3410d_thread(void *data); | ||
133 | int msp34xxg_thread(void *data); | ||
134 | void msp3400c_set_mode(struct i2c_client *client, int mode); | ||
135 | void msp3400c_set_carrier(struct i2c_client *client, int cdo1, int cdo2); | ||
136 | |||
137 | #endif /* MSP3400_DRIVER_H */ | ||