diff options
author | Thierry Reding <thierry.reding@avionic-design.de> | 2011-08-04 03:14:09 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-08-31 16:17:17 -0400 |
commit | c0fa65ff9e7fdbdea7bf1bbc02fb2c3ee6814cc7 (patch) | |
tree | a22893ac905d88489a815094cda938da4ab356ba /drivers/staging | |
parent | 873545820a52e8ab6f6d54a748b1759b98f9354a (diff) |
[media] tm6000: Rework standard register tables
This commit uses sentinel entries to terminate the TV standard register
tables instead of hard-coding their size, allowing further entries to be
added more easily. It is also more space-efficient if the tables have a
varying number of entries.
Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/staging')
-rw-r--r-- | drivers/staging/tm6000/tm6000-stds.c | 610 |
1 files changed, 294 insertions, 316 deletions
diff --git a/drivers/staging/tm6000/tm6000-stds.c b/drivers/staging/tm6000/tm6000-stds.c index cd6962645b83..f44451b932b3 100644 --- a/drivers/staging/tm6000/tm6000-stds.c +++ b/drivers/staging/tm6000/tm6000-stds.c | |||
@@ -35,316 +35,303 @@ struct tm6000_reg_settings { | |||
35 | 35 | ||
36 | struct tm6000_std_settings { | 36 | struct tm6000_std_settings { |
37 | v4l2_std_id id; | 37 | v4l2_std_id id; |
38 | struct tm6000_reg_settings common[27]; | 38 | struct tm6000_reg_settings *common; |
39 | }; | ||
40 | |||
41 | static struct tm6000_reg_settings composite_pal_m[] = { | ||
42 | { TM6010_REQ07_R3F_RESET, 0x01 }, | ||
43 | { TM6010_REQ07_R00_VIDEO_CONTROL0, 0x04 }, | ||
44 | { TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e }, | ||
45 | { TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f }, | ||
46 | { TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00 }, | ||
47 | { TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31 }, | ||
48 | { TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e }, | ||
49 | { TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x83 }, | ||
50 | { TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x0a }, | ||
51 | { TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe0 }, | ||
52 | { TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c }, | ||
53 | { TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc }, | ||
54 | { TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc }, | ||
55 | { TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd }, | ||
56 | { TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88 }, | ||
57 | { TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x20 }, | ||
58 | { TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61 }, | ||
59 | { TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c }, | ||
60 | { TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c }, | ||
61 | { TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52 }, | ||
62 | { TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6f }, | ||
63 | { TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc }, | ||
64 | { TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07 }, | ||
65 | { TM6010_REQ07_R3F_RESET, 0x00 }, | ||
66 | { 0, 0, 0 } | ||
67 | }; | ||
68 | |||
69 | static struct tm6000_reg_settings composite_pal_nc[] = { | ||
70 | { TM6010_REQ07_R3F_RESET, 0x01 }, | ||
71 | { TM6010_REQ07_R00_VIDEO_CONTROL0, 0x36 }, | ||
72 | { TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e }, | ||
73 | { TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f }, | ||
74 | { TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02 }, | ||
75 | { TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31 }, | ||
76 | { TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e }, | ||
77 | { TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91 }, | ||
78 | { TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f }, | ||
79 | { TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c }, | ||
80 | { TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c }, | ||
81 | { TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc }, | ||
82 | { TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc }, | ||
83 | { TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd }, | ||
84 | { TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c }, | ||
85 | { TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c }, | ||
86 | { TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1 }, | ||
87 | { TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c }, | ||
88 | { TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c }, | ||
89 | { TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52 }, | ||
90 | { TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6f }, | ||
91 | { TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc }, | ||
92 | { TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07 }, | ||
93 | { TM6010_REQ07_R3F_RESET, 0x00 }, | ||
94 | { 0, 0, 0 } | ||
95 | }; | ||
96 | |||
97 | static struct tm6000_reg_settings composite_pal[] = { | ||
98 | { TM6010_REQ07_R3F_RESET, 0x01 }, | ||
99 | { TM6010_REQ07_R00_VIDEO_CONTROL0, 0x32 }, | ||
100 | { TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e }, | ||
101 | { TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f }, | ||
102 | { TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02 }, | ||
103 | { TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31 }, | ||
104 | { TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25 }, | ||
105 | { TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5 }, | ||
106 | { TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63 }, | ||
107 | { TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50 }, | ||
108 | { TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c }, | ||
109 | { TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc }, | ||
110 | { TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc }, | ||
111 | { TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd }, | ||
112 | { TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c }, | ||
113 | { TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c }, | ||
114 | { TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1 }, | ||
115 | { TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c }, | ||
116 | { TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c }, | ||
117 | { TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52 }, | ||
118 | { TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6f }, | ||
119 | { TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc }, | ||
120 | { TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07 }, | ||
121 | { TM6010_REQ07_R3F_RESET, 0x00 }, | ||
122 | { 0, 0, 0 } | ||
123 | }; | ||
124 | |||
125 | static struct tm6000_reg_settings composite_secam[] = { | ||
126 | { TM6010_REQ07_R3F_RESET, 0x01 }, | ||
127 | { TM6010_REQ07_R00_VIDEO_CONTROL0, 0x38 }, | ||
128 | { TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e }, | ||
129 | { TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f }, | ||
130 | { TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02 }, | ||
131 | { TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31 }, | ||
132 | { TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24 }, | ||
133 | { TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92 }, | ||
134 | { TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8 }, | ||
135 | { TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed }, | ||
136 | { TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c }, | ||
137 | { TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc }, | ||
138 | { TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc }, | ||
139 | { TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd }, | ||
140 | { TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c }, | ||
141 | { TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c }, | ||
142 | { TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1 }, | ||
143 | { TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c }, | ||
144 | { TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18 }, | ||
145 | { TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42 }, | ||
146 | { TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xff }, | ||
147 | { TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07 }, | ||
148 | { TM6010_REQ07_R3F_RESET, 0x00 }, | ||
149 | { 0, 0, 0 } | ||
150 | }; | ||
151 | |||
152 | static struct tm6000_reg_settings composite_ntsc[] = { | ||
153 | { TM6010_REQ07_R3F_RESET, 0x01 }, | ||
154 | { TM6010_REQ07_R00_VIDEO_CONTROL0, 0x00 }, | ||
155 | { TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f }, | ||
156 | { TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f }, | ||
157 | { TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00 }, | ||
158 | { TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31 }, | ||
159 | { TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e }, | ||
160 | { TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b }, | ||
161 | { TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2 }, | ||
162 | { TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9 }, | ||
163 | { TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c }, | ||
164 | { TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc }, | ||
165 | { TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc }, | ||
166 | { TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd }, | ||
167 | { TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88 }, | ||
168 | { TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22 }, | ||
169 | { TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61 }, | ||
170 | { TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c }, | ||
171 | { TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c }, | ||
172 | { TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42 }, | ||
173 | { TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6f }, | ||
174 | { TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd }, | ||
175 | { TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07 }, | ||
176 | { TM6010_REQ07_R3F_RESET, 0x00 }, | ||
177 | { 0, 0, 0 } | ||
39 | }; | 178 | }; |
40 | 179 | ||
41 | static struct tm6000_std_settings composite_stds[] = { | 180 | static struct tm6000_std_settings composite_stds[] = { |
42 | { | 181 | { .id = V4L2_STD_PAL_M, .common = composite_pal_m, }, |
43 | .id = V4L2_STD_PAL_M, | 182 | { .id = V4L2_STD_PAL_Nc, .common = composite_pal_nc, }, |
44 | .common = { | 183 | { .id = V4L2_STD_PAL, .common = composite_pal, }, |
45 | {TM6010_REQ07_R3F_RESET, 0x01}, | 184 | { .id = V4L2_STD_SECAM, .common = composite_secam, }, |
46 | {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x04}, | 185 | { .id = V4L2_STD_NTSC, .common = composite_ntsc, }, |
47 | {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e}, | ||
48 | {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f}, | ||
49 | {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00}, | ||
50 | {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31}, | ||
51 | {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e}, | ||
52 | {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x83}, | ||
53 | {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x0a}, | ||
54 | {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe0}, | ||
55 | {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c}, | ||
56 | {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc}, | ||
57 | {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc}, | ||
58 | {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd}, | ||
59 | {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88}, | ||
60 | {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x20}, | ||
61 | {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61}, | ||
62 | {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c}, | ||
63 | {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c}, | ||
64 | {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52}, | ||
65 | {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F}, | ||
66 | |||
67 | {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc}, | ||
68 | {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07}, | ||
69 | {TM6010_REQ07_R3F_RESET, 0x00}, | ||
70 | {0, 0, 0}, | ||
71 | }, | ||
72 | }, { | ||
73 | .id = V4L2_STD_PAL_Nc, | ||
74 | .common = { | ||
75 | {TM6010_REQ07_R3F_RESET, 0x01}, | ||
76 | {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x36}, | ||
77 | {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e}, | ||
78 | {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f}, | ||
79 | {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02}, | ||
80 | {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31}, | ||
81 | {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e}, | ||
82 | {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91}, | ||
83 | {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f}, | ||
84 | {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c}, | ||
85 | {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c}, | ||
86 | {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc}, | ||
87 | {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc}, | ||
88 | {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd}, | ||
89 | {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c}, | ||
90 | {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c}, | ||
91 | {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1}, | ||
92 | {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c}, | ||
93 | {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c}, | ||
94 | {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52}, | ||
95 | {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F}, | ||
96 | |||
97 | {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc}, | ||
98 | {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07}, | ||
99 | {TM6010_REQ07_R3F_RESET, 0x00}, | ||
100 | {0, 0, 0}, | ||
101 | }, | ||
102 | }, { | ||
103 | .id = V4L2_STD_PAL, | ||
104 | .common = { | ||
105 | {TM6010_REQ07_R3F_RESET, 0x01}, | ||
106 | {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x32}, | ||
107 | {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e}, | ||
108 | {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f}, | ||
109 | {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02}, | ||
110 | {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31}, | ||
111 | {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25}, | ||
112 | {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5}, | ||
113 | {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63}, | ||
114 | {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50}, | ||
115 | {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c}, | ||
116 | {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc}, | ||
117 | {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc}, | ||
118 | {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd}, | ||
119 | {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c}, | ||
120 | {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c}, | ||
121 | {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1}, | ||
122 | {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c}, | ||
123 | {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c}, | ||
124 | {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52}, | ||
125 | {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F}, | ||
126 | |||
127 | {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc}, | ||
128 | {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07}, | ||
129 | {TM6010_REQ07_R3F_RESET, 0x00}, | ||
130 | {0, 0, 0}, | ||
131 | }, | ||
132 | }, { | ||
133 | .id = V4L2_STD_SECAM, | ||
134 | .common = { | ||
135 | {TM6010_REQ07_R3F_RESET, 0x01}, | ||
136 | {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x38}, | ||
137 | {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e}, | ||
138 | {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f}, | ||
139 | {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x02}, | ||
140 | {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31}, | ||
141 | {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24}, | ||
142 | {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92}, | ||
143 | {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8}, | ||
144 | {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed}, | ||
145 | {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c}, | ||
146 | {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc}, | ||
147 | {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc}, | ||
148 | {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd}, | ||
149 | {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c}, | ||
150 | {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2c}, | ||
151 | {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1}, | ||
152 | {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c}, | ||
153 | {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18}, | ||
154 | {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42}, | ||
155 | {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF}, | ||
156 | |||
157 | {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07}, | ||
158 | {TM6010_REQ07_R3F_RESET, 0x00}, | ||
159 | {0, 0, 0}, | ||
160 | }, | ||
161 | }, { | ||
162 | .id = V4L2_STD_NTSC, | ||
163 | .common = { | ||
164 | {TM6010_REQ07_R3F_RESET, 0x01}, | ||
165 | {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x00}, | ||
166 | {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f}, | ||
167 | {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f}, | ||
168 | {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x00}, | ||
169 | {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31}, | ||
170 | {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e}, | ||
171 | {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b}, | ||
172 | {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2}, | ||
173 | {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9}, | ||
174 | {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c}, | ||
175 | {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc}, | ||
176 | {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc}, | ||
177 | {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd}, | ||
178 | {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88}, | ||
179 | {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22}, | ||
180 | {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61}, | ||
181 | {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c}, | ||
182 | {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c}, | ||
183 | {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42}, | ||
184 | {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F}, | ||
185 | |||
186 | {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd}, | ||
187 | {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07}, | ||
188 | {TM6010_REQ07_R3F_RESET, 0x00}, | ||
189 | {0, 0, 0}, | ||
190 | }, | ||
191 | }, | ||
192 | }; | 186 | }; |
193 | 187 | ||
194 | static struct tm6000_std_settings svideo_stds[] = { | 188 | static struct tm6000_reg_settings svideo_pal_m[] = { |
195 | { | 189 | { TM6010_REQ07_R3F_RESET, 0x01 }, |
196 | .id = V4L2_STD_PAL_M, | 190 | { TM6010_REQ07_R00_VIDEO_CONTROL0, 0x05 }, |
197 | .common = { | 191 | { TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e }, |
198 | {TM6010_REQ07_R3F_RESET, 0x01}, | 192 | { TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f }, |
199 | {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x05}, | 193 | { TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04 }, |
200 | {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e}, | 194 | { TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31 }, |
201 | {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f}, | 195 | { TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e }, |
202 | {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04}, | 196 | { TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x83 }, |
203 | {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31}, | 197 | { TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x0a }, |
204 | {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e}, | 198 | { TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe0 }, |
205 | {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x83}, | 199 | { TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c }, |
206 | {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x0a}, | 200 | { TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc }, |
207 | {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe0}, | 201 | { TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc }, |
208 | {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c}, | 202 | { TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd }, |
209 | {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc}, | 203 | { TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88 }, |
210 | {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc}, | 204 | { TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22 }, |
211 | {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd}, | 205 | { TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61 }, |
212 | {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88}, | 206 | { TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c }, |
213 | {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22}, | 207 | { TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c }, |
214 | {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61}, | 208 | { TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52 }, |
215 | {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c}, | 209 | { TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6f }, |
216 | {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c}, | 210 | { TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc }, |
217 | {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52}, | 211 | { TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07 }, |
218 | {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F}, | 212 | { TM6010_REQ07_R3F_RESET, 0x00 }, |
219 | 213 | { 0, 0, 0 } | |
220 | {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc}, | ||
221 | {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07}, | ||
222 | {TM6010_REQ07_R3F_RESET, 0x00}, | ||
223 | {0, 0, 0}, | ||
224 | }, | ||
225 | }, { | ||
226 | .id = V4L2_STD_PAL_Nc, | ||
227 | .common = { | ||
228 | {TM6010_REQ07_R3F_RESET, 0x01}, | ||
229 | {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x37}, | ||
230 | {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e}, | ||
231 | {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f}, | ||
232 | {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04}, | ||
233 | {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31}, | ||
234 | {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e}, | ||
235 | {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91}, | ||
236 | {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f}, | ||
237 | {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c}, | ||
238 | {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c}, | ||
239 | {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc}, | ||
240 | {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc}, | ||
241 | {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd}, | ||
242 | {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88}, | ||
243 | {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22}, | ||
244 | {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1}, | ||
245 | {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c}, | ||
246 | {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c}, | ||
247 | {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52}, | ||
248 | {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F}, | ||
249 | |||
250 | {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc}, | ||
251 | {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07}, | ||
252 | {TM6010_REQ07_R3F_RESET, 0x00}, | ||
253 | {0, 0, 0}, | ||
254 | }, | ||
255 | }, { | ||
256 | .id = V4L2_STD_PAL, | ||
257 | .common = { | ||
258 | {TM6010_REQ07_R3F_RESET, 0x01}, | ||
259 | {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x33}, | ||
260 | {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e}, | ||
261 | {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f}, | ||
262 | {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04}, | ||
263 | {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x30}, | ||
264 | {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25}, | ||
265 | {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5}, | ||
266 | {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63}, | ||
267 | {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50}, | ||
268 | {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c}, | ||
269 | {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc}, | ||
270 | {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc}, | ||
271 | {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd}, | ||
272 | {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c}, | ||
273 | {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2a}, | ||
274 | {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1}, | ||
275 | {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c}, | ||
276 | {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c}, | ||
277 | {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52}, | ||
278 | {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F}, | ||
279 | |||
280 | {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc}, | ||
281 | {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07}, | ||
282 | {TM6010_REQ07_R3F_RESET, 0x00}, | ||
283 | {0, 0, 0}, | ||
284 | }, | ||
285 | }, { | ||
286 | .id = V4L2_STD_SECAM, | ||
287 | .common = { | ||
288 | {TM6010_REQ07_R3F_RESET, 0x01}, | ||
289 | {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x39}, | ||
290 | {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e}, | ||
291 | {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f}, | ||
292 | {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x03}, | ||
293 | {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31}, | ||
294 | {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24}, | ||
295 | {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92}, | ||
296 | {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8}, | ||
297 | {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed}, | ||
298 | {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c}, | ||
299 | {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc}, | ||
300 | {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc}, | ||
301 | {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd}, | ||
302 | {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c}, | ||
303 | {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2a}, | ||
304 | {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1}, | ||
305 | {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c}, | ||
306 | {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18}, | ||
307 | {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42}, | ||
308 | {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xFF}, | ||
309 | |||
310 | {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07}, | ||
311 | {TM6010_REQ07_R3F_RESET, 0x00}, | ||
312 | {0, 0, 0}, | ||
313 | }, | ||
314 | }, { | ||
315 | .id = V4L2_STD_NTSC, | ||
316 | .common = { | ||
317 | {TM6010_REQ07_R3F_RESET, 0x01}, | ||
318 | {TM6010_REQ07_R00_VIDEO_CONTROL0, 0x01}, | ||
319 | {TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f}, | ||
320 | {TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f}, | ||
321 | {TM6010_REQ07_R03_YC_SEP_CONTROL, 0x03}, | ||
322 | {TM6010_REQ07_R07_OUTPUT_CONTROL, 0x30}, | ||
323 | {TM6010_REQ07_R17_HLOOP_MAXSTATE, 0x8b}, | ||
324 | {TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e}, | ||
325 | {TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b}, | ||
326 | {TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2}, | ||
327 | {TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9}, | ||
328 | {TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c}, | ||
329 | {TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc}, | ||
330 | {TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc}, | ||
331 | {TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd}, | ||
332 | {TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88}, | ||
333 | {TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22}, | ||
334 | {TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61}, | ||
335 | {TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c}, | ||
336 | {TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c}, | ||
337 | {TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42}, | ||
338 | {TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6F}, | ||
339 | |||
340 | {TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd}, | ||
341 | {TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07}, | ||
342 | {TM6010_REQ07_R3F_RESET, 0x00}, | ||
343 | {0, 0, 0}, | ||
344 | }, | ||
345 | }, | ||
346 | }; | 214 | }; |
347 | 215 | ||
216 | static struct tm6000_reg_settings svideo_pal_nc[] = { | ||
217 | { TM6010_REQ07_R3F_RESET, 0x01 }, | ||
218 | { TM6010_REQ07_R00_VIDEO_CONTROL0, 0x37 }, | ||
219 | { TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e }, | ||
220 | { TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f }, | ||
221 | { TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04 }, | ||
222 | { TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31 }, | ||
223 | { TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e }, | ||
224 | { TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x91 }, | ||
225 | { TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x1f }, | ||
226 | { TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x0c }, | ||
227 | { TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c }, | ||
228 | { TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc }, | ||
229 | { TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc }, | ||
230 | { TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd }, | ||
231 | { TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88 }, | ||
232 | { TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22 }, | ||
233 | { TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1 }, | ||
234 | { TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c }, | ||
235 | { TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c }, | ||
236 | { TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52 }, | ||
237 | { TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6f }, | ||
238 | { TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc }, | ||
239 | { TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07 }, | ||
240 | { TM6010_REQ07_R3F_RESET, 0x00 }, | ||
241 | { 0, 0, 0 } | ||
242 | }; | ||
243 | |||
244 | static struct tm6000_reg_settings svideo_pal[] = { | ||
245 | { TM6010_REQ07_R3F_RESET, 0x01 }, | ||
246 | { TM6010_REQ07_R00_VIDEO_CONTROL0, 0x33 }, | ||
247 | { TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e }, | ||
248 | { TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f }, | ||
249 | { TM6010_REQ07_R03_YC_SEP_CONTROL, 0x04 }, | ||
250 | { TM6010_REQ07_R07_OUTPUT_CONTROL, 0x30 }, | ||
251 | { TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x25 }, | ||
252 | { TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0xd5 }, | ||
253 | { TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0x63 }, | ||
254 | { TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0x50 }, | ||
255 | { TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c }, | ||
256 | { TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc }, | ||
257 | { TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc }, | ||
258 | { TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd }, | ||
259 | { TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c }, | ||
260 | { TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2a }, | ||
261 | { TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1 }, | ||
262 | { TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x0c }, | ||
263 | { TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c }, | ||
264 | { TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x52 }, | ||
265 | { TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6f }, | ||
266 | { TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdc }, | ||
267 | { TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07 }, | ||
268 | { TM6010_REQ07_R3F_RESET, 0x00 }, | ||
269 | { 0, 0, 0 } | ||
270 | }; | ||
271 | |||
272 | static struct tm6000_reg_settings svideo_secam[] = { | ||
273 | { TM6010_REQ07_R3F_RESET, 0x01 }, | ||
274 | { TM6010_REQ07_R00_VIDEO_CONTROL0, 0x39 }, | ||
275 | { TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0e }, | ||
276 | { TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f }, | ||
277 | { TM6010_REQ07_R03_YC_SEP_CONTROL, 0x03 }, | ||
278 | { TM6010_REQ07_R07_OUTPUT_CONTROL, 0x31 }, | ||
279 | { TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x24 }, | ||
280 | { TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x92 }, | ||
281 | { TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xe8 }, | ||
282 | { TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xed }, | ||
283 | { TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c }, | ||
284 | { TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc }, | ||
285 | { TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc }, | ||
286 | { TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd }, | ||
287 | { TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x8c }, | ||
288 | { TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x2a }, | ||
289 | { TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0xc1 }, | ||
290 | { TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x2c }, | ||
291 | { TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x18 }, | ||
292 | { TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42 }, | ||
293 | { TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0xff }, | ||
294 | { TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07 }, | ||
295 | { TM6010_REQ07_R3F_RESET, 0x00 }, | ||
296 | { 0, 0, 0 } | ||
297 | }; | ||
298 | |||
299 | static struct tm6000_reg_settings svideo_ntsc[] = { | ||
300 | { TM6010_REQ07_R3F_RESET, 0x01 }, | ||
301 | { TM6010_REQ07_R00_VIDEO_CONTROL0, 0x01 }, | ||
302 | { TM6010_REQ07_R01_VIDEO_CONTROL1, 0x0f }, | ||
303 | { TM6010_REQ07_R02_VIDEO_CONTROL2, 0x5f }, | ||
304 | { TM6010_REQ07_R03_YC_SEP_CONTROL, 0x03 }, | ||
305 | { TM6010_REQ07_R07_OUTPUT_CONTROL, 0x30 }, | ||
306 | { TM6010_REQ07_R17_HLOOP_MAXSTATE, 0x8b }, | ||
307 | { TM6010_REQ07_R18_CHROMA_DTO_INCREMENT3, 0x1e }, | ||
308 | { TM6010_REQ07_R19_CHROMA_DTO_INCREMENT2, 0x8b }, | ||
309 | { TM6010_REQ07_R1A_CHROMA_DTO_INCREMENT1, 0xa2 }, | ||
310 | { TM6010_REQ07_R1B_CHROMA_DTO_INCREMENT0, 0xe9 }, | ||
311 | { TM6010_REQ07_R1C_HSYNC_DTO_INCREMENT3, 0x1c }, | ||
312 | { TM6010_REQ07_R1D_HSYNC_DTO_INCREMENT2, 0xcc }, | ||
313 | { TM6010_REQ07_R1E_HSYNC_DTO_INCREMENT1, 0xcc }, | ||
314 | { TM6010_REQ07_R1F_HSYNC_DTO_INCREMENT0, 0xcd }, | ||
315 | { TM6010_REQ07_R2E_ACTIVE_VIDEO_HSTART, 0x88 }, | ||
316 | { TM6010_REQ07_R30_ACTIVE_VIDEO_VSTART, 0x22 }, | ||
317 | { TM6010_REQ07_R31_ACTIVE_VIDEO_VHIGHT, 0x61 }, | ||
318 | { TM6010_REQ07_R33_VSYNC_HLOCK_MAX, 0x1c }, | ||
319 | { TM6010_REQ07_R35_VSYNC_AGC_MAX, 0x1c }, | ||
320 | { TM6010_REQ07_R82_COMB_FILTER_CONFIG, 0x42 }, | ||
321 | { TM6010_REQ07_R83_CHROMA_LOCK_CONFIG, 0x6f }, | ||
322 | { TM6010_REQ07_R04_LUMA_HAGC_CONTROL, 0xdd }, | ||
323 | { TM6010_REQ07_R0D_CHROMA_KILL_LEVEL, 0x07 }, | ||
324 | { TM6010_REQ07_R3F_RESET, 0x00 }, | ||
325 | { 0, 0, 0 } | ||
326 | }; | ||
327 | |||
328 | static struct tm6000_std_settings svideo_stds[] = { | ||
329 | { .id = V4L2_STD_PAL_M, .common = svideo_pal_m, }, | ||
330 | { .id = V4L2_STD_PAL_Nc, .common = svideo_pal_nc, }, | ||
331 | { .id = V4L2_STD_PAL, .common = svideo_pal, }, | ||
332 | { .id = V4L2_STD_SECAM, .common = svideo_secam, }, | ||
333 | { .id = V4L2_STD_NTSC, .common = svideo_ntsc, }, | ||
334 | }; | ||
348 | 335 | ||
349 | static int tm6000_set_audio_std(struct tm6000_core *dev) | 336 | static int tm6000_set_audio_std(struct tm6000_core *dev) |
350 | { | 337 | { |
@@ -501,16 +488,12 @@ void tm6000_get_std_res(struct tm6000_core *dev) | |||
501 | dev->width = 720; | 488 | dev->width = 720; |
502 | } | 489 | } |
503 | 490 | ||
504 | static int tm6000_load_std(struct tm6000_core *dev, | 491 | static int tm6000_load_std(struct tm6000_core *dev, struct tm6000_reg_settings *set) |
505 | struct tm6000_reg_settings *set, int max_size) | ||
506 | { | 492 | { |
507 | int i, rc; | 493 | int i, rc; |
508 | 494 | ||
509 | /* Load board's initialization table */ | 495 | /* Load board's initialization table */ |
510 | for (i = 0; max_size; i++) { | 496 | for (i = 0; set[i].req; i++) { |
511 | if (!set[i].req) | ||
512 | return 0; | ||
513 | |||
514 | rc = tm6000_set_reg(dev, set[i].req, set[i].reg, set[i].value); | 497 | rc = tm6000_set_reg(dev, set[i].req, set[i].reg, set[i].value); |
515 | if (rc < 0) { | 498 | if (rc < 0) { |
516 | printk(KERN_ERR "Error %i while setting " | 499 | printk(KERN_ERR "Error %i while setting " |
@@ -645,9 +628,7 @@ int tm6000_set_standard(struct tm6000_core *dev) | |||
645 | if (input->type == TM6000_INPUT_SVIDEO) { | 628 | if (input->type == TM6000_INPUT_SVIDEO) { |
646 | for (i = 0; i < ARRAY_SIZE(svideo_stds); i++) { | 629 | for (i = 0; i < ARRAY_SIZE(svideo_stds); i++) { |
647 | if (dev->norm & svideo_stds[i].id) { | 630 | if (dev->norm & svideo_stds[i].id) { |
648 | rc = tm6000_load_std(dev, svideo_stds[i].common, | 631 | rc = tm6000_load_std(dev, svideo_stds[i].common); |
649 | sizeof(svideo_stds[i]. | ||
650 | common)); | ||
651 | goto ret; | 632 | goto ret; |
652 | } | 633 | } |
653 | } | 634 | } |
@@ -655,10 +636,7 @@ int tm6000_set_standard(struct tm6000_core *dev) | |||
655 | } else { | 636 | } else { |
656 | for (i = 0; i < ARRAY_SIZE(composite_stds); i++) { | 637 | for (i = 0; i < ARRAY_SIZE(composite_stds); i++) { |
657 | if (dev->norm & composite_stds[i].id) { | 638 | if (dev->norm & composite_stds[i].id) { |
658 | rc = tm6000_load_std(dev, | 639 | rc = tm6000_load_std(dev, composite_stds[i].common); |
659 | composite_stds[i].common, | ||
660 | sizeof(composite_stds[i]. | ||
661 | common)); | ||
662 | goto ret; | 640 | goto ret; |
663 | } | 641 | } |
664 | } | 642 | } |