1
2
3
4
5
6
7
8
9
10
11
12 #define CX18_HW_TUNER (1 << 0)
13 #define CX18_HW_TVEEPROM (1 << 1)
14 #define CX18_HW_CS5345 (1 << 2)
15 #define CX18_HW_DVB (1 << 3)
16 #define CX18_HW_418_AV (1 << 4)
17 #define CX18_HW_GPIO_MUX (1 << 5)
18 #define CX18_HW_GPIO_RESET_CTRL (1 << 6)
19 #define CX18_HW_Z8F0811_IR_HAUP (1 << 7)
20
21
22 #define CX18_CARD_INPUT_VID_TUNER 1
23 #define CX18_CARD_INPUT_SVIDEO1 2
24 #define CX18_CARD_INPUT_SVIDEO2 3
25 #define CX18_CARD_INPUT_COMPOSITE1 4
26 #define CX18_CARD_INPUT_COMPOSITE2 5
27 #define CX18_CARD_INPUT_COMPONENT1 6
28
29
30 #define CX18_CARD_INPUT_AUD_TUNER 1
31 #define CX18_CARD_INPUT_LINE_IN1 2
32 #define CX18_CARD_INPUT_LINE_IN2 3
33
34 #define CX18_CARD_MAX_VIDEO_INPUTS 6
35 #define CX18_CARD_MAX_AUDIO_INPUTS 3
36 #define CX18_CARD_MAX_TUNERS 2
37
38
39 #define CX18_CAP_ENCODER (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER | \
40 V4L2_CAP_AUDIO | V4L2_CAP_READWRITE | \
41 V4L2_CAP_STREAMING | V4L2_CAP_VBI_CAPTURE | \
42 V4L2_CAP_SLICED_VBI_CAPTURE)
43
44 struct cx18_card_video_input {
45 u8 video_type;
46 u8 audio_index;
47 u32 video_input;
48 };
49
50 struct cx18_card_audio_input {
51 u8 audio_type;
52 u32 audio_input;
53 u16 muxer_input;
54
55 };
56
57 struct cx18_card_pci_info {
58 u16 device;
59 u16 subsystem_vendor;
60 u16 subsystem_device;
61 };
62
63
64
65
66
67 struct cx18_gpio_init {
68 u32 direction;
69 u32 initial_value;
70 };
71
72 struct cx18_gpio_i2c_slave_reset {
73 u32 active_lo_mask;
74 u32 active_hi_mask;
75 int msecs_asserted;
76 int msecs_recovery;
77 u32 ir_reset_mask;
78 };
79
80 struct cx18_gpio_audio_input {
81 u32 mask;
82 u32 tuner;
83 u32 linein;
84 u32 radio;
85 };
86
87 struct cx18_card_tuner {
88 v4l2_std_id std;
89 int tuner;
90 };
91
92 struct cx18_card_tuner_i2c {
93 unsigned short radio[2];
94 unsigned short demod[3];
95 unsigned short tv[4];
96 };
97
98 struct cx18_ddr {
99 u32 chip_config;
100 u32 refresh;
101 u32 timing1;
102 u32 timing2;
103 u32 tune_lane;
104 u32 initial_emrs;
105 };
106
107
108 struct cx18_card {
109 int type;
110 char *name;
111 char *comment;
112 u32 v4l2_capabilities;
113 u32 hw_audio_ctrl;
114
115 u32 hw_muxer;
116 u32 hw_all;
117 struct cx18_card_video_input video_inputs[CX18_CARD_MAX_VIDEO_INPUTS];
118 struct cx18_card_audio_input audio_inputs[CX18_CARD_MAX_AUDIO_INPUTS];
119 struct cx18_card_audio_input radio_input;
120
121
122 u8 xceive_pin;
123 struct cx18_gpio_init gpio_init;
124 struct cx18_gpio_i2c_slave_reset gpio_i2c_slave_reset;
125 struct cx18_gpio_audio_input gpio_audio_input;
126
127 struct cx18_card_tuner tuners[CX18_CARD_MAX_TUNERS];
128 struct cx18_card_tuner_i2c *i2c;
129
130 struct cx18_ddr ddr;
131
132
133
134 const struct cx18_card_pci_info *pci_list;
135 };
136
137 int cx18_get_input(struct cx18 *cx, u16 index, struct v4l2_input *input);
138 int cx18_get_audio_input(struct cx18 *cx, u16 index, struct v4l2_audio *input);
139 const struct cx18_card *cx18_get_card(u16 index);