diff options
author | Michael Krufky <mkrufky@m1k.net> | 2006-01-13 11:10:25 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@brturbo.com.br> | 2006-01-13 11:10:25 -0500 |
commit | 7b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96 (patch) | |
tree | c290ba6d44a608feb22e7d7af177a915419f88f3 /include/media | |
parent | f4efb4dbf21c78939e32d96cad145421c8b5f106 (diff) |
V4L/DVB (3359): Redesign tuners struct for maximum flexibility
- Tunertype struct redefined to allow one or more tuner_params structs
per tuner definition, one for each video standard.
- Each tuner_params struct has an element containing an arbitrary
amount of tuner_ranges.
(this is needed for dvb tuners - to be handled later)
- A tuner_range may be referenced by multiple tuner_params structs.
There are many duplicates in here. Reusing tuner_range structs,
rather than defining new ones for each tuner, will cut down on
memory usage, and is preferred when possible.
- tunertype struct contains an element, has_tda988x.
We must set this for all tunertypes that contain a tda988x
chip, and then we can remove this setting from the various
card structs.
- Improves tuners array memory usage efficiency.
- Right now, all tuners are using the first tuner_params[] array element
for analog mode. In the future, we will be merging similar tuner
definitions together, such that each tuner definition will have a
tuner_params struct for each available video standard. At that point,
the tuner_params[] array element will be chosen based on the video
standard in use.
Signed-off-by: Michael Krufky <mkrufky@m1k.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'include/media')
-rw-r--r-- | include/media/tuner-types.h | 41 | ||||
-rw-r--r-- | include/media/tuner.h | 1 |
2 files changed, 42 insertions, 0 deletions
diff --git a/include/media/tuner-types.h b/include/media/tuner-types.h new file mode 100644 index 000000000000..9f6e4a98c40a --- /dev/null +++ b/include/media/tuner-types.h | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | * descriptions for simple tuners. | ||
3 | */ | ||
4 | |||
5 | #ifndef __TUNER_TYPES_H__ | ||
6 | #define __TUNER_TYPES_H__ | ||
7 | |||
8 | enum param_type { | ||
9 | TUNER_PARAM_TYPE_RADIO, \ | ||
10 | TUNER_PARAM_TYPE_PAL, \ | ||
11 | TUNER_PARAM_TYPE_SECAM, \ | ||
12 | TUNER_PARAM_TYPE_NTSC, \ | ||
13 | TUNER_PARAM_TYPE_ATSC, \ | ||
14 | TUNER_PARAM_TYPE_DVBT, \ | ||
15 | TUNER_PARAM_TYPE_DVBS, \ | ||
16 | TUNER_PARAM_TYPE_DVBC | ||
17 | }; | ||
18 | |||
19 | struct tuner_range { | ||
20 | unsigned short limit; | ||
21 | unsigned char cb; | ||
22 | }; | ||
23 | |||
24 | struct tuner_params { | ||
25 | enum param_type type; | ||
26 | unsigned char config; /* to be moved into struct tuner_range for dvb-pll merge */ | ||
27 | |||
28 | unsigned int count; | ||
29 | struct tuner_range *ranges; | ||
30 | }; | ||
31 | |||
32 | struct tunertype { | ||
33 | char *name; | ||
34 | unsigned int has_tda988x:1; | ||
35 | struct tuner_params *params; | ||
36 | }; | ||
37 | |||
38 | extern struct tunertype tuners[]; | ||
39 | extern unsigned const int tuner_count; | ||
40 | |||
41 | #endif | ||
diff --git a/include/media/tuner.h b/include/media/tuner.h index 27cbf08c931d..c88b506971cf 100644 --- a/include/media/tuner.h +++ b/include/media/tuner.h | |||
@@ -23,6 +23,7 @@ | |||
23 | #define _TUNER_H | 23 | #define _TUNER_H |
24 | 24 | ||
25 | #include <linux/videodev2.h> | 25 | #include <linux/videodev2.h> |
26 | #include <media/tuner-types.h> | ||
26 | 27 | ||
27 | #define ADDR_UNSET (255) | 28 | #define ADDR_UNSET (255) |
28 | 29 | ||