Commit | Line | Data |
---|---|---|
56fc08ca | 1 | /* |
56fc08ca MCC |
2 | */ |
3 | ||
49965a80 HV |
4 | #ifndef MSP3400_DRIVER_H |
5 | #define MSP3400_DRIVER_H | |
1da177e4 | 6 | |
2474ed44 HV |
7 | #include <media/msp3400.h> |
8 | ||
1da177e4 LT |
9 | /* ---------------------------------------------------------------------- */ |
10 | ||
53b0a1c6 HV |
11 | /* This macro is allowed for *constants* only, gcc must calculate it |
12 | at compile time. Remember -- no floats in kernel mode */ | |
13 | #define MSP_CARRIER(freq) ((int)((float)(freq / 18.432) * (1 << 24))) | |
14 | ||
15 | #define MSP_MODE_AM_DETECT 0 | |
16 | #define MSP_MODE_FM_RADIO 2 | |
17 | #define MSP_MODE_FM_TERRA 3 | |
18 | #define MSP_MODE_FM_SAT 4 | |
19 | #define MSP_MODE_FM_NICAM1 5 | |
20 | #define MSP_MODE_FM_NICAM2 6 | |
21 | #define MSP_MODE_AM_NICAM 7 | |
22 | #define MSP_MODE_BTSC 8 | |
23 | #define MSP_MODE_EXTERN 9 | |
24 | ||
42772574 HV |
25 | #define SCART_IN1 0 |
26 | #define SCART_IN2 1 | |
27 | #define SCART_IN3 2 | |
28 | #define SCART_IN4 3 | |
29 | #define SCART_IN1_DA 4 | |
30 | #define SCART_IN2_DA 5 | |
31 | #define SCART_MONO 6 | |
32 | #define SCART_MUTE 7 | |
1da177e4 LT |
33 | |
34 | #define SCART_DSP_IN 0 | |
35 | #define SCART1_OUT 1 | |
36 | #define SCART2_OUT 2 | |
37 | ||
53b0a1c6 HV |
38 | #define OPMODE_AUTO -1 |
39 | #define OPMODE_MANUAL 0 | |
40 | #define OPMODE_AUTODETECT 1 /* use autodetect (>= msp3410 only) */ | |
41 | #define OPMODE_AUTOSELECT 2 /* use autodetect & autoselect (>= msp34xxG) */ | |
42 | ||
43 | /* module parameters */ | |
f167cb4e MCC |
44 | extern int msp_debug; |
45 | extern int msp_once; | |
46 | extern int msp_amsound; | |
47 | extern int msp_standard; | |
48 | extern int msp_dolby; | |
49 | extern int msp_stereo_thresh; | |
53b0a1c6 HV |
50 | |
51 | struct msp_state { | |
52 | int rev1, rev2; | |
5af0c8f6 HV |
53 | u8 has_nicam; |
54 | u8 has_radio; | |
55 | u8 has_headphones; | |
56 | u8 has_ntsc_jp_d_k3; | |
57 | u8 has_scart4; | |
58 | u8 has_scart23_in_scart2_out; | |
59 | u8 has_scart2_out_volume; | |
60 | u8 has_i2s_conf; | |
61 | u8 has_subwoofer; | |
62 | u8 has_sound_processing; | |
63 | u8 has_virtual_dolby_surround; | |
64 | u8 has_dolby_pro_logic; | |
7560d7a4 HV |
65 | |
66 | int radio; | |
53b0a1c6 | 67 | int opmode; |
5af0c8f6 | 68 | int std; |
53b0a1c6 | 69 | int mode; |
5af0c8f6 | 70 | v4l2_std_id v4l2_std; |
53b0a1c6 HV |
71 | int nicam_on; |
72 | int acb; | |
73 | int in_scart; | |
74 | int i2s_mode; | |
75 | int main, second; /* sound carrier */ | |
76 | int input; | |
2474ed44 | 77 | struct v4l2_routing routing; |
53b0a1c6 HV |
78 | |
79 | /* v4l2 */ | |
80 | int audmode; | |
81 | int rxsubchans; | |
82 | ||
d312a46e HV |
83 | int volume, muted; |
84 | int balance, loudness; | |
53b0a1c6 HV |
85 | int bass, treble; |
86 | ||
87 | /* thread */ | |
88 | struct task_struct *kthread; | |
89 | wait_queue_head_t wq; | |
90 | int restart:1; | |
91 | int watch_stereo:1; | |
92 | }; | |
93 | ||
53b0a1c6 HV |
94 | /* msp3400-driver.c */ |
95 | int msp_write_dem(struct i2c_client *client, int addr, int val); | |
96 | int msp_write_dsp(struct i2c_client *client, int addr, int val); | |
97 | int msp_read_dem(struct i2c_client *client, int addr); | |
98 | int msp_read_dsp(struct i2c_client *client, int addr); | |
99 | int msp_reset(struct i2c_client *client); | |
100 | void msp_set_scart(struct i2c_client *client, int in, int out); | |
101 | void msp_set_mute(struct i2c_client *client); | |
102 | void msp_set_audio(struct i2c_client *client); | |
53b0a1c6 HV |
103 | int msp_sleep(struct msp_state *state, int timeout); |
104 | ||
105 | /* msp3400-kthreads.c */ | |
5af0c8f6 | 106 | const char *msp_standard_std_name(int std); |
8a4b275f | 107 | void msp_set_audmode(struct i2c_client *client); |
de533ccf | 108 | int msp_detect_stereo(struct i2c_client *client); |
53b0a1c6 HV |
109 | int msp3400c_thread(void *data); |
110 | int msp3410d_thread(void *data); | |
111 | int msp34xxg_thread(void *data); | |
8a4b275f HV |
112 | void msp3400c_set_mode(struct i2c_client *client, int mode); |
113 | void msp3400c_set_carrier(struct i2c_client *client, int cdo1, int cdo2); | |
53b0a1c6 | 114 | |
49965a80 | 115 | #endif /* MSP3400_DRIVER_H */ |