Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Timur Tabi and committed by
Florian Tobias Schandinat
760af8f8 1738f6f8

+167 -33
+167 -33
drivers/video/fsl-diu-fb.c
··· 77 77 /* 78 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 */ 82 84 static struct fb_videomode __devinitdata fsl_diu_mode_db[] = { 83 85 { 84 - .name = "1024x768-60", 85 86 .refresh = 60, 86 87 .xres = 1024, 87 88 .yres = 768, ··· 97 96 .vmode = FB_VMODE_NONINTERLACED 98 97 }, 99 98 { 100 - .name = "1024x768-70", 99 + .refresh = 60, 100 + .xres = 320, 101 + .yres = 240, 102 + .pixclock = 79440, 103 + .left_margin = 16, 104 + .right_margin = 16, 105 + .upper_margin = 16, 106 + .lower_margin = 5, 107 + .hsync_len = 48, 108 + .vsync_len = 1, 109 + .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 110 + .vmode = FB_VMODE_NONINTERLACED 111 + }, 112 + { 113 + .refresh = 60, 114 + .xres = 640, 115 + .yres = 480, 116 + .pixclock = 39722, 117 + .left_margin = 48, 118 + .right_margin = 16, 119 + .upper_margin = 33, 120 + .lower_margin = 10, 121 + .hsync_len = 96, 122 + .vsync_len = 2, 123 + .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 124 + .vmode = FB_VMODE_NONINTERLACED 125 + }, 126 + { 127 + .refresh = 72, 128 + .xres = 640, 129 + .yres = 480, 130 + .pixclock = 32052, 131 + .left_margin = 128, 132 + .right_margin = 24, 133 + .upper_margin = 28, 134 + .lower_margin = 9, 135 + .hsync_len = 40, 136 + .vsync_len = 3, 137 + .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 138 + .vmode = FB_VMODE_NONINTERLACED 139 + }, 140 + { 141 + .refresh = 75, 142 + .xres = 640, 143 + .yres = 480, 144 + .pixclock = 31747, 145 + .left_margin = 120, 146 + .right_margin = 16, 147 + .upper_margin = 16, 148 + .lower_margin = 1, 149 + .hsync_len = 64, 150 + .vsync_len = 3, 151 + .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 152 + .vmode = FB_VMODE_NONINTERLACED 153 + }, 154 + { 155 + .refresh = 90, 156 + .xres = 640, 157 + .yres = 480, 158 + .pixclock = 25057, 159 + .left_margin = 120, 160 + .right_margin = 32, 161 + .upper_margin = 14, 162 + .lower_margin = 25, 163 + .hsync_len = 40, 164 + .vsync_len = 14, 165 + .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 166 + .vmode = FB_VMODE_NONINTERLACED 167 + }, 168 + { 169 + .refresh = 100, 170 + .xres = 640, 171 + .yres = 480, 172 + .pixclock = 22272, 173 + .left_margin = 48, 174 + .right_margin = 32, 175 + .upper_margin = 17, 176 + .lower_margin = 22, 177 + .hsync_len = 128, 178 + .vsync_len = 12, 179 + .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 180 + .vmode = FB_VMODE_NONINTERLACED 181 + }, 182 + { 183 + .refresh = 60, 184 + .xres = 800, 185 + .yres = 480, 186 + .pixclock = 33805, 187 + .left_margin = 96, 188 + .right_margin = 24, 189 + .upper_margin = 10, 190 + .lower_margin = 3, 191 + .hsync_len = 72, 192 + .vsync_len = 7, 193 + .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 194 + .vmode = FB_VMODE_NONINTERLACED 195 + }, 196 + { 197 + .refresh = 60, 198 + .xres = 800, 199 + .yres = 600, 200 + .pixclock = 25000, 201 + .left_margin = 88, 202 + .right_margin = 40, 203 + .upper_margin = 23, 204 + .lower_margin = 1, 205 + .hsync_len = 128, 206 + .vsync_len = 4, 207 + .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 208 + .vmode = FB_VMODE_NONINTERLACED 209 + }, 210 + { 211 + .refresh = 60, 212 + .xres = 854, 213 + .yres = 480, 214 + .pixclock = 31518, 215 + .left_margin = 104, 216 + .right_margin = 16, 217 + .upper_margin = 13, 218 + .lower_margin = 1, 219 + .hsync_len = 88, 220 + .vsync_len = 3, 221 + .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 222 + .vmode = FB_VMODE_NONINTERLACED 223 + }, 224 + { 101 225 .refresh = 70, 102 226 .xres = 1024, 103 227 .yres = 768, ··· 237 111 .vmode = FB_VMODE_NONINTERLACED 238 112 }, 239 113 { 240 - .name = "1024x768-75", 241 114 .refresh = 75, 242 115 .xres = 1024, 243 116 .yres = 768, ··· 251 126 .vmode = FB_VMODE_NONINTERLACED 252 127 }, 253 128 { 254 - .name = "1280x1024-60", 129 + .refresh = 60, 130 + .xres = 1280, 131 + .yres = 480, 132 + .pixclock = 18939, 133 + .left_margin = 353, 134 + .right_margin = 47, 135 + .upper_margin = 39, 136 + .lower_margin = 4, 137 + .hsync_len = 8, 138 + .vsync_len = 2, 139 + .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 140 + .vmode = FB_VMODE_NONINTERLACED 141 + }, 142 + { 143 + .refresh = 60, 144 + .xres = 1280, 145 + .yres = 720, 146 + .pixclock = 13426, 147 + .left_margin = 192, 148 + .right_margin = 64, 149 + .upper_margin = 22, 150 + .lower_margin = 1, 151 + .hsync_len = 136, 152 + .vsync_len = 3, 153 + .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 154 + .vmode = FB_VMODE_NONINTERLACED 155 + }, 156 + { 255 157 .refresh = 60, 256 158 .xres = 1280, 257 159 .yres = 1024, ··· 293 141 .vmode = FB_VMODE_NONINTERLACED 294 142 }, 295 143 { 296 - .name = "1280x1024-70", 297 144 .refresh = 70, 298 145 .xres = 1280, 299 146 .yres = 1024, ··· 307 156 .vmode = FB_VMODE_NONINTERLACED 308 157 }, 309 158 { 310 - .name = "1280x1024-75", 311 159 .refresh = 75, 312 160 .xres = 1280, 313 161 .yres = 1024, ··· 321 171 .vmode = FB_VMODE_NONINTERLACED 322 172 }, 323 173 { 324 - .name = "320x240", /* for AOI only */ 325 174 .refresh = 60, 326 - .xres = 320, 327 - .yres = 240, 328 - .pixclock = 15385, 329 - .left_margin = 0, 330 - .right_margin = 0, 331 - .upper_margin = 0, 332 - .lower_margin = 0, 333 - .hsync_len = 0, 334 - .vsync_len = 0, 335 - .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 336 - .vmode = FB_VMODE_NONINTERLACED 337 - }, 338 - { 339 - .name = "1280x480-60", 340 - .refresh = 60, 341 - .xres = 1280, 342 - .yres = 480, 343 - .pixclock = 18939, 344 - .left_margin = 353, 345 - .right_margin = 47, 346 - .upper_margin = 39, 347 - .lower_margin = 4, 348 - .hsync_len = 8, 349 - .vsync_len = 2, 175 + .xres = 1920, 176 + .yres = 1080, 177 + .pixclock = 5787, 178 + .left_margin = 328, 179 + .right_margin = 120, 180 + .upper_margin = 34, 181 + .lower_margin = 1, 182 + .hsync_len = 208, 183 + .vsync_len = 3, 350 184 .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 351 185 .vmode = FB_VMODE_NONINTERLACED 352 186 }, 353 187 }; 354 188 355 - static char *fb_mode = "1024x768-32@60"; 189 + static char *fb_mode; 356 190 static unsigned long default_bpp = 32; 357 191 static enum fsl_diu_monitor_port monitor_port; 358 192 static char *monitor_string;