aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorTimur Tabi <timur@freescale.com>2011-09-28 17:19:50 -0400
committerFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>2011-10-04 21:10:12 -0400
commit760af8f83d73dcd2ddf0dc8ebefcf4f0569c1a89 (patch)
treee9432599c2f1aae75a09df091faf3a75ed55f086 /drivers
parent1738f6f84f1713eb6fa164d6257257f4aecc1c30 (diff)
drivers/video: fsl-diu-fb: add several new video modes
Add the following new video modes to the Freescale DIU framebuffer driver: 640x480x60 640x480x72 640x480x75 640x480x90 640x480x100 800x480x60 800x600x60 854x480x60 1280x480x60 1280x720x60 1920x1080x60 Also add margin data to the 320x240 video mode. This mode was originally intended only for the AOIs (overlays) used on planes two and three, but with real margin data, it can now be used as an actual video mode. Video mode data is from earlier work done by Jerry Huang <Chang-Ming.Huang@freescale.com>. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Diffstat (limited to 'drivers')
-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;