aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/video/fsl-diu-fb.c200
1 files changed, 167 insertions, 33 deletions
diff --git a/drivers/video/fsl-diu-fb.c b/drivers/video/fsl-diu-fb.c
index 4dc65c9dca2b..29652ab15ee0 100644
--- a/drivers/video/fsl-diu-fb.c
+++ b/drivers/video/fsl-diu-fb.c
@@ -77,11 +77,12 @@ struct diu_pool {
77/* 77/*
78 * List of supported video modes 78 * List of supported video modes
79 * 79 *
80 * The first entry is the default video mode 80 * The first entry is the default video mode. The remain entries are in
81 * order if increasing resolution and frequency. The 320x240-60 mode is
82 * the initial AOI for the second and third planes.
81 */ 83 */
82static struct fb_videomode __devinitdata fsl_diu_mode_db[] = { 84static struct fb_videomode __devinitdata fsl_diu_mode_db[] = {
83 { 85 {
84 .name = "1024x768-60",
85 .refresh = 60, 86 .refresh = 60,
86 .xres = 1024, 87 .xres = 1024,
87 .yres = 768, 88 .yres = 768,
@@ -96,7 +97,132 @@ static struct fb_videomode __devinitdata fsl_diu_mode_db[] = {
96 .vmode = FB_VMODE_NONINTERLACED 97 .vmode = FB_VMODE_NONINTERLACED
97 }, 98 },
98 { 99 {
99 .name = "1024x768-70", 100 .refresh = 60,
101 .xres = 320,
102 .yres = 240,
103 .pixclock = 79440,
104 .left_margin = 16,
105 .right_margin = 16,
106 .upper_margin = 16,
107 .lower_margin = 5,
108 .hsync_len = 48,
109 .vsync_len = 1,
110 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
111 .vmode = FB_VMODE_NONINTERLACED
112 },
113 {
114 .refresh = 60,
115 .xres = 640,
116 .yres = 480,
117 .pixclock = 39722,
118 .left_margin = 48,
119 .right_margin = 16,
120 .upper_margin = 33,
121 .lower_margin = 10,
122 .hsync_len = 96,
123 .vsync_len = 2,
124 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
125 .vmode = FB_VMODE_NONINTERLACED
126 },
127 {
128 .refresh = 72,
129 .xres = 640,
130 .yres = 480,
131 .pixclock = 32052,
132 .left_margin = 128,
133 .right_margin = 24,
134 .upper_margin = 28,
135 .lower_margin = 9,
136 .hsync_len = 40,
137 .vsync_len = 3,
138 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
139 .vmode = FB_VMODE_NONINTERLACED
140 },
141 {
142 .refresh = 75,
143 .xres = 640,
144 .yres = 480,
145 .pixclock = 31747,
146 .left_margin = 120,
147 .right_margin = 16,
148 .upper_margin = 16,
149 .lower_margin = 1,
150 .hsync_len = 64,
151 .vsync_len = 3,
152 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
153 .vmode = FB_VMODE_NONINTERLACED
154 },
155 {
156 .refresh = 90,
157 .xres = 640,
158 .yres = 480,
159 .pixclock = 25057,
160 .left_margin = 120,
161 .right_margin = 32,
162 .upper_margin = 14,
163 .lower_margin = 25,
164 .hsync_len = 40,
165 .vsync_len = 14,
166 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
167 .vmode = FB_VMODE_NONINTERLACED
168 },
169 {
170 .refresh = 100,
171 .xres = 640,
172 .yres = 480,
173 .pixclock = 22272,
174 .left_margin = 48,
175 .right_margin = 32,
176 .upper_margin = 17,
177 .lower_margin = 22,
178 .hsync_len = 128,
179 .vsync_len = 12,
180 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
181 .vmode = FB_VMODE_NONINTERLACED
182 },
183 {
184 .refresh = 60,
185 .xres = 800,
186 .yres = 480,
187 .pixclock = 33805,
188 .left_margin = 96,
189 .right_margin = 24,
190 .upper_margin = 10,
191 .lower_margin = 3,
192 .hsync_len = 72,
193 .vsync_len = 7,
194 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
195 .vmode = FB_VMODE_NONINTERLACED
196 },
197 {
198 .refresh = 60,
199 .xres = 800,
200 .yres = 600,
201 .pixclock = 25000,
202 .left_margin = 88,
203 .right_margin = 40,
204 .upper_margin = 23,
205 .lower_margin = 1,
206 .hsync_len = 128,
207 .vsync_len = 4,
208 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
209 .vmode = FB_VMODE_NONINTERLACED
210 },
211 {
212 .refresh = 60,
213 .xres = 854,
214 .yres = 480,
215 .pixclock = 31518,
216 .left_margin = 104,
217 .right_margin = 16,
218 .upper_margin = 13,
219 .lower_margin = 1,
220 .hsync_len = 88,
221 .vsync_len = 3,
222 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
223 .vmode = FB_VMODE_NONINTERLACED
224 },
225 {
100 .refresh = 70, 226 .refresh = 70,
101 .xres = 1024, 227 .xres = 1024,
102 .yres = 768, 228 .yres = 768,
@@ -111,7 +237,6 @@ static struct fb_videomode __devinitdata fsl_diu_mode_db[] = {
111 .vmode = FB_VMODE_NONINTERLACED 237 .vmode = FB_VMODE_NONINTERLACED
112 }, 238 },
113 { 239 {
114 .name = "1024x768-75",
115 .refresh = 75, 240 .refresh = 75,
116 .xres = 1024, 241 .xres = 1024,
117 .yres = 768, 242 .yres = 768,
@@ -126,7 +251,34 @@ static struct fb_videomode __devinitdata fsl_diu_mode_db[] = {
126 .vmode = FB_VMODE_NONINTERLACED 251 .vmode = FB_VMODE_NONINTERLACED
127 }, 252 },
128 { 253 {
129 .name = "1280x1024-60", 254 .refresh = 60,
255 .xres = 1280,
256 .yres = 480,
257 .pixclock = 18939,
258 .left_margin = 353,
259 .right_margin = 47,
260 .upper_margin = 39,
261 .lower_margin = 4,
262 .hsync_len = 8,
263 .vsync_len = 2,
264 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
265 .vmode = FB_VMODE_NONINTERLACED
266 },
267 {
268 .refresh = 60,
269 .xres = 1280,
270 .yres = 720,
271 .pixclock = 13426,
272 .left_margin = 192,
273 .right_margin = 64,
274 .upper_margin = 22,
275 .lower_margin = 1,
276 .hsync_len = 136,
277 .vsync_len = 3,
278 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
279 .vmode = FB_VMODE_NONINTERLACED
280 },
281 {
130 .refresh = 60, 282 .refresh = 60,
131 .xres = 1280, 283 .xres = 1280,
132 .yres = 1024, 284 .yres = 1024,
@@ -141,7 +293,6 @@ static struct fb_videomode __devinitdata fsl_diu_mode_db[] = {
141 .vmode = FB_VMODE_NONINTERLACED 293 .vmode = FB_VMODE_NONINTERLACED
142 }, 294 },
143 { 295 {
144 .name = "1280x1024-70",
145 .refresh = 70, 296 .refresh = 70,
146 .xres = 1280, 297 .xres = 1280,
147 .yres = 1024, 298 .yres = 1024,
@@ -156,7 +307,6 @@ static struct fb_videomode __devinitdata fsl_diu_mode_db[] = {
156 .vmode = FB_VMODE_NONINTERLACED 307 .vmode = FB_VMODE_NONINTERLACED
157 }, 308 },
158 { 309 {
159 .name = "1280x1024-75",
160 .refresh = 75, 310 .refresh = 75,
161 .xres = 1280, 311 .xres = 1280,
162 .yres = 1024, 312 .yres = 1024,
@@ -171,38 +321,22 @@ static struct fb_videomode __devinitdata fsl_diu_mode_db[] = {
171 .vmode = FB_VMODE_NONINTERLACED 321 .vmode = FB_VMODE_NONINTERLACED
172 }, 322 },
173 { 323 {
174 .name = "320x240", /* for AOI only */
175 .refresh = 60, 324 .refresh = 60,
176 .xres = 320, 325 .xres = 1920,
177 .yres = 240, 326 .yres = 1080,
178 .pixclock = 15385, 327 .pixclock = 5787,
179 .left_margin = 0, 328 .left_margin = 328,
180 .right_margin = 0, 329 .right_margin = 120,
181 .upper_margin = 0, 330 .upper_margin = 34,
182 .lower_margin = 0, 331 .lower_margin = 1,
183 .hsync_len = 0, 332 .hsync_len = 208,
184 .vsync_len = 0, 333 .vsync_len = 3,
185 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
186 .vmode = FB_VMODE_NONINTERLACED
187 },
188 {
189 .name = "1280x480-60",
190 .refresh = 60,
191 .xres = 1280,
192 .yres = 480,
193 .pixclock = 18939,
194 .left_margin = 353,
195 .right_margin = 47,
196 .upper_margin = 39,
197 .lower_margin = 4,
198 .hsync_len = 8,
199 .vsync_len = 2,
200 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 334 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
201 .vmode = FB_VMODE_NONINTERLACED 335 .vmode = FB_VMODE_NONINTERLACED
202 }, 336 },
203}; 337};
204 338
205static char *fb_mode = "1024x768-32@60"; 339static char *fb_mode;
206static unsigned long default_bpp = 32; 340static unsigned long default_bpp = 32;
207static enum fsl_diu_monitor_port monitor_port; 341static enum fsl_diu_monitor_port monitor_port;
208static char *monitor_string; 342static char *monitor_string;