diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-11-07 22:51:47 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-11-07 22:51:47 -0500 |
commit | 6b995751c2e851d2bc9c277b5884d0adb519e31d (patch) | |
tree | 7a15b41b5d8ce612915584a0773c670d5c0ab5b8 /drivers/video | |
parent | 6c2f4267833f453156f8f439cc32eb4c92f357b4 (diff) | |
parent | d27ba47e7e8c466c18983a1779d611f82d6a354f (diff) |
Merge branch 'master'
Diffstat (limited to 'drivers/video')
100 files changed, 5507 insertions, 1161 deletions
diff --git a/drivers/video/68328fb.c b/drivers/video/68328fb.c index 6a3cfbdc6dc9..3b0ddc55236b 100644 --- a/drivers/video/68328fb.c +++ b/drivers/video/68328fb.c | |||
@@ -113,7 +113,6 @@ static struct fb_ops mc68x328fb_ops = { | |||
113 | .fb_fillrect = cfb_fillrect, | 113 | .fb_fillrect = cfb_fillrect, |
114 | .fb_copyarea = cfb_copyarea, | 114 | .fb_copyarea = cfb_copyarea, |
115 | .fb_imageblit = cfb_imageblit, | 115 | .fb_imageblit = cfb_imageblit, |
116 | .fb_cursor = soft_cursor, | ||
117 | .fb_mmap = mc68x328fb_mmap, | 116 | .fb_mmap = mc68x328fb_mmap, |
118 | }; | 117 | }; |
119 | 118 | ||
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 7192b770bfb6..44b6ca290ce3 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig | |||
@@ -65,15 +65,6 @@ config FB_CFB_IMAGEBLIT | |||
65 | blitting. This is used by drivers that don't provide their own | 65 | blitting. This is used by drivers that don't provide their own |
66 | (accelerated) version. | 66 | (accelerated) version. |
67 | 67 | ||
68 | config FB_SOFT_CURSOR | ||
69 | tristate | ||
70 | depends on FB | ||
71 | default n | ||
72 | ---help--- | ||
73 | Include the soft_cursor function for generic software cursor support. | ||
74 | This is used by drivers that don't provide their own (accelerated) | ||
75 | version. | ||
76 | |||
77 | config FB_MACMODES | 68 | config FB_MACMODES |
78 | tristate | 69 | tristate |
79 | depends on FB | 70 | depends on FB |
@@ -114,7 +105,6 @@ config FB_CIRRUS | |||
114 | select FB_CFB_FILLRECT | 105 | select FB_CFB_FILLRECT |
115 | select FB_CFB_COPYAREA | 106 | select FB_CFB_COPYAREA |
116 | select FB_CFB_IMAGEBLIT | 107 | select FB_CFB_IMAGEBLIT |
117 | select FB_SOFT_CURSOR | ||
118 | ---help--- | 108 | ---help--- |
119 | This enables support for Cirrus Logic GD542x/543x based boards on | 109 | This enables support for Cirrus Logic GD542x/543x based boards on |
120 | Amiga: SD64, Piccolo, Picasso II/II+, Picasso IV, or EGS Spectrum. | 110 | Amiga: SD64, Piccolo, Picasso II/II+, Picasso IV, or EGS Spectrum. |
@@ -133,7 +123,6 @@ config FB_PM2 | |||
133 | select FB_CFB_FILLRECT | 123 | select FB_CFB_FILLRECT |
134 | select FB_CFB_COPYAREA | 124 | select FB_CFB_COPYAREA |
135 | select FB_CFB_IMAGEBLIT | 125 | select FB_CFB_IMAGEBLIT |
136 | select FB_SOFT_CURSOR | ||
137 | help | 126 | help |
138 | This is the frame buffer device driver for the Permedia2 AGP frame | 127 | This is the frame buffer device driver for the Permedia2 AGP frame |
139 | buffer card from ASK, aka `Graphic Blaster Exxtreme'. There is a | 128 | buffer card from ASK, aka `Graphic Blaster Exxtreme'. There is a |
@@ -152,7 +141,6 @@ config FB_ARMCLCD | |||
152 | select FB_CFB_FILLRECT | 141 | select FB_CFB_FILLRECT |
153 | select FB_CFB_COPYAREA | 142 | select FB_CFB_COPYAREA |
154 | select FB_CFB_IMAGEBLIT | 143 | select FB_CFB_IMAGEBLIT |
155 | select FB_SOFT_CURSOR | ||
156 | help | 144 | help |
157 | This framebuffer device driver is for the ARM PrimeCell PL110 | 145 | This framebuffer device driver is for the ARM PrimeCell PL110 |
158 | Colour LCD controller. ARM PrimeCells provide the building | 146 | Colour LCD controller. ARM PrimeCells provide the building |
@@ -169,7 +157,6 @@ config FB_ACORN | |||
169 | select FB_CFB_FILLRECT | 157 | select FB_CFB_FILLRECT |
170 | select FB_CFB_COPYAREA | 158 | select FB_CFB_COPYAREA |
171 | select FB_CFB_IMAGEBLIT | 159 | select FB_CFB_IMAGEBLIT |
172 | select FB_SOFT_CURSOR | ||
173 | help | 160 | help |
174 | This is the frame buffer device driver for the Acorn VIDC graphics | 161 | This is the frame buffer device driver for the Acorn VIDC graphics |
175 | hardware found in Acorn RISC PCs and other ARM-based machines. If | 162 | hardware found in Acorn RISC PCs and other ARM-based machines. If |
@@ -181,7 +168,9 @@ config FB_CLPS711X | |||
181 | select FB_CFB_FILLRECT | 168 | select FB_CFB_FILLRECT |
182 | select FB_CFB_COPYAREA | 169 | select FB_CFB_COPYAREA |
183 | select FB_CFB_IMAGEBLIT | 170 | select FB_CFB_IMAGEBLIT |
184 | select FB_SOFT_CURSOR | 171 | help |
172 | Say Y to enable the Framebuffer driver for the CLPS7111 and | ||
173 | EP7212 processors. | ||
185 | 174 | ||
186 | config FB_SA1100 | 175 | config FB_SA1100 |
187 | bool "SA-1100 LCD support" | 176 | bool "SA-1100 LCD support" |
@@ -189,7 +178,6 @@ config FB_SA1100 | |||
189 | select FB_CFB_FILLRECT | 178 | select FB_CFB_FILLRECT |
190 | select FB_CFB_COPYAREA | 179 | select FB_CFB_COPYAREA |
191 | select FB_CFB_IMAGEBLIT | 180 | select FB_CFB_IMAGEBLIT |
192 | select FB_SOFT_CURSOR | ||
193 | help | 181 | help |
194 | This is a framebuffer device for the SA-1100 LCD Controller. | 182 | This is a framebuffer device for the SA-1100 LCD Controller. |
195 | See <http://www.linux-fbdev.org/> for information on framebuffer | 183 | See <http://www.linux-fbdev.org/> for information on framebuffer |
@@ -204,7 +192,6 @@ config FB_IMX | |||
204 | select FB_CFB_FILLRECT | 192 | select FB_CFB_FILLRECT |
205 | select FB_CFB_COPYAREA | 193 | select FB_CFB_COPYAREA |
206 | select FB_CFB_IMAGEBLIT | 194 | select FB_CFB_IMAGEBLIT |
207 | select FB_SOFT_CURSOR | ||
208 | 195 | ||
209 | config FB_CYBER2000 | 196 | config FB_CYBER2000 |
210 | tristate "CyberPro 2000/2010/5000 support" | 197 | tristate "CyberPro 2000/2010/5000 support" |
@@ -212,7 +199,6 @@ config FB_CYBER2000 | |||
212 | select FB_CFB_FILLRECT | 199 | select FB_CFB_FILLRECT |
213 | select FB_CFB_COPYAREA | 200 | select FB_CFB_COPYAREA |
214 | select FB_CFB_IMAGEBLIT | 201 | select FB_CFB_IMAGEBLIT |
215 | select FB_SOFT_CURSOR | ||
216 | help | 202 | help |
217 | This enables support for the Integraphics CyberPro 20x0 and 5000 | 203 | This enables support for the Integraphics CyberPro 20x0 and 5000 |
218 | VGA chips used in the Rebel.com Netwinder and other machines. | 204 | VGA chips used in the Rebel.com Netwinder and other machines. |
@@ -225,7 +211,6 @@ config FB_APOLLO | |||
225 | default y | 211 | default y |
226 | select FB_CFB_FILLRECT | 212 | select FB_CFB_FILLRECT |
227 | select FB_CFB_IMAGEBLIT | 213 | select FB_CFB_IMAGEBLIT |
228 | select FB_SOFT_CURSOR | ||
229 | 214 | ||
230 | config FB_Q40 | 215 | config FB_Q40 |
231 | bool | 216 | bool |
@@ -234,12 +219,10 @@ config FB_Q40 | |||
234 | select FB_CFB_FILLRECT | 219 | select FB_CFB_FILLRECT |
235 | select FB_CFB_COPYAREA | 220 | select FB_CFB_COPYAREA |
236 | select FB_CFB_IMAGEBLIT | 221 | select FB_CFB_IMAGEBLIT |
237 | select FB_SOFT_CURSOR | ||
238 | 222 | ||
239 | config FB_AMIGA | 223 | config FB_AMIGA |
240 | tristate "Amiga native chipset support" | 224 | tristate "Amiga native chipset support" |
241 | depends on FB && AMIGA | 225 | depends on FB && AMIGA |
242 | select FB_SOFT_CURSOR | ||
243 | help | 226 | help |
244 | This is the frame buffer device driver for the builtin graphics | 227 | This is the frame buffer device driver for the builtin graphics |
245 | chipset found in Amigas. | 228 | chipset found in Amigas. |
@@ -279,7 +262,6 @@ config FB_CYBER | |||
279 | select FB_CFB_FILLRECT | 262 | select FB_CFB_FILLRECT |
280 | select FB_CFB_COPYAREA | 263 | select FB_CFB_COPYAREA |
281 | select FB_CFB_IMAGEBLIT | 264 | select FB_CFB_IMAGEBLIT |
282 | select FB_SOFT_CURSOR | ||
283 | help | 265 | help |
284 | This enables support for the Cybervision 64 graphics card from | 266 | This enables support for the Cybervision 64 graphics card from |
285 | Phase5. Please note that its use is not all that intuitive (i.e. if | 267 | Phase5. Please note that its use is not all that intuitive (i.e. if |
@@ -294,7 +276,6 @@ config FB_VIRGE | |||
294 | select FB_CFB_FILLRECT | 276 | select FB_CFB_FILLRECT |
295 | select FB_CFB_COPYAREA | 277 | select FB_CFB_COPYAREA |
296 | select FB_CFB_IMAGEBLIT | 278 | select FB_CFB_IMAGEBLIT |
297 | select FB_SOFT_CURSOR | ||
298 | help | 279 | help |
299 | This enables support for the Cybervision 64/3D graphics card from | 280 | This enables support for the Cybervision 64/3D graphics card from |
300 | Phase5. Please note that its use is not all that intuitive (i.e. if | 281 | Phase5. Please note that its use is not all that intuitive (i.e. if |
@@ -317,7 +298,6 @@ config FB_FM2 | |||
317 | select FB_CFB_FILLRECT | 298 | select FB_CFB_FILLRECT |
318 | select FB_CFB_COPYAREA | 299 | select FB_CFB_COPYAREA |
319 | select FB_CFB_IMAGEBLIT | 300 | select FB_CFB_IMAGEBLIT |
320 | select FB_SOFT_CURSOR | ||
321 | help | 301 | help |
322 | This is the frame buffer device driver for the Amiga FrameMaster | 302 | This is the frame buffer device driver for the Amiga FrameMaster |
323 | card from BSC (exhibited 1992 but not shipped as a CBM product). | 303 | card from BSC (exhibited 1992 but not shipped as a CBM product). |
@@ -328,7 +308,6 @@ config FB_ARC | |||
328 | select FB_CFB_FILLRECT | 308 | select FB_CFB_FILLRECT |
329 | select FB_CFB_COPYAREA | 309 | select FB_CFB_COPYAREA |
330 | select FB_CFB_IMAGEBLIT | 310 | select FB_CFB_IMAGEBLIT |
331 | select FB_SOFT_CURSOR | ||
332 | help | 311 | help |
333 | This enables support for the Arc Monochrome LCD board. The board | 312 | This enables support for the Arc Monochrome LCD board. The board |
334 | is based on the KS-108 lcd controller and is typically a matrix | 313 | is based on the KS-108 lcd controller and is typically a matrix |
@@ -351,7 +330,6 @@ config FB_OF | |||
351 | select FB_CFB_FILLRECT | 330 | select FB_CFB_FILLRECT |
352 | select FB_CFB_COPYAREA | 331 | select FB_CFB_COPYAREA |
353 | select FB_CFB_IMAGEBLIT | 332 | select FB_CFB_IMAGEBLIT |
354 | select FB_SOFT_CURSOR | ||
355 | select FB_MACMODES | 333 | select FB_MACMODES |
356 | help | 334 | help |
357 | Say Y if you want support with Open Firmware for your graphics | 335 | Say Y if you want support with Open Firmware for your graphics |
@@ -363,7 +341,6 @@ config FB_CONTROL | |||
363 | select FB_CFB_FILLRECT | 341 | select FB_CFB_FILLRECT |
364 | select FB_CFB_COPYAREA | 342 | select FB_CFB_COPYAREA |
365 | select FB_CFB_IMAGEBLIT | 343 | select FB_CFB_IMAGEBLIT |
366 | select FB_SOFT_CURSOR | ||
367 | select FB_MACMODES | 344 | select FB_MACMODES |
368 | help | 345 | help |
369 | This driver supports a frame buffer for the graphics adapter in the | 346 | This driver supports a frame buffer for the graphics adapter in the |
@@ -375,7 +352,6 @@ config FB_PLATINUM | |||
375 | select FB_CFB_FILLRECT | 352 | select FB_CFB_FILLRECT |
376 | select FB_CFB_COPYAREA | 353 | select FB_CFB_COPYAREA |
377 | select FB_CFB_IMAGEBLIT | 354 | select FB_CFB_IMAGEBLIT |
378 | select FB_SOFT_CURSOR | ||
379 | select FB_MACMODES | 355 | select FB_MACMODES |
380 | help | 356 | help |
381 | This driver supports a frame buffer for the "platinum" graphics | 357 | This driver supports a frame buffer for the "platinum" graphics |
@@ -387,7 +363,6 @@ config FB_VALKYRIE | |||
387 | select FB_CFB_FILLRECT | 363 | select FB_CFB_FILLRECT |
388 | select FB_CFB_COPYAREA | 364 | select FB_CFB_COPYAREA |
389 | select FB_CFB_IMAGEBLIT | 365 | select FB_CFB_IMAGEBLIT |
390 | select FB_SOFT_CURSOR | ||
391 | select FB_MACMODES | 366 | select FB_MACMODES |
392 | help | 367 | help |
393 | This driver supports a frame buffer for the "valkyrie" graphics | 368 | This driver supports a frame buffer for the "valkyrie" graphics |
@@ -399,42 +374,32 @@ config FB_CT65550 | |||
399 | select FB_CFB_FILLRECT | 374 | select FB_CFB_FILLRECT |
400 | select FB_CFB_COPYAREA | 375 | select FB_CFB_COPYAREA |
401 | select FB_CFB_IMAGEBLIT | 376 | select FB_CFB_IMAGEBLIT |
402 | select FB_SOFT_CURSOR | ||
403 | help | 377 | help |
404 | This is the frame buffer device driver for the Chips & Technologies | 378 | This is the frame buffer device driver for the Chips & Technologies |
405 | 65550 graphics chip in PowerBooks. | 379 | 65550 graphics chip in PowerBooks. |
406 | 380 | ||
407 | config FB_ASILIANT | 381 | config FB_ASILIANT |
408 | bool "Chips 69000 display support" | 382 | bool "Asiliant (Chips) 69000 display support" |
409 | depends on (FB = y) && PCI | 383 | depends on (FB = y) && PCI |
410 | select FB_CFB_FILLRECT | 384 | select FB_CFB_FILLRECT |
411 | select FB_CFB_COPYAREA | 385 | select FB_CFB_COPYAREA |
412 | select FB_CFB_IMAGEBLIT | 386 | select FB_CFB_IMAGEBLIT |
413 | select FB_SOFT_CURSOR | ||
414 | 387 | ||
415 | config FB_IMSTT | 388 | config FB_IMSTT |
416 | bool "IMS Twin Turbo display support" | 389 | bool "IMS Twin Turbo display support" |
417 | depends on (FB = y) && PCI | 390 | depends on (FB = y) && PCI |
418 | select FB_CFB_IMAGEBLIT | 391 | select FB_CFB_IMAGEBLIT |
419 | select FB_SOFT_CURSOR | ||
420 | select FB_MACMODES if PPC | 392 | select FB_MACMODES if PPC |
421 | help | 393 | help |
422 | The IMS Twin Turbo is a PCI-based frame buffer card bundled with | 394 | The IMS Twin Turbo is a PCI-based frame buffer card bundled with |
423 | many Macintosh and compatible computers. | 395 | many Macintosh and compatible computers. |
424 | 396 | ||
425 | config FB_S3TRIO | ||
426 | bool "S3 Trio display support" | ||
427 | depends on (FB = y) && PPC && BROKEN | ||
428 | help | ||
429 | If you have a S3 Trio say Y. Say N for S3 Virge. | ||
430 | |||
431 | config FB_VGA16 | 397 | config FB_VGA16 |
432 | tristate "VGA 16-color graphics support" | 398 | tristate "VGA 16-color graphics support" |
433 | depends on FB && (X86 || PPC) | 399 | depends on FB && (X86 || PPC) |
434 | select FB_CFB_FILLRECT | 400 | select FB_CFB_FILLRECT |
435 | select FB_CFB_COPYAREA | 401 | select FB_CFB_COPYAREA |
436 | select FB_CFB_IMAGEBLIT | 402 | select FB_CFB_IMAGEBLIT |
437 | select FB_SOFT_CURSOR | ||
438 | help | 403 | help |
439 | This is the frame buffer device driver for VGA 16 color graphic | 404 | This is the frame buffer device driver for VGA 16 color graphic |
440 | cards. Say Y if you have such a card. | 405 | cards. Say Y if you have such a card. |
@@ -448,7 +413,6 @@ config FB_STI | |||
448 | select FB_CFB_FILLRECT | 413 | select FB_CFB_FILLRECT |
449 | select FB_CFB_COPYAREA | 414 | select FB_CFB_COPYAREA |
450 | select FB_CFB_IMAGEBLIT | 415 | select FB_CFB_IMAGEBLIT |
451 | select FB_SOFT_CURSOR | ||
452 | default y | 416 | default y |
453 | ---help--- | 417 | ---help--- |
454 | STI refers to the HP "Standard Text Interface" which is a set of | 418 | STI refers to the HP "Standard Text Interface" which is a set of |
@@ -469,7 +433,6 @@ config FB_MAC | |||
469 | select FB_CFB_FILLRECT | 433 | select FB_CFB_FILLRECT |
470 | select FB_CFB_COPYAREA | 434 | select FB_CFB_COPYAREA |
471 | select FB_CFB_IMAGEBLIT | 435 | select FB_CFB_IMAGEBLIT |
472 | select FB_SOFT_CURSOR | ||
473 | select FB_MACMODES | 436 | select FB_MACMODES |
474 | 437 | ||
475 | # bool ' Apple DAFB display support' CONFIG_FB_DAFB | 438 | # bool ' Apple DAFB display support' CONFIG_FB_DAFB |
@@ -478,7 +441,6 @@ config FB_HP300 | |||
478 | depends on (FB = y) && HP300 | 441 | depends on (FB = y) && HP300 |
479 | select FB_CFB_FILLRECT | 442 | select FB_CFB_FILLRECT |
480 | select FB_CFB_IMAGEBLIT | 443 | select FB_CFB_IMAGEBLIT |
481 | select FB_SOFT_CURSOR | ||
482 | default y | 444 | default y |
483 | 445 | ||
484 | config FB_TGA | 446 | config FB_TGA |
@@ -487,7 +449,6 @@ config FB_TGA | |||
487 | select FB_CFB_FILLRECT | 449 | select FB_CFB_FILLRECT |
488 | select FB_CFB_COPYAREA | 450 | select FB_CFB_COPYAREA |
489 | select FB_CFB_IMAGEBLIT | 451 | select FB_CFB_IMAGEBLIT |
490 | select FB_SOFT_CURSOR | ||
491 | help | 452 | help |
492 | This is the frame buffer device driver for generic TGA graphic | 453 | This is the frame buffer device driver for generic TGA graphic |
493 | cards. Say Y if you have one of those. | 454 | cards. Say Y if you have one of those. |
@@ -498,7 +459,6 @@ config FB_VESA | |||
498 | select FB_CFB_FILLRECT | 459 | select FB_CFB_FILLRECT |
499 | select FB_CFB_COPYAREA | 460 | select FB_CFB_COPYAREA |
500 | select FB_CFB_IMAGEBLIT | 461 | select FB_CFB_IMAGEBLIT |
501 | select FB_SOFT_CURSOR | ||
502 | help | 462 | help |
503 | This is the frame buffer device driver for generic VESA 2.0 | 463 | This is the frame buffer device driver for generic VESA 2.0 |
504 | compliant graphic cards. The older VESA 1.2 cards are not supported. | 464 | compliant graphic cards. The older VESA 1.2 cards are not supported. |
@@ -516,7 +476,6 @@ config FB_HGA | |||
516 | select FB_CFB_FILLRECT | 476 | select FB_CFB_FILLRECT |
517 | select FB_CFB_COPYAREA | 477 | select FB_CFB_COPYAREA |
518 | select FB_CFB_IMAGEBLIT | 478 | select FB_CFB_IMAGEBLIT |
519 | select FB_SOFT_CURSOR | ||
520 | help | 479 | help |
521 | Say Y here if you have a Hercules mono graphics card. | 480 | Say Y here if you have a Hercules mono graphics card. |
522 | 481 | ||
@@ -545,7 +504,6 @@ config FB_SGIVW | |||
545 | select FB_CFB_FILLRECT | 504 | select FB_CFB_FILLRECT |
546 | select FB_CFB_COPYAREA | 505 | select FB_CFB_COPYAREA |
547 | select FB_CFB_IMAGEBLIT | 506 | select FB_CFB_IMAGEBLIT |
548 | select FB_SOFT_CURSOR | ||
549 | help | 507 | help |
550 | SGI Visual Workstation support for framebuffer graphics. | 508 | SGI Visual Workstation support for framebuffer graphics. |
551 | 509 | ||
@@ -555,7 +513,6 @@ config FB_GBE | |||
555 | select FB_CFB_FILLRECT | 513 | select FB_CFB_FILLRECT |
556 | select FB_CFB_COPYAREA | 514 | select FB_CFB_COPYAREA |
557 | select FB_CFB_IMAGEBLIT | 515 | select FB_CFB_IMAGEBLIT |
558 | select FB_SOFT_CURSOR | ||
559 | help | 516 | help |
560 | This is the frame buffer device driver for SGI Graphics Backend. | 517 | This is the frame buffer device driver for SGI Graphics Backend. |
561 | This chip is used in SGI O2 and Visual Workstation 320/540. | 518 | This chip is used in SGI O2 and Visual Workstation 320/540. |
@@ -583,7 +540,6 @@ config FB_BW2 | |||
583 | select FB_CFB_FILLRECT | 540 | select FB_CFB_FILLRECT |
584 | select FB_CFB_COPYAREA | 541 | select FB_CFB_COPYAREA |
585 | select FB_CFB_IMAGEBLIT | 542 | select FB_CFB_IMAGEBLIT |
586 | select FB_SOFT_CURSOR | ||
587 | help | 543 | help |
588 | This is the frame buffer device driver for the BWtwo frame buffer. | 544 | This is the frame buffer device driver for the BWtwo frame buffer. |
589 | 545 | ||
@@ -592,7 +548,6 @@ config FB_CG3 | |||
592 | depends on (FB = y) && ((SPARC32 || SPARC64) && FB_SBUS || (SUN3 || SUN3X) && FB_SUN3) | 548 | depends on (FB = y) && ((SPARC32 || SPARC64) && FB_SBUS || (SUN3 || SUN3X) && FB_SUN3) |
593 | select FB_CFB_COPYAREA | 549 | select FB_CFB_COPYAREA |
594 | select FB_CFB_IMAGEBLIT | 550 | select FB_CFB_IMAGEBLIT |
595 | select FB_SOFT_CURSOR | ||
596 | help | 551 | help |
597 | This is the frame buffer device driver for the CGthree frame buffer. | 552 | This is the frame buffer device driver for the CGthree frame buffer. |
598 | 553 | ||
@@ -601,7 +556,6 @@ config FB_CG6 | |||
601 | depends on (FB = y) && ((SPARC32 || SPARC64) && FB_SBUS || (SUN3 || SUN3X) && FB_SUN3) | 556 | depends on (FB = y) && ((SPARC32 || SPARC64) && FB_SBUS || (SUN3 || SUN3X) && FB_SUN3) |
602 | select FB_CFB_COPYAREA | 557 | select FB_CFB_COPYAREA |
603 | select FB_CFB_IMAGEBLIT | 558 | select FB_CFB_IMAGEBLIT |
604 | select FB_SOFT_CURSOR | ||
605 | help | 559 | help |
606 | This is the frame buffer device driver for the CGsix (GX, TurboGX) | 560 | This is the frame buffer device driver for the CGsix (GX, TurboGX) |
607 | frame buffer. | 561 | frame buffer. |
@@ -612,7 +566,6 @@ config FB_PVR2 | |||
612 | select FB_CFB_FILLRECT | 566 | select FB_CFB_FILLRECT |
613 | select FB_CFB_COPYAREA | 567 | select FB_CFB_COPYAREA |
614 | select FB_CFB_IMAGEBLIT | 568 | select FB_CFB_IMAGEBLIT |
615 | select FB_SOFT_CURSOR | ||
616 | ---help--- | 569 | ---help--- |
617 | Say Y here if you have a PowerVR 2 card in your box. If you plan to | 570 | Say Y here if you have a PowerVR 2 card in your box. If you plan to |
618 | run linux on your Dreamcast, you will have to say Y here. | 571 | run linux on your Dreamcast, you will have to say Y here. |
@@ -634,13 +587,55 @@ config FB_EPSON1355 | |||
634 | select FB_CFB_FILLRECT | 587 | select FB_CFB_FILLRECT |
635 | select FB_CFB_COPYAREA | 588 | select FB_CFB_COPYAREA |
636 | select FB_CFB_IMAGEBLIT | 589 | select FB_CFB_IMAGEBLIT |
637 | select FB_SOFT_CURSOR | ||
638 | help | 590 | help |
639 | Build in support for the SED1355 Epson Research Embedded RAMDAC | 591 | Build in support for the SED1355 Epson Research Embedded RAMDAC |
640 | LCD/CRT Controller (since redesignated as the S1D13505) as a | 592 | LCD/CRT Controller (since redesignated as the S1D13505) as a |
641 | framebuffer. Product specs at | 593 | framebuffer. Product specs at |
642 | <http://www.erd.epson.com/vdc/html/products.htm>. | 594 | <http://www.erd.epson.com/vdc/html/products.htm>. |
643 | 595 | ||
596 | config FB_E1356 | ||
597 | tristate "Epson SED1356 framebuffer support" | ||
598 | depends on FB && EXPERIMENTAL && PCI && MIPS | ||
599 | |||
600 | config PB1000_CRT | ||
601 | bool "Use CRT on Pb1000 (J65)" | ||
602 | depends on MIPS_PB1000=y && FB_E1356 | ||
603 | |||
604 | config PB1000_NTSC | ||
605 | bool "Use Compsite NTSC on Pb1000 (J63)" | ||
606 | depends on MIPS_PB1000=y && FB_E1356 | ||
607 | |||
608 | config PB1000_TFT | ||
609 | bool "Use TFT Panel on Pb1000 (J64)" | ||
610 | depends on MIPS_PB1000=y && FB_E1356 | ||
611 | |||
612 | config PB1500_CRT | ||
613 | bool "Use CRT on Pb1500 " if MIPS_PB1500=y | ||
614 | depends on FB_E1356 | ||
615 | |||
616 | config PB1500_CRT | ||
617 | prompt "Use CRT on Pb1100 " | ||
618 | depends on FB_E1356 && MIPS_PB1100=y | ||
619 | |||
620 | config PB1500_TFT | ||
621 | bool "Use TFT Panel on Pb1500 " if MIPS_PB1500=y | ||
622 | depends on FB_E1356 | ||
623 | |||
624 | config PB1500_TFT | ||
625 | prompt "Use TFT Panel on Pb1100 " | ||
626 | depends on FB_E1356 && MIPS_PB1100=y | ||
627 | |||
628 | config FB_S1D13XXX | ||
629 | tristate "Epson S1D13XXX framebuffer support" | ||
630 | depends on FB | ||
631 | select FB_CFB_FILLRECT | ||
632 | select FB_CFB_COPYAREA | ||
633 | select FB_CFB_IMAGEBLIT | ||
634 | help | ||
635 | Support for S1D13XXX framebuffer device family (currently only | ||
636 | working with S1D13806). Product specs at | ||
637 | <http://www.erd.epson.com/vdc/html/legacy_13xxx.htm> | ||
638 | |||
644 | config FB_NVIDIA | 639 | config FB_NVIDIA |
645 | tristate "nVidia Framebuffer Support" | 640 | tristate "nVidia Framebuffer Support" |
646 | depends on FB && PCI | 641 | depends on FB && PCI |
@@ -650,7 +645,6 @@ config FB_NVIDIA | |||
650 | select FB_CFB_FILLRECT | 645 | select FB_CFB_FILLRECT |
651 | select FB_CFB_COPYAREA | 646 | select FB_CFB_COPYAREA |
652 | select FB_CFB_IMAGEBLIT | 647 | select FB_CFB_IMAGEBLIT |
653 | select FB_SOFT_CURSOR | ||
654 | help | 648 | help |
655 | This driver supports graphics boards with the nVidia chips, TNT | 649 | This driver supports graphics boards with the nVidia chips, TNT |
656 | and newer. For very old chipsets, such as the RIVA128, then use | 650 | and newer. For very old chipsets, such as the RIVA128, then use |
@@ -662,7 +656,7 @@ config FB_NVIDIA | |||
662 | 656 | ||
663 | config FB_NVIDIA_I2C | 657 | config FB_NVIDIA_I2C |
664 | bool "Enable DDC Support" | 658 | bool "Enable DDC Support" |
665 | depends on FB_NVIDIA && !PPC_OF | 659 | depends on FB_NVIDIA |
666 | help | 660 | help |
667 | This enables I2C support for nVidia Chipsets. This is used | 661 | This enables I2C support for nVidia Chipsets. This is used |
668 | only for getting EDID information from the attached display | 662 | only for getting EDID information from the attached display |
@@ -768,7 +762,6 @@ config FB_INTEL | |||
768 | select FB_CFB_FILLRECT | 762 | select FB_CFB_FILLRECT |
769 | select FB_CFB_COPYAREA | 763 | select FB_CFB_COPYAREA |
770 | select FB_CFB_IMAGEBLIT | 764 | select FB_CFB_IMAGEBLIT |
771 | select FB_SOFT_CURSOR | ||
772 | help | 765 | help |
773 | This driver supports the on-board graphics built in to the Intel | 766 | This driver supports the on-board graphics built in to the Intel |
774 | 830M/845G/852GM/855GM/865G chipsets. | 767 | 830M/845G/852GM/855GM/865G chipsets. |
@@ -791,7 +784,6 @@ config FB_MATROX | |||
791 | select FB_CFB_FILLRECT | 784 | select FB_CFB_FILLRECT |
792 | select FB_CFB_COPYAREA | 785 | select FB_CFB_COPYAREA |
793 | select FB_CFB_IMAGEBLIT | 786 | select FB_CFB_IMAGEBLIT |
794 | select FB_SOFT_CURSOR | ||
795 | select FB_TILEBLITTING | 787 | select FB_TILEBLITTING |
796 | select FB_MACMODES if PPC_PMAC | 788 | select FB_MACMODES if PPC_PMAC |
797 | ---help--- | 789 | ---help--- |
@@ -932,7 +924,6 @@ config FB_RADEON_OLD | |||
932 | select FB_CFB_FILLRECT | 924 | select FB_CFB_FILLRECT |
933 | select FB_CFB_COPYAREA | 925 | select FB_CFB_COPYAREA |
934 | select FB_CFB_IMAGEBLIT | 926 | select FB_CFB_IMAGEBLIT |
935 | select FB_SOFT_CURSOR | ||
936 | select FB_MACMODES if PPC | 927 | select FB_MACMODES if PPC |
937 | help | 928 | help |
938 | Choose this option if you want to use an ATI Radeon graphics card as | 929 | Choose this option if you want to use an ATI Radeon graphics card as |
@@ -950,7 +941,6 @@ config FB_RADEON | |||
950 | select FB_CFB_FILLRECT | 941 | select FB_CFB_FILLRECT |
951 | select FB_CFB_COPYAREA | 942 | select FB_CFB_COPYAREA |
952 | select FB_CFB_IMAGEBLIT | 943 | select FB_CFB_IMAGEBLIT |
953 | select FB_SOFT_CURSOR | ||
954 | select FB_MACMODES if PPC_OF | 944 | select FB_MACMODES if PPC_OF |
955 | help | 945 | help |
956 | Choose this option if you want to use an ATI Radeon graphics card as | 946 | Choose this option if you want to use an ATI Radeon graphics card as |
@@ -988,7 +978,6 @@ config FB_ATY128 | |||
988 | select FB_CFB_FILLRECT | 978 | select FB_CFB_FILLRECT |
989 | select FB_CFB_COPYAREA | 979 | select FB_CFB_COPYAREA |
990 | select FB_CFB_IMAGEBLIT | 980 | select FB_CFB_IMAGEBLIT |
991 | select FB_SOFT_CURSOR | ||
992 | select FB_MACMODES if PPC_PMAC | 981 | select FB_MACMODES if PPC_PMAC |
993 | help | 982 | help |
994 | This driver supports graphics boards with the ATI Rage128 chips. | 983 | This driver supports graphics boards with the ATI Rage128 chips. |
@@ -1004,7 +993,6 @@ config FB_ATY | |||
1004 | select FB_CFB_FILLRECT | 993 | select FB_CFB_FILLRECT |
1005 | select FB_CFB_COPYAREA | 994 | select FB_CFB_COPYAREA |
1006 | select FB_CFB_IMAGEBLIT | 995 | select FB_CFB_IMAGEBLIT |
1007 | select FB_SOFT_CURSOR | ||
1008 | select FB_MACMODES if PPC | 996 | select FB_MACMODES if PPC |
1009 | help | 997 | help |
1010 | This driver supports graphics boards with the ATI Mach64 chips. | 998 | This driver supports graphics boards with the ATI Mach64 chips. |
@@ -1047,6 +1035,12 @@ config FB_ATY_GX | |||
1047 | is at | 1035 | is at |
1048 | <http://support.ati.com/products/pc/mach64/graphics_xpression.html>. | 1036 | <http://support.ati.com/products/pc/mach64/graphics_xpression.html>. |
1049 | 1037 | ||
1038 | config FB_S3TRIO | ||
1039 | bool "S3 Trio display support" | ||
1040 | depends on (FB = y) && PPC && BROKEN | ||
1041 | help | ||
1042 | If you have a S3 Trio say Y. Say N for S3 Virge. | ||
1043 | |||
1050 | config FB_SAVAGE | 1044 | config FB_SAVAGE |
1051 | tristate "S3 Savage support" | 1045 | tristate "S3 Savage support" |
1052 | depends on FB && PCI && EXPERIMENTAL | 1046 | depends on FB && PCI && EXPERIMENTAL |
@@ -1056,7 +1050,6 @@ config FB_SAVAGE | |||
1056 | select FB_CFB_FILLRECT | 1050 | select FB_CFB_FILLRECT |
1057 | select FB_CFB_COPYAREA | 1051 | select FB_CFB_COPYAREA |
1058 | select FB_CFB_IMAGEBLIT | 1052 | select FB_CFB_IMAGEBLIT |
1059 | select FB_SOFT_CURSOR | ||
1060 | help | 1053 | help |
1061 | This driver supports notebooks and computers with S3 Savage PCI/AGP | 1054 | This driver supports notebooks and computers with S3 Savage PCI/AGP |
1062 | chips. | 1055 | chips. |
@@ -1093,7 +1086,6 @@ config FB_SIS | |||
1093 | select FB_CFB_FILLRECT | 1086 | select FB_CFB_FILLRECT |
1094 | select FB_CFB_COPYAREA | 1087 | select FB_CFB_COPYAREA |
1095 | select FB_CFB_IMAGEBLIT | 1088 | select FB_CFB_IMAGEBLIT |
1096 | select FB_SOFT_CURSOR | ||
1097 | help | 1089 | help |
1098 | This is the frame buffer device driver for the SiS 300, 315, 330 | 1090 | This is the frame buffer device driver for the SiS 300, 315, 330 |
1099 | and 340 series as well as XGI V3XT, V5, V8, Z7 graphics chipsets. | 1091 | and 340 series as well as XGI V3XT, V5, V8, Z7 graphics chipsets. |
@@ -1123,7 +1115,6 @@ config FB_NEOMAGIC | |||
1123 | select FB_CFB_FILLRECT | 1115 | select FB_CFB_FILLRECT |
1124 | select FB_CFB_COPYAREA | 1116 | select FB_CFB_COPYAREA |
1125 | select FB_CFB_IMAGEBLIT | 1117 | select FB_CFB_IMAGEBLIT |
1126 | select FB_SOFT_CURSOR | ||
1127 | help | 1118 | help |
1128 | This driver supports notebooks with NeoMagic PCI chips. | 1119 | This driver supports notebooks with NeoMagic PCI chips. |
1129 | Say Y if you have such a graphics card. | 1120 | Say Y if you have such a graphics card. |
@@ -1137,7 +1128,6 @@ config FB_KYRO | |||
1137 | select FB_CFB_FILLRECT | 1128 | select FB_CFB_FILLRECT |
1138 | select FB_CFB_COPYAREA | 1129 | select FB_CFB_COPYAREA |
1139 | select FB_CFB_IMAGEBLIT | 1130 | select FB_CFB_IMAGEBLIT |
1140 | select FB_SOFT_CURSOR | ||
1141 | help | 1131 | help |
1142 | Say Y here if you have a STG4000 / Kyro / PowerVR 3 based | 1132 | Say Y here if you have a STG4000 / Kyro / PowerVR 3 based |
1143 | graphics board. | 1133 | graphics board. |
@@ -1151,7 +1141,6 @@ config FB_3DFX | |||
1151 | select FB_CFB_IMAGEBLIT | 1141 | select FB_CFB_IMAGEBLIT |
1152 | select FB_CFB_FILLRECT | 1142 | select FB_CFB_FILLRECT |
1153 | select FB_CFB_COPYAREA | 1143 | select FB_CFB_COPYAREA |
1154 | select FB_SOFT_CURSOR | ||
1155 | help | 1144 | help |
1156 | This driver supports graphics boards with the 3Dfx Banshee/Voodoo3 | 1145 | This driver supports graphics boards with the 3Dfx Banshee/Voodoo3 |
1157 | chips. Say Y if you have such a graphics board. | 1146 | chips. Say Y if you have such a graphics board. |
@@ -1173,7 +1162,6 @@ config FB_VOODOO1 | |||
1173 | select FB_CFB_FILLRECT | 1162 | select FB_CFB_FILLRECT |
1174 | select FB_CFB_COPYAREA | 1163 | select FB_CFB_COPYAREA |
1175 | select FB_CFB_IMAGEBLIT | 1164 | select FB_CFB_IMAGEBLIT |
1176 | select FB_SOFT_CURSOR | ||
1177 | ---help--- | 1165 | ---help--- |
1178 | Say Y here if you have a 3Dfx Voodoo Graphics (Voodoo1/sst1) or | 1166 | Say Y here if you have a 3Dfx Voodoo Graphics (Voodoo1/sst1) or |
1179 | Voodoo2 (cvg) based graphics card. | 1167 | Voodoo2 (cvg) based graphics card. |
@@ -1190,7 +1178,6 @@ config FB_CYBLA | |||
1190 | tristate "Cyberblade/i1 support" | 1178 | tristate "Cyberblade/i1 support" |
1191 | depends on FB && PCI | 1179 | depends on FB && PCI |
1192 | select FB_CFB_IMAGEBLIT | 1180 | select FB_CFB_IMAGEBLIT |
1193 | select FB_SOFT_CURSOR | ||
1194 | select VIDEO_SELECT | 1181 | select VIDEO_SELECT |
1195 | ---help--- | 1182 | ---help--- |
1196 | This driver is supposed to support the Trident Cyberblade/i1 | 1183 | This driver is supposed to support the Trident Cyberblade/i1 |
@@ -1218,7 +1205,6 @@ config FB_TRIDENT | |||
1218 | select FB_CFB_FILLRECT | 1205 | select FB_CFB_FILLRECT |
1219 | select FB_CFB_COPYAREA | 1206 | select FB_CFB_COPYAREA |
1220 | select FB_CFB_IMAGEBLIT | 1207 | select FB_CFB_IMAGEBLIT |
1221 | select FB_SOFT_CURSOR | ||
1222 | ---help--- | 1208 | ---help--- |
1223 | This driver is supposed to support graphics boards with the | 1209 | This driver is supposed to support graphics boards with the |
1224 | Trident CyberXXXX/Image/CyberBlade chips mostly found in laptops | 1210 | Trident CyberXXXX/Image/CyberBlade chips mostly found in laptops |
@@ -1250,38 +1236,6 @@ config FB_PM3 | |||
1250 | similar boards, 3DLabs Permedia3 Create!, Appian Jeronimo 2000 | 1236 | similar boards, 3DLabs Permedia3 Create!, Appian Jeronimo 2000 |
1251 | and maybe other boards. | 1237 | and maybe other boards. |
1252 | 1238 | ||
1253 | config FB_E1356 | ||
1254 | tristate "Epson SED1356 framebuffer support" | ||
1255 | depends on FB && EXPERIMENTAL && PCI && MIPS | ||
1256 | |||
1257 | config PB1000_CRT | ||
1258 | bool "Use CRT on Pb1000 (J65)" | ||
1259 | depends on MIPS_PB1000=y && FB_E1356 | ||
1260 | |||
1261 | config PB1000_NTSC | ||
1262 | bool "Use Compsite NTSC on Pb1000 (J63)" | ||
1263 | depends on MIPS_PB1000=y && FB_E1356 | ||
1264 | |||
1265 | config PB1000_TFT | ||
1266 | bool "Use TFT Panel on Pb1000 (J64)" | ||
1267 | depends on MIPS_PB1000=y && FB_E1356 | ||
1268 | |||
1269 | config PB1500_CRT | ||
1270 | bool "Use CRT on Pb1500 " if MIPS_PB1500=y | ||
1271 | depends on FB_E1356 | ||
1272 | |||
1273 | config PB1500_CRT | ||
1274 | prompt "Use CRT on Pb1100 " | ||
1275 | depends on FB_E1356 && MIPS_PB1100=y | ||
1276 | |||
1277 | config PB1500_TFT | ||
1278 | bool "Use TFT Panel on Pb1500 " if MIPS_PB1500=y | ||
1279 | depends on FB_E1356 | ||
1280 | |||
1281 | config PB1500_TFT | ||
1282 | prompt "Use TFT Panel on Pb1100 " | ||
1283 | depends on FB_E1356 && MIPS_PB1100=y | ||
1284 | |||
1285 | config FB_AU1100 | 1239 | config FB_AU1100 |
1286 | bool "Au1100 LCD Driver" | 1240 | bool "Au1100 LCD Driver" |
1287 | depends on (FB = y) && EXPERIMENTAL && PCI && MIPS && MIPS_PB1100=y | 1241 | depends on (FB = y) && EXPERIMENTAL && PCI && MIPS && MIPS_PB1100=y |
@@ -1299,7 +1253,6 @@ config FB_FFB | |||
1299 | depends on FB_SBUS && SPARC64 | 1253 | depends on FB_SBUS && SPARC64 |
1300 | select FB_CFB_COPYAREA | 1254 | select FB_CFB_COPYAREA |
1301 | select FB_CFB_IMAGEBLIT | 1255 | select FB_CFB_IMAGEBLIT |
1302 | select FB_SOFT_CURSOR | ||
1303 | help | 1256 | help |
1304 | This is the frame buffer device driver for the Creator, Creator3D, | 1257 | This is the frame buffer device driver for the Creator, Creator3D, |
1305 | and Elite3D graphics boards. | 1258 | and Elite3D graphics boards. |
@@ -1310,7 +1263,6 @@ config FB_TCX | |||
1310 | select FB_CFB_FILLRECT | 1263 | select FB_CFB_FILLRECT |
1311 | select FB_CFB_COPYAREA | 1264 | select FB_CFB_COPYAREA |
1312 | select FB_CFB_IMAGEBLIT | 1265 | select FB_CFB_IMAGEBLIT |
1313 | select FB_SOFT_CURSOR | ||
1314 | help | 1266 | help |
1315 | This is the frame buffer device driver for the TCX 24/8bit frame | 1267 | This is the frame buffer device driver for the TCX 24/8bit frame |
1316 | buffer. | 1268 | buffer. |
@@ -1321,7 +1273,6 @@ config FB_CG14 | |||
1321 | select FB_CFB_FILLRECT | 1273 | select FB_CFB_FILLRECT |
1322 | select FB_CFB_COPYAREA | 1274 | select FB_CFB_COPYAREA |
1323 | select FB_CFB_IMAGEBLIT | 1275 | select FB_CFB_IMAGEBLIT |
1324 | select FB_SOFT_CURSOR | ||
1325 | help | 1276 | help |
1326 | This is the frame buffer device driver for the CGfourteen frame | 1277 | This is the frame buffer device driver for the CGfourteen frame |
1327 | buffer on Desktop SPARCsystems with the SX graphics option. | 1278 | buffer on Desktop SPARCsystems with the SX graphics option. |
@@ -1332,7 +1283,6 @@ config FB_P9100 | |||
1332 | select FB_CFB_FILLRECT | 1283 | select FB_CFB_FILLRECT |
1333 | select FB_CFB_COPYAREA | 1284 | select FB_CFB_COPYAREA |
1334 | select FB_CFB_IMAGEBLIT | 1285 | select FB_CFB_IMAGEBLIT |
1335 | select FB_SOFT_CURSOR | ||
1336 | help | 1286 | help |
1337 | This is the frame buffer device driver for the P9100 card | 1287 | This is the frame buffer device driver for the P9100 card |
1338 | supported on Sparcbook 3 machines. | 1288 | supported on Sparcbook 3 machines. |
@@ -1343,7 +1293,6 @@ config FB_LEO | |||
1343 | select FB_CFB_FILLRECT | 1293 | select FB_CFB_FILLRECT |
1344 | select FB_CFB_COPYAREA | 1294 | select FB_CFB_COPYAREA |
1345 | select FB_CFB_IMAGEBLIT | 1295 | select FB_CFB_IMAGEBLIT |
1346 | select FB_SOFT_CURSOR | ||
1347 | help | 1296 | help |
1348 | This is the frame buffer device driver for the SBUS-based Sun ZX | 1297 | This is the frame buffer device driver for the SBUS-based Sun ZX |
1349 | (leo) frame buffer cards. | 1298 | (leo) frame buffer cards. |
@@ -1358,7 +1307,6 @@ config FB_IGA | |||
1358 | select FB_CFB_FILLRECT | 1307 | select FB_CFB_FILLRECT |
1359 | select FB_CFB_COPYAREA | 1308 | select FB_CFB_COPYAREA |
1360 | select FB_CFB_IMAGEBLIT | 1309 | select FB_CFB_IMAGEBLIT |
1361 | select FB_SOFT_CURSOR | ||
1362 | help | 1310 | help |
1363 | This is the framebuffer device for the INTERGRAPHICS 1680 and | 1311 | This is the framebuffer device for the INTERGRAPHICS 1680 and |
1364 | successor frame buffer cards. | 1312 | successor frame buffer cards. |
@@ -1369,7 +1317,6 @@ config FB_HIT | |||
1369 | select FB_CFB_FILLRECT | 1317 | select FB_CFB_FILLRECT |
1370 | select FB_CFB_COPYAREA | 1318 | select FB_CFB_COPYAREA |
1371 | select FB_CFB_IMAGEBLIT | 1319 | select FB_CFB_IMAGEBLIT |
1372 | select FB_SOFT_CURSOR | ||
1373 | help | 1320 | help |
1374 | This is the frame buffer device driver for the Hitachi HD64461 LCD | 1321 | This is the frame buffer device driver for the Hitachi HD64461 LCD |
1375 | frame buffer card. | 1322 | frame buffer card. |
@@ -1380,7 +1327,6 @@ config FB_PMAG_AA | |||
1380 | select FB_CFB_FILLRECT | 1327 | select FB_CFB_FILLRECT |
1381 | select FB_CFB_COPYAREA | 1328 | select FB_CFB_COPYAREA |
1382 | select FB_CFB_IMAGEBLIT | 1329 | select FB_CFB_IMAGEBLIT |
1383 | select FB_SOFT_CURSOR | ||
1384 | help | 1330 | help |
1385 | Support for the PMAG-AA TURBOchannel framebuffer card (1280x1024x1) | 1331 | Support for the PMAG-AA TURBOchannel framebuffer card (1280x1024x1) |
1386 | used mainly in the MIPS-based DECstation series. | 1332 | used mainly in the MIPS-based DECstation series. |
@@ -1391,7 +1337,6 @@ config FB_PMAG_BA | |||
1391 | select FB_CFB_FILLRECT | 1337 | select FB_CFB_FILLRECT |
1392 | select FB_CFB_COPYAREA | 1338 | select FB_CFB_COPYAREA |
1393 | select FB_CFB_IMAGEBLIT | 1339 | select FB_CFB_IMAGEBLIT |
1394 | select FB_SOFT_CURSOR | ||
1395 | help | 1340 | help |
1396 | Support for the PMAG-BA TURBOchannel framebuffer card (1024x864x8) | 1341 | Support for the PMAG-BA TURBOchannel framebuffer card (1024x864x8) |
1397 | used mainly in the MIPS-based DECstation series. | 1342 | used mainly in the MIPS-based DECstation series. |
@@ -1402,7 +1347,6 @@ config FB_PMAGB_B | |||
1402 | select FB_CFB_FILLRECT | 1347 | select FB_CFB_FILLRECT |
1403 | select FB_CFB_COPYAREA | 1348 | select FB_CFB_COPYAREA |
1404 | select FB_CFB_IMAGEBLIT | 1349 | select FB_CFB_IMAGEBLIT |
1405 | select FB_SOFT_CURSOR | ||
1406 | help | 1350 | help |
1407 | Support for the PMAGB-B TURBOchannel framebuffer card used mainly | 1351 | Support for the PMAGB-B TURBOchannel framebuffer card used mainly |
1408 | in the MIPS-based DECstation series. The card is currently only | 1352 | in the MIPS-based DECstation series. The card is currently only |
@@ -1414,7 +1358,6 @@ config FB_MAXINE | |||
1414 | select FB_CFB_FILLRECT | 1358 | select FB_CFB_FILLRECT |
1415 | select FB_CFB_COPYAREA | 1359 | select FB_CFB_COPYAREA |
1416 | select FB_CFB_IMAGEBLIT | 1360 | select FB_CFB_IMAGEBLIT |
1417 | select FB_SOFT_CURSOR | ||
1418 | help | 1361 | help |
1419 | Support for the onboard framebuffer (1024x768x8) in the Personal | 1362 | Support for the onboard framebuffer (1024x768x8) in the Personal |
1420 | DECstation series (Personal DECstation 5000/20, /25, /33, /50, | 1363 | DECstation series (Personal DECstation 5000/20, /25, /33, /50, |
@@ -1426,7 +1369,6 @@ config FB_TX3912 | |||
1426 | select FB_CFB_FILLRECT | 1369 | select FB_CFB_FILLRECT |
1427 | select FB_CFB_COPYAREA | 1370 | select FB_CFB_COPYAREA |
1428 | select FB_CFB_IMAGEBLIT | 1371 | select FB_CFB_IMAGEBLIT |
1429 | select FB_SOFT_CURSOR | ||
1430 | help | 1372 | help |
1431 | The TX3912 is a Toshiba RISC processor based on the MIPS 3900 core | 1373 | The TX3912 is a Toshiba RISC processor based on the MIPS 3900 core |
1432 | see <http://www.toshiba.com/taec/components/Generic/risc/tx3912.htm>. | 1374 | see <http://www.toshiba.com/taec/components/Generic/risc/tx3912.htm>. |
@@ -1439,7 +1381,6 @@ config FB_G364 | |||
1439 | select FB_CFB_FILLRECT | 1381 | select FB_CFB_FILLRECT |
1440 | select FB_CFB_COPYAREA | 1382 | select FB_CFB_COPYAREA |
1441 | select FB_CFB_IMAGEBLIT | 1383 | select FB_CFB_IMAGEBLIT |
1442 | select FB_SOFT_CURSOR | ||
1443 | help | 1384 | help |
1444 | The G364 driver is the framebuffer used in MIPS Magnum 4000 and | 1385 | The G364 driver is the framebuffer used in MIPS Magnum 4000 and |
1445 | Olivetti M700-10 systems. | 1386 | Olivetti M700-10 systems. |
@@ -1450,7 +1391,6 @@ config FB_68328 | |||
1450 | select FB_CFB_FILLRECT | 1391 | select FB_CFB_FILLRECT |
1451 | select FB_CFB_COPYAREA | 1392 | select FB_CFB_COPYAREA |
1452 | select FB_CFB_IMAGEBLIT | 1393 | select FB_CFB_IMAGEBLIT |
1453 | select FB_SOFT_CURSOR | ||
1454 | help | 1394 | help |
1455 | Say Y here if you want to support the built-in frame buffer of | 1395 | Say Y here if you want to support the built-in frame buffer of |
1456 | the Motorola 68328 CPU family. | 1396 | the Motorola 68328 CPU family. |
@@ -1461,7 +1401,6 @@ config FB_PXA | |||
1461 | select FB_CFB_FILLRECT | 1401 | select FB_CFB_FILLRECT |
1462 | select FB_CFB_COPYAREA | 1402 | select FB_CFB_COPYAREA |
1463 | select FB_CFB_IMAGEBLIT | 1403 | select FB_CFB_IMAGEBLIT |
1464 | select FB_SOFT_CURSOR | ||
1465 | ---help--- | 1404 | ---help--- |
1466 | Frame buffer driver for the built-in LCD controller in the Intel | 1405 | Frame buffer driver for the built-in LCD controller in the Intel |
1467 | PXA2x0 processor. | 1406 | PXA2x0 processor. |
@@ -1473,23 +1412,6 @@ config FB_PXA | |||
1473 | 1412 | ||
1474 | If unsure, say N. | 1413 | If unsure, say N. |
1475 | 1414 | ||
1476 | config FB_W100 | ||
1477 | tristate "W100 frame buffer support" | ||
1478 | depends on FB && PXA_SHARPSL | ||
1479 | select FB_CFB_FILLRECT | ||
1480 | select FB_CFB_COPYAREA | ||
1481 | select FB_CFB_IMAGEBLIT | ||
1482 | select FB_SOFT_CURSOR | ||
1483 | ---help--- | ||
1484 | Frame buffer driver for the w100 as found on the Sharp SL-Cxx series. | ||
1485 | |||
1486 | This driver is also available as a module ( = code which can be | ||
1487 | inserted and removed from the running kernel whenever you want). The | ||
1488 | module will be called vfb. If you want to compile it as a module, | ||
1489 | say M here and read <file:Documentation/modules.txt>. | ||
1490 | |||
1491 | If unsure, say N. | ||
1492 | |||
1493 | config FB_PXA_PARAMETERS | 1415 | config FB_PXA_PARAMETERS |
1494 | bool "PXA LCD command line parameters" | 1416 | bool "PXA LCD command line parameters" |
1495 | default n | 1417 | default n |
@@ -1507,17 +1429,21 @@ config FB_PXA_PARAMETERS | |||
1507 | 1429 | ||
1508 | <file:Documentation/fb/pxafb.txt> describes the available parameters. | 1430 | <file:Documentation/fb/pxafb.txt> describes the available parameters. |
1509 | 1431 | ||
1510 | config FB_S1D13XXX | 1432 | config FB_W100 |
1511 | tristate "Epson S1D13XXX framebuffer support" | 1433 | tristate "W100 frame buffer support" |
1512 | depends on FB | 1434 | depends on FB && PXA_SHARPSL |
1513 | select FB_CFB_FILLRECT | 1435 | select FB_CFB_FILLRECT |
1514 | select FB_CFB_COPYAREA | 1436 | select FB_CFB_COPYAREA |
1515 | select FB_CFB_IMAGEBLIT | 1437 | select FB_CFB_IMAGEBLIT |
1516 | select FB_SOFT_CURSOR | 1438 | ---help--- |
1517 | help | 1439 | Frame buffer driver for the w100 as found on the Sharp SL-Cxx series. |
1518 | Support for S1D13XXX framebuffer device family (currently only | 1440 | |
1519 | working with S1D13806). Product specs at | 1441 | This driver is also available as a module ( = code which can be |
1520 | <http://www.erd.epson.com/vdc/html/legacy_13xxx.htm> | 1442 | inserted and removed from the running kernel whenever you want). The |
1443 | module will be called vfb. If you want to compile it as a module, | ||
1444 | say M here and read <file:Documentation/modules.txt>. | ||
1445 | |||
1446 | If unsure, say N. | ||
1521 | 1447 | ||
1522 | config FB_S3C2410 | 1448 | config FB_S3C2410 |
1523 | tristate "S3C2410 LCD framebuffer support" | 1449 | tristate "S3C2410 LCD framebuffer support" |
@@ -1525,7 +1451,6 @@ config FB_S3C2410 | |||
1525 | select FB_CFB_FILLRECT | 1451 | select FB_CFB_FILLRECT |
1526 | select FB_CFB_COPYAREA | 1452 | select FB_CFB_COPYAREA |
1527 | select FB_CFB_IMAGEBLIT | 1453 | select FB_CFB_IMAGEBLIT |
1528 | select FB_SOFT_CURSOR | ||
1529 | ---help--- | 1454 | ---help--- |
1530 | Frame buffer driver for the built-in LCD controller in the Samsung | 1455 | Frame buffer driver for the built-in LCD controller in the Samsung |
1531 | S3C2410 processor. | 1456 | S3C2410 processor. |
@@ -1549,7 +1474,6 @@ config FB_VIRTUAL | |||
1549 | select FB_CFB_FILLRECT | 1474 | select FB_CFB_FILLRECT |
1550 | select FB_CFB_COPYAREA | 1475 | select FB_CFB_COPYAREA |
1551 | select FB_CFB_IMAGEBLIT | 1476 | select FB_CFB_IMAGEBLIT |
1552 | select FB_SOFT_CURSOR | ||
1553 | ---help--- | 1477 | ---help--- |
1554 | This is a `virtual' frame buffer device. It operates on a chunk of | 1478 | This is a `virtual' frame buffer device. It operates on a chunk of |
1555 | unswappable kernel memory instead of on the memory of a graphics | 1479 | unswappable kernel memory instead of on the memory of a graphics |
diff --git a/drivers/video/Makefile b/drivers/video/Makefile index 97c5d03ac8d9..aa434e725c0d 100644 --- a/drivers/video/Makefile +++ b/drivers/video/Makefile | |||
@@ -16,7 +16,6 @@ fb-objs := $(fb-y) | |||
16 | obj-$(CONFIG_FB_CFB_FILLRECT) += cfbfillrect.o | 16 | obj-$(CONFIG_FB_CFB_FILLRECT) += cfbfillrect.o |
17 | obj-$(CONFIG_FB_CFB_COPYAREA) += cfbcopyarea.o | 17 | obj-$(CONFIG_FB_CFB_COPYAREA) += cfbcopyarea.o |
18 | obj-$(CONFIG_FB_CFB_IMAGEBLIT) += cfbimgblt.o | 18 | obj-$(CONFIG_FB_CFB_IMAGEBLIT) += cfbimgblt.o |
19 | obj-$(CONFIG_FB_SOFT_CURSOR) += softcursor.o | ||
20 | obj-$(CONFIG_FB_MACMODES) += macmodes.o | 19 | obj-$(CONFIG_FB_MACMODES) += macmodes.o |
21 | 20 | ||
22 | # Hardware specific drivers go first | 21 | # Hardware specific drivers go first |
diff --git a/drivers/video/acornfb.c b/drivers/video/acornfb.c index 9b6a39348f81..193b482570c7 100644 --- a/drivers/video/acornfb.c +++ b/drivers/video/acornfb.c | |||
@@ -926,7 +926,6 @@ static struct fb_ops acornfb_ops = { | |||
926 | .fb_copyarea = cfb_copyarea, | 926 | .fb_copyarea = cfb_copyarea, |
927 | .fb_imageblit = cfb_imageblit, | 927 | .fb_imageblit = cfb_imageblit, |
928 | .fb_mmap = acornfb_mmap, | 928 | .fb_mmap = acornfb_mmap, |
929 | .fb_cursor = soft_cursor, | ||
930 | }; | 929 | }; |
931 | 930 | ||
932 | /* | 931 | /* |
diff --git a/drivers/video/amba-clcd.c b/drivers/video/amba-clcd.c index 4fc93dc2b4d3..467a1d7ebbde 100644 --- a/drivers/video/amba-clcd.c +++ b/drivers/video/amba-clcd.c | |||
@@ -333,7 +333,6 @@ static struct fb_ops clcdfb_ops = { | |||
333 | .fb_fillrect = cfb_fillrect, | 333 | .fb_fillrect = cfb_fillrect, |
334 | .fb_copyarea = cfb_copyarea, | 334 | .fb_copyarea = cfb_copyarea, |
335 | .fb_imageblit = cfb_imageblit, | 335 | .fb_imageblit = cfb_imageblit, |
336 | .fb_cursor = soft_cursor, | ||
337 | .fb_mmap = clcdfb_mmap, | 336 | .fb_mmap = clcdfb_mmap, |
338 | }; | 337 | }; |
339 | 338 | ||
diff --git a/drivers/video/amifb.c b/drivers/video/amifb.c index cf8bb67462dc..d549e215f3c5 100644 --- a/drivers/video/amifb.c +++ b/drivers/video/amifb.c | |||
@@ -1185,7 +1185,6 @@ static struct fb_ops amifb_ops = { | |||
1185 | .fb_fillrect = amifb_fillrect, | 1185 | .fb_fillrect = amifb_fillrect, |
1186 | .fb_copyarea = amifb_copyarea, | 1186 | .fb_copyarea = amifb_copyarea, |
1187 | .fb_imageblit = amifb_imageblit, | 1187 | .fb_imageblit = amifb_imageblit, |
1188 | .fb_cursor = soft_cursor, | ||
1189 | .fb_ioctl = amifb_ioctl, | 1188 | .fb_ioctl = amifb_ioctl, |
1190 | }; | 1189 | }; |
1191 | 1190 | ||
diff --git a/drivers/video/arcfb.c b/drivers/video/arcfb.c index 6aa9f824c185..a1fc8bbb1090 100644 --- a/drivers/video/arcfb.c +++ b/drivers/video/arcfb.c | |||
@@ -511,7 +511,6 @@ static struct fb_ops arcfb_ops = { | |||
511 | .fb_fillrect = arcfb_fillrect, | 511 | .fb_fillrect = arcfb_fillrect, |
512 | .fb_copyarea = arcfb_copyarea, | 512 | .fb_copyarea = arcfb_copyarea, |
513 | .fb_imageblit = arcfb_imageblit, | 513 | .fb_imageblit = arcfb_imageblit, |
514 | .fb_cursor = soft_cursor, | ||
515 | .fb_ioctl = arcfb_ioctl, | 514 | .fb_ioctl = arcfb_ioctl, |
516 | }; | 515 | }; |
517 | 516 | ||
diff --git a/drivers/video/asiliantfb.c b/drivers/video/asiliantfb.c index f4729f4df8ce..c64de59398f4 100644 --- a/drivers/video/asiliantfb.c +++ b/drivers/video/asiliantfb.c | |||
@@ -106,7 +106,6 @@ static struct fb_ops asiliantfb_ops = { | |||
106 | .fb_fillrect = cfb_fillrect, | 106 | .fb_fillrect = cfb_fillrect, |
107 | .fb_copyarea = cfb_copyarea, | 107 | .fb_copyarea = cfb_copyarea, |
108 | .fb_imageblit = cfb_imageblit, | 108 | .fb_imageblit = cfb_imageblit, |
109 | .fb_cursor = soft_cursor, | ||
110 | }; | 109 | }; |
111 | 110 | ||
112 | /* Calculate the ratios for the dot clocks without using a single long long | 111 | /* Calculate the ratios for the dot clocks without using a single long long |
diff --git a/drivers/video/aty/ati_ids.h b/drivers/video/aty/ati_ids.h index 13321c689cf6..39ab483fc250 100644 --- a/drivers/video/aty/ati_ids.h +++ b/drivers/video/aty/ati_ids.h | |||
@@ -150,6 +150,7 @@ | |||
150 | #define PCI_CHIP_RV200_QX 0x5158 | 150 | #define PCI_CHIP_RV200_QX 0x5158 |
151 | #define PCI_CHIP_RV100_QY 0x5159 | 151 | #define PCI_CHIP_RV100_QY 0x5159 |
152 | #define PCI_CHIP_RV100_QZ 0x515A | 152 | #define PCI_CHIP_RV100_QZ 0x515A |
153 | #define PCI_CHIP_RN50 0x515E | ||
153 | #define PCI_CHIP_RAGE128RE 0x5245 | 154 | #define PCI_CHIP_RAGE128RE 0x5245 |
154 | #define PCI_CHIP_RAGE128RF 0x5246 | 155 | #define PCI_CHIP_RAGE128RF 0x5246 |
155 | #define PCI_CHIP_RAGE128RG 0x5247 | 156 | #define PCI_CHIP_RAGE128RG 0x5247 |
diff --git a/drivers/video/aty/aty128fb.c b/drivers/video/aty/aty128fb.c index e380ee8b0247..e686185a076d 100644 --- a/drivers/video/aty/aty128fb.c +++ b/drivers/video/aty/aty128fb.c | |||
@@ -478,7 +478,6 @@ static struct fb_ops aty128fb_ops = { | |||
478 | .fb_fillrect = cfb_fillrect, | 478 | .fb_fillrect = cfb_fillrect, |
479 | .fb_copyarea = cfb_copyarea, | 479 | .fb_copyarea = cfb_copyarea, |
480 | .fb_imageblit = cfb_imageblit, | 480 | .fb_imageblit = cfb_imageblit, |
481 | .fb_cursor = soft_cursor, | ||
482 | }; | 481 | }; |
483 | 482 | ||
484 | #ifdef CONFIG_PMAC_BACKLIGHT | 483 | #ifdef CONFIG_PMAC_BACKLIGHT |
diff --git a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c index 037fe9d32fe3..08edbfcfca58 100644 --- a/drivers/video/aty/atyfb_base.c +++ b/drivers/video/aty/atyfb_base.c | |||
@@ -292,7 +292,6 @@ static struct fb_ops atyfb_ops = { | |||
292 | .fb_fillrect = atyfb_fillrect, | 292 | .fb_fillrect = atyfb_fillrect, |
293 | .fb_copyarea = atyfb_copyarea, | 293 | .fb_copyarea = atyfb_copyarea, |
294 | .fb_imageblit = atyfb_imageblit, | 294 | .fb_imageblit = atyfb_imageblit, |
295 | .fb_cursor = soft_cursor, | ||
296 | #ifdef __sparc__ | 295 | #ifdef __sparc__ |
297 | .fb_mmap = atyfb_mmap, | 296 | .fb_mmap = atyfb_mmap, |
298 | #endif | 297 | #endif |
@@ -2157,11 +2156,38 @@ static void __init aty_calc_mem_refresh(struct atyfb_par *par, int xclk) | |||
2157 | 2156 | ||
2158 | static struct fb_info *fb_list = NULL; | 2157 | static struct fb_info *fb_list = NULL; |
2159 | 2158 | ||
2159 | #if defined(__i386__) && defined(CONFIG_FB_ATY_GENERIC_LCD) | ||
2160 | static int __devinit atyfb_get_timings_from_lcd(struct atyfb_par *par, | ||
2161 | struct fb_var_screeninfo *var) | ||
2162 | { | ||
2163 | int ret = -EINVAL; | ||
2164 | |||
2165 | if (par->lcd_table != 0 && (aty_ld_lcd(LCD_GEN_CNTL, par) & LCD_ON)) { | ||
2166 | *var = default_var; | ||
2167 | var->xres = var->xres_virtual = par->lcd_hdisp; | ||
2168 | var->right_margin = par->lcd_right_margin; | ||
2169 | var->left_margin = par->lcd_hblank_len - | ||
2170 | (par->lcd_right_margin + par->lcd_hsync_dly + | ||
2171 | par->lcd_hsync_len); | ||
2172 | var->hsync_len = par->lcd_hsync_len + par->lcd_hsync_dly; | ||
2173 | var->yres = var->yres_virtual = par->lcd_vdisp; | ||
2174 | var->lower_margin = par->lcd_lower_margin; | ||
2175 | var->upper_margin = par->lcd_vblank_len - | ||
2176 | (par->lcd_lower_margin + par->lcd_vsync_len); | ||
2177 | var->vsync_len = par->lcd_vsync_len; | ||
2178 | var->pixclock = par->lcd_pixclock; | ||
2179 | ret = 0; | ||
2180 | } | ||
2181 | |||
2182 | return ret; | ||
2183 | } | ||
2184 | #endif /* defined(__i386__) && defined(CONFIG_FB_ATY_GENERIC_LCD) */ | ||
2185 | |||
2160 | static int __init aty_init(struct fb_info *info, const char *name) | 2186 | static int __init aty_init(struct fb_info *info, const char *name) |
2161 | { | 2187 | { |
2162 | struct atyfb_par *par = (struct atyfb_par *) info->par; | 2188 | struct atyfb_par *par = (struct atyfb_par *) info->par; |
2163 | const char *ramname = NULL, *xtal; | 2189 | const char *ramname = NULL, *xtal; |
2164 | int gtb_memsize; | 2190 | int gtb_memsize, has_var = 0; |
2165 | struct fb_var_screeninfo var; | 2191 | struct fb_var_screeninfo var; |
2166 | u8 pll_ref_div; | 2192 | u8 pll_ref_div; |
2167 | u32 i; | 2193 | u32 i; |
@@ -2469,8 +2495,8 @@ static int __init aty_init(struct fb_info *info, const char *name) | |||
2469 | * applies to all Mac video cards | 2495 | * applies to all Mac video cards |
2470 | */ | 2496 | */ |
2471 | if (mode) { | 2497 | if (mode) { |
2472 | if (!mac_find_mode(&var, info, mode, 8)) | 2498 | if (mac_find_mode(&var, info, mode, 8)) |
2473 | var = default_var; | 2499 | has_var = 1; |
2474 | } else { | 2500 | } else { |
2475 | if (default_vmode == VMODE_CHOOSE) { | 2501 | if (default_vmode == VMODE_CHOOSE) { |
2476 | if (M64_HAS(G3_PB_1024x768)) | 2502 | if (M64_HAS(G3_PB_1024x768)) |
@@ -2492,20 +2518,23 @@ static int __init aty_init(struct fb_info *info, const char *name) | |||
2492 | default_vmode = VMODE_640_480_60; | 2518 | default_vmode = VMODE_640_480_60; |
2493 | if (default_cmode < CMODE_8 || default_cmode > CMODE_32) | 2519 | if (default_cmode < CMODE_8 || default_cmode > CMODE_32) |
2494 | default_cmode = CMODE_8; | 2520 | default_cmode = CMODE_8; |
2495 | if (mac_vmode_to_var(default_vmode, default_cmode, &var)) | 2521 | if (!mac_vmode_to_var(default_vmode, default_cmode, |
2496 | var = default_var; | 2522 | &var)) |
2523 | has_var = 1; | ||
2497 | } | 2524 | } |
2498 | } else | 2525 | } |
2526 | |||
2499 | #endif /* !CONFIG_PPC */ | 2527 | #endif /* !CONFIG_PPC */ |
2500 | if ( | 2528 | |
2501 | #if defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64) | 2529 | #if defined(__i386__) && defined(CONFIG_FB_ATY_GENERIC_LCD) |
2502 | /* On Sparc, unless the user gave a specific mode | 2530 | if (!atyfb_get_timings_from_lcd(par, &var)) |
2503 | * specification, use the PROM probed values in | 2531 | has_var = 1; |
2504 | * default_var. | ||
2505 | */ | ||
2506 | !mode || | ||
2507 | #endif | 2532 | #endif |
2508 | !fb_find_mode(&var, info, mode, NULL, 0, &defmode, 8)) | 2533 | |
2534 | if (mode && fb_find_mode(&var, info, mode, NULL, 0, &defmode, 8)) | ||
2535 | has_var = 1; | ||
2536 | |||
2537 | if (!has_var) | ||
2509 | var = default_var; | 2538 | var = default_var; |
2510 | 2539 | ||
2511 | if (noaccel) | 2540 | if (noaccel) |
diff --git a/drivers/video/aty/radeon_base.c b/drivers/video/aty/radeon_base.c index 8a24a66d9ba8..4f01ccc02aa4 100644 --- a/drivers/video/aty/radeon_base.c +++ b/drivers/video/aty/radeon_base.c | |||
@@ -69,7 +69,6 @@ | |||
69 | #include <linux/pci.h> | 69 | #include <linux/pci.h> |
70 | #include <linux/vmalloc.h> | 70 | #include <linux/vmalloc.h> |
71 | #include <linux/device.h> | 71 | #include <linux/device.h> |
72 | #include <linux/i2c.h> | ||
73 | 72 | ||
74 | #include <asm/io.h> | 73 | #include <asm/io.h> |
75 | #include <asm/uaccess.h> | 74 | #include <asm/uaccess.h> |
@@ -113,6 +112,7 @@ static struct pci_device_id radeonfb_pci_table[] = { | |||
113 | /* Radeon VE/7000 */ | 112 | /* Radeon VE/7000 */ |
114 | CHIP_DEF(PCI_CHIP_RV100_QY, RV100, CHIP_HAS_CRTC2), | 113 | CHIP_DEF(PCI_CHIP_RV100_QY, RV100, CHIP_HAS_CRTC2), |
115 | CHIP_DEF(PCI_CHIP_RV100_QZ, RV100, CHIP_HAS_CRTC2), | 114 | CHIP_DEF(PCI_CHIP_RV100_QZ, RV100, CHIP_HAS_CRTC2), |
115 | CHIP_DEF(PCI_CHIP_RN50, RV100, CHIP_HAS_CRTC2), | ||
116 | /* Radeon IGP320M (U1) */ | 116 | /* Radeon IGP320M (U1) */ |
117 | CHIP_DEF(PCI_CHIP_RS100_4336, RS100, CHIP_HAS_CRTC2 | CHIP_IS_IGP | CHIP_IS_MOBILITY), | 117 | CHIP_DEF(PCI_CHIP_RS100_4336, RS100, CHIP_HAS_CRTC2 | CHIP_IS_IGP | CHIP_IS_MOBILITY), |
118 | /* Radeon IGP320 (A3) */ | 118 | /* Radeon IGP320 (A3) */ |
@@ -1874,7 +1874,6 @@ static struct fb_ops radeonfb_ops = { | |||
1874 | .fb_fillrect = radeonfb_fillrect, | 1874 | .fb_fillrect = radeonfb_fillrect, |
1875 | .fb_copyarea = radeonfb_copyarea, | 1875 | .fb_copyarea = radeonfb_copyarea, |
1876 | .fb_imageblit = radeonfb_imageblit, | 1876 | .fb_imageblit = radeonfb_imageblit, |
1877 | .fb_cursor = soft_cursor, | ||
1878 | }; | 1877 | }; |
1879 | 1878 | ||
1880 | 1879 | ||
diff --git a/drivers/video/aty/radeonfb.h b/drivers/video/aty/radeonfb.h index 01b8b2f78514..217e00ab4a2d 100644 --- a/drivers/video/aty/radeonfb.h +++ b/drivers/video/aty/radeonfb.h | |||
@@ -10,9 +10,10 @@ | |||
10 | #include <linux/fb.h> | 10 | #include <linux/fb.h> |
11 | 11 | ||
12 | 12 | ||
13 | #ifdef CONFIG_FB_RADEON_I2C | ||
13 | #include <linux/i2c.h> | 14 | #include <linux/i2c.h> |
14 | #include <linux/i2c-id.h> | ||
15 | #include <linux/i2c-algo-bit.h> | 15 | #include <linux/i2c-algo-bit.h> |
16 | #endif | ||
16 | 17 | ||
17 | #include <asm/io.h> | 18 | #include <asm/io.h> |
18 | 19 | ||
diff --git a/drivers/video/bw2.c b/drivers/video/bw2.c index 3d20b2d47d46..f53bf3ba1278 100644 --- a/drivers/video/bw2.c +++ b/drivers/video/bw2.c | |||
@@ -51,7 +51,6 @@ static struct fb_ops bw2_ops = { | |||
51 | .fb_imageblit = cfb_imageblit, | 51 | .fb_imageblit = cfb_imageblit, |
52 | .fb_mmap = bw2_mmap, | 52 | .fb_mmap = bw2_mmap, |
53 | .fb_ioctl = bw2_ioctl, | 53 | .fb_ioctl = bw2_ioctl, |
54 | .fb_cursor = soft_cursor, | ||
55 | }; | 54 | }; |
56 | 55 | ||
57 | /* OBio addresses for the bwtwo registers */ | 56 | /* OBio addresses for the bwtwo registers */ |
diff --git a/drivers/video/cfbcopyarea.c b/drivers/video/cfbcopyarea.c index 67711f7b11b1..cdc71572cf35 100644 --- a/drivers/video/cfbcopyarea.c +++ b/drivers/video/cfbcopyarea.c | |||
@@ -349,46 +349,10 @@ void cfb_copyarea(struct fb_info *p, const struct fb_copyarea *area) | |||
349 | unsigned long __iomem *dst = NULL, *src = NULL; | 349 | unsigned long __iomem *dst = NULL, *src = NULL; |
350 | int bits = BITS_PER_LONG, bytes = bits >> 3; | 350 | int bits = BITS_PER_LONG, bytes = bits >> 3; |
351 | int dst_idx = 0, src_idx = 0, rev_copy = 0; | 351 | int dst_idx = 0, src_idx = 0, rev_copy = 0; |
352 | int x2, y2, vxres, vyres; | ||
353 | 352 | ||
354 | if (p->state != FBINFO_STATE_RUNNING) | 353 | if (p->state != FBINFO_STATE_RUNNING) |
355 | return; | 354 | return; |
356 | 355 | ||
357 | /* We want rotation but lack hardware to do it for us. */ | ||
358 | if (!p->fbops->fb_rotate && p->var.rotate) { | ||
359 | } | ||
360 | |||
361 | vxres = p->var.xres_virtual; | ||
362 | vyres = p->var.yres_virtual; | ||
363 | |||
364 | if (area->dx > vxres || area->sx > vxres || | ||
365 | area->dy > vyres || area->sy > vyres) | ||
366 | return; | ||
367 | |||
368 | /* clip the destination | ||
369 | * We could use hardware clipping but on many cards you get around | ||
370 | * hardware clipping by writing to framebuffer directly. | ||
371 | */ | ||
372 | x2 = area->dx + area->width; | ||
373 | y2 = area->dy + area->height; | ||
374 | dx = area->dx > 0 ? area->dx : 0; | ||
375 | dy = area->dy > 0 ? area->dy : 0; | ||
376 | x2 = x2 < vxres ? x2 : vxres; | ||
377 | y2 = y2 < vyres ? y2 : vyres; | ||
378 | width = x2 - dx; | ||
379 | height = y2 - dy; | ||
380 | |||
381 | if ((width==0) ||(height==0)) | ||
382 | return; | ||
383 | |||
384 | /* update sx1,sy1 */ | ||
385 | sx += (dx - area->dx); | ||
386 | sy += (dy - area->dy); | ||
387 | |||
388 | /* the source must be completely inside the virtual screen */ | ||
389 | if (sx < 0 || sy < 0 || (sx + width) > vxres || (sy + height) > vyres) | ||
390 | return; | ||
391 | |||
392 | /* if the beginning of the target area might overlap with the end of | 356 | /* if the beginning of the target area might overlap with the end of |
393 | the source area, be have to copy the area reverse. */ | 357 | the source area, be have to copy the area reverse. */ |
394 | if ((dy == sy && dx > sx) || (dy > sy)) { | 358 | if ((dy == sy && dx > sx) || (dy > sy)) { |
diff --git a/drivers/video/cfbfillrect.c b/drivers/video/cfbfillrect.c index e4fc42b013eb..167d9314e6eb 100644 --- a/drivers/video/cfbfillrect.c +++ b/drivers/video/cfbfillrect.c | |||
@@ -344,7 +344,8 @@ bitfill_unaligned_rev(unsigned long __iomem *dst, int dst_idx, unsigned long pat | |||
344 | 344 | ||
345 | void cfb_fillrect(struct fb_info *p, const struct fb_fillrect *rect) | 345 | void cfb_fillrect(struct fb_info *p, const struct fb_fillrect *rect) |
346 | { | 346 | { |
347 | unsigned long x2, y2, vxres, vyres, height, width, pat, fg; | 347 | unsigned long pat, fg; |
348 | unsigned long width = rect->width, height = rect->height; | ||
348 | int bits = BITS_PER_LONG, bytes = bits >> 3; | 349 | int bits = BITS_PER_LONG, bytes = bits >> 3; |
349 | u32 bpp = p->var.bits_per_pixel; | 350 | u32 bpp = p->var.bits_per_pixel; |
350 | unsigned long __iomem *dst; | 351 | unsigned long __iomem *dst; |
@@ -353,27 +354,6 @@ void cfb_fillrect(struct fb_info *p, const struct fb_fillrect *rect) | |||
353 | if (p->state != FBINFO_STATE_RUNNING) | 354 | if (p->state != FBINFO_STATE_RUNNING) |
354 | return; | 355 | return; |
355 | 356 | ||
356 | /* We want rotation but lack hardware to do it for us. */ | ||
357 | if (!p->fbops->fb_rotate && p->var.rotate) { | ||
358 | } | ||
359 | |||
360 | vxres = p->var.xres_virtual; | ||
361 | vyres = p->var.yres_virtual; | ||
362 | |||
363 | if (!rect->width || !rect->height || | ||
364 | rect->dx > vxres || rect->dy > vyres) | ||
365 | return; | ||
366 | |||
367 | /* We could use hardware clipping but on many cards you get around | ||
368 | * hardware clipping by writing to framebuffer directly. */ | ||
369 | |||
370 | x2 = rect->dx + rect->width; | ||
371 | y2 = rect->dy + rect->height; | ||
372 | x2 = x2 < vxres ? x2 : vxres; | ||
373 | y2 = y2 < vyres ? y2 : vyres; | ||
374 | width = x2 - rect->dx; | ||
375 | height = y2 - rect->dy; | ||
376 | |||
377 | if (p->fix.visual == FB_VISUAL_TRUECOLOR || | 357 | if (p->fix.visual == FB_VISUAL_TRUECOLOR || |
378 | p->fix.visual == FB_VISUAL_DIRECTCOLOR ) | 358 | p->fix.visual == FB_VISUAL_DIRECTCOLOR ) |
379 | fg = ((u32 *) (p->pseudo_palette))[rect->color]; | 359 | fg = ((u32 *) (p->pseudo_palette))[rect->color]; |
diff --git a/drivers/video/cfbimgblt.c b/drivers/video/cfbimgblt.c index 4c123abaa843..da664cea7eca 100644 --- a/drivers/video/cfbimgblt.c +++ b/drivers/video/cfbimgblt.c | |||
@@ -272,33 +272,13 @@ void cfb_imageblit(struct fb_info *p, const struct fb_image *image) | |||
272 | { | 272 | { |
273 | u32 fgcolor, bgcolor, start_index, bitstart, pitch_index = 0; | 273 | u32 fgcolor, bgcolor, start_index, bitstart, pitch_index = 0; |
274 | u32 bpl = sizeof(u32), bpp = p->var.bits_per_pixel; | 274 | u32 bpl = sizeof(u32), bpp = p->var.bits_per_pixel; |
275 | u32 width = image->width, height = image->height; | 275 | u32 width = image->width; |
276 | u32 dx = image->dx, dy = image->dy; | 276 | u32 dx = image->dx, dy = image->dy; |
277 | int x2, y2, vxres, vyres; | ||
278 | u8 __iomem *dst1; | 277 | u8 __iomem *dst1; |
279 | 278 | ||
280 | if (p->state != FBINFO_STATE_RUNNING) | 279 | if (p->state != FBINFO_STATE_RUNNING) |
281 | return; | 280 | return; |
282 | 281 | ||
283 | vxres = p->var.xres_virtual; | ||
284 | vyres = p->var.yres_virtual; | ||
285 | /* | ||
286 | * We could use hardware clipping but on many cards you get around | ||
287 | * hardware clipping by writing to framebuffer directly like we are | ||
288 | * doing here. | ||
289 | */ | ||
290 | if (image->dx > vxres || image->dy > vyres) | ||
291 | return; | ||
292 | |||
293 | x2 = image->dx + image->width; | ||
294 | y2 = image->dy + image->height; | ||
295 | dx = image->dx > 0 ? image->dx : 0; | ||
296 | dy = image->dy > 0 ? image->dy : 0; | ||
297 | x2 = x2 < vxres ? x2 : vxres; | ||
298 | y2 = y2 < vyres ? y2 : vyres; | ||
299 | width = x2 - dx; | ||
300 | height = y2 - dy; | ||
301 | |||
302 | bitstart = (dy * p->fix.line_length * 8) + (dx * bpp); | 282 | bitstart = (dy * p->fix.line_length * 8) + (dx * bpp); |
303 | start_index = bitstart & (32 - 1); | 283 | start_index = bitstart & (32 - 1); |
304 | pitch_index = (p->fix.line_length & (bpl - 1)) * 8; | 284 | pitch_index = (p->fix.line_length & (bpl - 1)) * 8; |
diff --git a/drivers/video/cg14.c b/drivers/video/cg14.c index 18e60b941e21..030d4b13b1c2 100644 --- a/drivers/video/cg14.c +++ b/drivers/video/cg14.c | |||
@@ -49,7 +49,6 @@ static struct fb_ops cg14_ops = { | |||
49 | .fb_imageblit = cfb_imageblit, | 49 | .fb_imageblit = cfb_imageblit, |
50 | .fb_mmap = cg14_mmap, | 50 | .fb_mmap = cg14_mmap, |
51 | .fb_ioctl = cg14_ioctl, | 51 | .fb_ioctl = cg14_ioctl, |
52 | .fb_cursor = soft_cursor, | ||
53 | }; | 52 | }; |
54 | 53 | ||
55 | #define CG14_MCR_INTENABLE_SHIFT 7 | 54 | #define CG14_MCR_INTENABLE_SHIFT 7 |
diff --git a/drivers/video/cg3.c b/drivers/video/cg3.c index 6e7d8d45dc68..b94eee8c42d5 100644 --- a/drivers/video/cg3.c +++ b/drivers/video/cg3.c | |||
@@ -50,7 +50,6 @@ static struct fb_ops cg3_ops = { | |||
50 | .fb_imageblit = cfb_imageblit, | 50 | .fb_imageblit = cfb_imageblit, |
51 | .fb_mmap = cg3_mmap, | 51 | .fb_mmap = cg3_mmap, |
52 | .fb_ioctl = cg3_ioctl, | 52 | .fb_ioctl = cg3_ioctl, |
53 | .fb_cursor = soft_cursor, | ||
54 | }; | 53 | }; |
55 | 54 | ||
56 | 55 | ||
diff --git a/drivers/video/cg6.c b/drivers/video/cg6.c index 49a2545671d9..414c4409e924 100644 --- a/drivers/video/cg6.c +++ b/drivers/video/cg6.c | |||
@@ -54,7 +54,6 @@ static struct fb_ops cg6_ops = { | |||
54 | .fb_sync = cg6_sync, | 54 | .fb_sync = cg6_sync, |
55 | .fb_mmap = cg6_mmap, | 55 | .fb_mmap = cg6_mmap, |
56 | .fb_ioctl = cg6_ioctl, | 56 | .fb_ioctl = cg6_ioctl, |
57 | .fb_cursor = soft_cursor, | ||
58 | }; | 57 | }; |
59 | 58 | ||
60 | /* Offset of interesting structures in the OBIO space */ | 59 | /* Offset of interesting structures in the OBIO space */ |
@@ -654,12 +653,6 @@ static void cg6_chip_init(struct fb_info *info) | |||
654 | sbus_writel(0, &fbc->clipminy); | 653 | sbus_writel(0, &fbc->clipminy); |
655 | sbus_writel(info->var.xres - 1, &fbc->clipmaxx); | 654 | sbus_writel(info->var.xres - 1, &fbc->clipmaxx); |
656 | sbus_writel(info->var.yres - 1, &fbc->clipmaxy); | 655 | sbus_writel(info->var.yres - 1, &fbc->clipmaxy); |
657 | |||
658 | /* Disable cursor in Brooktree DAC. */ | ||
659 | sbus_writel(0x06 << 24, &par->bt->addr); | ||
660 | tmp = sbus_readl(&par->bt->control); | ||
661 | tmp &= ~(0x03 << 24); | ||
662 | sbus_writel(tmp, &par->bt->control); | ||
663 | } | 656 | } |
664 | 657 | ||
665 | struct all_info { | 658 | struct all_info { |
diff --git a/drivers/video/chipsfb.c b/drivers/video/chipsfb.c index 4131243cfdf8..bc061d4ec786 100644 --- a/drivers/video/chipsfb.c +++ b/drivers/video/chipsfb.c | |||
@@ -91,7 +91,6 @@ static struct fb_ops chipsfb_ops = { | |||
91 | .fb_fillrect = cfb_fillrect, | 91 | .fb_fillrect = cfb_fillrect, |
92 | .fb_copyarea = cfb_copyarea, | 92 | .fb_copyarea = cfb_copyarea, |
93 | .fb_imageblit = cfb_imageblit, | 93 | .fb_imageblit = cfb_imageblit, |
94 | .fb_cursor = soft_cursor, | ||
95 | }; | 94 | }; |
96 | 95 | ||
97 | static int chipsfb_check_var(struct fb_var_screeninfo *var, | 96 | static int chipsfb_check_var(struct fb_var_screeninfo *var, |
diff --git a/drivers/video/cirrusfb.c b/drivers/video/cirrusfb.c index 3a26f9cc8585..2858c5c8ba3c 100644 --- a/drivers/video/cirrusfb.c +++ b/drivers/video/cirrusfb.c | |||
@@ -548,7 +548,6 @@ static struct fb_ops cirrusfb_ops = { | |||
548 | .fb_fillrect = cirrusfb_fillrect, | 548 | .fb_fillrect = cirrusfb_fillrect, |
549 | .fb_copyarea = cirrusfb_copyarea, | 549 | .fb_copyarea = cirrusfb_copyarea, |
550 | .fb_imageblit = cirrusfb_imageblit, | 550 | .fb_imageblit = cirrusfb_imageblit, |
551 | .fb_cursor = soft_cursor, | ||
552 | }; | 551 | }; |
553 | 552 | ||
554 | /*--- Hardware Specific Routines -------------------------------------------*/ | 553 | /*--- Hardware Specific Routines -------------------------------------------*/ |
diff --git a/drivers/video/clps711xfb.c b/drivers/video/clps711xfb.c index 8692e002986b..50b78af0fa24 100644 --- a/drivers/video/clps711xfb.c +++ b/drivers/video/clps711xfb.c | |||
@@ -219,7 +219,6 @@ static struct fb_ops clps7111fb_ops = { | |||
219 | .fb_fillrect = cfb_fillrect, | 219 | .fb_fillrect = cfb_fillrect, |
220 | .fb_copyarea = cfb_copyarea, | 220 | .fb_copyarea = cfb_copyarea, |
221 | .fb_imageblit = cfb_imageblit, | 221 | .fb_imageblit = cfb_imageblit, |
222 | .fb_cursor = soft_cursor, | ||
223 | }; | 222 | }; |
224 | 223 | ||
225 | static int | 224 | static int |
diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig index 6a9ae2b3d1ab..fadf7c5d216e 100644 --- a/drivers/video/console/Kconfig +++ b/drivers/video/console/Kconfig | |||
@@ -98,6 +98,8 @@ config FRAMEBUFFER_CONSOLE | |||
98 | tristate "Framebuffer Console support" | 98 | tristate "Framebuffer Console support" |
99 | depends on FB | 99 | depends on FB |
100 | select CRC32 | 100 | select CRC32 |
101 | help | ||
102 | Low-level framebuffer-based console driver. | ||
101 | 103 | ||
102 | config STI_CONSOLE | 104 | config STI_CONSOLE |
103 | tristate "STI text console" | 105 | tristate "STI text console" |
@@ -203,5 +205,12 @@ config FONT_10x18 | |||
203 | big letters. It fits between the sun 12x22 and the normal 8x16 font. | 205 | big letters. It fits between the sun 12x22 and the normal 8x16 font. |
204 | If other fonts are too big or too small for you, say Y, otherwise say N. | 206 | If other fonts are too big or too small for you, say Y, otherwise say N. |
205 | 207 | ||
208 | config FONT_RL | ||
209 | bool "console Roman Large 8x16 font" if FONTS | ||
210 | depends on FRAMEBUFFER_CONSOLE | ||
211 | help | ||
212 | This is the visually-appealing "RL" console font that is | ||
213 | included with the kbd package. | ||
214 | |||
206 | endmenu | 215 | endmenu |
207 | 216 | ||
diff --git a/drivers/video/console/Makefile b/drivers/video/console/Makefile index 42c7b8dcd220..5222628accce 100644 --- a/drivers/video/console/Makefile +++ b/drivers/video/console/Makefile | |||
@@ -15,6 +15,7 @@ font-objs-$(CONFIG_FONT_10x18) += font_10x18.o | |||
15 | font-objs-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o | 15 | font-objs-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o |
16 | font-objs-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o | 16 | font-objs-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o |
17 | font-objs-$(CONFIG_FONT_MINI_4x6) += font_mini_4x6.o | 17 | font-objs-$(CONFIG_FONT_MINI_4x6) += font_mini_4x6.o |
18 | font-objs-$(CONFIG_FONT_RL) += font_rl.o | ||
18 | 19 | ||
19 | font-objs += $(font-objs-y) | 20 | font-objs += $(font-objs-y) |
20 | 21 | ||
@@ -26,7 +27,7 @@ obj-$(CONFIG_PROM_CONSOLE) += promcon.o promcon_tbl.o | |||
26 | obj-$(CONFIG_STI_CONSOLE) += sticon.o sticore.o font.o | 27 | obj-$(CONFIG_STI_CONSOLE) += sticon.o sticore.o font.o |
27 | obj-$(CONFIG_VGA_CONSOLE) += vgacon.o | 28 | obj-$(CONFIG_VGA_CONSOLE) += vgacon.o |
28 | obj-$(CONFIG_MDA_CONSOLE) += mdacon.o | 29 | obj-$(CONFIG_MDA_CONSOLE) += mdacon.o |
29 | obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o | 30 | obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += fbcon.o bitblit.o font.o softcursor.o |
30 | ifeq ($(CONFIG_FB_TILEBLITTING),y) | 31 | ifeq ($(CONFIG_FB_TILEBLITTING),y) |
31 | obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += tileblit.o | 32 | obj-$(CONFIG_FRAMEBUFFER_CONSOLE) += tileblit.o |
32 | endif | 33 | endif |
diff --git a/drivers/video/console/bitblit.c b/drivers/video/console/bitblit.c index 9f70e512b88b..67857b3cfc8b 100644 --- a/drivers/video/console/bitblit.c +++ b/drivers/video/console/bitblit.c | |||
@@ -272,6 +272,7 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, | |||
272 | int w = (vc->vc_font.width + 7) >> 3, c; | 272 | int w = (vc->vc_font.width + 7) >> 3, c; |
273 | int y = real_y(p, vc->vc_y); | 273 | int y = real_y(p, vc->vc_y); |
274 | int attribute, use_sw = (vc->vc_cursor_type & 0x10); | 274 | int attribute, use_sw = (vc->vc_cursor_type & 0x10); |
275 | int err = 1; | ||
275 | char *src; | 276 | char *src; |
276 | 277 | ||
277 | cursor.set = 0; | 278 | cursor.set = 0; |
@@ -408,7 +409,11 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, | |||
408 | cursor.image.depth = 1; | 409 | cursor.image.depth = 1; |
409 | cursor.rop = ROP_XOR; | 410 | cursor.rop = ROP_XOR; |
410 | 411 | ||
411 | info->fbops->fb_cursor(info, &cursor); | 412 | if (info->fbops->fb_cursor) |
413 | err = info->fbops->fb_cursor(info, &cursor); | ||
414 | |||
415 | if (err) | ||
416 | soft_cursor(info, &cursor); | ||
412 | 417 | ||
413 | ops->cursor_reset = 0; | 418 | ops->cursor_reset = 0; |
414 | } | 419 | } |
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index 0fc8bb499c3f..3cf1b61ff1f8 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c | |||
@@ -281,6 +281,18 @@ static inline int get_color(struct vc_data *vc, struct fb_info *info, | |||
281 | return color; | 281 | return color; |
282 | } | 282 | } |
283 | 283 | ||
284 | static void fbcon_update_softback(struct vc_data *vc) | ||
285 | { | ||
286 | int l = fbcon_softback_size / vc->vc_size_row; | ||
287 | |||
288 | if (l > 5) | ||
289 | softback_end = softback_buf + l * vc->vc_size_row; | ||
290 | else | ||
291 | /* Smaller scrollback makes no sense, and 0 would screw | ||
292 | the operation totally */ | ||
293 | softback_top = 0; | ||
294 | } | ||
295 | |||
284 | static void fb_flashcursor(void *private) | 296 | static void fb_flashcursor(void *private) |
285 | { | 297 | { |
286 | struct fb_info *info = private; | 298 | struct fb_info *info = private; |
@@ -618,6 +630,15 @@ static int con2fb_release_oldinfo(struct vc_data *vc, struct fb_info *oldinfo, | |||
618 | kfree(oldinfo->fbcon_par); | 630 | kfree(oldinfo->fbcon_par); |
619 | oldinfo->fbcon_par = NULL; | 631 | oldinfo->fbcon_par = NULL; |
620 | module_put(oldinfo->fbops->owner); | 632 | module_put(oldinfo->fbops->owner); |
633 | /* | ||
634 | If oldinfo and newinfo are driving the same hardware, | ||
635 | the fb_release() method of oldinfo may attempt to | ||
636 | restore the hardware state. This will leave the | ||
637 | newinfo in an undefined state. Thus, a call to | ||
638 | fb_set_par() may be needed for the newinfo. | ||
639 | */ | ||
640 | if (newinfo->fbops->fb_set_par) | ||
641 | newinfo->fbops->fb_set_par(newinfo); | ||
621 | } | 642 | } |
622 | 643 | ||
623 | return err; | 644 | return err; |
@@ -1007,16 +1028,8 @@ static void fbcon_init(struct vc_data *vc, int init) | |||
1007 | if (logo) | 1028 | if (logo) |
1008 | fbcon_prepare_logo(vc, info, cols, rows, new_cols, new_rows); | 1029 | fbcon_prepare_logo(vc, info, cols, rows, new_cols, new_rows); |
1009 | 1030 | ||
1010 | if (vc == svc && softback_buf) { | 1031 | if (vc == svc && softback_buf) |
1011 | int l = fbcon_softback_size / vc->vc_size_row; | 1032 | fbcon_update_softback(vc); |
1012 | if (l > 5) | ||
1013 | softback_end = softback_buf + l * vc->vc_size_row; | ||
1014 | else { | ||
1015 | /* Smaller scrollback makes no sense, and 0 would screw | ||
1016 | the operation totally */ | ||
1017 | softback_top = 0; | ||
1018 | } | ||
1019 | } | ||
1020 | } | 1033 | } |
1021 | 1034 | ||
1022 | static void fbcon_deinit(struct vc_data *vc) | 1035 | static void fbcon_deinit(struct vc_data *vc) |
@@ -1223,18 +1236,8 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var, | |||
1223 | vc_resize(vc, cols, rows); | 1236 | vc_resize(vc, cols, rows); |
1224 | if (CON_IS_VISIBLE(vc)) { | 1237 | if (CON_IS_VISIBLE(vc)) { |
1225 | update_screen(vc); | 1238 | update_screen(vc); |
1226 | if (softback_buf) { | 1239 | if (softback_buf) |
1227 | int l = fbcon_softback_size / vc->vc_size_row; | 1240 | fbcon_update_softback(vc); |
1228 | |||
1229 | if (l > 5) | ||
1230 | softback_end = softback_buf + l * | ||
1231 | vc->vc_size_row; | ||
1232 | else { | ||
1233 | /* Smaller scrollback makes no sense, and 0 | ||
1234 | would screw the operation totally */ | ||
1235 | softback_top = 0; | ||
1236 | } | ||
1237 | } | ||
1238 | } | 1241 | } |
1239 | } | 1242 | } |
1240 | 1243 | ||
@@ -1892,24 +1895,11 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width, | |||
1892 | mode = fb_find_best_mode(&var, &info->modelist); | 1895 | mode = fb_find_best_mode(&var, &info->modelist); |
1893 | if (mode == NULL) | 1896 | if (mode == NULL) |
1894 | return -EINVAL; | 1897 | return -EINVAL; |
1898 | display_to_var(&var, p); | ||
1895 | fb_videomode_to_var(&var, mode); | 1899 | fb_videomode_to_var(&var, mode); |
1900 | |||
1896 | if (width > var.xres/fw || height > var.yres/fh) | 1901 | if (width > var.xres/fw || height > var.yres/fh) |
1897 | return -EINVAL; | 1902 | return -EINVAL; |
1898 | /* | ||
1899 | * The following can probably have any value... Do we need to | ||
1900 | * set all of them? | ||
1901 | */ | ||
1902 | var.bits_per_pixel = p->bits_per_pixel; | ||
1903 | var.xres_virtual = p->xres_virtual; | ||
1904 | var.yres_virtual = p->yres_virtual; | ||
1905 | var.accel_flags = p->accel_flags; | ||
1906 | var.width = p->width; | ||
1907 | var.height = p->height; | ||
1908 | var.red = p->red; | ||
1909 | var.green = p->green; | ||
1910 | var.blue = p->blue; | ||
1911 | var.transp = p->transp; | ||
1912 | var.nonstd = p->nonstd; | ||
1913 | 1903 | ||
1914 | DPRINTK("resize now %ix%i\n", var.xres, var.yres); | 1904 | DPRINTK("resize now %ix%i\n", var.xres, var.yres); |
1915 | if (CON_IS_VISIBLE(vc)) { | 1905 | if (CON_IS_VISIBLE(vc)) { |
@@ -1933,19 +1923,11 @@ static int fbcon_switch(struct vc_data *vc) | |||
1933 | info = registered_fb[con2fb_map[vc->vc_num]]; | 1923 | info = registered_fb[con2fb_map[vc->vc_num]]; |
1934 | 1924 | ||
1935 | if (softback_top) { | 1925 | if (softback_top) { |
1936 | int l = fbcon_softback_size / vc->vc_size_row; | ||
1937 | if (softback_lines) | 1926 | if (softback_lines) |
1938 | fbcon_set_origin(vc); | 1927 | fbcon_set_origin(vc); |
1939 | softback_top = softback_curr = softback_in = softback_buf; | 1928 | softback_top = softback_curr = softback_in = softback_buf; |
1940 | softback_lines = 0; | 1929 | softback_lines = 0; |
1941 | 1930 | fbcon_update_softback(vc); | |
1942 | if (l > 5) | ||
1943 | softback_end = softback_buf + l * vc->vc_size_row; | ||
1944 | else { | ||
1945 | /* Smaller scrollback makes no sense, and 0 would screw | ||
1946 | the operation totally */ | ||
1947 | softback_top = 0; | ||
1948 | } | ||
1949 | } | 1931 | } |
1950 | 1932 | ||
1951 | if (logo_shown >= 0) { | 1933 | if (logo_shown >= 0) { |
@@ -2235,17 +2217,8 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h, | |||
2235 | /* reset wrap/pan */ | 2217 | /* reset wrap/pan */ |
2236 | info->var.xoffset = info->var.yoffset = p->yscroll = 0; | 2218 | info->var.xoffset = info->var.yoffset = p->yscroll = 0; |
2237 | vc_resize(vc, info->var.xres / w, info->var.yres / h); | 2219 | vc_resize(vc, info->var.xres / w, info->var.yres / h); |
2238 | if (CON_IS_VISIBLE(vc) && softback_buf) { | 2220 | if (CON_IS_VISIBLE(vc) && softback_buf) |
2239 | int l = fbcon_softback_size / vc->vc_size_row; | 2221 | fbcon_update_softback(vc); |
2240 | if (l > 5) | ||
2241 | softback_end = | ||
2242 | softback_buf + l * vc->vc_size_row; | ||
2243 | else { | ||
2244 | /* Smaller scrollback makes no sense, and 0 would screw | ||
2245 | the operation totally */ | ||
2246 | softback_top = 0; | ||
2247 | } | ||
2248 | } | ||
2249 | } else if (CON_IS_VISIBLE(vc) | 2222 | } else if (CON_IS_VISIBLE(vc) |
2250 | && vc->vc_mode == KD_TEXT) { | 2223 | && vc->vc_mode == KD_TEXT) { |
2251 | fbcon_clear_margins(vc, 0); | 2224 | fbcon_clear_margins(vc, 0); |
@@ -2615,16 +2588,8 @@ static void fbcon_modechanged(struct fb_info *info) | |||
2615 | update_var(vc->vc_num, info); | 2588 | update_var(vc->vc_num, info); |
2616 | fbcon_set_palette(vc, color_table); | 2589 | fbcon_set_palette(vc, color_table); |
2617 | update_screen(vc); | 2590 | update_screen(vc); |
2618 | if (softback_buf) { | 2591 | if (softback_buf) |
2619 | int l = fbcon_softback_size / vc->vc_size_row; | 2592 | fbcon_update_softback(vc); |
2620 | if (l > 5) | ||
2621 | softback_end = softback_buf + l * vc->vc_size_row; | ||
2622 | else { | ||
2623 | /* Smaller scrollback makes no sense, and 0 | ||
2624 | would screw the operation totally */ | ||
2625 | softback_top = 0; | ||
2626 | } | ||
2627 | } | ||
2628 | } | 2593 | } |
2629 | } | 2594 | } |
2630 | 2595 | ||
@@ -2659,16 +2624,8 @@ static void fbcon_set_all_vcs(struct fb_info *info) | |||
2659 | update_var(vc->vc_num, info); | 2624 | update_var(vc->vc_num, info); |
2660 | fbcon_set_palette(vc, color_table); | 2625 | fbcon_set_palette(vc, color_table); |
2661 | update_screen(vc); | 2626 | update_screen(vc); |
2662 | if (softback_buf) { | 2627 | if (softback_buf) |
2663 | int l = fbcon_softback_size / vc->vc_size_row; | 2628 | fbcon_update_softback(vc); |
2664 | if (l > 5) | ||
2665 | softback_end = softback_buf + l * vc->vc_size_row; | ||
2666 | else { | ||
2667 | /* Smaller scrollback makes no sense, and 0 | ||
2668 | would screw the operation totally */ | ||
2669 | softback_top = 0; | ||
2670 | } | ||
2671 | } | ||
2672 | } | 2629 | } |
2673 | } | 2630 | } |
2674 | } | 2631 | } |
@@ -2758,7 +2715,8 @@ static void fbcon_new_modelist(struct fb_info *info) | |||
2758 | continue; | 2715 | continue; |
2759 | vc = vc_cons[i].d; | 2716 | vc = vc_cons[i].d; |
2760 | display_to_var(&var, &fb_display[i]); | 2717 | display_to_var(&var, &fb_display[i]); |
2761 | mode = fb_find_nearest_mode(&var, &info->modelist); | 2718 | mode = fb_find_nearest_mode(fb_display[i].mode, |
2719 | &info->modelist); | ||
2762 | fb_videomode_to_var(&var, mode); | 2720 | fb_videomode_to_var(&var, mode); |
2763 | 2721 | ||
2764 | if (vc) | 2722 | if (vc) |
diff --git a/drivers/video/console/fbcon.h b/drivers/video/console/fbcon.h index 0738cd62def2..b68e0e2c2d16 100644 --- a/drivers/video/console/fbcon.h +++ b/drivers/video/console/fbcon.h | |||
@@ -167,5 +167,5 @@ extern void fbcon_set_tileops(struct vc_data *vc, struct fb_info *info, | |||
167 | struct display *p, struct fbcon_ops *ops); | 167 | struct display *p, struct fbcon_ops *ops); |
168 | #endif | 168 | #endif |
169 | extern void fbcon_set_bitops(struct fbcon_ops *ops); | 169 | extern void fbcon_set_bitops(struct fbcon_ops *ops); |
170 | 170 | extern int soft_cursor(struct fb_info *info, struct fb_cursor *cursor); | |
171 | #endif /* _VIDEO_FBCON_H */ | 171 | #endif /* _VIDEO_FBCON_H */ |
diff --git a/drivers/video/console/font_rl.c b/drivers/video/console/font_rl.c new file mode 100644 index 000000000000..dfecc27d8ded --- /dev/null +++ b/drivers/video/console/font_rl.c | |||
@@ -0,0 +1,4374 @@ | |||
1 | |||
2 | /* This font is simply the "rl.fnt" console font from the kbd utility. | ||
3 | * Converted by Zack T Smith, fbui@comcast.net. | ||
4 | * The original binary file is covered under the GNU Public License. | ||
5 | */ | ||
6 | |||
7 | #include <linux/font.h> | ||
8 | |||
9 | #define FONTDATAMAX 4096 | ||
10 | |||
11 | static unsigned char patterns[4096] = { | ||
12 | 0x00, | ||
13 | 0x00, | ||
14 | 0x00, | ||
15 | 0x00, | ||
16 | 0x00, | ||
17 | 0x00, | ||
18 | 0x00, | ||
19 | 0x00, | ||
20 | 0x00, | ||
21 | 0x00, | ||
22 | 0x00, | ||
23 | 0x00, | ||
24 | 0x00, | ||
25 | 0x00, | ||
26 | 0x00, | ||
27 | 0x00, | ||
28 | |||
29 | 0x00, | ||
30 | 0x00, | ||
31 | 0x3c, | ||
32 | 0x42, | ||
33 | 0x81, | ||
34 | 0xe7, | ||
35 | 0xa5, | ||
36 | 0x99, | ||
37 | 0x81, | ||
38 | 0x81, | ||
39 | 0x99, | ||
40 | 0x42, | ||
41 | 0x3c, | ||
42 | 0x00, | ||
43 | 0x00, | ||
44 | 0x00, | ||
45 | |||
46 | 0x00, | ||
47 | 0x00, | ||
48 | 0x3c, | ||
49 | 0x7e, | ||
50 | 0xff, | ||
51 | 0x99, | ||
52 | 0xdb, | ||
53 | 0xe7, | ||
54 | 0xff, | ||
55 | 0xff, | ||
56 | 0xe7, | ||
57 | 0x7e, | ||
58 | 0x3c, | ||
59 | 0x00, | ||
60 | 0x00, | ||
61 | 0x00, | ||
62 | |||
63 | 0x00, | ||
64 | 0x00, | ||
65 | 0x00, | ||
66 | 0x6c, | ||
67 | 0xfe, | ||
68 | 0xfe, | ||
69 | 0xfe, | ||
70 | 0xfe, | ||
71 | 0xfe, | ||
72 | 0x7c, | ||
73 | 0x38, | ||
74 | 0x10, | ||
75 | 0x00, | ||
76 | 0x00, | ||
77 | 0x00, | ||
78 | 0x00, | ||
79 | |||
80 | 0x00, | ||
81 | 0x00, | ||
82 | 0x00, | ||
83 | 0x00, | ||
84 | 0x10, | ||
85 | 0x38, | ||
86 | 0x7c, | ||
87 | 0xfe, | ||
88 | 0x7c, | ||
89 | 0x38, | ||
90 | 0x10, | ||
91 | 0x00, | ||
92 | 0x00, | ||
93 | 0x00, | ||
94 | 0x00, | ||
95 | 0x00, | ||
96 | |||
97 | 0x00, | ||
98 | 0x00, | ||
99 | 0x38, | ||
100 | 0x38, | ||
101 | 0x10, | ||
102 | 0xd6, | ||
103 | 0xfe, | ||
104 | 0xd6, | ||
105 | 0x10, | ||
106 | 0x10, | ||
107 | 0x38, | ||
108 | 0x7c, | ||
109 | 0x00, | ||
110 | 0x00, | ||
111 | 0x00, | ||
112 | 0x00, | ||
113 | |||
114 | 0x00, | ||
115 | 0x00, | ||
116 | 0x10, | ||
117 | 0x38, | ||
118 | 0x7c, | ||
119 | 0xfe, | ||
120 | 0xfe, | ||
121 | 0x54, | ||
122 | 0x10, | ||
123 | 0x10, | ||
124 | 0x38, | ||
125 | 0x7c, | ||
126 | 0x00, | ||
127 | 0x00, | ||
128 | 0x00, | ||
129 | 0x00, | ||
130 | |||
131 | 0x00, | ||
132 | 0x00, | ||
133 | 0x00, | ||
134 | 0x00, | ||
135 | 0x00, | ||
136 | 0x00, | ||
137 | 0x18, | ||
138 | 0x3c, | ||
139 | 0x3c, | ||
140 | 0x18, | ||
141 | 0x00, | ||
142 | 0x00, | ||
143 | 0x00, | ||
144 | 0x00, | ||
145 | 0x00, | ||
146 | 0x00, | ||
147 | |||
148 | 0xff, | ||
149 | 0xff, | ||
150 | 0xff, | ||
151 | 0xff, | ||
152 | 0xff, | ||
153 | 0xff, | ||
154 | 0xe7, | ||
155 | 0xc3, | ||
156 | 0xc3, | ||
157 | 0xe7, | ||
158 | 0xff, | ||
159 | 0xff, | ||
160 | 0xff, | ||
161 | 0xff, | ||
162 | 0xff, | ||
163 | 0xff, | ||
164 | |||
165 | 0x00, | ||
166 | 0x00, | ||
167 | 0x00, | ||
168 | 0x00, | ||
169 | 0x00, | ||
170 | 0x3c, | ||
171 | 0x66, | ||
172 | 0x42, | ||
173 | 0x42, | ||
174 | 0x66, | ||
175 | 0x3c, | ||
176 | 0x00, | ||
177 | 0x00, | ||
178 | 0x00, | ||
179 | 0x00, | ||
180 | 0x00, | ||
181 | |||
182 | 0xff, | ||
183 | 0xff, | ||
184 | 0xff, | ||
185 | 0xff, | ||
186 | 0xff, | ||
187 | 0xc3, | ||
188 | 0x99, | ||
189 | 0xbd, | ||
190 | 0xbd, | ||
191 | 0x99, | ||
192 | 0xc3, | ||
193 | 0xff, | ||
194 | 0xff, | ||
195 | 0xff, | ||
196 | 0xff, | ||
197 | 0xff, | ||
198 | |||
199 | 0x00, | ||
200 | 0x00, | ||
201 | 0x0f, | ||
202 | 0x07, | ||
203 | 0x0d, | ||
204 | 0x18, | ||
205 | 0x78, | ||
206 | 0xcc, | ||
207 | 0xcc, | ||
208 | 0xcc, | ||
209 | 0xcc, | ||
210 | 0x78, | ||
211 | 0x00, | ||
212 | 0x00, | ||
213 | 0x00, | ||
214 | 0x00, | ||
215 | |||
216 | 0x00, | ||
217 | 0x00, | ||
218 | 0x3c, | ||
219 | 0x66, | ||
220 | 0x66, | ||
221 | 0x66, | ||
222 | 0x3c, | ||
223 | 0x18, | ||
224 | 0x7e, | ||
225 | 0x18, | ||
226 | 0x18, | ||
227 | 0x18, | ||
228 | 0x00, | ||
229 | 0x00, | ||
230 | 0x00, | ||
231 | 0x00, | ||
232 | |||
233 | 0x00, | ||
234 | 0x08, | ||
235 | 0x0c, | ||
236 | 0x0a, | ||
237 | 0x0a, | ||
238 | 0x0a, | ||
239 | 0x08, | ||
240 | 0x08, | ||
241 | 0x08, | ||
242 | 0x38, | ||
243 | 0x78, | ||
244 | 0x30, | ||
245 | 0x00, | ||
246 | 0x00, | ||
247 | 0x00, | ||
248 | 0x00, | ||
249 | |||
250 | 0x00, | ||
251 | 0x10, | ||
252 | 0x18, | ||
253 | 0x1c, | ||
254 | 0x1e, | ||
255 | 0x1e, | ||
256 | 0x16, | ||
257 | 0x12, | ||
258 | 0x72, | ||
259 | 0xf2, | ||
260 | 0x62, | ||
261 | 0x0e, | ||
262 | 0x1e, | ||
263 | 0x0c, | ||
264 | 0x00, | ||
265 | 0x00, | ||
266 | |||
267 | 0x00, | ||
268 | 0x00, | ||
269 | 0x00, | ||
270 | 0x10, | ||
271 | 0x92, | ||
272 | 0x54, | ||
273 | 0x38, | ||
274 | 0xfe, | ||
275 | 0x38, | ||
276 | 0x54, | ||
277 | 0x92, | ||
278 | 0x10, | ||
279 | 0x00, | ||
280 | 0x00, | ||
281 | 0x00, | ||
282 | 0x00, | ||
283 | |||
284 | 0x00, | ||
285 | 0x00, | ||
286 | 0x00, | ||
287 | 0x80, | ||
288 | 0xc0, | ||
289 | 0xe0, | ||
290 | 0xb8, | ||
291 | 0x8e, | ||
292 | 0xb8, | ||
293 | 0xe0, | ||
294 | 0xc0, | ||
295 | 0x80, | ||
296 | 0x00, | ||
297 | 0x00, | ||
298 | 0x00, | ||
299 | 0x00, | ||
300 | |||
301 | 0x00, | ||
302 | 0x00, | ||
303 | 0x00, | ||
304 | 0x02, | ||
305 | 0x06, | ||
306 | 0x0e, | ||
307 | 0x3a, | ||
308 | 0xe2, | ||
309 | 0x3a, | ||
310 | 0x0e, | ||
311 | 0x06, | ||
312 | 0x02, | ||
313 | 0x00, | ||
314 | 0x00, | ||
315 | 0x00, | ||
316 | 0x00, | ||
317 | |||
318 | 0x00, | ||
319 | 0x00, | ||
320 | 0x10, | ||
321 | 0x38, | ||
322 | 0x7c, | ||
323 | 0xd6, | ||
324 | 0x10, | ||
325 | 0x10, | ||
326 | 0x10, | ||
327 | 0x10, | ||
328 | 0xd6, | ||
329 | 0x7c, | ||
330 | 0x38, | ||
331 | 0x10, | ||
332 | 0x00, | ||
333 | 0x00, | ||
334 | |||
335 | 0x00, | ||
336 | 0x42, | ||
337 | 0xe7, | ||
338 | 0xe7, | ||
339 | 0xe7, | ||
340 | 0xe7, | ||
341 | 0x42, | ||
342 | 0x42, | ||
343 | 0x42, | ||
344 | 0x00, | ||
345 | 0x66, | ||
346 | 0x66, | ||
347 | 0x66, | ||
348 | 0x00, | ||
349 | 0x00, | ||
350 | 0x00, | ||
351 | |||
352 | 0x00, | ||
353 | 0x7f, | ||
354 | 0xca, | ||
355 | 0xca, | ||
356 | 0xca, | ||
357 | 0xca, | ||
358 | 0x7a, | ||
359 | 0x0a, | ||
360 | 0x0a, | ||
361 | 0x0a, | ||
362 | 0x0a, | ||
363 | 0x0a, | ||
364 | 0x1b, | ||
365 | 0x00, | ||
366 | 0x00, | ||
367 | 0x00, | ||
368 | |||
369 | 0x00, | ||
370 | 0x1e, | ||
371 | 0x31, | ||
372 | 0x78, | ||
373 | 0xcc, | ||
374 | 0xc6, | ||
375 | 0xc3, | ||
376 | 0x63, | ||
377 | 0x33, | ||
378 | 0x1e, | ||
379 | 0x8c, | ||
380 | 0x78, | ||
381 | 0x00, | ||
382 | 0x00, | ||
383 | 0x00, | ||
384 | 0x00, | ||
385 | |||
386 | 0x00, | ||
387 | 0x00, | ||
388 | 0x00, | ||
389 | 0x00, | ||
390 | 0x00, | ||
391 | 0x00, | ||
392 | 0x00, | ||
393 | 0x00, | ||
394 | 0xfe, | ||
395 | 0xfe, | ||
396 | 0xfe, | ||
397 | 0xfe, | ||
398 | 0x00, | ||
399 | 0x00, | ||
400 | 0x00, | ||
401 | 0x00, | ||
402 | |||
403 | 0x00, | ||
404 | 0x00, | ||
405 | 0x10, | ||
406 | 0x38, | ||
407 | 0x7c, | ||
408 | 0xd6, | ||
409 | 0x10, | ||
410 | 0x10, | ||
411 | 0x10, | ||
412 | 0x10, | ||
413 | 0xd6, | ||
414 | 0x7c, | ||
415 | 0x38, | ||
416 | 0x10, | ||
417 | 0xfe, | ||
418 | 0x00, | ||
419 | |||
420 | 0x00, | ||
421 | 0x00, | ||
422 | 0x10, | ||
423 | 0x38, | ||
424 | 0x7c, | ||
425 | 0xd6, | ||
426 | 0x10, | ||
427 | 0x10, | ||
428 | 0x10, | ||
429 | 0x10, | ||
430 | 0x10, | ||
431 | 0x10, | ||
432 | 0x10, | ||
433 | 0x10, | ||
434 | 0x00, | ||
435 | 0x00, | ||
436 | |||
437 | 0x00, | ||
438 | 0x00, | ||
439 | 0x10, | ||
440 | 0x10, | ||
441 | 0x10, | ||
442 | 0x10, | ||
443 | 0x10, | ||
444 | 0x10, | ||
445 | 0x10, | ||
446 | 0x10, | ||
447 | 0xd6, | ||
448 | 0x7c, | ||
449 | 0x38, | ||
450 | 0x10, | ||
451 | 0x00, | ||
452 | 0x00, | ||
453 | |||
454 | 0x00, | ||
455 | 0x00, | ||
456 | 0x00, | ||
457 | 0x00, | ||
458 | 0x00, | ||
459 | 0x08, | ||
460 | 0x0c, | ||
461 | 0x06, | ||
462 | 0xff, | ||
463 | 0x06, | ||
464 | 0x0c, | ||
465 | 0x08, | ||
466 | 0x00, | ||
467 | 0x00, | ||
468 | 0x00, | ||
469 | 0x00, | ||
470 | |||
471 | 0x00, | ||
472 | 0x00, | ||
473 | 0x00, | ||
474 | 0x00, | ||
475 | 0x00, | ||
476 | 0x10, | ||
477 | 0x30, | ||
478 | 0x60, | ||
479 | 0xff, | ||
480 | 0x60, | ||
481 | 0x30, | ||
482 | 0x10, | ||
483 | 0x00, | ||
484 | 0x00, | ||
485 | 0x00, | ||
486 | 0x00, | ||
487 | |||
488 | 0x22, | ||
489 | 0x44, | ||
490 | 0x88, | ||
491 | 0xcc, | ||
492 | 0xee, | ||
493 | 0x44, | ||
494 | 0x00, | ||
495 | 0x00, | ||
496 | 0x00, | ||
497 | 0x00, | ||
498 | 0x00, | ||
499 | 0x00, | ||
500 | 0x00, | ||
501 | 0x00, | ||
502 | 0x00, | ||
503 | 0x00, | ||
504 | |||
505 | 0x00, | ||
506 | 0x00, | ||
507 | 0x00, | ||
508 | 0x00, | ||
509 | 0x00, | ||
510 | 0x24, | ||
511 | 0x42, | ||
512 | 0xff, | ||
513 | 0x42, | ||
514 | 0x24, | ||
515 | 0x00, | ||
516 | 0x00, | ||
517 | 0x00, | ||
518 | 0x00, | ||
519 | 0x00, | ||
520 | 0x00, | ||
521 | |||
522 | 0x00, | ||
523 | 0x00, | ||
524 | 0x00, | ||
525 | 0x10, | ||
526 | 0x38, | ||
527 | 0x38, | ||
528 | 0x6c, | ||
529 | 0x6c, | ||
530 | 0xc6, | ||
531 | 0xfe, | ||
532 | 0x00, | ||
533 | 0x00, | ||
534 | 0x00, | ||
535 | 0x00, | ||
536 | 0x00, | ||
537 | 0x00, | ||
538 | |||
539 | 0x00, | ||
540 | 0x00, | ||
541 | 0x00, | ||
542 | 0xfe, | ||
543 | 0xc6, | ||
544 | 0x6c, | ||
545 | 0x6c, | ||
546 | 0x38, | ||
547 | 0x38, | ||
548 | 0x10, | ||
549 | 0x00, | ||
550 | 0x00, | ||
551 | 0x00, | ||
552 | 0x00, | ||
553 | 0x00, | ||
554 | 0x00, | ||
555 | |||
556 | 0x00, | ||
557 | 0x00, | ||
558 | 0x00, | ||
559 | 0x00, | ||
560 | 0x00, | ||
561 | 0x00, | ||
562 | 0x00, | ||
563 | 0x00, | ||
564 | 0x00, | ||
565 | 0x00, | ||
566 | 0x00, | ||
567 | 0x00, | ||
568 | 0x00, | ||
569 | 0x00, | ||
570 | 0x00, | ||
571 | 0x00, | ||
572 | |||
573 | 0x00, | ||
574 | 0x18, | ||
575 | 0x3c, | ||
576 | 0x3c, | ||
577 | 0x3c, | ||
578 | 0x3c, | ||
579 | 0x18, | ||
580 | 0x18, | ||
581 | 0x18, | ||
582 | 0x10, | ||
583 | 0x00, | ||
584 | 0x18, | ||
585 | 0x18, | ||
586 | 0x00, | ||
587 | 0x00, | ||
588 | 0x00, | ||
589 | |||
590 | 0x22, | ||
591 | 0x77, | ||
592 | 0x33, | ||
593 | 0x11, | ||
594 | 0x22, | ||
595 | 0x44, | ||
596 | 0x00, | ||
597 | 0x00, | ||
598 | 0x00, | ||
599 | 0x00, | ||
600 | 0x00, | ||
601 | 0x00, | ||
602 | 0x00, | ||
603 | 0x00, | ||
604 | 0x00, | ||
605 | 0x00, | ||
606 | |||
607 | 0x00, | ||
608 | 0x00, | ||
609 | 0x12, | ||
610 | 0x12, | ||
611 | 0x12, | ||
612 | 0x7f, | ||
613 | 0x24, | ||
614 | 0x24, | ||
615 | 0x24, | ||
616 | 0xfe, | ||
617 | 0x48, | ||
618 | 0x48, | ||
619 | 0x48, | ||
620 | 0x00, | ||
621 | 0x00, | ||
622 | 0x00, | ||
623 | |||
624 | 0x10, | ||
625 | 0x10, | ||
626 | 0x7c, | ||
627 | 0xd2, | ||
628 | 0xd0, | ||
629 | 0xd0, | ||
630 | 0xd0, | ||
631 | 0x7c, | ||
632 | 0x16, | ||
633 | 0x16, | ||
634 | 0x16, | ||
635 | 0x96, | ||
636 | 0x7c, | ||
637 | 0x10, | ||
638 | 0x10, | ||
639 | 0x00, | ||
640 | |||
641 | 0x00, | ||
642 | 0x42, | ||
643 | 0xbe, | ||
644 | 0x44, | ||
645 | 0x0c, | ||
646 | 0x08, | ||
647 | 0x18, | ||
648 | 0x10, | ||
649 | 0x30, | ||
650 | 0x20, | ||
651 | 0x64, | ||
652 | 0x4a, | ||
653 | 0xc4, | ||
654 | 0x00, | ||
655 | 0x00, | ||
656 | 0x00, | ||
657 | |||
658 | 0x00, | ||
659 | 0x38, | ||
660 | 0x6c, | ||
661 | 0x6c, | ||
662 | 0x6c, | ||
663 | 0x38, | ||
664 | 0x37, | ||
665 | 0x72, | ||
666 | 0xdc, | ||
667 | 0xcc, | ||
668 | 0xcc, | ||
669 | 0xcc, | ||
670 | 0x77, | ||
671 | 0x00, | ||
672 | 0x00, | ||
673 | 0x00, | ||
674 | |||
675 | 0x10, | ||
676 | 0x38, | ||
677 | 0x18, | ||
678 | 0x08, | ||
679 | 0x10, | ||
680 | 0x20, | ||
681 | 0x00, | ||
682 | 0x00, | ||
683 | 0x00, | ||
684 | 0x00, | ||
685 | 0x00, | ||
686 | 0x00, | ||
687 | 0x00, | ||
688 | 0x00, | ||
689 | 0x00, | ||
690 | 0x00, | ||
691 | |||
692 | 0x00, | ||
693 | 0x04, | ||
694 | 0x08, | ||
695 | 0x10, | ||
696 | 0x10, | ||
697 | 0x30, | ||
698 | 0x30, | ||
699 | 0x30, | ||
700 | 0x30, | ||
701 | 0x30, | ||
702 | 0x10, | ||
703 | 0x10, | ||
704 | 0x08, | ||
705 | 0x04, | ||
706 | 0x00, | ||
707 | 0x00, | ||
708 | |||
709 | 0x00, | ||
710 | 0x20, | ||
711 | 0x10, | ||
712 | 0x08, | ||
713 | 0x08, | ||
714 | 0x0c, | ||
715 | 0x0c, | ||
716 | 0x0c, | ||
717 | 0x0c, | ||
718 | 0x0c, | ||
719 | 0x08, | ||
720 | 0x08, | ||
721 | 0x10, | ||
722 | 0x20, | ||
723 | 0x00, | ||
724 | 0x00, | ||
725 | |||
726 | 0x00, | ||
727 | 0x00, | ||
728 | 0x00, | ||
729 | 0x00, | ||
730 | 0x44, | ||
731 | 0x28, | ||
732 | 0x38, | ||
733 | 0xfe, | ||
734 | 0x38, | ||
735 | 0x28, | ||
736 | 0x44, | ||
737 | 0x00, | ||
738 | 0x00, | ||
739 | 0x00, | ||
740 | 0x00, | ||
741 | 0x00, | ||
742 | |||
743 | 0x00, | ||
744 | 0x00, | ||
745 | 0x00, | ||
746 | 0x00, | ||
747 | 0x00, | ||
748 | 0x18, | ||
749 | 0x18, | ||
750 | 0x7e, | ||
751 | 0x18, | ||
752 | 0x18, | ||
753 | 0x00, | ||
754 | 0x00, | ||
755 | 0x00, | ||
756 | 0x00, | ||
757 | 0x00, | ||
758 | 0x00, | ||
759 | |||
760 | 0x00, | ||
761 | 0x00, | ||
762 | 0x00, | ||
763 | 0x00, | ||
764 | 0x00, | ||
765 | 0x00, | ||
766 | 0x00, | ||
767 | 0x00, | ||
768 | 0x00, | ||
769 | 0x00, | ||
770 | 0x10, | ||
771 | 0x38, | ||
772 | 0x18, | ||
773 | 0x08, | ||
774 | 0x10, | ||
775 | 0x20, | ||
776 | |||
777 | 0x00, | ||
778 | 0x00, | ||
779 | 0x00, | ||
780 | 0x00, | ||
781 | 0x00, | ||
782 | 0x00, | ||
783 | 0x00, | ||
784 | 0x7e, | ||
785 | 0x00, | ||
786 | 0x00, | ||
787 | 0x00, | ||
788 | 0x00, | ||
789 | 0x00, | ||
790 | 0x00, | ||
791 | 0x00, | ||
792 | 0x00, | ||
793 | |||
794 | 0x00, | ||
795 | 0x00, | ||
796 | 0x00, | ||
797 | 0x00, | ||
798 | 0x00, | ||
799 | 0x00, | ||
800 | 0x00, | ||
801 | 0x00, | ||
802 | 0x00, | ||
803 | 0x00, | ||
804 | 0x10, | ||
805 | 0x38, | ||
806 | 0x10, | ||
807 | 0x00, | ||
808 | 0x00, | ||
809 | 0x00, | ||
810 | |||
811 | 0x00, | ||
812 | 0x06, | ||
813 | 0x06, | ||
814 | 0x0c, | ||
815 | 0x0c, | ||
816 | 0x18, | ||
817 | 0x18, | ||
818 | 0x30, | ||
819 | 0x30, | ||
820 | 0x60, | ||
821 | 0x60, | ||
822 | 0xc0, | ||
823 | 0xc0, | ||
824 | 0x00, | ||
825 | 0x00, | ||
826 | 0x00, | ||
827 | |||
828 | 0x00, | ||
829 | 0x00, | ||
830 | 0x00, | ||
831 | 0x00, | ||
832 | 0x3c, | ||
833 | 0x46, | ||
834 | 0xc6, | ||
835 | 0xc6, | ||
836 | 0xc6, | ||
837 | 0xc6, | ||
838 | 0xc6, | ||
839 | 0xc4, | ||
840 | 0x78, | ||
841 | 0x00, | ||
842 | 0x00, | ||
843 | 0x00, | ||
844 | |||
845 | 0x00, | ||
846 | 0x00, | ||
847 | 0x00, | ||
848 | 0x00, | ||
849 | 0x08, | ||
850 | 0x18, | ||
851 | 0x78, | ||
852 | 0x18, | ||
853 | 0x18, | ||
854 | 0x18, | ||
855 | 0x18, | ||
856 | 0x18, | ||
857 | 0x7e, | ||
858 | 0x00, | ||
859 | 0x00, | ||
860 | 0x00, | ||
861 | |||
862 | 0x00, | ||
863 | 0x00, | ||
864 | 0x00, | ||
865 | 0x00, | ||
866 | 0x7c, | ||
867 | 0x86, | ||
868 | 0x06, | ||
869 | 0x0c, | ||
870 | 0x18, | ||
871 | 0x20, | ||
872 | 0x40, | ||
873 | 0xc1, | ||
874 | 0xfe, | ||
875 | 0x00, | ||
876 | 0x00, | ||
877 | 0x00, | ||
878 | |||
879 | 0x00, | ||
880 | 0x00, | ||
881 | 0x00, | ||
882 | 0x00, | ||
883 | 0x3c, | ||
884 | 0x46, | ||
885 | 0x04, | ||
886 | 0x08, | ||
887 | 0x1c, | ||
888 | 0x06, | ||
889 | 0x06, | ||
890 | 0x06, | ||
891 | 0x06, | ||
892 | 0x0c, | ||
893 | 0x70, | ||
894 | 0x00, | ||
895 | |||
896 | 0x00, | ||
897 | 0x00, | ||
898 | 0x00, | ||
899 | 0x00, | ||
900 | 0x04, | ||
901 | 0x08, | ||
902 | 0x10, | ||
903 | 0x2c, | ||
904 | 0x4c, | ||
905 | 0x8c, | ||
906 | 0x8c, | ||
907 | 0xfe, | ||
908 | 0x0c, | ||
909 | 0x0c, | ||
910 | 0x0c, | ||
911 | 0x00, | ||
912 | |||
913 | 0x00, | ||
914 | 0x00, | ||
915 | 0x00, | ||
916 | 0x02, | ||
917 | 0x3c, | ||
918 | 0x20, | ||
919 | 0x20, | ||
920 | 0x70, | ||
921 | 0x0c, | ||
922 | 0x06, | ||
923 | 0x06, | ||
924 | 0x06, | ||
925 | 0x06, | ||
926 | 0x0c, | ||
927 | 0x70, | ||
928 | 0x00, | ||
929 | |||
930 | 0x00, | ||
931 | 0x00, | ||
932 | 0x18, | ||
933 | 0x20, | ||
934 | 0x40, | ||
935 | 0xc0, | ||
936 | 0xdc, | ||
937 | 0xc6, | ||
938 | 0xc6, | ||
939 | 0xc6, | ||
940 | 0xc6, | ||
941 | 0x44, | ||
942 | 0x38, | ||
943 | 0x00, | ||
944 | 0x00, | ||
945 | 0x00, | ||
946 | |||
947 | 0x00, | ||
948 | 0x00, | ||
949 | 0x00, | ||
950 | 0x40, | ||
951 | 0x7e, | ||
952 | 0x82, | ||
953 | 0x06, | ||
954 | 0x04, | ||
955 | 0x0c, | ||
956 | 0x18, | ||
957 | 0x18, | ||
958 | 0x30, | ||
959 | 0x30, | ||
960 | 0x30, | ||
961 | 0x30, | ||
962 | 0x00, | ||
963 | |||
964 | 0x00, | ||
965 | 0x00, | ||
966 | 0x7c, | ||
967 | 0xc6, | ||
968 | 0xc6, | ||
969 | 0x64, | ||
970 | 0x38, | ||
971 | 0x4c, | ||
972 | 0xc6, | ||
973 | 0xc6, | ||
974 | 0xc6, | ||
975 | 0xc6, | ||
976 | 0x7c, | ||
977 | 0x00, | ||
978 | 0x00, | ||
979 | 0x00, | ||
980 | |||
981 | 0x00, | ||
982 | 0x00, | ||
983 | 0x00, | ||
984 | 0x00, | ||
985 | 0x38, | ||
986 | 0x44, | ||
987 | 0xc6, | ||
988 | 0xc6, | ||
989 | 0x76, | ||
990 | 0x06, | ||
991 | 0x06, | ||
992 | 0x06, | ||
993 | 0x04, | ||
994 | 0x08, | ||
995 | 0x30, | ||
996 | 0x00, | ||
997 | |||
998 | 0x00, | ||
999 | 0x00, | ||
1000 | 0x00, | ||
1001 | 0x00, | ||
1002 | 0x10, | ||
1003 | 0x38, | ||
1004 | 0x10, | ||
1005 | 0x00, | ||
1006 | 0x00, | ||
1007 | 0x00, | ||
1008 | 0x10, | ||
1009 | 0x38, | ||
1010 | 0x10, | ||
1011 | 0x00, | ||
1012 | 0x00, | ||
1013 | 0x00, | ||
1014 | |||
1015 | 0x00, | ||
1016 | 0x00, | ||
1017 | 0x00, | ||
1018 | 0x00, | ||
1019 | 0x10, | ||
1020 | 0x38, | ||
1021 | 0x10, | ||
1022 | 0x00, | ||
1023 | 0x00, | ||
1024 | 0x00, | ||
1025 | 0x10, | ||
1026 | 0x38, | ||
1027 | 0x18, | ||
1028 | 0x08, | ||
1029 | 0x10, | ||
1030 | 0x20, | ||
1031 | |||
1032 | 0x00, | ||
1033 | 0x06, | ||
1034 | 0x0c, | ||
1035 | 0x18, | ||
1036 | 0x30, | ||
1037 | 0x60, | ||
1038 | 0xa0, | ||
1039 | 0xa0, | ||
1040 | 0x60, | ||
1041 | 0x30, | ||
1042 | 0x18, | ||
1043 | 0x0c, | ||
1044 | 0x06, | ||
1045 | 0x00, | ||
1046 | 0x00, | ||
1047 | 0x00, | ||
1048 | |||
1049 | 0x00, | ||
1050 | 0x00, | ||
1051 | 0x00, | ||
1052 | 0x00, | ||
1053 | 0x00, | ||
1054 | 0x7e, | ||
1055 | 0x00, | ||
1056 | 0x00, | ||
1057 | 0x7e, | ||
1058 | 0x00, | ||
1059 | 0x00, | ||
1060 | 0x00, | ||
1061 | 0x00, | ||
1062 | 0x00, | ||
1063 | 0x00, | ||
1064 | 0x00, | ||
1065 | |||
1066 | 0x00, | ||
1067 | 0x60, | ||
1068 | 0x30, | ||
1069 | 0x18, | ||
1070 | 0x0c, | ||
1071 | 0x06, | ||
1072 | 0x05, | ||
1073 | 0x05, | ||
1074 | 0x06, | ||
1075 | 0x0c, | ||
1076 | 0x18, | ||
1077 | 0x30, | ||
1078 | 0x60, | ||
1079 | 0x00, | ||
1080 | 0x00, | ||
1081 | 0x00, | ||
1082 | |||
1083 | 0x00, | ||
1084 | 0x7c, | ||
1085 | 0x86, | ||
1086 | 0xc6, | ||
1087 | 0x06, | ||
1088 | 0x04, | ||
1089 | 0x08, | ||
1090 | 0x10, | ||
1091 | 0x10, | ||
1092 | 0x18, | ||
1093 | 0x00, | ||
1094 | 0x18, | ||
1095 | 0x18, | ||
1096 | 0x00, | ||
1097 | 0x00, | ||
1098 | 0x00, | ||
1099 | |||
1100 | 0x00, | ||
1101 | 0x00, | ||
1102 | 0x3c, | ||
1103 | 0x46, | ||
1104 | 0xc6, | ||
1105 | 0xce, | ||
1106 | 0xd6, | ||
1107 | 0xd6, | ||
1108 | 0xd6, | ||
1109 | 0xdc, | ||
1110 | 0xc0, | ||
1111 | 0xc4, | ||
1112 | 0x78, | ||
1113 | 0x00, | ||
1114 | 0x00, | ||
1115 | 0x00, | ||
1116 | |||
1117 | 0x00, | ||
1118 | 0x18, | ||
1119 | 0x18, | ||
1120 | 0x18, | ||
1121 | 0x3c, | ||
1122 | 0x2c, | ||
1123 | 0x2c, | ||
1124 | 0x2c, | ||
1125 | 0x7e, | ||
1126 | 0x46, | ||
1127 | 0x46, | ||
1128 | 0x46, | ||
1129 | 0xef, | ||
1130 | 0x00, | ||
1131 | 0x00, | ||
1132 | 0x00, | ||
1133 | |||
1134 | 0x00, | ||
1135 | 0xfc, | ||
1136 | 0x66, | ||
1137 | 0x66, | ||
1138 | 0x66, | ||
1139 | 0x66, | ||
1140 | 0x7c, | ||
1141 | 0x66, | ||
1142 | 0x66, | ||
1143 | 0x66, | ||
1144 | 0x66, | ||
1145 | 0x66, | ||
1146 | 0xfc, | ||
1147 | 0x00, | ||
1148 | 0x00, | ||
1149 | 0x00, | ||
1150 | |||
1151 | 0x00, | ||
1152 | 0x3a, | ||
1153 | 0x66, | ||
1154 | 0xc2, | ||
1155 | 0xc0, | ||
1156 | 0xc0, | ||
1157 | 0xc0, | ||
1158 | 0xc0, | ||
1159 | 0xc0, | ||
1160 | 0xc0, | ||
1161 | 0xc0, | ||
1162 | 0x62, | ||
1163 | 0x3c, | ||
1164 | 0x00, | ||
1165 | 0x00, | ||
1166 | 0x00, | ||
1167 | |||
1168 | 0x00, | ||
1169 | 0xfc, | ||
1170 | 0x66, | ||
1171 | 0x63, | ||
1172 | 0x63, | ||
1173 | 0x63, | ||
1174 | 0x63, | ||
1175 | 0x63, | ||
1176 | 0x63, | ||
1177 | 0x63, | ||
1178 | 0x63, | ||
1179 | 0x66, | ||
1180 | 0xfc, | ||
1181 | 0x00, | ||
1182 | 0x00, | ||
1183 | 0x00, | ||
1184 | |||
1185 | 0x00, | ||
1186 | 0xff, | ||
1187 | 0x61, | ||
1188 | 0x60, | ||
1189 | 0x60, | ||
1190 | 0x64, | ||
1191 | 0x7c, | ||
1192 | 0x64, | ||
1193 | 0x60, | ||
1194 | 0x60, | ||
1195 | 0x60, | ||
1196 | 0x61, | ||
1197 | 0xfe, | ||
1198 | 0x00, | ||
1199 | 0x00, | ||
1200 | 0x00, | ||
1201 | |||
1202 | 0x00, | ||
1203 | 0xff, | ||
1204 | 0x61, | ||
1205 | 0x61, | ||
1206 | 0x60, | ||
1207 | 0x64, | ||
1208 | 0x7c, | ||
1209 | 0x64, | ||
1210 | 0x60, | ||
1211 | 0x60, | ||
1212 | 0x60, | ||
1213 | 0x60, | ||
1214 | 0xf0, | ||
1215 | 0x00, | ||
1216 | 0x00, | ||
1217 | 0x00, | ||
1218 | |||
1219 | 0x00, | ||
1220 | 0x3a, | ||
1221 | 0x66, | ||
1222 | 0xc2, | ||
1223 | 0xc0, | ||
1224 | 0xc0, | ||
1225 | 0xc0, | ||
1226 | 0xcf, | ||
1227 | 0xc6, | ||
1228 | 0xc6, | ||
1229 | 0xc6, | ||
1230 | 0x66, | ||
1231 | 0x38, | ||
1232 | 0x00, | ||
1233 | 0x00, | ||
1234 | 0x00, | ||
1235 | |||
1236 | 0x00, | ||
1237 | 0xf7, | ||
1238 | 0x62, | ||
1239 | 0x62, | ||
1240 | 0x62, | ||
1241 | 0x62, | ||
1242 | 0x7e, | ||
1243 | 0x62, | ||
1244 | 0x62, | ||
1245 | 0x62, | ||
1246 | 0x62, | ||
1247 | 0x62, | ||
1248 | 0xf7, | ||
1249 | 0x00, | ||
1250 | 0x00, | ||
1251 | 0x00, | ||
1252 | |||
1253 | 0x00, | ||
1254 | 0x3c, | ||
1255 | 0x18, | ||
1256 | 0x18, | ||
1257 | 0x18, | ||
1258 | 0x18, | ||
1259 | 0x18, | ||
1260 | 0x18, | ||
1261 | 0x18, | ||
1262 | 0x18, | ||
1263 | 0x18, | ||
1264 | 0x18, | ||
1265 | 0x3c, | ||
1266 | 0x00, | ||
1267 | 0x00, | ||
1268 | 0x00, | ||
1269 | |||
1270 | 0x00, | ||
1271 | 0x1e, | ||
1272 | 0x0c, | ||
1273 | 0x0c, | ||
1274 | 0x0c, | ||
1275 | 0x0c, | ||
1276 | 0x0c, | ||
1277 | 0x0c, | ||
1278 | 0x0c, | ||
1279 | 0x0c, | ||
1280 | 0x0c, | ||
1281 | 0x0c, | ||
1282 | 0x0c, | ||
1283 | 0x0c, | ||
1284 | 0x08, | ||
1285 | 0xf0, | ||
1286 | |||
1287 | 0x00, | ||
1288 | 0xf7, | ||
1289 | 0x64, | ||
1290 | 0x6c, | ||
1291 | 0x68, | ||
1292 | 0x68, | ||
1293 | 0x78, | ||
1294 | 0x6c, | ||
1295 | 0x6c, | ||
1296 | 0x6c, | ||
1297 | 0x66, | ||
1298 | 0x66, | ||
1299 | 0xf7, | ||
1300 | 0x00, | ||
1301 | 0x00, | ||
1302 | 0x00, | ||
1303 | |||
1304 | 0x00, | ||
1305 | 0xf8, | ||
1306 | 0x60, | ||
1307 | 0x60, | ||
1308 | 0x60, | ||
1309 | 0x60, | ||
1310 | 0x60, | ||
1311 | 0x60, | ||
1312 | 0x60, | ||
1313 | 0x60, | ||
1314 | 0x60, | ||
1315 | 0x61, | ||
1316 | 0xfe, | ||
1317 | 0x00, | ||
1318 | 0x00, | ||
1319 | 0x00, | ||
1320 | |||
1321 | 0x00, | ||
1322 | 0xc3, | ||
1323 | 0x66, | ||
1324 | 0x76, | ||
1325 | 0x7e, | ||
1326 | 0x56, | ||
1327 | 0x56, | ||
1328 | 0x46, | ||
1329 | 0x46, | ||
1330 | 0x46, | ||
1331 | 0x46, | ||
1332 | 0x46, | ||
1333 | 0xef, | ||
1334 | 0x00, | ||
1335 | 0x00, | ||
1336 | 0x00, | ||
1337 | |||
1338 | 0x00, | ||
1339 | 0xe7, | ||
1340 | 0x62, | ||
1341 | 0x62, | ||
1342 | 0x72, | ||
1343 | 0x52, | ||
1344 | 0x5a, | ||
1345 | 0x4a, | ||
1346 | 0x4e, | ||
1347 | 0x46, | ||
1348 | 0x46, | ||
1349 | 0x42, | ||
1350 | 0xe2, | ||
1351 | 0x00, | ||
1352 | 0x00, | ||
1353 | 0x00, | ||
1354 | |||
1355 | 0x00, | ||
1356 | 0x3c, | ||
1357 | 0x66, | ||
1358 | 0xc3, | ||
1359 | 0xc3, | ||
1360 | 0xc3, | ||
1361 | 0xc3, | ||
1362 | 0xc3, | ||
1363 | 0xc3, | ||
1364 | 0xc3, | ||
1365 | 0xc3, | ||
1366 | 0x66, | ||
1367 | 0x3c, | ||
1368 | 0x00, | ||
1369 | 0x00, | ||
1370 | 0x00, | ||
1371 | |||
1372 | 0x00, | ||
1373 | 0xfc, | ||
1374 | 0x66, | ||
1375 | 0x66, | ||
1376 | 0x66, | ||
1377 | 0x66, | ||
1378 | 0x6c, | ||
1379 | 0x60, | ||
1380 | 0x60, | ||
1381 | 0x60, | ||
1382 | 0x60, | ||
1383 | 0x60, | ||
1384 | 0xf0, | ||
1385 | 0x00, | ||
1386 | 0x00, | ||
1387 | 0x00, | ||
1388 | |||
1389 | 0x00, | ||
1390 | 0x3c, | ||
1391 | 0x66, | ||
1392 | 0xc3, | ||
1393 | 0xc3, | ||
1394 | 0xc3, | ||
1395 | 0xc3, | ||
1396 | 0xc3, | ||
1397 | 0xc3, | ||
1398 | 0xc3, | ||
1399 | 0xc3, | ||
1400 | 0x66, | ||
1401 | 0x3c, | ||
1402 | 0x10, | ||
1403 | 0x39, | ||
1404 | 0x0e, | ||
1405 | |||
1406 | 0x00, | ||
1407 | 0xfc, | ||
1408 | 0x66, | ||
1409 | 0x66, | ||
1410 | 0x66, | ||
1411 | 0x66, | ||
1412 | 0x7c, | ||
1413 | 0x6c, | ||
1414 | 0x66, | ||
1415 | 0x66, | ||
1416 | 0x66, | ||
1417 | 0x66, | ||
1418 | 0xf3, | ||
1419 | 0x00, | ||
1420 | 0x00, | ||
1421 | 0x00, | ||
1422 | |||
1423 | 0x00, | ||
1424 | 0x7a, | ||
1425 | 0xc6, | ||
1426 | 0xc2, | ||
1427 | 0xc0, | ||
1428 | 0x70, | ||
1429 | 0x3c, | ||
1430 | 0x0e, | ||
1431 | 0x06, | ||
1432 | 0x06, | ||
1433 | 0x86, | ||
1434 | 0xc6, | ||
1435 | 0xbc, | ||
1436 | 0x00, | ||
1437 | 0x00, | ||
1438 | 0x00, | ||
1439 | |||
1440 | 0x00, | ||
1441 | 0xff, | ||
1442 | 0x99, | ||
1443 | 0x18, | ||
1444 | 0x18, | ||
1445 | 0x18, | ||
1446 | 0x18, | ||
1447 | 0x18, | ||
1448 | 0x18, | ||
1449 | 0x18, | ||
1450 | 0x18, | ||
1451 | 0x18, | ||
1452 | 0x3c, | ||
1453 | 0x00, | ||
1454 | 0x00, | ||
1455 | 0x00, | ||
1456 | |||
1457 | 0x00, | ||
1458 | 0xf7, | ||
1459 | 0x62, | ||
1460 | 0x62, | ||
1461 | 0x62, | ||
1462 | 0x62, | ||
1463 | 0x62, | ||
1464 | 0x62, | ||
1465 | 0x62, | ||
1466 | 0x62, | ||
1467 | 0x62, | ||
1468 | 0x62, | ||
1469 | 0x3c, | ||
1470 | 0x00, | ||
1471 | 0x00, | ||
1472 | 0x00, | ||
1473 | |||
1474 | 0x00, | ||
1475 | 0xf7, | ||
1476 | 0x62, | ||
1477 | 0x62, | ||
1478 | 0x62, | ||
1479 | 0x76, | ||
1480 | 0x34, | ||
1481 | 0x34, | ||
1482 | 0x34, | ||
1483 | 0x3c, | ||
1484 | 0x18, | ||
1485 | 0x18, | ||
1486 | 0x18, | ||
1487 | 0x00, | ||
1488 | 0x00, | ||
1489 | 0x00, | ||
1490 | |||
1491 | 0x00, | ||
1492 | 0xf7, | ||
1493 | 0x62, | ||
1494 | 0x62, | ||
1495 | 0x62, | ||
1496 | 0x62, | ||
1497 | 0x6a, | ||
1498 | 0x6a, | ||
1499 | 0x6a, | ||
1500 | 0x6a, | ||
1501 | 0x7e, | ||
1502 | 0x7e, | ||
1503 | 0x34, | ||
1504 | 0x00, | ||
1505 | 0x00, | ||
1506 | 0x00, | ||
1507 | |||
1508 | 0x00, | ||
1509 | 0xf7, | ||
1510 | 0x62, | ||
1511 | 0x62, | ||
1512 | 0x34, | ||
1513 | 0x34, | ||
1514 | 0x18, | ||
1515 | 0x18, | ||
1516 | 0x2c, | ||
1517 | 0x2c, | ||
1518 | 0x46, | ||
1519 | 0x46, | ||
1520 | 0xef, | ||
1521 | 0x00, | ||
1522 | 0x00, | ||
1523 | 0x00, | ||
1524 | |||
1525 | 0x00, | ||
1526 | 0xf7, | ||
1527 | 0x62, | ||
1528 | 0x62, | ||
1529 | 0x62, | ||
1530 | 0x34, | ||
1531 | 0x34, | ||
1532 | 0x18, | ||
1533 | 0x18, | ||
1534 | 0x18, | ||
1535 | 0x18, | ||
1536 | 0x18, | ||
1537 | 0x3c, | ||
1538 | 0x00, | ||
1539 | 0x00, | ||
1540 | 0x00, | ||
1541 | |||
1542 | 0x00, | ||
1543 | 0x7f, | ||
1544 | 0x46, | ||
1545 | 0x86, | ||
1546 | 0x0c, | ||
1547 | 0x0c, | ||
1548 | 0x18, | ||
1549 | 0x18, | ||
1550 | 0x30, | ||
1551 | 0x30, | ||
1552 | 0x61, | ||
1553 | 0x62, | ||
1554 | 0xfe, | ||
1555 | 0x00, | ||
1556 | 0x00, | ||
1557 | 0x00, | ||
1558 | |||
1559 | 0x00, | ||
1560 | 0x3c, | ||
1561 | 0x30, | ||
1562 | 0x30, | ||
1563 | 0x30, | ||
1564 | 0x30, | ||
1565 | 0x30, | ||
1566 | 0x30, | ||
1567 | 0x30, | ||
1568 | 0x30, | ||
1569 | 0x30, | ||
1570 | 0x30, | ||
1571 | 0x3c, | ||
1572 | 0x00, | ||
1573 | 0x00, | ||
1574 | 0x00, | ||
1575 | |||
1576 | 0x00, | ||
1577 | 0xc0, | ||
1578 | 0xc0, | ||
1579 | 0x60, | ||
1580 | 0x60, | ||
1581 | 0x30, | ||
1582 | 0x30, | ||
1583 | 0x18, | ||
1584 | 0x18, | ||
1585 | 0x0c, | ||
1586 | 0x0c, | ||
1587 | 0x06, | ||
1588 | 0x06, | ||
1589 | 0x00, | ||
1590 | 0x00, | ||
1591 | 0x00, | ||
1592 | |||
1593 | 0x00, | ||
1594 | 0x3c, | ||
1595 | 0x0c, | ||
1596 | 0x0c, | ||
1597 | 0x0c, | ||
1598 | 0x0c, | ||
1599 | 0x0c, | ||
1600 | 0x0c, | ||
1601 | 0x0c, | ||
1602 | 0x0c, | ||
1603 | 0x0c, | ||
1604 | 0x0c, | ||
1605 | 0x3c, | ||
1606 | 0x00, | ||
1607 | 0x00, | ||
1608 | 0x00, | ||
1609 | |||
1610 | 0x00, | ||
1611 | 0x10, | ||
1612 | 0x38, | ||
1613 | 0x4c, | ||
1614 | 0x86, | ||
1615 | 0x00, | ||
1616 | 0x00, | ||
1617 | 0x00, | ||
1618 | 0x00, | ||
1619 | 0x00, | ||
1620 | 0x00, | ||
1621 | 0x00, | ||
1622 | 0x00, | ||
1623 | 0x00, | ||
1624 | 0x00, | ||
1625 | 0x00, | ||
1626 | |||
1627 | 0x00, | ||
1628 | 0x00, | ||
1629 | 0x00, | ||
1630 | 0x00, | ||
1631 | 0x00, | ||
1632 | 0x00, | ||
1633 | 0x00, | ||
1634 | 0x00, | ||
1635 | 0x00, | ||
1636 | 0x00, | ||
1637 | 0x00, | ||
1638 | 0x00, | ||
1639 | 0x00, | ||
1640 | 0xff, | ||
1641 | 0x00, | ||
1642 | 0x00, | ||
1643 | |||
1644 | 0x00, | ||
1645 | 0x18, | ||
1646 | 0x20, | ||
1647 | 0x30, | ||
1648 | 0x38, | ||
1649 | 0x10, | ||
1650 | 0x00, | ||
1651 | 0x00, | ||
1652 | 0x00, | ||
1653 | 0x00, | ||
1654 | 0x00, | ||
1655 | 0x00, | ||
1656 | 0x00, | ||
1657 | 0x00, | ||
1658 | 0x00, | ||
1659 | 0x00, | ||
1660 | |||
1661 | 0x00, | ||
1662 | 0x00, | ||
1663 | 0x00, | ||
1664 | 0x00, | ||
1665 | 0x00, | ||
1666 | 0x78, | ||
1667 | 0x8c, | ||
1668 | 0x0c, | ||
1669 | 0x3c, | ||
1670 | 0xcc, | ||
1671 | 0xcc, | ||
1672 | 0xcd, | ||
1673 | 0x76, | ||
1674 | 0x00, | ||
1675 | 0x00, | ||
1676 | 0x00, | ||
1677 | |||
1678 | 0x00, | ||
1679 | 0x20, | ||
1680 | 0xe0, | ||
1681 | 0x60, | ||
1682 | 0x60, | ||
1683 | 0x6c, | ||
1684 | 0x76, | ||
1685 | 0x66, | ||
1686 | 0x66, | ||
1687 | 0x66, | ||
1688 | 0x66, | ||
1689 | 0x76, | ||
1690 | 0x6c, | ||
1691 | 0x00, | ||
1692 | 0x00, | ||
1693 | 0x00, | ||
1694 | |||
1695 | 0x00, | ||
1696 | 0x00, | ||
1697 | 0x00, | ||
1698 | 0x00, | ||
1699 | 0x00, | ||
1700 | 0x3c, | ||
1701 | 0x66, | ||
1702 | 0x60, | ||
1703 | 0x60, | ||
1704 | 0x60, | ||
1705 | 0x60, | ||
1706 | 0x62, | ||
1707 | 0x3c, | ||
1708 | 0x00, | ||
1709 | 0x00, | ||
1710 | 0x00, | ||
1711 | |||
1712 | 0x00, | ||
1713 | 0x04, | ||
1714 | 0x1c, | ||
1715 | 0x0c, | ||
1716 | 0x0c, | ||
1717 | 0x6c, | ||
1718 | 0xdc, | ||
1719 | 0xcc, | ||
1720 | 0xcc, | ||
1721 | 0xcc, | ||
1722 | 0xcc, | ||
1723 | 0xdc, | ||
1724 | 0x66, | ||
1725 | 0x00, | ||
1726 | 0x00, | ||
1727 | 0x00, | ||
1728 | |||
1729 | 0x00, | ||
1730 | 0x00, | ||
1731 | 0x00, | ||
1732 | 0x00, | ||
1733 | 0x00, | ||
1734 | 0x3c, | ||
1735 | 0x66, | ||
1736 | 0x7e, | ||
1737 | 0x60, | ||
1738 | 0x60, | ||
1739 | 0x60, | ||
1740 | 0x62, | ||
1741 | 0x3c, | ||
1742 | 0x00, | ||
1743 | 0x00, | ||
1744 | 0x00, | ||
1745 | |||
1746 | 0x00, | ||
1747 | 0x1e, | ||
1748 | 0x31, | ||
1749 | 0x33, | ||
1750 | 0x30, | ||
1751 | 0x30, | ||
1752 | 0x78, | ||
1753 | 0x30, | ||
1754 | 0x30, | ||
1755 | 0x30, | ||
1756 | 0x30, | ||
1757 | 0x30, | ||
1758 | 0x78, | ||
1759 | 0x00, | ||
1760 | 0x00, | ||
1761 | 0x00, | ||
1762 | |||
1763 | 0x00, | ||
1764 | 0x00, | ||
1765 | 0x00, | ||
1766 | 0x00, | ||
1767 | 0x00, | ||
1768 | 0x7b, | ||
1769 | 0xce, | ||
1770 | 0xcc, | ||
1771 | 0xcc, | ||
1772 | 0xcc, | ||
1773 | 0x78, | ||
1774 | 0x60, | ||
1775 | 0x7c, | ||
1776 | 0x86, | ||
1777 | 0xc6, | ||
1778 | 0x7c, | ||
1779 | |||
1780 | 0x00, | ||
1781 | 0x20, | ||
1782 | 0xe0, | ||
1783 | 0x60, | ||
1784 | 0x60, | ||
1785 | 0x6c, | ||
1786 | 0x76, | ||
1787 | 0x66, | ||
1788 | 0x66, | ||
1789 | 0x66, | ||
1790 | 0x66, | ||
1791 | 0x66, | ||
1792 | 0xf7, | ||
1793 | 0x00, | ||
1794 | 0x00, | ||
1795 | 0x00, | ||
1796 | |||
1797 | 0x00, | ||
1798 | 0x10, | ||
1799 | 0x38, | ||
1800 | 0x10, | ||
1801 | 0x00, | ||
1802 | 0x18, | ||
1803 | 0x38, | ||
1804 | 0x18, | ||
1805 | 0x18, | ||
1806 | 0x18, | ||
1807 | 0x18, | ||
1808 | 0x18, | ||
1809 | 0x3c, | ||
1810 | 0x00, | ||
1811 | 0x00, | ||
1812 | 0x00, | ||
1813 | |||
1814 | 0x00, | ||
1815 | 0x08, | ||
1816 | 0x1c, | ||
1817 | 0x08, | ||
1818 | 0x00, | ||
1819 | 0x0c, | ||
1820 | 0x1c, | ||
1821 | 0x0c, | ||
1822 | 0x0c, | ||
1823 | 0x0c, | ||
1824 | 0x0c, | ||
1825 | 0x0c, | ||
1826 | 0x6c, | ||
1827 | 0x4c, | ||
1828 | 0x38, | ||
1829 | 0x00, | ||
1830 | |||
1831 | 0x00, | ||
1832 | 0x20, | ||
1833 | 0xe0, | ||
1834 | 0x60, | ||
1835 | 0x60, | ||
1836 | 0x67, | ||
1837 | 0x66, | ||
1838 | 0x6c, | ||
1839 | 0x78, | ||
1840 | 0x6c, | ||
1841 | 0x6c, | ||
1842 | 0x66, | ||
1843 | 0xe7, | ||
1844 | 0x00, | ||
1845 | 0x00, | ||
1846 | 0x00, | ||
1847 | |||
1848 | 0x00, | ||
1849 | 0x08, | ||
1850 | 0x38, | ||
1851 | 0x18, | ||
1852 | 0x18, | ||
1853 | 0x18, | ||
1854 | 0x18, | ||
1855 | 0x18, | ||
1856 | 0x18, | ||
1857 | 0x18, | ||
1858 | 0x18, | ||
1859 | 0x18, | ||
1860 | 0x3c, | ||
1861 | 0x00, | ||
1862 | 0x00, | ||
1863 | 0x00, | ||
1864 | |||
1865 | 0x00, | ||
1866 | 0x00, | ||
1867 | 0x00, | ||
1868 | 0x00, | ||
1869 | 0x00, | ||
1870 | 0x6a, | ||
1871 | 0xfe, | ||
1872 | 0x6a, | ||
1873 | 0x6a, | ||
1874 | 0x6a, | ||
1875 | 0x62, | ||
1876 | 0x62, | ||
1877 | 0xf7, | ||
1878 | 0x00, | ||
1879 | 0x00, | ||
1880 | 0x00, | ||
1881 | |||
1882 | 0x00, | ||
1883 | 0x00, | ||
1884 | 0x00, | ||
1885 | 0x00, | ||
1886 | 0x00, | ||
1887 | 0x5c, | ||
1888 | 0xf6, | ||
1889 | 0x66, | ||
1890 | 0x66, | ||
1891 | 0x66, | ||
1892 | 0x66, | ||
1893 | 0x66, | ||
1894 | 0xf7, | ||
1895 | 0x00, | ||
1896 | 0x00, | ||
1897 | 0x00, | ||
1898 | |||
1899 | 0x00, | ||
1900 | 0x00, | ||
1901 | 0x00, | ||
1902 | 0x00, | ||
1903 | 0x00, | ||
1904 | 0x3c, | ||
1905 | 0x66, | ||
1906 | 0x66, | ||
1907 | 0x66, | ||
1908 | 0x66, | ||
1909 | 0x66, | ||
1910 | 0x66, | ||
1911 | 0x3c, | ||
1912 | 0x00, | ||
1913 | 0x00, | ||
1914 | 0x00, | ||
1915 | |||
1916 | 0x00, | ||
1917 | 0x00, | ||
1918 | 0x00, | ||
1919 | 0x00, | ||
1920 | 0x00, | ||
1921 | 0x5c, | ||
1922 | 0xe6, | ||
1923 | 0x66, | ||
1924 | 0x66, | ||
1925 | 0x66, | ||
1926 | 0x66, | ||
1927 | 0x66, | ||
1928 | 0x7c, | ||
1929 | 0x60, | ||
1930 | 0x60, | ||
1931 | 0xf0, | ||
1932 | |||
1933 | 0x00, | ||
1934 | 0x00, | ||
1935 | 0x00, | ||
1936 | 0x00, | ||
1937 | 0x00, | ||
1938 | 0x76, | ||
1939 | 0xcc, | ||
1940 | 0xcc, | ||
1941 | 0xcc, | ||
1942 | 0xcc, | ||
1943 | 0xcc, | ||
1944 | 0xcc, | ||
1945 | 0x7c, | ||
1946 | 0x0c, | ||
1947 | 0x0c, | ||
1948 | 0x1e, | ||
1949 | |||
1950 | 0x00, | ||
1951 | 0x00, | ||
1952 | 0x00, | ||
1953 | 0x00, | ||
1954 | 0x00, | ||
1955 | 0x5e, | ||
1956 | 0xf6, | ||
1957 | 0x60, | ||
1958 | 0x60, | ||
1959 | 0x60, | ||
1960 | 0x60, | ||
1961 | 0x60, | ||
1962 | 0xf0, | ||
1963 | 0x00, | ||
1964 | 0x00, | ||
1965 | 0x00, | ||
1966 | |||
1967 | 0x00, | ||
1968 | 0x00, | ||
1969 | 0x00, | ||
1970 | 0x00, | ||
1971 | 0x00, | ||
1972 | 0x7a, | ||
1973 | 0xc6, | ||
1974 | 0x72, | ||
1975 | 0x1c, | ||
1976 | 0x06, | ||
1977 | 0x86, | ||
1978 | 0xc6, | ||
1979 | 0xbc, | ||
1980 | 0x00, | ||
1981 | 0x00, | ||
1982 | 0x00, | ||
1983 | |||
1984 | 0x00, | ||
1985 | 0x00, | ||
1986 | 0x00, | ||
1987 | 0x10, | ||
1988 | 0x30, | ||
1989 | 0x7c, | ||
1990 | 0x30, | ||
1991 | 0x30, | ||
1992 | 0x30, | ||
1993 | 0x30, | ||
1994 | 0x30, | ||
1995 | 0x34, | ||
1996 | 0x18, | ||
1997 | 0x00, | ||
1998 | 0x00, | ||
1999 | 0x00, | ||
2000 | |||
2001 | 0x00, | ||
2002 | 0x00, | ||
2003 | 0x00, | ||
2004 | 0x00, | ||
2005 | 0x00, | ||
2006 | 0xee, | ||
2007 | 0x66, | ||
2008 | 0x66, | ||
2009 | 0x66, | ||
2010 | 0x66, | ||
2011 | 0x66, | ||
2012 | 0x67, | ||
2013 | 0x3a, | ||
2014 | 0x00, | ||
2015 | 0x00, | ||
2016 | 0x00, | ||
2017 | |||
2018 | 0x00, | ||
2019 | 0x00, | ||
2020 | 0x00, | ||
2021 | 0x00, | ||
2022 | 0x00, | ||
2023 | 0xf7, | ||
2024 | 0x62, | ||
2025 | 0x76, | ||
2026 | 0x34, | ||
2027 | 0x34, | ||
2028 | 0x3c, | ||
2029 | 0x18, | ||
2030 | 0x18, | ||
2031 | 0x00, | ||
2032 | 0x00, | ||
2033 | 0x00, | ||
2034 | |||
2035 | 0x00, | ||
2036 | 0x00, | ||
2037 | 0x00, | ||
2038 | 0x00, | ||
2039 | 0x00, | ||
2040 | 0xf7, | ||
2041 | 0x62, | ||
2042 | 0x6a, | ||
2043 | 0x6a, | ||
2044 | 0x6a, | ||
2045 | 0x6a, | ||
2046 | 0x7e, | ||
2047 | 0x24, | ||
2048 | 0x00, | ||
2049 | 0x00, | ||
2050 | 0x00, | ||
2051 | |||
2052 | 0x00, | ||
2053 | 0x00, | ||
2054 | 0x00, | ||
2055 | 0x00, | ||
2056 | 0x00, | ||
2057 | 0xf7, | ||
2058 | 0x62, | ||
2059 | 0x34, | ||
2060 | 0x18, | ||
2061 | 0x2c, | ||
2062 | 0x46, | ||
2063 | 0x46, | ||
2064 | 0xef, | ||
2065 | 0x00, | ||
2066 | 0x00, | ||
2067 | 0x00, | ||
2068 | |||
2069 | 0x00, | ||
2070 | 0x00, | ||
2071 | 0x00, | ||
2072 | 0x00, | ||
2073 | 0x00, | ||
2074 | 0xf7, | ||
2075 | 0x62, | ||
2076 | 0x62, | ||
2077 | 0x34, | ||
2078 | 0x34, | ||
2079 | 0x18, | ||
2080 | 0x18, | ||
2081 | 0x18, | ||
2082 | 0x10, | ||
2083 | 0xb0, | ||
2084 | 0xe0, | ||
2085 | |||
2086 | 0x00, | ||
2087 | 0x00, | ||
2088 | 0x00, | ||
2089 | 0x00, | ||
2090 | 0x00, | ||
2091 | 0xfe, | ||
2092 | 0x8c, | ||
2093 | 0x18, | ||
2094 | 0x30, | ||
2095 | 0x30, | ||
2096 | 0x60, | ||
2097 | 0xc2, | ||
2098 | 0xfe, | ||
2099 | 0x00, | ||
2100 | 0x00, | ||
2101 | 0x00, | ||
2102 | |||
2103 | 0x00, | ||
2104 | 0x0e, | ||
2105 | 0x18, | ||
2106 | 0x10, | ||
2107 | 0x10, | ||
2108 | 0x08, | ||
2109 | 0x70, | ||
2110 | 0x70, | ||
2111 | 0x08, | ||
2112 | 0x10, | ||
2113 | 0x10, | ||
2114 | 0x18, | ||
2115 | 0x0e, | ||
2116 | 0x00, | ||
2117 | 0x00, | ||
2118 | 0x00, | ||
2119 | |||
2120 | 0x18, | ||
2121 | 0x18, | ||
2122 | 0x18, | ||
2123 | 0x18, | ||
2124 | 0x18, | ||
2125 | 0x18, | ||
2126 | 0x18, | ||
2127 | 0x18, | ||
2128 | 0x18, | ||
2129 | 0x18, | ||
2130 | 0x18, | ||
2131 | 0x18, | ||
2132 | 0x18, | ||
2133 | 0x18, | ||
2134 | 0x00, | ||
2135 | 0x00, | ||
2136 | |||
2137 | 0x00, | ||
2138 | 0x70, | ||
2139 | 0x18, | ||
2140 | 0x08, | ||
2141 | 0x08, | ||
2142 | 0x10, | ||
2143 | 0x0e, | ||
2144 | 0x0e, | ||
2145 | 0x10, | ||
2146 | 0x08, | ||
2147 | 0x08, | ||
2148 | 0x18, | ||
2149 | 0x70, | ||
2150 | 0x00, | ||
2151 | 0x00, | ||
2152 | 0x00, | ||
2153 | |||
2154 | 0x00, | ||
2155 | 0x00, | ||
2156 | 0x00, | ||
2157 | 0x00, | ||
2158 | 0x00, | ||
2159 | 0x00, | ||
2160 | 0x76, | ||
2161 | 0xdc, | ||
2162 | 0x00, | ||
2163 | 0x00, | ||
2164 | 0x00, | ||
2165 | 0x00, | ||
2166 | 0x00, | ||
2167 | 0x00, | ||
2168 | 0x00, | ||
2169 | 0x00, | ||
2170 | |||
2171 | 0x00, | ||
2172 | 0x00, | ||
2173 | 0x00, | ||
2174 | 0x00, | ||
2175 | 0x10, | ||
2176 | 0x38, | ||
2177 | 0x6c, | ||
2178 | 0xc6, | ||
2179 | 0xc6, | ||
2180 | 0xc6, | ||
2181 | 0xfe, | ||
2182 | 0x00, | ||
2183 | 0x00, | ||
2184 | 0x00, | ||
2185 | 0x00, | ||
2186 | 0x00, | ||
2187 | |||
2188 | 0x00, | ||
2189 | 0x00, | ||
2190 | 0x3a, | ||
2191 | 0x66, | ||
2192 | 0xc2, | ||
2193 | 0xc0, | ||
2194 | 0xc0, | ||
2195 | 0xc0, | ||
2196 | 0xc0, | ||
2197 | 0xc0, | ||
2198 | 0x62, | ||
2199 | 0x3c, | ||
2200 | 0x18, | ||
2201 | 0x0c, | ||
2202 | 0x24, | ||
2203 | 0x18, | ||
2204 | |||
2205 | 0x00, | ||
2206 | 0x00, | ||
2207 | 0x66, | ||
2208 | 0x00, | ||
2209 | 0x00, | ||
2210 | 0xee, | ||
2211 | 0x66, | ||
2212 | 0x66, | ||
2213 | 0x66, | ||
2214 | 0x66, | ||
2215 | 0x66, | ||
2216 | 0x66, | ||
2217 | 0x3b, | ||
2218 | 0x00, | ||
2219 | 0x00, | ||
2220 | 0x00, | ||
2221 | |||
2222 | 0x00, | ||
2223 | 0x0c, | ||
2224 | 0x18, | ||
2225 | 0x20, | ||
2226 | 0x00, | ||
2227 | 0x3c, | ||
2228 | 0x66, | ||
2229 | 0x7e, | ||
2230 | 0x60, | ||
2231 | 0x60, | ||
2232 | 0x60, | ||
2233 | 0x62, | ||
2234 | 0x3c, | ||
2235 | 0x00, | ||
2236 | 0x00, | ||
2237 | 0x00, | ||
2238 | |||
2239 | 0x00, | ||
2240 | 0x30, | ||
2241 | 0x58, | ||
2242 | 0x8c, | ||
2243 | 0x00, | ||
2244 | 0x78, | ||
2245 | 0x8c, | ||
2246 | 0x0c, | ||
2247 | 0x3c, | ||
2248 | 0xcc, | ||
2249 | 0xcc, | ||
2250 | 0xcd, | ||
2251 | 0x76, | ||
2252 | 0x00, | ||
2253 | 0x00, | ||
2254 | 0x00, | ||
2255 | |||
2256 | 0x00, | ||
2257 | 0x00, | ||
2258 | 0x66, | ||
2259 | 0x00, | ||
2260 | 0x00, | ||
2261 | 0x78, | ||
2262 | 0x8c, | ||
2263 | 0x0c, | ||
2264 | 0x3c, | ||
2265 | 0xcc, | ||
2266 | 0xcc, | ||
2267 | 0xcd, | ||
2268 | 0x76, | ||
2269 | 0x00, | ||
2270 | 0x00, | ||
2271 | 0x00, | ||
2272 | |||
2273 | 0x00, | ||
2274 | 0x30, | ||
2275 | 0x18, | ||
2276 | 0x04, | ||
2277 | 0x00, | ||
2278 | 0x78, | ||
2279 | 0x8c, | ||
2280 | 0x0c, | ||
2281 | 0x3c, | ||
2282 | 0xcc, | ||
2283 | 0xcc, | ||
2284 | 0xcd, | ||
2285 | 0x76, | ||
2286 | 0x00, | ||
2287 | 0x00, | ||
2288 | 0x00, | ||
2289 | |||
2290 | 0x38, | ||
2291 | 0x44, | ||
2292 | 0x44, | ||
2293 | 0x38, | ||
2294 | 0x00, | ||
2295 | 0x78, | ||
2296 | 0x8c, | ||
2297 | 0x0c, | ||
2298 | 0x3c, | ||
2299 | 0xcc, | ||
2300 | 0xcc, | ||
2301 | 0xcd, | ||
2302 | 0x76, | ||
2303 | 0x00, | ||
2304 | 0x00, | ||
2305 | 0x00, | ||
2306 | |||
2307 | 0x00, | ||
2308 | 0x00, | ||
2309 | 0x00, | ||
2310 | 0x00, | ||
2311 | 0x00, | ||
2312 | 0x3c, | ||
2313 | 0x66, | ||
2314 | 0x60, | ||
2315 | 0x60, | ||
2316 | 0x60, | ||
2317 | 0x60, | ||
2318 | 0x62, | ||
2319 | 0x3c, | ||
2320 | 0x08, | ||
2321 | 0x24, | ||
2322 | 0x18, | ||
2323 | |||
2324 | 0x00, | ||
2325 | 0x18, | ||
2326 | 0x2c, | ||
2327 | 0x46, | ||
2328 | 0x00, | ||
2329 | 0x3c, | ||
2330 | 0x66, | ||
2331 | 0x7e, | ||
2332 | 0x60, | ||
2333 | 0x60, | ||
2334 | 0x60, | ||
2335 | 0x62, | ||
2336 | 0x3c, | ||
2337 | 0x00, | ||
2338 | 0x00, | ||
2339 | 0x00, | ||
2340 | |||
2341 | 0x00, | ||
2342 | 0x00, | ||
2343 | 0x66, | ||
2344 | 0x00, | ||
2345 | 0x00, | ||
2346 | 0x3c, | ||
2347 | 0x66, | ||
2348 | 0x7e, | ||
2349 | 0x60, | ||
2350 | 0x60, | ||
2351 | 0x60, | ||
2352 | 0x62, | ||
2353 | 0x3c, | ||
2354 | 0x00, | ||
2355 | 0x00, | ||
2356 | 0x00, | ||
2357 | |||
2358 | 0x00, | ||
2359 | 0x30, | ||
2360 | 0x18, | ||
2361 | 0x04, | ||
2362 | 0x00, | ||
2363 | 0x3c, | ||
2364 | 0x66, | ||
2365 | 0x7e, | ||
2366 | 0x60, | ||
2367 | 0x60, | ||
2368 | 0x60, | ||
2369 | 0x62, | ||
2370 | 0x3c, | ||
2371 | 0x00, | ||
2372 | 0x00, | ||
2373 | 0x00, | ||
2374 | |||
2375 | 0x00, | ||
2376 | 0x00, | ||
2377 | 0x66, | ||
2378 | 0x00, | ||
2379 | 0x00, | ||
2380 | 0x38, | ||
2381 | 0x18, | ||
2382 | 0x18, | ||
2383 | 0x18, | ||
2384 | 0x18, | ||
2385 | 0x18, | ||
2386 | 0x18, | ||
2387 | 0x3c, | ||
2388 | 0x00, | ||
2389 | 0x00, | ||
2390 | 0x00, | ||
2391 | |||
2392 | 0x00, | ||
2393 | 0x18, | ||
2394 | 0x2c, | ||
2395 | 0x46, | ||
2396 | 0x00, | ||
2397 | 0x38, | ||
2398 | 0x18, | ||
2399 | 0x18, | ||
2400 | 0x18, | ||
2401 | 0x18, | ||
2402 | 0x18, | ||
2403 | 0x18, | ||
2404 | 0x3c, | ||
2405 | 0x00, | ||
2406 | 0x00, | ||
2407 | 0x00, | ||
2408 | |||
2409 | 0x00, | ||
2410 | 0x60, | ||
2411 | 0x30, | ||
2412 | 0x08, | ||
2413 | 0x00, | ||
2414 | 0x38, | ||
2415 | 0x18, | ||
2416 | 0x18, | ||
2417 | 0x18, | ||
2418 | 0x18, | ||
2419 | 0x18, | ||
2420 | 0x18, | ||
2421 | 0x3c, | ||
2422 | 0x00, | ||
2423 | 0x00, | ||
2424 | 0x00, | ||
2425 | |||
2426 | 0x66, | ||
2427 | 0x18, | ||
2428 | 0x18, | ||
2429 | 0x18, | ||
2430 | 0x3c, | ||
2431 | 0x2c, | ||
2432 | 0x2c, | ||
2433 | 0x2c, | ||
2434 | 0x7e, | ||
2435 | 0x46, | ||
2436 | 0x46, | ||
2437 | 0x46, | ||
2438 | 0xef, | ||
2439 | 0x00, | ||
2440 | 0x00, | ||
2441 | 0x00, | ||
2442 | |||
2443 | 0x18, | ||
2444 | 0x24, | ||
2445 | 0x18, | ||
2446 | 0x18, | ||
2447 | 0x3c, | ||
2448 | 0x2c, | ||
2449 | 0x2c, | ||
2450 | 0x2c, | ||
2451 | 0x7e, | ||
2452 | 0x46, | ||
2453 | 0x46, | ||
2454 | 0x46, | ||
2455 | 0xef, | ||
2456 | 0x00, | ||
2457 | 0x00, | ||
2458 | 0x00, | ||
2459 | |||
2460 | 0x0c, | ||
2461 | 0x18, | ||
2462 | 0xff, | ||
2463 | 0x61, | ||
2464 | 0x60, | ||
2465 | 0x60, | ||
2466 | 0x64, | ||
2467 | 0x7c, | ||
2468 | 0x64, | ||
2469 | 0x60, | ||
2470 | 0x60, | ||
2471 | 0x61, | ||
2472 | 0xfe, | ||
2473 | 0x00, | ||
2474 | 0x00, | ||
2475 | 0x00, | ||
2476 | |||
2477 | 0x00, | ||
2478 | 0x00, | ||
2479 | 0x00, | ||
2480 | 0x00, | ||
2481 | 0x00, | ||
2482 | 0x76, | ||
2483 | 0x9b, | ||
2484 | 0x1b, | ||
2485 | 0x3f, | ||
2486 | 0xd8, | ||
2487 | 0xd8, | ||
2488 | 0xd9, | ||
2489 | 0x6e, | ||
2490 | 0x00, | ||
2491 | 0x00, | ||
2492 | 0x00, | ||
2493 | |||
2494 | 0x00, | ||
2495 | 0x1f, | ||
2496 | 0x1d, | ||
2497 | 0x1d, | ||
2498 | 0x3c, | ||
2499 | 0x2c, | ||
2500 | 0x2e, | ||
2501 | 0x2c, | ||
2502 | 0x7c, | ||
2503 | 0x4c, | ||
2504 | 0x4c, | ||
2505 | 0x4d, | ||
2506 | 0xef, | ||
2507 | 0x00, | ||
2508 | 0x00, | ||
2509 | 0x00, | ||
2510 | |||
2511 | 0x00, | ||
2512 | 0x18, | ||
2513 | 0x2c, | ||
2514 | 0x46, | ||
2515 | 0x00, | ||
2516 | 0x3c, | ||
2517 | 0x66, | ||
2518 | 0x66, | ||
2519 | 0x66, | ||
2520 | 0x66, | ||
2521 | 0x66, | ||
2522 | 0x66, | ||
2523 | 0x3c, | ||
2524 | 0x00, | ||
2525 | 0x00, | ||
2526 | 0x00, | ||
2527 | |||
2528 | 0x00, | ||
2529 | 0x00, | ||
2530 | 0x66, | ||
2531 | 0x00, | ||
2532 | 0x00, | ||
2533 | 0x3c, | ||
2534 | 0x66, | ||
2535 | 0x66, | ||
2536 | 0x66, | ||
2537 | 0x66, | ||
2538 | 0x66, | ||
2539 | 0x66, | ||
2540 | 0x3c, | ||
2541 | 0x00, | ||
2542 | 0x00, | ||
2543 | 0x00, | ||
2544 | |||
2545 | 0x00, | ||
2546 | 0x30, | ||
2547 | 0x18, | ||
2548 | 0x04, | ||
2549 | 0x00, | ||
2550 | 0x3c, | ||
2551 | 0x66, | ||
2552 | 0x66, | ||
2553 | 0x66, | ||
2554 | 0x66, | ||
2555 | 0x66, | ||
2556 | 0x66, | ||
2557 | 0x3c, | ||
2558 | 0x00, | ||
2559 | 0x00, | ||
2560 | 0x00, | ||
2561 | |||
2562 | 0x00, | ||
2563 | 0x18, | ||
2564 | 0x2c, | ||
2565 | 0x46, | ||
2566 | 0x00, | ||
2567 | 0xee, | ||
2568 | 0x66, | ||
2569 | 0x66, | ||
2570 | 0x66, | ||
2571 | 0x66, | ||
2572 | 0x66, | ||
2573 | 0x67, | ||
2574 | 0x3a, | ||
2575 | 0x00, | ||
2576 | 0x00, | ||
2577 | 0x00, | ||
2578 | |||
2579 | 0x00, | ||
2580 | 0x30, | ||
2581 | 0x18, | ||
2582 | 0x04, | ||
2583 | 0x00, | ||
2584 | 0xee, | ||
2585 | 0x66, | ||
2586 | 0x66, | ||
2587 | 0x66, | ||
2588 | 0x66, | ||
2589 | 0x66, | ||
2590 | 0x67, | ||
2591 | 0x3a, | ||
2592 | 0x00, | ||
2593 | 0x00, | ||
2594 | 0x00, | ||
2595 | |||
2596 | 0x00, | ||
2597 | 0x00, | ||
2598 | 0x66, | ||
2599 | 0x00, | ||
2600 | 0x00, | ||
2601 | 0xf7, | ||
2602 | 0x62, | ||
2603 | 0x62, | ||
2604 | 0x34, | ||
2605 | 0x34, | ||
2606 | 0x18, | ||
2607 | 0x18, | ||
2608 | 0x18, | ||
2609 | 0x10, | ||
2610 | 0xb0, | ||
2611 | 0xe0, | ||
2612 | |||
2613 | 0x66, | ||
2614 | 0x00, | ||
2615 | 0x3c, | ||
2616 | 0x66, | ||
2617 | 0xc3, | ||
2618 | 0xc3, | ||
2619 | 0xc3, | ||
2620 | 0xc3, | ||
2621 | 0xc3, | ||
2622 | 0xc3, | ||
2623 | 0xc3, | ||
2624 | 0x66, | ||
2625 | 0x3c, | ||
2626 | 0x00, | ||
2627 | 0x00, | ||
2628 | 0x00, | ||
2629 | |||
2630 | 0x66, | ||
2631 | 0x00, | ||
2632 | 0xf7, | ||
2633 | 0x62, | ||
2634 | 0x62, | ||
2635 | 0x62, | ||
2636 | 0x62, | ||
2637 | 0x62, | ||
2638 | 0x62, | ||
2639 | 0x62, | ||
2640 | 0x62, | ||
2641 | 0x62, | ||
2642 | 0x3c, | ||
2643 | 0x00, | ||
2644 | 0x00, | ||
2645 | 0x00, | ||
2646 | |||
2647 | 0x00, | ||
2648 | 0x00, | ||
2649 | 0x10, | ||
2650 | 0x10, | ||
2651 | 0x10, | ||
2652 | 0x7c, | ||
2653 | 0xc6, | ||
2654 | 0xc0, | ||
2655 | 0xc0, | ||
2656 | 0xc0, | ||
2657 | 0xc0, | ||
2658 | 0xc2, | ||
2659 | 0x7c, | ||
2660 | 0x10, | ||
2661 | 0x10, | ||
2662 | 0x00, | ||
2663 | |||
2664 | 0x00, | ||
2665 | 0x38, | ||
2666 | 0x64, | ||
2667 | 0x6c, | ||
2668 | 0x60, | ||
2669 | 0x60, | ||
2670 | 0xf0, | ||
2671 | 0x60, | ||
2672 | 0x60, | ||
2673 | 0x60, | ||
2674 | 0x60, | ||
2675 | 0x66, | ||
2676 | 0xfc, | ||
2677 | 0x00, | ||
2678 | 0x00, | ||
2679 | 0x00, | ||
2680 | |||
2681 | 0x00, | ||
2682 | 0x81, | ||
2683 | 0xc3, | ||
2684 | 0x66, | ||
2685 | 0x3c, | ||
2686 | 0x18, | ||
2687 | 0xff, | ||
2688 | 0x18, | ||
2689 | 0x18, | ||
2690 | 0xff, | ||
2691 | 0x18, | ||
2692 | 0x18, | ||
2693 | 0x18, | ||
2694 | 0x00, | ||
2695 | 0x00, | ||
2696 | 0x00, | ||
2697 | |||
2698 | 0x00, | ||
2699 | 0xfe, | ||
2700 | 0x63, | ||
2701 | 0x63, | ||
2702 | 0x63, | ||
2703 | 0x63, | ||
2704 | 0x6e, | ||
2705 | 0x60, | ||
2706 | 0x64, | ||
2707 | 0x6e, | ||
2708 | 0x64, | ||
2709 | 0x64, | ||
2710 | 0xf5, | ||
2711 | 0x06, | ||
2712 | 0x00, | ||
2713 | 0x00, | ||
2714 | |||
2715 | 0x00, | ||
2716 | 0x0e, | ||
2717 | 0x19, | ||
2718 | 0x1b, | ||
2719 | 0x18, | ||
2720 | 0x18, | ||
2721 | 0x3c, | ||
2722 | 0x18, | ||
2723 | 0x18, | ||
2724 | 0x18, | ||
2725 | 0x18, | ||
2726 | 0xd8, | ||
2727 | 0x98, | ||
2728 | 0x70, | ||
2729 | 0x00, | ||
2730 | 0x00, | ||
2731 | |||
2732 | 0x00, | ||
2733 | 0x0c, | ||
2734 | 0x18, | ||
2735 | 0x20, | ||
2736 | 0x00, | ||
2737 | 0x78, | ||
2738 | 0x8c, | ||
2739 | 0x0c, | ||
2740 | 0x3c, | ||
2741 | 0xcc, | ||
2742 | 0xcc, | ||
2743 | 0xcd, | ||
2744 | 0x76, | ||
2745 | 0x00, | ||
2746 | 0x00, | ||
2747 | 0x00, | ||
2748 | |||
2749 | 0x00, | ||
2750 | 0x06, | ||
2751 | 0x0c, | ||
2752 | 0x10, | ||
2753 | 0x00, | ||
2754 | 0x38, | ||
2755 | 0x18, | ||
2756 | 0x18, | ||
2757 | 0x18, | ||
2758 | 0x18, | ||
2759 | 0x18, | ||
2760 | 0x18, | ||
2761 | 0x3c, | ||
2762 | 0x00, | ||
2763 | 0x00, | ||
2764 | 0x00, | ||
2765 | |||
2766 | 0x00, | ||
2767 | 0x0c, | ||
2768 | 0x18, | ||
2769 | 0x20, | ||
2770 | 0x00, | ||
2771 | 0x3c, | ||
2772 | 0x66, | ||
2773 | 0x66, | ||
2774 | 0x66, | ||
2775 | 0x66, | ||
2776 | 0x66, | ||
2777 | 0x66, | ||
2778 | 0x3c, | ||
2779 | 0x00, | ||
2780 | 0x00, | ||
2781 | 0x00, | ||
2782 | |||
2783 | 0x00, | ||
2784 | 0x0c, | ||
2785 | 0x18, | ||
2786 | 0x20, | ||
2787 | 0x00, | ||
2788 | 0xee, | ||
2789 | 0x66, | ||
2790 | 0x66, | ||
2791 | 0x66, | ||
2792 | 0x66, | ||
2793 | 0x66, | ||
2794 | 0x67, | ||
2795 | 0x3a, | ||
2796 | 0x00, | ||
2797 | 0x00, | ||
2798 | 0x00, | ||
2799 | |||
2800 | 0x00, | ||
2801 | 0x00, | ||
2802 | 0x32, | ||
2803 | 0x4c, | ||
2804 | 0x00, | ||
2805 | 0x5c, | ||
2806 | 0xf6, | ||
2807 | 0x66, | ||
2808 | 0x66, | ||
2809 | 0x66, | ||
2810 | 0x66, | ||
2811 | 0x66, | ||
2812 | 0xf7, | ||
2813 | 0x00, | ||
2814 | 0x00, | ||
2815 | 0x00, | ||
2816 | |||
2817 | 0x32, | ||
2818 | 0x4c, | ||
2819 | 0x00, | ||
2820 | 0xe7, | ||
2821 | 0x72, | ||
2822 | 0x52, | ||
2823 | 0x5a, | ||
2824 | 0x4a, | ||
2825 | 0x4e, | ||
2826 | 0x46, | ||
2827 | 0x46, | ||
2828 | 0x42, | ||
2829 | 0xe2, | ||
2830 | 0x00, | ||
2831 | 0x00, | ||
2832 | 0x00, | ||
2833 | |||
2834 | 0x00, | ||
2835 | 0x78, | ||
2836 | 0x8c, | ||
2837 | 0x0c, | ||
2838 | 0x3c, | ||
2839 | 0xcc, | ||
2840 | 0xcc, | ||
2841 | 0xcd, | ||
2842 | 0x76, | ||
2843 | 0x00, | ||
2844 | 0xfe, | ||
2845 | 0x00, | ||
2846 | 0x00, | ||
2847 | 0x00, | ||
2848 | 0x00, | ||
2849 | 0x00, | ||
2850 | |||
2851 | 0x00, | ||
2852 | 0x3c, | ||
2853 | 0x66, | ||
2854 | 0x66, | ||
2855 | 0x66, | ||
2856 | 0x66, | ||
2857 | 0x66, | ||
2858 | 0x66, | ||
2859 | 0x3c, | ||
2860 | 0x00, | ||
2861 | 0x7e, | ||
2862 | 0x00, | ||
2863 | 0x00, | ||
2864 | 0x00, | ||
2865 | 0x00, | ||
2866 | 0x00, | ||
2867 | |||
2868 | 0x00, | ||
2869 | 0x30, | ||
2870 | 0x30, | ||
2871 | 0x00, | ||
2872 | 0x30, | ||
2873 | 0x10, | ||
2874 | 0x10, | ||
2875 | 0x20, | ||
2876 | 0x40, | ||
2877 | 0xc0, | ||
2878 | 0xc6, | ||
2879 | 0xc2, | ||
2880 | 0x7c, | ||
2881 | 0x00, | ||
2882 | 0x00, | ||
2883 | 0x00, | ||
2884 | |||
2885 | 0x00, | ||
2886 | 0x00, | ||
2887 | 0x00, | ||
2888 | 0x00, | ||
2889 | 0x00, | ||
2890 | 0x00, | ||
2891 | 0xfe, | ||
2892 | 0xc0, | ||
2893 | 0xc0, | ||
2894 | 0xc0, | ||
2895 | 0xc0, | ||
2896 | 0x00, | ||
2897 | 0x00, | ||
2898 | 0x00, | ||
2899 | 0x00, | ||
2900 | 0x00, | ||
2901 | |||
2902 | 0x00, | ||
2903 | 0x00, | ||
2904 | 0x00, | ||
2905 | 0x00, | ||
2906 | 0x00, | ||
2907 | 0x00, | ||
2908 | 0xfe, | ||
2909 | 0x06, | ||
2910 | 0x06, | ||
2911 | 0x06, | ||
2912 | 0x06, | ||
2913 | 0x00, | ||
2914 | 0x00, | ||
2915 | 0x00, | ||
2916 | 0x00, | ||
2917 | 0x00, | ||
2918 | |||
2919 | 0x00, | ||
2920 | 0x20, | ||
2921 | 0xe0, | ||
2922 | 0x63, | ||
2923 | 0x66, | ||
2924 | 0xfc, | ||
2925 | 0x18, | ||
2926 | 0x30, | ||
2927 | 0x60, | ||
2928 | 0xce, | ||
2929 | 0x93, | ||
2930 | 0x06, | ||
2931 | 0x0c, | ||
2932 | 0x1f, | ||
2933 | 0x00, | ||
2934 | 0x00, | ||
2935 | |||
2936 | 0x00, | ||
2937 | 0x20, | ||
2938 | 0xe0, | ||
2939 | 0x63, | ||
2940 | 0x66, | ||
2941 | 0xfc, | ||
2942 | 0x18, | ||
2943 | 0x30, | ||
2944 | 0x64, | ||
2945 | 0xc8, | ||
2946 | 0x96, | ||
2947 | 0x3f, | ||
2948 | 0x06, | ||
2949 | 0x06, | ||
2950 | 0x00, | ||
2951 | 0x00, | ||
2952 | |||
2953 | 0x00, | ||
2954 | 0x18, | ||
2955 | 0x18, | ||
2956 | 0x00, | ||
2957 | 0x08, | ||
2958 | 0x18, | ||
2959 | 0x18, | ||
2960 | 0x18, | ||
2961 | 0x3c, | ||
2962 | 0x3c, | ||
2963 | 0x3c, | ||
2964 | 0x3c, | ||
2965 | 0x18, | ||
2966 | 0x00, | ||
2967 | 0x00, | ||
2968 | 0x00, | ||
2969 | |||
2970 | 0x00, | ||
2971 | 0x00, | ||
2972 | 0x00, | ||
2973 | 0x00, | ||
2974 | 0x00, | ||
2975 | 0x36, | ||
2976 | 0x6c, | ||
2977 | 0xd8, | ||
2978 | 0xd8, | ||
2979 | 0x6c, | ||
2980 | 0x36, | ||
2981 | 0x00, | ||
2982 | 0x00, | ||
2983 | 0x00, | ||
2984 | 0x00, | ||
2985 | 0x00, | ||
2986 | |||
2987 | 0x00, | ||
2988 | 0x00, | ||
2989 | 0x00, | ||
2990 | 0x00, | ||
2991 | 0x00, | ||
2992 | 0xd8, | ||
2993 | 0x6c, | ||
2994 | 0x36, | ||
2995 | 0x36, | ||
2996 | 0x6c, | ||
2997 | 0xd8, | ||
2998 | 0x00, | ||
2999 | 0x00, | ||
3000 | 0x00, | ||
3001 | 0x00, | ||
3002 | 0x00, | ||
3003 | |||
3004 | 0x82, | ||
3005 | 0x10, | ||
3006 | 0x82, | ||
3007 | 0x10, | ||
3008 | 0x82, | ||
3009 | 0x10, | ||
3010 | 0x82, | ||
3011 | 0x10, | ||
3012 | 0x82, | ||
3013 | 0x10, | ||
3014 | 0x82, | ||
3015 | 0x10, | ||
3016 | 0x82, | ||
3017 | 0x10, | ||
3018 | 0x82, | ||
3019 | 0x10, | ||
3020 | |||
3021 | 0x00, | ||
3022 | 0x95, | ||
3023 | 0x00, | ||
3024 | 0xa9, | ||
3025 | 0x00, | ||
3026 | 0x95, | ||
3027 | 0x00, | ||
3028 | 0xa9, | ||
3029 | 0x00, | ||
3030 | 0x95, | ||
3031 | 0x00, | ||
3032 | 0xa9, | ||
3033 | 0x00, | ||
3034 | 0x95, | ||
3035 | 0x00, | ||
3036 | 0xa9, | ||
3037 | |||
3038 | 0x92, | ||
3039 | 0x49, | ||
3040 | 0x92, | ||
3041 | 0x49, | ||
3042 | 0x92, | ||
3043 | 0x49, | ||
3044 | 0x92, | ||
3045 | 0x49, | ||
3046 | 0x92, | ||
3047 | 0x49, | ||
3048 | 0x92, | ||
3049 | 0x49, | ||
3050 | 0x92, | ||
3051 | 0x49, | ||
3052 | 0x92, | ||
3053 | 0x49, | ||
3054 | |||
3055 | 0x18, | ||
3056 | 0x18, | ||
3057 | 0x18, | ||
3058 | 0x18, | ||
3059 | 0x18, | ||
3060 | 0x18, | ||
3061 | 0x18, | ||
3062 | 0x18, | ||
3063 | 0x18, | ||
3064 | 0x18, | ||
3065 | 0x18, | ||
3066 | 0x18, | ||
3067 | 0x18, | ||
3068 | 0x18, | ||
3069 | 0x18, | ||
3070 | 0x18, | ||
3071 | |||
3072 | 0x18, | ||
3073 | 0x18, | ||
3074 | 0x18, | ||
3075 | 0x18, | ||
3076 | 0x18, | ||
3077 | 0x18, | ||
3078 | 0x18, | ||
3079 | 0xf8, | ||
3080 | 0x18, | ||
3081 | 0x18, | ||
3082 | 0x18, | ||
3083 | 0x18, | ||
3084 | 0x18, | ||
3085 | 0x18, | ||
3086 | 0x18, | ||
3087 | 0x18, | ||
3088 | |||
3089 | 0x18, | ||
3090 | 0x18, | ||
3091 | 0x18, | ||
3092 | 0x18, | ||
3093 | 0x18, | ||
3094 | 0x18, | ||
3095 | 0xf8, | ||
3096 | 0x18, | ||
3097 | 0x18, | ||
3098 | 0xf8, | ||
3099 | 0x18, | ||
3100 | 0x18, | ||
3101 | 0x18, | ||
3102 | 0x18, | ||
3103 | 0x18, | ||
3104 | 0x18, | ||
3105 | |||
3106 | 0x66, | ||
3107 | 0x66, | ||
3108 | 0x66, | ||
3109 | 0x66, | ||
3110 | 0x66, | ||
3111 | 0x66, | ||
3112 | 0x66, | ||
3113 | 0xe6, | ||
3114 | 0x66, | ||
3115 | 0x66, | ||
3116 | 0x66, | ||
3117 | 0x66, | ||
3118 | 0x66, | ||
3119 | 0x66, | ||
3120 | 0x66, | ||
3121 | 0x66, | ||
3122 | |||
3123 | 0x00, | ||
3124 | 0x00, | ||
3125 | 0x00, | ||
3126 | 0x00, | ||
3127 | 0x00, | ||
3128 | 0x00, | ||
3129 | 0x00, | ||
3130 | 0xfe, | ||
3131 | 0x66, | ||
3132 | 0x66, | ||
3133 | 0x66, | ||
3134 | 0x66, | ||
3135 | 0x66, | ||
3136 | 0x66, | ||
3137 | 0x66, | ||
3138 | 0x66, | ||
3139 | |||
3140 | 0x00, | ||
3141 | 0x00, | ||
3142 | 0x00, | ||
3143 | 0x00, | ||
3144 | 0x00, | ||
3145 | 0x00, | ||
3146 | 0xf8, | ||
3147 | 0x18, | ||
3148 | 0x18, | ||
3149 | 0xf8, | ||
3150 | 0x18, | ||
3151 | 0x18, | ||
3152 | 0x18, | ||
3153 | 0x18, | ||
3154 | 0x18, | ||
3155 | 0x18, | ||
3156 | |||
3157 | 0x66, | ||
3158 | 0x66, | ||
3159 | 0x66, | ||
3160 | 0x66, | ||
3161 | 0x66, | ||
3162 | 0x66, | ||
3163 | 0xe6, | ||
3164 | 0x06, | ||
3165 | 0x06, | ||
3166 | 0xe6, | ||
3167 | 0x66, | ||
3168 | 0x66, | ||
3169 | 0x66, | ||
3170 | 0x66, | ||
3171 | 0x66, | ||
3172 | 0x66, | ||
3173 | |||
3174 | 0x66, | ||
3175 | 0x66, | ||
3176 | 0x66, | ||
3177 | 0x66, | ||
3178 | 0x66, | ||
3179 | 0x66, | ||
3180 | 0x66, | ||
3181 | 0x66, | ||
3182 | 0x66, | ||
3183 | 0x66, | ||
3184 | 0x66, | ||
3185 | 0x66, | ||
3186 | 0x66, | ||
3187 | 0x66, | ||
3188 | 0x66, | ||
3189 | 0x66, | ||
3190 | |||
3191 | 0x00, | ||
3192 | 0x00, | ||
3193 | 0x00, | ||
3194 | 0x00, | ||
3195 | 0x00, | ||
3196 | 0x00, | ||
3197 | 0xfe, | ||
3198 | 0x06, | ||
3199 | 0x06, | ||
3200 | 0xe6, | ||
3201 | 0x66, | ||
3202 | 0x66, | ||
3203 | 0x66, | ||
3204 | 0x66, | ||
3205 | 0x66, | ||
3206 | 0x66, | ||
3207 | |||
3208 | 0x66, | ||
3209 | 0x66, | ||
3210 | 0x66, | ||
3211 | 0x66, | ||
3212 | 0x66, | ||
3213 | 0x66, | ||
3214 | 0xe6, | ||
3215 | 0x06, | ||
3216 | 0x06, | ||
3217 | 0xfe, | ||
3218 | 0x00, | ||
3219 | 0x00, | ||
3220 | 0x00, | ||
3221 | 0x00, | ||
3222 | 0x00, | ||
3223 | 0x00, | ||
3224 | |||
3225 | 0x66, | ||
3226 | 0x66, | ||
3227 | 0x66, | ||
3228 | 0x66, | ||
3229 | 0x66, | ||
3230 | 0x66, | ||
3231 | 0x66, | ||
3232 | 0xfe, | ||
3233 | 0x00, | ||
3234 | 0x00, | ||
3235 | 0x00, | ||
3236 | 0x00, | ||
3237 | 0x00, | ||
3238 | 0x00, | ||
3239 | 0x00, | ||
3240 | 0x00, | ||
3241 | |||
3242 | 0x18, | ||
3243 | 0x18, | ||
3244 | 0x18, | ||
3245 | 0x18, | ||
3246 | 0x18, | ||
3247 | 0x18, | ||
3248 | 0xf8, | ||
3249 | 0x18, | ||
3250 | 0x18, | ||
3251 | 0xf8, | ||
3252 | 0x00, | ||
3253 | 0x00, | ||
3254 | 0x00, | ||
3255 | 0x00, | ||
3256 | 0x00, | ||
3257 | 0x00, | ||
3258 | |||
3259 | 0x00, | ||
3260 | 0x00, | ||
3261 | 0x00, | ||
3262 | 0x00, | ||
3263 | 0x00, | ||
3264 | 0x00, | ||
3265 | 0x00, | ||
3266 | 0xf8, | ||
3267 | 0x18, | ||
3268 | 0x18, | ||
3269 | 0x18, | ||
3270 | 0x18, | ||
3271 | 0x18, | ||
3272 | 0x18, | ||
3273 | 0x18, | ||
3274 | 0x18, | ||
3275 | |||
3276 | 0x18, | ||
3277 | 0x18, | ||
3278 | 0x18, | ||
3279 | 0x18, | ||
3280 | 0x18, | ||
3281 | 0x18, | ||
3282 | 0x18, | ||
3283 | 0x1f, | ||
3284 | 0x00, | ||
3285 | 0x00, | ||
3286 | 0x00, | ||
3287 | 0x00, | ||
3288 | 0x00, | ||
3289 | 0x00, | ||
3290 | 0x00, | ||
3291 | 0x00, | ||
3292 | |||
3293 | 0x18, | ||
3294 | 0x18, | ||
3295 | 0x18, | ||
3296 | 0x18, | ||
3297 | 0x18, | ||
3298 | 0x18, | ||
3299 | 0x18, | ||
3300 | 0xff, | ||
3301 | 0x00, | ||
3302 | 0x00, | ||
3303 | 0x00, | ||
3304 | 0x00, | ||
3305 | 0x00, | ||
3306 | 0x00, | ||
3307 | 0x00, | ||
3308 | 0x00, | ||
3309 | |||
3310 | 0x00, | ||
3311 | 0x00, | ||
3312 | 0x00, | ||
3313 | 0x00, | ||
3314 | 0x00, | ||
3315 | 0x00, | ||
3316 | 0x00, | ||
3317 | 0xff, | ||
3318 | 0x18, | ||
3319 | 0x18, | ||
3320 | 0x18, | ||
3321 | 0x18, | ||
3322 | 0x18, | ||
3323 | 0x18, | ||
3324 | 0x18, | ||
3325 | 0x18, | ||
3326 | |||
3327 | 0x18, | ||
3328 | 0x18, | ||
3329 | 0x18, | ||
3330 | 0x18, | ||
3331 | 0x18, | ||
3332 | 0x18, | ||
3333 | 0x18, | ||
3334 | 0x1f, | ||
3335 | 0x18, | ||
3336 | 0x18, | ||
3337 | 0x18, | ||
3338 | 0x18, | ||
3339 | 0x18, | ||
3340 | 0x18, | ||
3341 | 0x18, | ||
3342 | 0x18, | ||
3343 | |||
3344 | 0x00, | ||
3345 | 0x00, | ||
3346 | 0x00, | ||
3347 | 0x00, | ||
3348 | 0x00, | ||
3349 | 0x00, | ||
3350 | 0x00, | ||
3351 | 0xff, | ||
3352 | 0x00, | ||
3353 | 0x00, | ||
3354 | 0x00, | ||
3355 | 0x00, | ||
3356 | 0x00, | ||
3357 | 0x00, | ||
3358 | 0x00, | ||
3359 | 0x00, | ||
3360 | |||
3361 | 0x18, | ||
3362 | 0x18, | ||
3363 | 0x18, | ||
3364 | 0x18, | ||
3365 | 0x18, | ||
3366 | 0x18, | ||
3367 | 0x18, | ||
3368 | 0xff, | ||
3369 | 0x18, | ||
3370 | 0x18, | ||
3371 | 0x18, | ||
3372 | 0x18, | ||
3373 | 0x18, | ||
3374 | 0x18, | ||
3375 | 0x18, | ||
3376 | 0x18, | ||
3377 | |||
3378 | 0x18, | ||
3379 | 0x18, | ||
3380 | 0x18, | ||
3381 | 0x18, | ||
3382 | 0x18, | ||
3383 | 0x18, | ||
3384 | 0x1f, | ||
3385 | 0x18, | ||
3386 | 0x18, | ||
3387 | 0x1f, | ||
3388 | 0x18, | ||
3389 | 0x18, | ||
3390 | 0x18, | ||
3391 | 0x18, | ||
3392 | 0x18, | ||
3393 | 0x18, | ||
3394 | |||
3395 | 0x66, | ||
3396 | 0x66, | ||
3397 | 0x66, | ||
3398 | 0x66, | ||
3399 | 0x66, | ||
3400 | 0x66, | ||
3401 | 0x66, | ||
3402 | 0x67, | ||
3403 | 0x66, | ||
3404 | 0x66, | ||
3405 | 0x66, | ||
3406 | 0x66, | ||
3407 | 0x66, | ||
3408 | 0x66, | ||
3409 | 0x66, | ||
3410 | 0x66, | ||
3411 | |||
3412 | 0x66, | ||
3413 | 0x66, | ||
3414 | 0x66, | ||
3415 | 0x66, | ||
3416 | 0x66, | ||
3417 | 0x66, | ||
3418 | 0x67, | ||
3419 | 0x60, | ||
3420 | 0x60, | ||
3421 | 0x7f, | ||
3422 | 0x00, | ||
3423 | 0x00, | ||
3424 | 0x00, | ||
3425 | 0x00, | ||
3426 | 0x00, | ||
3427 | 0x00, | ||
3428 | |||
3429 | 0x00, | ||
3430 | 0x00, | ||
3431 | 0x00, | ||
3432 | 0x00, | ||
3433 | 0x00, | ||
3434 | 0x00, | ||
3435 | 0x7f, | ||
3436 | 0x60, | ||
3437 | 0x60, | ||
3438 | 0x67, | ||
3439 | 0x66, | ||
3440 | 0x66, | ||
3441 | 0x66, | ||
3442 | 0x66, | ||
3443 | 0x66, | ||
3444 | 0x66, | ||
3445 | |||
3446 | 0x66, | ||
3447 | 0x66, | ||
3448 | 0x66, | ||
3449 | 0x66, | ||
3450 | 0x66, | ||
3451 | 0x66, | ||
3452 | 0xe7, | ||
3453 | 0x00, | ||
3454 | 0x00, | ||
3455 | 0xff, | ||
3456 | 0x00, | ||
3457 | 0x00, | ||
3458 | 0x00, | ||
3459 | 0x00, | ||
3460 | 0x00, | ||
3461 | 0x00, | ||
3462 | |||
3463 | 0x00, | ||
3464 | 0x00, | ||
3465 | 0x00, | ||
3466 | 0x00, | ||
3467 | 0x00, | ||
3468 | 0x00, | ||
3469 | 0xff, | ||
3470 | 0x00, | ||
3471 | 0x00, | ||
3472 | 0xe7, | ||
3473 | 0x66, | ||
3474 | 0x66, | ||
3475 | 0x66, | ||
3476 | 0x66, | ||
3477 | 0x66, | ||
3478 | 0x66, | ||
3479 | |||
3480 | 0x66, | ||
3481 | 0x66, | ||
3482 | 0x66, | ||
3483 | 0x66, | ||
3484 | 0x66, | ||
3485 | 0x66, | ||
3486 | 0x67, | ||
3487 | 0x60, | ||
3488 | 0x60, | ||
3489 | 0x67, | ||
3490 | 0x66, | ||
3491 | 0x66, | ||
3492 | 0x66, | ||
3493 | 0x66, | ||
3494 | 0x66, | ||
3495 | 0x66, | ||
3496 | |||
3497 | 0x00, | ||
3498 | 0x00, | ||
3499 | 0x00, | ||
3500 | 0x00, | ||
3501 | 0x00, | ||
3502 | 0x00, | ||
3503 | 0xff, | ||
3504 | 0x00, | ||
3505 | 0x00, | ||
3506 | 0xff, | ||
3507 | 0x00, | ||
3508 | 0x00, | ||
3509 | 0x00, | ||
3510 | 0x00, | ||
3511 | 0x00, | ||
3512 | 0x00, | ||
3513 | |||
3514 | 0x66, | ||
3515 | 0x66, | ||
3516 | 0x66, | ||
3517 | 0x66, | ||
3518 | 0x66, | ||
3519 | 0x66, | ||
3520 | 0xe7, | ||
3521 | 0x00, | ||
3522 | 0x00, | ||
3523 | 0xe7, | ||
3524 | 0x66, | ||
3525 | 0x66, | ||
3526 | 0x66, | ||
3527 | 0x66, | ||
3528 | 0x66, | ||
3529 | 0x66, | ||
3530 | |||
3531 | 0x18, | ||
3532 | 0x18, | ||
3533 | 0x18, | ||
3534 | 0x18, | ||
3535 | 0x18, | ||
3536 | 0x18, | ||
3537 | 0xff, | ||
3538 | 0x00, | ||
3539 | 0x00, | ||
3540 | 0xff, | ||
3541 | 0x00, | ||
3542 | 0x00, | ||
3543 | 0x00, | ||
3544 | 0x00, | ||
3545 | 0x00, | ||
3546 | 0x00, | ||
3547 | |||
3548 | 0x66, | ||
3549 | 0x66, | ||
3550 | 0x66, | ||
3551 | 0x66, | ||
3552 | 0x66, | ||
3553 | 0x66, | ||
3554 | 0x66, | ||
3555 | 0xff, | ||
3556 | 0x00, | ||
3557 | 0x00, | ||
3558 | 0x00, | ||
3559 | 0x00, | ||
3560 | 0x00, | ||
3561 | 0x00, | ||
3562 | 0x00, | ||
3563 | 0x00, | ||
3564 | |||
3565 | 0x00, | ||
3566 | 0x00, | ||
3567 | 0x00, | ||
3568 | 0x00, | ||
3569 | 0x00, | ||
3570 | 0x00, | ||
3571 | 0xff, | ||
3572 | 0x00, | ||
3573 | 0x00, | ||
3574 | 0xff, | ||
3575 | 0x18, | ||
3576 | 0x18, | ||
3577 | 0x18, | ||
3578 | 0x18, | ||
3579 | 0x18, | ||
3580 | 0x18, | ||
3581 | |||
3582 | 0x00, | ||
3583 | 0x00, | ||
3584 | 0x00, | ||
3585 | 0x00, | ||
3586 | 0x00, | ||
3587 | 0x00, | ||
3588 | 0x00, | ||
3589 | 0xff, | ||
3590 | 0x66, | ||
3591 | 0x66, | ||
3592 | 0x66, | ||
3593 | 0x66, | ||
3594 | 0x66, | ||
3595 | 0x66, | ||
3596 | 0x66, | ||
3597 | 0x66, | ||
3598 | |||
3599 | 0x66, | ||
3600 | 0x66, | ||
3601 | 0x66, | ||
3602 | 0x66, | ||
3603 | 0x66, | ||
3604 | 0x66, | ||
3605 | 0x66, | ||
3606 | 0x7f, | ||
3607 | 0x00, | ||
3608 | 0x00, | ||
3609 | 0x00, | ||
3610 | 0x00, | ||
3611 | 0x00, | ||
3612 | 0x00, | ||
3613 | 0x00, | ||
3614 | 0x00, | ||
3615 | |||
3616 | 0x18, | ||
3617 | 0x18, | ||
3618 | 0x18, | ||
3619 | 0x18, | ||
3620 | 0x18, | ||
3621 | 0x18, | ||
3622 | 0x1f, | ||
3623 | 0x18, | ||
3624 | 0x18, | ||
3625 | 0x1f, | ||
3626 | 0x00, | ||
3627 | 0x00, | ||
3628 | 0x00, | ||
3629 | 0x00, | ||
3630 | 0x00, | ||
3631 | 0x00, | ||
3632 | |||
3633 | 0x00, | ||
3634 | 0x00, | ||
3635 | 0x00, | ||
3636 | 0x00, | ||
3637 | 0x00, | ||
3638 | 0x00, | ||
3639 | 0x1f, | ||
3640 | 0x18, | ||
3641 | 0x18, | ||
3642 | 0x1f, | ||
3643 | 0x18, | ||
3644 | 0x18, | ||
3645 | 0x18, | ||
3646 | 0x18, | ||
3647 | 0x18, | ||
3648 | 0x18, | ||
3649 | |||
3650 | 0x00, | ||
3651 | 0x00, | ||
3652 | 0x00, | ||
3653 | 0x00, | ||
3654 | 0x00, | ||
3655 | 0x00, | ||
3656 | 0x00, | ||
3657 | 0x7f, | ||
3658 | 0x66, | ||
3659 | 0x66, | ||
3660 | 0x66, | ||
3661 | 0x66, | ||
3662 | 0x66, | ||
3663 | 0x66, | ||
3664 | 0x66, | ||
3665 | 0x66, | ||
3666 | |||
3667 | 0x66, | ||
3668 | 0x66, | ||
3669 | 0x66, | ||
3670 | 0x66, | ||
3671 | 0x66, | ||
3672 | 0x66, | ||
3673 | 0x66, | ||
3674 | 0xff, | ||
3675 | 0x66, | ||
3676 | 0x66, | ||
3677 | 0x66, | ||
3678 | 0x66, | ||
3679 | 0x66, | ||
3680 | 0x66, | ||
3681 | 0x66, | ||
3682 | 0x66, | ||
3683 | |||
3684 | 0x18, | ||
3685 | 0x18, | ||
3686 | 0x18, | ||
3687 | 0x18, | ||
3688 | 0x18, | ||
3689 | 0x18, | ||
3690 | 0xff, | ||
3691 | 0x00, | ||
3692 | 0x00, | ||
3693 | 0xff, | ||
3694 | 0x18, | ||
3695 | 0x18, | ||
3696 | 0x18, | ||
3697 | 0x18, | ||
3698 | 0x18, | ||
3699 | 0x18, | ||
3700 | |||
3701 | 0x18, | ||
3702 | 0x18, | ||
3703 | 0x18, | ||
3704 | 0x18, | ||
3705 | 0x18, | ||
3706 | 0x18, | ||
3707 | 0x18, | ||
3708 | 0xf8, | ||
3709 | 0x00, | ||
3710 | 0x00, | ||
3711 | 0x00, | ||
3712 | 0x00, | ||
3713 | 0x00, | ||
3714 | 0x00, | ||
3715 | 0x00, | ||
3716 | 0x00, | ||
3717 | |||
3718 | 0x00, | ||
3719 | 0x00, | ||
3720 | 0x00, | ||
3721 | 0x00, | ||
3722 | 0x00, | ||
3723 | 0x00, | ||
3724 | 0x00, | ||
3725 | 0x1f, | ||
3726 | 0x18, | ||
3727 | 0x18, | ||
3728 | 0x18, | ||
3729 | 0x18, | ||
3730 | 0x18, | ||
3731 | 0x18, | ||
3732 | 0x18, | ||
3733 | 0x18, | ||
3734 | |||
3735 | 0xff, | ||
3736 | 0xff, | ||
3737 | 0xff, | ||
3738 | 0xff, | ||
3739 | 0xff, | ||
3740 | 0xff, | ||
3741 | 0xff, | ||
3742 | 0xff, | ||
3743 | 0xff, | ||
3744 | 0xff, | ||
3745 | 0xff, | ||
3746 | 0xff, | ||
3747 | 0xff, | ||
3748 | 0xff, | ||
3749 | 0xff, | ||
3750 | 0xff, | ||
3751 | |||
3752 | 0x00, | ||
3753 | 0x00, | ||
3754 | 0x00, | ||
3755 | 0x00, | ||
3756 | 0x00, | ||
3757 | 0x00, | ||
3758 | 0x00, | ||
3759 | 0x00, | ||
3760 | 0xff, | ||
3761 | 0xff, | ||
3762 | 0xff, | ||
3763 | 0xff, | ||
3764 | 0xff, | ||
3765 | 0xff, | ||
3766 | 0xff, | ||
3767 | 0xff, | ||
3768 | |||
3769 | 0xf0, | ||
3770 | 0xf0, | ||
3771 | 0xf0, | ||
3772 | 0xf0, | ||
3773 | 0xf0, | ||
3774 | 0xf0, | ||
3775 | 0xf0, | ||
3776 | 0xf0, | ||
3777 | 0xf0, | ||
3778 | 0xf0, | ||
3779 | 0xf0, | ||
3780 | 0xf0, | ||
3781 | 0xf0, | ||
3782 | 0xf0, | ||
3783 | 0xf0, | ||
3784 | 0xf0, | ||
3785 | |||
3786 | 0x0f, | ||
3787 | 0x0f, | ||
3788 | 0x0f, | ||
3789 | 0x0f, | ||
3790 | 0x0f, | ||
3791 | 0x0f, | ||
3792 | 0x0f, | ||
3793 | 0x0f, | ||
3794 | 0x0f, | ||
3795 | 0x0f, | ||
3796 | 0x0f, | ||
3797 | 0x0f, | ||
3798 | 0x0f, | ||
3799 | 0x0f, | ||
3800 | 0x0f, | ||
3801 | 0x0f, | ||
3802 | |||
3803 | 0xff, | ||
3804 | 0xff, | ||
3805 | 0xff, | ||
3806 | 0xff, | ||
3807 | 0xff, | ||
3808 | 0xff, | ||
3809 | 0xff, | ||
3810 | 0xff, | ||
3811 | 0x00, | ||
3812 | 0x00, | ||
3813 | 0x00, | ||
3814 | 0x00, | ||
3815 | 0x00, | ||
3816 | 0x00, | ||
3817 | 0x00, | ||
3818 | 0x00, | ||
3819 | |||
3820 | 0x00, | ||
3821 | 0x00, | ||
3822 | 0x00, | ||
3823 | 0x00, | ||
3824 | 0x00, | ||
3825 | 0x00, | ||
3826 | 0x77, | ||
3827 | 0xcc, | ||
3828 | 0xcc, | ||
3829 | 0xcc, | ||
3830 | 0xcc, | ||
3831 | 0xde, | ||
3832 | 0x73, | ||
3833 | 0x00, | ||
3834 | 0x00, | ||
3835 | 0x00, | ||
3836 | |||
3837 | 0x00, | ||
3838 | 0x7c, | ||
3839 | 0xc6, | ||
3840 | 0xc6, | ||
3841 | 0xc6, | ||
3842 | 0xc4, | ||
3843 | 0xc8, | ||
3844 | 0xc4, | ||
3845 | 0xc6, | ||
3846 | 0xc6, | ||
3847 | 0xc6, | ||
3848 | 0xc6, | ||
3849 | 0xdc, | ||
3850 | 0xc0, | ||
3851 | 0xc0, | ||
3852 | 0x00, | ||
3853 | |||
3854 | 0x00, | ||
3855 | 0xff, | ||
3856 | 0x61, | ||
3857 | 0x60, | ||
3858 | 0x60, | ||
3859 | 0x60, | ||
3860 | 0x60, | ||
3861 | 0x60, | ||
3862 | 0x60, | ||
3863 | 0x60, | ||
3864 | 0x60, | ||
3865 | 0x60, | ||
3866 | 0xf0, | ||
3867 | 0x00, | ||
3868 | 0x00, | ||
3869 | 0x00, | ||
3870 | |||
3871 | 0x00, | ||
3872 | 0x00, | ||
3873 | 0x00, | ||
3874 | 0x00, | ||
3875 | 0x01, | ||
3876 | 0x7e, | ||
3877 | 0xa4, | ||
3878 | 0x24, | ||
3879 | 0x2c, | ||
3880 | 0x6c, | ||
3881 | 0x6c, | ||
3882 | 0x6c, | ||
3883 | 0x48, | ||
3884 | 0x00, | ||
3885 | 0x00, | ||
3886 | 0x00, | ||
3887 | |||
3888 | 0x00, | ||
3889 | 0xff, | ||
3890 | 0xc1, | ||
3891 | 0x60, | ||
3892 | 0x30, | ||
3893 | 0x18, | ||
3894 | 0x0c, | ||
3895 | 0x18, | ||
3896 | 0x30, | ||
3897 | 0x60, | ||
3898 | 0xc0, | ||
3899 | 0xc1, | ||
3900 | 0xfe, | ||
3901 | 0x00, | ||
3902 | 0x00, | ||
3903 | 0x00, | ||
3904 | |||
3905 | 0x00, | ||
3906 | 0x00, | ||
3907 | 0x00, | ||
3908 | 0x00, | ||
3909 | 0x00, | ||
3910 | 0x7f, | ||
3911 | 0xc8, | ||
3912 | 0xc8, | ||
3913 | 0xc8, | ||
3914 | 0xc8, | ||
3915 | 0xc8, | ||
3916 | 0xc8, | ||
3917 | 0x70, | ||
3918 | 0x00, | ||
3919 | 0x00, | ||
3920 | 0x00, | ||
3921 | |||
3922 | 0x00, | ||
3923 | 0x00, | ||
3924 | 0x00, | ||
3925 | 0x00, | ||
3926 | 0x00, | ||
3927 | 0x22, | ||
3928 | 0x66, | ||
3929 | 0x66, | ||
3930 | 0x66, | ||
3931 | 0x66, | ||
3932 | 0x66, | ||
3933 | 0x7c, | ||
3934 | 0x60, | ||
3935 | 0x60, | ||
3936 | 0x60, | ||
3937 | 0xc0, | ||
3938 | |||
3939 | 0x00, | ||
3940 | 0x00, | ||
3941 | 0x00, | ||
3942 | 0x00, | ||
3943 | 0x00, | ||
3944 | 0x76, | ||
3945 | 0xdc, | ||
3946 | 0x18, | ||
3947 | 0x18, | ||
3948 | 0x18, | ||
3949 | 0x18, | ||
3950 | 0x18, | ||
3951 | 0x10, | ||
3952 | 0x00, | ||
3953 | 0x00, | ||
3954 | 0x00, | ||
3955 | |||
3956 | 0x00, | ||
3957 | 0x38, | ||
3958 | 0x10, | ||
3959 | 0x7c, | ||
3960 | 0xd6, | ||
3961 | 0xd6, | ||
3962 | 0xd6, | ||
3963 | 0xd6, | ||
3964 | 0xd6, | ||
3965 | 0xd6, | ||
3966 | 0x7c, | ||
3967 | 0x10, | ||
3968 | 0x38, | ||
3969 | 0x00, | ||
3970 | 0x00, | ||
3971 | 0x00, | ||
3972 | |||
3973 | 0x00, | ||
3974 | 0x38, | ||
3975 | 0x6c, | ||
3976 | 0xc6, | ||
3977 | 0xc6, | ||
3978 | 0xc6, | ||
3979 | 0xfe, | ||
3980 | 0xc6, | ||
3981 | 0xc6, | ||
3982 | 0xc6, | ||
3983 | 0xc6, | ||
3984 | 0x6c, | ||
3985 | 0x38, | ||
3986 | 0x00, | ||
3987 | 0x00, | ||
3988 | 0x00, | ||
3989 | |||
3990 | 0x00, | ||
3991 | 0x3c, | ||
3992 | 0x66, | ||
3993 | 0xc3, | ||
3994 | 0xc3, | ||
3995 | 0xc3, | ||
3996 | 0xc3, | ||
3997 | 0xc3, | ||
3998 | 0x66, | ||
3999 | 0x24, | ||
4000 | 0x24, | ||
4001 | 0xa5, | ||
4002 | 0xe7, | ||
4003 | 0x00, | ||
4004 | 0x00, | ||
4005 | 0x00, | ||
4006 | |||
4007 | 0x00, | ||
4008 | 0x1e, | ||
4009 | 0x31, | ||
4010 | 0x30, | ||
4011 | 0x18, | ||
4012 | 0x0c, | ||
4013 | 0x3e, | ||
4014 | 0x66, | ||
4015 | 0x66, | ||
4016 | 0x66, | ||
4017 | 0x66, | ||
4018 | 0x66, | ||
4019 | 0x3c, | ||
4020 | 0x00, | ||
4021 | 0x00, | ||
4022 | 0x00, | ||
4023 | |||
4024 | 0x00, | ||
4025 | 0x00, | ||
4026 | 0x00, | ||
4027 | 0x00, | ||
4028 | 0x6e, | ||
4029 | 0xff, | ||
4030 | 0x99, | ||
4031 | 0x99, | ||
4032 | 0x99, | ||
4033 | 0x99, | ||
4034 | 0xff, | ||
4035 | 0x76, | ||
4036 | 0x00, | ||
4037 | 0x00, | ||
4038 | 0x00, | ||
4039 | 0x00, | ||
4040 | |||
4041 | 0x00, | ||
4042 | 0x00, | ||
4043 | 0x00, | ||
4044 | 0x02, | ||
4045 | 0x04, | ||
4046 | 0x7c, | ||
4047 | 0xca, | ||
4048 | 0x92, | ||
4049 | 0xa6, | ||
4050 | 0x7c, | ||
4051 | 0x40, | ||
4052 | 0x80, | ||
4053 | 0x00, | ||
4054 | 0x00, | ||
4055 | 0x00, | ||
4056 | 0x00, | ||
4057 | |||
4058 | 0x00, | ||
4059 | 0x1c, | ||
4060 | 0x30, | ||
4061 | 0x60, | ||
4062 | 0x60, | ||
4063 | 0x60, | ||
4064 | 0x7c, | ||
4065 | 0x60, | ||
4066 | 0x60, | ||
4067 | 0x60, | ||
4068 | 0x60, | ||
4069 | 0x30, | ||
4070 | 0x1c, | ||
4071 | 0x00, | ||
4072 | 0x00, | ||
4073 | 0x00, | ||
4074 | |||
4075 | 0x00, | ||
4076 | 0x00, | ||
4077 | 0x7c, | ||
4078 | 0xc6, | ||
4079 | 0xc6, | ||
4080 | 0xc6, | ||
4081 | 0xc6, | ||
4082 | 0xc6, | ||
4083 | 0xc6, | ||
4084 | 0xc6, | ||
4085 | 0xc6, | ||
4086 | 0xc6, | ||
4087 | 0xc6, | ||
4088 | 0x00, | ||
4089 | 0x00, | ||
4090 | 0x00, | ||
4091 | |||
4092 | 0x00, | ||
4093 | 0x00, | ||
4094 | 0x00, | ||
4095 | 0xfe, | ||
4096 | 0x00, | ||
4097 | 0x00, | ||
4098 | 0x00, | ||
4099 | 0x7c, | ||
4100 | 0x00, | ||
4101 | 0x00, | ||
4102 | 0x00, | ||
4103 | 0xfe, | ||
4104 | 0x00, | ||
4105 | 0x00, | ||
4106 | 0x00, | ||
4107 | 0x00, | ||
4108 | |||
4109 | 0x00, | ||
4110 | 0x00, | ||
4111 | 0x00, | ||
4112 | 0x00, | ||
4113 | 0x18, | ||
4114 | 0x18, | ||
4115 | 0x7e, | ||
4116 | 0x18, | ||
4117 | 0x18, | ||
4118 | 0x00, | ||
4119 | 0x00, | ||
4120 | 0x7e, | ||
4121 | 0x00, | ||
4122 | 0x00, | ||
4123 | 0x00, | ||
4124 | 0x00, | ||
4125 | |||
4126 | 0x00, | ||
4127 | 0x00, | ||
4128 | 0x00, | ||
4129 | 0x30, | ||
4130 | 0x18, | ||
4131 | 0x0c, | ||
4132 | 0x06, | ||
4133 | 0x0c, | ||
4134 | 0x18, | ||
4135 | 0x30, | ||
4136 | 0x00, | ||
4137 | 0x7e, | ||
4138 | 0x00, | ||
4139 | 0x00, | ||
4140 | 0x00, | ||
4141 | 0x00, | ||
4142 | |||
4143 | 0x00, | ||
4144 | 0x00, | ||
4145 | 0x00, | ||
4146 | 0x0c, | ||
4147 | 0x18, | ||
4148 | 0x30, | ||
4149 | 0x60, | ||
4150 | 0x30, | ||
4151 | 0x18, | ||
4152 | 0x0c, | ||
4153 | 0x00, | ||
4154 | 0x7e, | ||
4155 | 0x00, | ||
4156 | 0x00, | ||
4157 | 0x00, | ||
4158 | 0x00, | ||
4159 | |||
4160 | 0x00, | ||
4161 | 0x00, | ||
4162 | 0x00, | ||
4163 | 0x0e, | ||
4164 | 0x19, | ||
4165 | 0x1b, | ||
4166 | 0x18, | ||
4167 | 0x18, | ||
4168 | 0x18, | ||
4169 | 0x18, | ||
4170 | 0x18, | ||
4171 | 0x18, | ||
4172 | 0x18, | ||
4173 | 0x18, | ||
4174 | 0x18, | ||
4175 | 0x18, | ||
4176 | |||
4177 | 0x18, | ||
4178 | 0x18, | ||
4179 | 0x18, | ||
4180 | 0x18, | ||
4181 | 0x18, | ||
4182 | 0x18, | ||
4183 | 0x18, | ||
4184 | 0x18, | ||
4185 | 0x18, | ||
4186 | 0xd8, | ||
4187 | 0x98, | ||
4188 | 0x70, | ||
4189 | 0x00, | ||
4190 | 0x00, | ||
4191 | 0x00, | ||
4192 | 0x00, | ||
4193 | |||
4194 | 0x00, | ||
4195 | 0x00, | ||
4196 | 0x00, | ||
4197 | 0x00, | ||
4198 | 0x18, | ||
4199 | 0x18, | ||
4200 | 0x00, | ||
4201 | 0x7e, | ||
4202 | 0x00, | ||
4203 | 0x18, | ||
4204 | 0x18, | ||
4205 | 0x00, | ||
4206 | 0x00, | ||
4207 | 0x00, | ||
4208 | 0x00, | ||
4209 | 0x00, | ||
4210 | |||
4211 | 0x00, | ||
4212 | 0x00, | ||
4213 | 0x00, | ||
4214 | 0x00, | ||
4215 | 0x00, | ||
4216 | 0x76, | ||
4217 | 0xdc, | ||
4218 | 0x00, | ||
4219 | 0x00, | ||
4220 | 0x76, | ||
4221 | 0xdc, | ||
4222 | 0x00, | ||
4223 | 0x00, | ||
4224 | 0x00, | ||
4225 | 0x00, | ||
4226 | 0x00, | ||
4227 | |||
4228 | 0x00, | ||
4229 | 0x38, | ||
4230 | 0x44, | ||
4231 | 0x44, | ||
4232 | 0x44, | ||
4233 | 0x38, | ||
4234 | 0x00, | ||
4235 | 0x00, | ||
4236 | 0x00, | ||
4237 | 0x00, | ||
4238 | 0x00, | ||
4239 | 0x00, | ||
4240 | 0x00, | ||
4241 | 0x00, | ||
4242 | 0x00, | ||
4243 | 0x00, | ||
4244 | |||
4245 | 0x00, | ||
4246 | 0x00, | ||
4247 | 0x00, | ||
4248 | 0x00, | ||
4249 | 0x00, | ||
4250 | 0x00, | ||
4251 | 0x00, | ||
4252 | 0x18, | ||
4253 | 0x18, | ||
4254 | 0x00, | ||
4255 | 0x00, | ||
4256 | 0x00, | ||
4257 | 0x00, | ||
4258 | 0x00, | ||
4259 | 0x00, | ||
4260 | 0x00, | ||
4261 | |||
4262 | 0x00, | ||
4263 | 0x00, | ||
4264 | 0x00, | ||
4265 | 0x00, | ||
4266 | 0x00, | ||
4267 | 0x00, | ||
4268 | 0x00, | ||
4269 | 0x00, | ||
4270 | 0x18, | ||
4271 | 0x00, | ||
4272 | 0x00, | ||
4273 | 0x00, | ||
4274 | 0x00, | ||
4275 | 0x00, | ||
4276 | 0x00, | ||
4277 | 0x00, | ||
4278 | |||
4279 | 0x00, | ||
4280 | 0x00, | ||
4281 | 0x07, | ||
4282 | 0x06, | ||
4283 | 0x06, | ||
4284 | 0x0c, | ||
4285 | 0x0c, | ||
4286 | 0x08, | ||
4287 | 0x98, | ||
4288 | 0xd0, | ||
4289 | 0xf0, | ||
4290 | 0x60, | ||
4291 | 0x20, | ||
4292 | 0x00, | ||
4293 | 0x00, | ||
4294 | 0x00, | ||
4295 | |||
4296 | 0x00, | ||
4297 | 0xcc, | ||
4298 | 0x76, | ||
4299 | 0x66, | ||
4300 | 0x66, | ||
4301 | 0x66, | ||
4302 | 0x66, | ||
4303 | 0xf7, | ||
4304 | 0x00, | ||
4305 | 0x00, | ||
4306 | 0x00, | ||
4307 | 0x00, | ||
4308 | 0x00, | ||
4309 | 0x00, | ||
4310 | 0x00, | ||
4311 | 0x00, | ||
4312 | |||
4313 | 0x00, | ||
4314 | 0x70, | ||
4315 | 0x98, | ||
4316 | 0x18, | ||
4317 | 0x30, | ||
4318 | 0x60, | ||
4319 | 0x88, | ||
4320 | 0xf8, | ||
4321 | 0x00, | ||
4322 | 0x00, | ||
4323 | 0x00, | ||
4324 | 0x00, | ||
4325 | 0x00, | ||
4326 | 0x00, | ||
4327 | 0x00, | ||
4328 | 0x00, | ||
4329 | |||
4330 | 0x00, | ||
4331 | 0x00, | ||
4332 | 0x00, | ||
4333 | 0x00, | ||
4334 | 0x00, | ||
4335 | 0x7c, | ||
4336 | 0x64, | ||
4337 | 0x64, | ||
4338 | 0x64, | ||
4339 | 0x64, | ||
4340 | 0x64, | ||
4341 | 0x7c, | ||
4342 | 0x00, | ||
4343 | 0x00, | ||
4344 | 0x00, | ||
4345 | 0x00, | ||
4346 | |||
4347 | 0x00, | ||
4348 | 0x00, | ||
4349 | 0x00, | ||
4350 | 0x00, | ||
4351 | 0x00, | ||
4352 | 0x00, | ||
4353 | 0x00, | ||
4354 | 0x00, | ||
4355 | 0x00, | ||
4356 | 0x00, | ||
4357 | 0x00, | ||
4358 | 0x00, | ||
4359 | 0x00, | ||
4360 | 0x00, | ||
4361 | 0x00, | ||
4362 | 0x00, | ||
4363 | |||
4364 | }; | ||
4365 | |||
4366 | |||
4367 | const struct font_desc font_rl = { | ||
4368 | RL_IDX, | ||
4369 | "RomanLarge", | ||
4370 | 8, | ||
4371 | 16, | ||
4372 | patterns, | ||
4373 | -1 | ||
4374 | }; | ||
diff --git a/drivers/video/console/fonts.c b/drivers/video/console/fonts.c index 4fd07d9eca03..9be83bed1959 100644 --- a/drivers/video/console/fonts.c +++ b/drivers/video/console/fonts.c | |||
@@ -64,6 +64,10 @@ static const struct font_desc *fonts[] = { | |||
64 | #undef NO_FONTS | 64 | #undef NO_FONTS |
65 | &font_mini_4x6, | 65 | &font_mini_4x6, |
66 | #endif | 66 | #endif |
67 | #ifdef CONFIG_FONT_RL | ||
68 | #undef NO_FONTS | ||
69 | &font_rl, | ||
70 | #endif | ||
67 | }; | 71 | }; |
68 | 72 | ||
69 | #define num_fonts (sizeof(fonts)/sizeof(*fonts)) | 73 | #define num_fonts (sizeof(fonts)/sizeof(*fonts)) |
diff --git a/drivers/video/softcursor.c b/drivers/video/console/softcursor.c index 229c4bc35079..8529bf08db28 100644 --- a/drivers/video/softcursor.c +++ b/drivers/video/console/softcursor.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * linux/drivers/video/softcursor.c -- Generic software cursor for frame buffer devices | 2 | * linux/drivers/video/softcursor.c -- Generic software cursor for frame buffer devices |
3 | * | 3 | * |
4 | * Created 14 Nov 2002 by James Simmons | 4 | * Created 14 Nov 2002 by James Simmons |
5 | * | 5 | * |
6 | * This file is subject to the terms and conditions of the GNU General Public | 6 | * This file is subject to the terms and conditions of the GNU General Public |
7 | * License. See the file COPYING in the main directory of this archive | 7 | * License. See the file COPYING in the main directory of this archive |
@@ -55,9 +55,9 @@ int soft_cursor(struct fb_info *info, struct fb_cursor *cursor) | |||
55 | src[i] = image->data[i] & cursor->mask[i]; | 55 | src[i] = image->data[i] & cursor->mask[i]; |
56 | break; | 56 | break; |
57 | } | 57 | } |
58 | } else | 58 | } else |
59 | memcpy(src, image->data, dsize); | 59 | memcpy(src, image->data, dsize); |
60 | 60 | ||
61 | fb_pad_aligned_buffer(dst, d_pitch, src, s_pitch, image->height); | 61 | fb_pad_aligned_buffer(dst, d_pitch, src, s_pitch, image->height); |
62 | image->data = dst; | 62 | image->data = dst; |
63 | info->fbops->fb_imageblit(info, image); | 63 | info->fbops->fb_imageblit(info, image); |
@@ -66,7 +66,7 @@ int soft_cursor(struct fb_info *info, struct fb_cursor *cursor) | |||
66 | } | 66 | } |
67 | 67 | ||
68 | EXPORT_SYMBOL(soft_cursor); | 68 | EXPORT_SYMBOL(soft_cursor); |
69 | 69 | ||
70 | MODULE_AUTHOR("James Simmons <jsimmons@users.sf.net>"); | 70 | MODULE_AUTHOR("James Simmons <jsimmons@users.sf.net>"); |
71 | MODULE_DESCRIPTION("Generic software cursor"); | 71 | MODULE_DESCRIPTION("Generic software cursor"); |
72 | MODULE_LICENSE("GPL"); | 72 | MODULE_LICENSE("GPL"); |
diff --git a/drivers/video/controlfb.c b/drivers/video/controlfb.c index 989e700159e0..403d17377f8d 100644 --- a/drivers/video/controlfb.c +++ b/drivers/video/controlfb.c | |||
@@ -176,7 +176,6 @@ static struct fb_ops controlfb_ops = { | |||
176 | .fb_fillrect = cfb_fillrect, | 176 | .fb_fillrect = cfb_fillrect, |
177 | .fb_copyarea = cfb_copyarea, | 177 | .fb_copyarea = cfb_copyarea, |
178 | .fb_imageblit = cfb_imageblit, | 178 | .fb_imageblit = cfb_imageblit, |
179 | .fb_cursor = soft_cursor, | ||
180 | }; | 179 | }; |
181 | 180 | ||
182 | 181 | ||
diff --git a/drivers/video/cyber2000fb.c b/drivers/video/cyber2000fb.c index 3894b2a501d6..c589d23e7f91 100644 --- a/drivers/video/cyber2000fb.c +++ b/drivers/video/cyber2000fb.c | |||
@@ -1064,7 +1064,6 @@ static struct fb_ops cyber2000fb_ops = { | |||
1064 | .fb_fillrect = cyber2000fb_fillrect, | 1064 | .fb_fillrect = cyber2000fb_fillrect, |
1065 | .fb_copyarea = cyber2000fb_copyarea, | 1065 | .fb_copyarea = cyber2000fb_copyarea, |
1066 | .fb_imageblit = cyber2000fb_imageblit, | 1066 | .fb_imageblit = cyber2000fb_imageblit, |
1067 | .fb_cursor = soft_cursor, | ||
1068 | .fb_sync = cyber2000fb_sync, | 1067 | .fb_sync = cyber2000fb_sync, |
1069 | }; | 1068 | }; |
1070 | 1069 | ||
diff --git a/drivers/video/cyblafb.c b/drivers/video/cyblafb.c index 6992100a508c..03fbe83d71a8 100644 --- a/drivers/video/cyblafb.c +++ b/drivers/video/cyblafb.c | |||
@@ -968,7 +968,6 @@ static struct fb_ops cyblafb_ops __devinitdata = { | |||
968 | .fb_fillrect = cyblafb_fillrect, | 968 | .fb_fillrect = cyblafb_fillrect, |
969 | .fb_copyarea= cyblafb_copyarea, | 969 | .fb_copyarea= cyblafb_copyarea, |
970 | .fb_imageblit = cyblafb_imageblit, | 970 | .fb_imageblit = cyblafb_imageblit, |
971 | .fb_cursor = soft_cursor, | ||
972 | }; | 971 | }; |
973 | 972 | ||
974 | //========================================================================== | 973 | //========================================================================== |
diff --git a/drivers/video/dnfb.c b/drivers/video/dnfb.c index 1785686a7f11..957a3ada2b75 100644 --- a/drivers/video/dnfb.c +++ b/drivers/video/dnfb.c | |||
@@ -116,7 +116,6 @@ static struct fb_ops dn_fb_ops = { | |||
116 | .fb_fillrect = cfb_fillrect, | 116 | .fb_fillrect = cfb_fillrect, |
117 | .fb_copyarea = dnfb_copyarea, | 117 | .fb_copyarea = dnfb_copyarea, |
118 | .fb_imageblit = cfb_imageblit, | 118 | .fb_imageblit = cfb_imageblit, |
119 | .fb_cursor = soft_cursor, | ||
120 | }; | 119 | }; |
121 | 120 | ||
122 | struct fb_var_screeninfo dnfb_var __devinitdata = { | 121 | struct fb_var_screeninfo dnfb_var __devinitdata = { |
diff --git a/drivers/video/epson1355fb.c b/drivers/video/epson1355fb.c index 7363d0b25fdf..6a81a1dd8f3d 100644 --- a/drivers/video/epson1355fb.c +++ b/drivers/video/epson1355fb.c | |||
@@ -484,7 +484,6 @@ static struct fb_ops epson1355fb_fbops = { | |||
484 | .fb_imageblit = cfb_imageblit, | 484 | .fb_imageblit = cfb_imageblit, |
485 | .fb_read = epson1355fb_read, | 485 | .fb_read = epson1355fb_read, |
486 | .fb_write = epson1355fb_write, | 486 | .fb_write = epson1355fb_write, |
487 | .fb_cursor = soft_cursor, | ||
488 | }; | 487 | }; |
489 | 488 | ||
490 | /* ------------------------------------------------------------------------- */ | 489 | /* ------------------------------------------------------------------------- */ |
diff --git a/drivers/video/fbmon.c b/drivers/video/fbmon.c index 713226cdf3c6..fc7965b66775 100644 --- a/drivers/video/fbmon.c +++ b/drivers/video/fbmon.c | |||
@@ -538,25 +538,12 @@ static struct fb_videomode *fb_create_modedb(unsigned char *edid, int *dbsize) | |||
538 | 538 | ||
539 | *dbsize = 0; | 539 | *dbsize = 0; |
540 | 540 | ||
541 | DPRINTK(" Supported VESA Modes\n"); | ||
542 | block = edid + ESTABLISHED_TIMING_1; | ||
543 | num += get_est_timing(block, &mode[num]); | ||
544 | |||
545 | DPRINTK(" Standard Timings\n"); | ||
546 | block = edid + STD_TIMING_DESCRIPTIONS_START; | ||
547 | for (i = 0; i < STD_TIMING; i++, block += STD_TIMING_DESCRIPTION_SIZE) | ||
548 | num += get_std_timing(block, &mode[num]); | ||
549 | |||
550 | DPRINTK(" Detailed Timings\n"); | 541 | DPRINTK(" Detailed Timings\n"); |
551 | block = edid + DETAILED_TIMING_DESCRIPTIONS_START; | 542 | block = edid + DETAILED_TIMING_DESCRIPTIONS_START; |
552 | for (i = 0; i < 4; i++, block+= DETAILED_TIMING_DESCRIPTION_SIZE) { | 543 | for (i = 0; i < 4; i++, block+= DETAILED_TIMING_DESCRIPTION_SIZE) { |
553 | int first = 1; | 544 | int first = 1; |
554 | 545 | ||
555 | if (block[0] == 0x00 && block[1] == 0x00) { | 546 | if (!(block[0] == 0x00 && block[1] == 0x00)) { |
556 | if (block[3] == 0xfa) { | ||
557 | num += get_dst_timing(block + 5, &mode[num]); | ||
558 | } | ||
559 | } else { | ||
560 | get_detailed_timing(block, &mode[num]); | 547 | get_detailed_timing(block, &mode[num]); |
561 | if (first) { | 548 | if (first) { |
562 | mode[num].flag |= FB_MODE_IS_FIRST; | 549 | mode[num].flag |= FB_MODE_IS_FIRST; |
@@ -565,6 +552,21 @@ static struct fb_videomode *fb_create_modedb(unsigned char *edid, int *dbsize) | |||
565 | num++; | 552 | num++; |
566 | } | 553 | } |
567 | } | 554 | } |
555 | |||
556 | DPRINTK(" Supported VESA Modes\n"); | ||
557 | block = edid + ESTABLISHED_TIMING_1; | ||
558 | num += get_est_timing(block, &mode[num]); | ||
559 | |||
560 | DPRINTK(" Standard Timings\n"); | ||
561 | block = edid + STD_TIMING_DESCRIPTIONS_START; | ||
562 | for (i = 0; i < STD_TIMING; i++, block += STD_TIMING_DESCRIPTION_SIZE) | ||
563 | num += get_std_timing(block, &mode[num]); | ||
564 | |||
565 | block = edid + DETAILED_TIMING_DESCRIPTIONS_START; | ||
566 | for (i = 0; i < 4; i++, block+= DETAILED_TIMING_DESCRIPTION_SIZE) { | ||
567 | if (block[0] == 0x00 && block[1] == 0x00 && block[3] == 0xfa) | ||
568 | num += get_dst_timing(block + 5, &mode[num]); | ||
569 | } | ||
568 | 570 | ||
569 | /* Yikes, EDID data is totally useless */ | 571 | /* Yikes, EDID data is totally useless */ |
570 | if (!num) { | 572 | if (!num) { |
@@ -827,7 +829,7 @@ int fb_parse_edid(unsigned char *edid, struct fb_var_screeninfo *var) | |||
827 | void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs) | 829 | void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs) |
828 | { | 830 | { |
829 | unsigned char *block; | 831 | unsigned char *block; |
830 | int i; | 832 | int i, found = 0; |
831 | 833 | ||
832 | if (edid == NULL) | 834 | if (edid == NULL) |
833 | return; | 835 | return; |
@@ -869,6 +871,22 @@ void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs) | |||
869 | get_monspecs(edid, specs); | 871 | get_monspecs(edid, specs); |
870 | 872 | ||
871 | specs->modedb = fb_create_modedb(edid, &specs->modedb_len); | 873 | specs->modedb = fb_create_modedb(edid, &specs->modedb_len); |
874 | |||
875 | /* | ||
876 | * Workaround for buggy EDIDs that sets that the first | ||
877 | * detailed timing is preferred but has not detailed | ||
878 | * timing specified | ||
879 | */ | ||
880 | for (i = 0; i < specs->modedb_len; i++) { | ||
881 | if (specs->modedb[i].flag & FB_MODE_IS_DETAILED) { | ||
882 | found = 1; | ||
883 | break; | ||
884 | } | ||
885 | } | ||
886 | |||
887 | if (!found) | ||
888 | specs->misc &= ~FB_MISC_1ST_DETAIL; | ||
889 | |||
872 | DPRINTK("========================================\n"); | 890 | DPRINTK("========================================\n"); |
873 | } | 891 | } |
874 | 892 | ||
diff --git a/drivers/video/ffb.c b/drivers/video/ffb.c index 10cd05059fe9..04417dc16c2e 100644 --- a/drivers/video/ffb.c +++ b/drivers/video/ffb.c | |||
@@ -57,9 +57,6 @@ static struct fb_ops ffb_ops = { | |||
57 | .fb_sync = ffb_sync, | 57 | .fb_sync = ffb_sync, |
58 | .fb_mmap = ffb_mmap, | 58 | .fb_mmap = ffb_mmap, |
59 | .fb_ioctl = ffb_ioctl, | 59 | .fb_ioctl = ffb_ioctl, |
60 | |||
61 | /* XXX Use FFB hw cursor once fb cursor API is better understood... */ | ||
62 | .fb_cursor = soft_cursor, | ||
63 | }; | 60 | }; |
64 | 61 | ||
65 | /* Register layout and definitions */ | 62 | /* Register layout and definitions */ |
diff --git a/drivers/video/fm2fb.c b/drivers/video/fm2fb.c index a0763283d776..998374cfae6d 100644 --- a/drivers/video/fm2fb.c +++ b/drivers/video/fm2fb.c | |||
@@ -172,7 +172,6 @@ static struct fb_ops fm2fb_ops = { | |||
172 | .fb_fillrect = cfb_fillrect, | 172 | .fb_fillrect = cfb_fillrect, |
173 | .fb_copyarea = cfb_copyarea, | 173 | .fb_copyarea = cfb_copyarea, |
174 | .fb_imageblit = cfb_imageblit, | 174 | .fb_imageblit = cfb_imageblit, |
175 | .fb_cursor = soft_cursor, | ||
176 | }; | 175 | }; |
177 | 176 | ||
178 | /* | 177 | /* |
diff --git a/drivers/video/gbefb.c b/drivers/video/gbefb.c index ed853bef19e9..9d5e4f342110 100644 --- a/drivers/video/gbefb.c +++ b/drivers/video/gbefb.c | |||
@@ -1038,7 +1038,6 @@ static struct fb_ops gbefb_ops = { | |||
1038 | .fb_fillrect = cfb_fillrect, | 1038 | .fb_fillrect = cfb_fillrect, |
1039 | .fb_copyarea = cfb_copyarea, | 1039 | .fb_copyarea = cfb_copyarea, |
1040 | .fb_imageblit = cfb_imageblit, | 1040 | .fb_imageblit = cfb_imageblit, |
1041 | .fb_cursor = soft_cursor, | ||
1042 | }; | 1041 | }; |
1043 | 1042 | ||
1044 | /* | 1043 | /* |
diff --git a/drivers/video/geode/Kconfig b/drivers/video/geode/Kconfig index 5a9b89c3831b..42fb9a89a792 100644 --- a/drivers/video/geode/Kconfig +++ b/drivers/video/geode/Kconfig | |||
@@ -14,7 +14,6 @@ config FB_GEODE_GX1 | |||
14 | select FB_CFB_FILLRECT | 14 | select FB_CFB_FILLRECT |
15 | select FB_CFB_COPYAREA | 15 | select FB_CFB_COPYAREA |
16 | select FB_CFB_IMAGEBLIT | 16 | select FB_CFB_IMAGEBLIT |
17 | select FB_SOFT_CURSOR | ||
18 | ---help--- | 17 | ---help--- |
19 | Framebuffer driver for the display controller integrated into the | 18 | Framebuffer driver for the display controller integrated into the |
20 | AMD Geode GX1 processor. | 19 | AMD Geode GX1 processor. |
diff --git a/drivers/video/geode/gx1fb_core.c b/drivers/video/geode/gx1fb_core.c index 74a5fca86b8a..8e8da7433994 100644 --- a/drivers/video/geode/gx1fb_core.c +++ b/drivers/video/geode/gx1fb_core.c | |||
@@ -275,7 +275,6 @@ static struct fb_ops gx1fb_ops = { | |||
275 | .fb_fillrect = cfb_fillrect, | 275 | .fb_fillrect = cfb_fillrect, |
276 | .fb_copyarea = cfb_copyarea, | 276 | .fb_copyarea = cfb_copyarea, |
277 | .fb_imageblit = cfb_imageblit, | 277 | .fb_imageblit = cfb_imageblit, |
278 | .fb_cursor = soft_cursor, | ||
279 | }; | 278 | }; |
280 | 279 | ||
281 | static struct fb_info * __init gx1fb_init_fbinfo(struct device *dev) | 280 | static struct fb_info * __init gx1fb_init_fbinfo(struct device *dev) |
diff --git a/drivers/video/hitfb.c b/drivers/video/hitfb.c index 0d376ba54814..f04ca721f94c 100644 --- a/drivers/video/hitfb.c +++ b/drivers/video/hitfb.c | |||
@@ -262,7 +262,6 @@ static struct fb_ops hitfb_ops = { | |||
262 | .fb_fillrect = hitfb_fillrect, | 262 | .fb_fillrect = hitfb_fillrect, |
263 | .fb_copyarea = hitfb_copyarea, | 263 | .fb_copyarea = hitfb_copyarea, |
264 | .fb_imageblit = cfb_imageblit, | 264 | .fb_imageblit = cfb_imageblit, |
265 | .fb_cursor = soft_cursor, | ||
266 | }; | 265 | }; |
267 | 266 | ||
268 | int __init hitfb_init(void) | 267 | int __init hitfb_init(void) |
diff --git a/drivers/video/hpfb.c b/drivers/video/hpfb.c index e97fe8481d59..bebdac59d231 100644 --- a/drivers/video/hpfb.c +++ b/drivers/video/hpfb.c | |||
@@ -193,7 +193,6 @@ static struct fb_ops hpfb_ops = { | |||
193 | .fb_fillrect = hpfb_fillrect, | 193 | .fb_fillrect = hpfb_fillrect, |
194 | .fb_copyarea = hpfb_copyarea, | 194 | .fb_copyarea = hpfb_copyarea, |
195 | .fb_imageblit = cfb_imageblit, | 195 | .fb_imageblit = cfb_imageblit, |
196 | .fb_cursor = soft_cursor, | ||
197 | .fb_sync = hpfb_sync, | 196 | .fb_sync = hpfb_sync, |
198 | }; | 197 | }; |
199 | 198 | ||
diff --git a/drivers/video/i810/i810-i2c.c b/drivers/video/i810/i810-i2c.c index 689d2586366d..c61bad0da20f 100644 --- a/drivers/video/i810/i810-i2c.c +++ b/drivers/video/i810/i810-i2c.c | |||
@@ -46,92 +46,45 @@ static void i810i2c_setscl(void *data, int state) | |||
46 | struct i810fb_par *par = chan->par; | 46 | struct i810fb_par *par = chan->par; |
47 | u8 __iomem *mmio = par->mmio_start_virtual; | 47 | u8 __iomem *mmio = par->mmio_start_virtual; |
48 | 48 | ||
49 | i810_writel(mmio, GPIOB, (state ? SCL_VAL_OUT : 0) | SCL_DIR | | 49 | i810_writel(mmio, chan->ddc_base, (state ? SCL_VAL_OUT : 0) | SCL_DIR | |
50 | SCL_DIR_MASK | SCL_VAL_MASK); | 50 | SCL_DIR_MASK | SCL_VAL_MASK); |
51 | i810_readl(mmio, GPIOB); /* flush posted write */ | 51 | i810_readl(mmio, chan->ddc_base); /* flush posted write */ |
52 | } | 52 | } |
53 | 53 | ||
54 | static void i810i2c_setsda(void *data, int state) | 54 | static void i810i2c_setsda(void *data, int state) |
55 | { | 55 | { |
56 | struct i810fb_i2c_chan *chan = (struct i810fb_i2c_chan *)data; | 56 | struct i810fb_i2c_chan *chan = data; |
57 | struct i810fb_par *par = chan->par; | 57 | struct i810fb_par *par = chan->par; |
58 | u8 __iomem *mmio = par->mmio_start_virtual; | 58 | u8 __iomem *mmio = par->mmio_start_virtual; |
59 | 59 | ||
60 | i810_writel(mmio, GPIOB, (state ? SDA_VAL_OUT : 0) | SDA_DIR | | 60 | i810_writel(mmio, chan->ddc_base, (state ? SDA_VAL_OUT : 0) | SDA_DIR | |
61 | SDA_DIR_MASK | SDA_VAL_MASK); | 61 | SDA_DIR_MASK | SDA_VAL_MASK); |
62 | i810_readl(mmio, GPIOB); /* flush posted write */ | 62 | i810_readl(mmio, chan->ddc_base); /* flush posted write */ |
63 | } | 63 | } |
64 | 64 | ||
65 | static int i810i2c_getscl(void *data) | 65 | static int i810i2c_getscl(void *data) |
66 | { | 66 | { |
67 | struct i810fb_i2c_chan *chan = (struct i810fb_i2c_chan *)data; | 67 | struct i810fb_i2c_chan *chan = data; |
68 | struct i810fb_par *par = chan->par; | 68 | struct i810fb_par *par = chan->par; |
69 | u8 __iomem *mmio = par->mmio_start_virtual; | 69 | u8 __iomem *mmio = par->mmio_start_virtual; |
70 | 70 | ||
71 | i810_writel(mmio, GPIOB, SCL_DIR_MASK); | 71 | i810_writel(mmio, chan->ddc_base, SCL_DIR_MASK); |
72 | i810_writel(mmio, GPIOB, 0); | 72 | i810_writel(mmio, chan->ddc_base, 0); |
73 | return (0 != (i810_readl(mmio, GPIOB) & SCL_VAL_IN)); | 73 | return ((i810_readl(mmio, chan->ddc_base) & SCL_VAL_IN) != 0); |
74 | } | 74 | } |
75 | 75 | ||
76 | static int i810i2c_getsda(void *data) | 76 | static int i810i2c_getsda(void *data) |
77 | { | 77 | { |
78 | struct i810fb_i2c_chan *chan = (struct i810fb_i2c_chan *)data; | 78 | struct i810fb_i2c_chan *chan = data; |
79 | struct i810fb_par *par = chan->par; | 79 | struct i810fb_par *par = chan->par; |
80 | u8 __iomem *mmio = par->mmio_start_virtual; | 80 | u8 __iomem *mmio = par->mmio_start_virtual; |
81 | 81 | ||
82 | i810_writel(mmio, GPIOB, SDA_DIR_MASK); | 82 | i810_writel(mmio, chan->ddc_base, SDA_DIR_MASK); |
83 | i810_writel(mmio, GPIOB, 0); | 83 | i810_writel(mmio, chan->ddc_base, 0); |
84 | return (0 != (i810_readl(mmio, GPIOB) & SDA_VAL_IN)); | 84 | return ((i810_readl(mmio, chan->ddc_base) & SDA_VAL_IN) != 0); |
85 | } | ||
86 | |||
87 | static void i810ddc_setscl(void *data, int state) | ||
88 | { | ||
89 | struct i810fb_i2c_chan *chan = (struct i810fb_i2c_chan *)data; | ||
90 | struct i810fb_par *par = chan->par; | ||
91 | u8 __iomem *mmio = par->mmio_start_virtual; | ||
92 | |||
93 | i810_writel(mmio, GPIOA, (state ? SCL_VAL_OUT : 0) | SCL_DIR | | ||
94 | SCL_DIR_MASK | SCL_VAL_MASK); | ||
95 | i810_readl(mmio, GPIOA); /* flush posted write */ | ||
96 | } | ||
97 | |||
98 | static void i810ddc_setsda(void *data, int state) | ||
99 | { | ||
100 | struct i810fb_i2c_chan *chan = (struct i810fb_i2c_chan *)data; | ||
101 | struct i810fb_par *par = chan->par; | ||
102 | u8 __iomem *mmio = par->mmio_start_virtual; | ||
103 | |||
104 | i810_writel(mmio, GPIOA, (state ? SDA_VAL_OUT : 0) | SDA_DIR | | ||
105 | SDA_DIR_MASK | SDA_VAL_MASK); | ||
106 | i810_readl(mmio, GPIOA); /* flush posted write */ | ||
107 | } | ||
108 | |||
109 | static int i810ddc_getscl(void *data) | ||
110 | { | ||
111 | struct i810fb_i2c_chan *chan = (struct i810fb_i2c_chan *)data; | ||
112 | struct i810fb_par *par = chan->par; | ||
113 | u8 __iomem *mmio = par->mmio_start_virtual; | ||
114 | |||
115 | i810_writel(mmio, GPIOA, SCL_DIR_MASK); | ||
116 | i810_writel(mmio, GPIOA, 0); | ||
117 | return (0 != (i810_readl(mmio, GPIOA) & SCL_VAL_IN)); | ||
118 | } | ||
119 | |||
120 | static int i810ddc_getsda(void *data) | ||
121 | { | ||
122 | struct i810fb_i2c_chan *chan = (struct i810fb_i2c_chan *)data; | ||
123 | struct i810fb_par *par = chan->par; | ||
124 | u8 __iomem *mmio = par->mmio_start_virtual; | ||
125 | |||
126 | i810_writel(mmio, GPIOA, SDA_DIR_MASK); | ||
127 | i810_writel(mmio, GPIOA, 0); | ||
128 | return (0 != (i810_readl(mmio, GPIOA) & SDA_VAL_IN)); | ||
129 | } | 85 | } |
130 | 86 | ||
131 | #define I2C_ALGO_DDC_I810 0x0e0000 | 87 | static int i810_setup_i2c_bus(struct i810fb_i2c_chan *chan, const char *name) |
132 | #define I2C_ALGO_I2C_I810 0x0f0000 | ||
133 | static int i810_setup_i2c_bus(struct i810fb_i2c_chan *chan, const char *name, | ||
134 | int conn) | ||
135 | { | 88 | { |
136 | int rc; | 89 | int rc; |
137 | 90 | ||
@@ -139,22 +92,11 @@ static int i810_setup_i2c_bus(struct i810fb_i2c_chan *chan, const char *name, | |||
139 | chan->adapter.owner = THIS_MODULE; | 92 | chan->adapter.owner = THIS_MODULE; |
140 | chan->adapter.algo_data = &chan->algo; | 93 | chan->adapter.algo_data = &chan->algo; |
141 | chan->adapter.dev.parent = &chan->par->dev->dev; | 94 | chan->adapter.dev.parent = &chan->par->dev->dev; |
142 | switch (conn) { | 95 | chan->adapter.id = I2C_HW_B_I810; |
143 | case 1: | 96 | chan->algo.setsda = i810i2c_setsda; |
144 | chan->adapter.id = I2C_ALGO_DDC_I810; | 97 | chan->algo.setscl = i810i2c_setscl; |
145 | chan->algo.setsda = i810ddc_setsda; | 98 | chan->algo.getsda = i810i2c_getsda; |
146 | chan->algo.setscl = i810ddc_setscl; | 99 | chan->algo.getscl = i810i2c_getscl; |
147 | chan->algo.getsda = i810ddc_getsda; | ||
148 | chan->algo.getscl = i810ddc_getscl; | ||
149 | break; | ||
150 | case 2: | ||
151 | chan->adapter.id = I2C_ALGO_I2C_I810; | ||
152 | chan->algo.setsda = i810i2c_setsda; | ||
153 | chan->algo.setscl = i810i2c_setscl; | ||
154 | chan->algo.getsda = i810i2c_getsda; | ||
155 | chan->algo.getscl = i810i2c_getscl; | ||
156 | break; | ||
157 | } | ||
158 | chan->algo.udelay = 10; | 100 | chan->algo.udelay = 10; |
159 | chan->algo.mdelay = 10; | 101 | chan->algo.mdelay = 10; |
160 | chan->algo.timeout = (HZ/2); | 102 | chan->algo.timeout = (HZ/2); |
@@ -168,11 +110,15 @@ static int i810_setup_i2c_bus(struct i810fb_i2c_chan *chan, const char *name, | |||
168 | udelay(20); | 110 | udelay(20); |
169 | 111 | ||
170 | rc = i2c_bit_add_bus(&chan->adapter); | 112 | rc = i2c_bit_add_bus(&chan->adapter); |
113 | |||
171 | if (rc == 0) | 114 | if (rc == 0) |
172 | dev_dbg(&chan->par->dev->dev, "I2C bus %s registered.\n",name); | 115 | dev_dbg(&chan->par->dev->dev, "I2C bus %s registered.\n",name); |
173 | else | 116 | else { |
174 | dev_warn(&chan->par->dev->dev, "Failed to register I2C bus " | 117 | dev_warn(&chan->par->dev->dev, "Failed to register I2C bus " |
175 | "%s.\n", name); | 118 | "%s.\n", name); |
119 | chan->par = NULL; | ||
120 | } | ||
121 | |||
176 | return rc; | 122 | return rc; |
177 | } | 123 | } |
178 | 124 | ||
@@ -180,8 +126,14 @@ void i810_create_i2c_busses(struct i810fb_par *par) | |||
180 | { | 126 | { |
181 | par->chan[0].par = par; | 127 | par->chan[0].par = par; |
182 | par->chan[1].par = par; | 128 | par->chan[1].par = par; |
183 | i810_setup_i2c_bus(&par->chan[0], "I810-DDC", 1); | 129 | par->chan[2].par = par; |
184 | i810_setup_i2c_bus(&par->chan[1], "I810-I2C", 2); | 130 | |
131 | par->chan[0].ddc_base = GPIOA; | ||
132 | i810_setup_i2c_bus(&par->chan[0], "I810-DDC"); | ||
133 | par->chan[1].ddc_base = GPIOB; | ||
134 | i810_setup_i2c_bus(&par->chan[1], "I810-I2C"); | ||
135 | par->chan[2].ddc_base = GPIOC; | ||
136 | i810_setup_i2c_bus(&par->chan[2], "I810-GPIOC"); | ||
185 | } | 137 | } |
186 | 138 | ||
187 | void i810_delete_i2c_busses(struct i810fb_par *par) | 139 | void i810_delete_i2c_busses(struct i810fb_par *par) |
@@ -189,9 +141,14 @@ void i810_delete_i2c_busses(struct i810fb_par *par) | |||
189 | if (par->chan[0].par) | 141 | if (par->chan[0].par) |
190 | i2c_bit_del_bus(&par->chan[0].adapter); | 142 | i2c_bit_del_bus(&par->chan[0].adapter); |
191 | par->chan[0].par = NULL; | 143 | par->chan[0].par = NULL; |
144 | |||
192 | if (par->chan[1].par) | 145 | if (par->chan[1].par) |
193 | i2c_bit_del_bus(&par->chan[1].adapter); | 146 | i2c_bit_del_bus(&par->chan[1].adapter); |
194 | par->chan[1].par = NULL; | 147 | par->chan[1].par = NULL; |
148 | |||
149 | if (par->chan[2].par) | ||
150 | i2c_bit_del_bus(&par->chan[2].adapter); | ||
151 | par->chan[2].par = NULL; | ||
195 | } | 152 | } |
196 | 153 | ||
197 | static u8 *i810_do_probe_i2c_edid(struct i810fb_i2c_chan *chan) | 154 | static u8 *i810_do_probe_i2c_edid(struct i810fb_i2c_chan *chan) |
@@ -221,6 +178,7 @@ static u8 *i810_do_probe_i2c_edid(struct i810fb_i2c_chan *chan) | |||
221 | DPRINTK("i810-i2c: I2C Transfer successful\n"); | 178 | DPRINTK("i810-i2c: I2C Transfer successful\n"); |
222 | return buf; | 179 | return buf; |
223 | } | 180 | } |
181 | |||
224 | DPRINTK("i810-i2c: Unable to read EDID block.\n"); | 182 | DPRINTK("i810-i2c: Unable to read EDID block.\n"); |
225 | kfree(buf); | 183 | kfree(buf); |
226 | return NULL; | 184 | return NULL; |
@@ -233,7 +191,7 @@ int i810_probe_i2c_connector(struct fb_info *info, u8 **out_edid, int conn) | |||
233 | int i; | 191 | int i; |
234 | 192 | ||
235 | DPRINTK("i810-i2c: Probe DDC%i Bus\n", conn); | 193 | DPRINTK("i810-i2c: Probe DDC%i Bus\n", conn); |
236 | if (conn < 3) { | 194 | if (conn < 4) { |
237 | for (i = 0; i < 3; i++) { | 195 | for (i = 0; i < 3; i++) { |
238 | /* Do the real work */ | 196 | /* Do the real work */ |
239 | edid = i810_do_probe_i2c_edid(&par->chan[conn-1]); | 197 | edid = i810_do_probe_i2c_edid(&par->chan[conn-1]); |
@@ -241,11 +199,14 @@ int i810_probe_i2c_connector(struct fb_info *info, u8 **out_edid, int conn) | |||
241 | break; | 199 | break; |
242 | } | 200 | } |
243 | } else { | 201 | } else { |
244 | DPRINTK("i810-i2c: Getting EDID from BIOS\n"); | 202 | const u8 *e = fb_firmware_edid(info->device); |
245 | edid = kmalloc(EDID_LENGTH, GFP_KERNEL); | 203 | |
246 | if (edid) | 204 | if (e != NULL) { |
247 | memcpy(edid, fb_firmware_edid(info->device), | 205 | DPRINTK("i810-i2c: Getting EDID from BIOS\n"); |
248 | EDID_LENGTH); | 206 | edid = kmalloc(EDID_LENGTH, GFP_KERNEL); |
207 | if (edid) | ||
208 | memcpy(edid, e, EDID_LENGTH); | ||
209 | } | ||
249 | } | 210 | } |
250 | 211 | ||
251 | if (out_edid) | 212 | if (out_edid) |
@@ -253,5 +214,3 @@ int i810_probe_i2c_connector(struct fb_info *info, u8 **out_edid, int conn) | |||
253 | 214 | ||
254 | return (edid) ? 0 : 1; | 215 | return (edid) ? 0 : 1; |
255 | } | 216 | } |
256 | |||
257 | |||
diff --git a/drivers/video/i810/i810.h b/drivers/video/i810/i810.h index d48949ceaacc..6c187d5fe951 100644 --- a/drivers/video/i810/i810.h +++ b/drivers/video/i810/i810.h | |||
@@ -249,6 +249,7 @@ struct i810fb_i2c_chan { | |||
249 | struct i810fb_par *par; | 249 | struct i810fb_par *par; |
250 | struct i2c_adapter adapter; | 250 | struct i2c_adapter adapter; |
251 | struct i2c_algo_bit_data algo; | 251 | struct i2c_algo_bit_data algo; |
252 | unsigned long ddc_base; | ||
252 | }; | 253 | }; |
253 | 254 | ||
254 | struct i810fb_par { | 255 | struct i810fb_par { |
@@ -262,7 +263,7 @@ struct i810fb_par { | |||
262 | struct heap_data iring; | 263 | struct heap_data iring; |
263 | struct heap_data cursor_heap; | 264 | struct heap_data cursor_heap; |
264 | struct vgastate state; | 265 | struct vgastate state; |
265 | struct i810fb_i2c_chan chan[2]; | 266 | struct i810fb_i2c_chan chan[3]; |
266 | atomic_t use_count; | 267 | atomic_t use_count; |
267 | u32 pseudo_palette[17]; | 268 | u32 pseudo_palette[17]; |
268 | unsigned long mmio_start_phys; | 269 | unsigned long mmio_start_phys; |
diff --git a/drivers/video/i810/i810_main.c b/drivers/video/i810/i810_main.c index 0dbc9ddb6766..c0c974b1afaa 100644 --- a/drivers/video/i810/i810_main.c +++ b/drivers/video/i810/i810_main.c | |||
@@ -1854,7 +1854,7 @@ static void __devinit i810fb_find_init_mode(struct fb_info *info) | |||
1854 | #ifdef CONFIG_FB_I810_I2C | 1854 | #ifdef CONFIG_FB_I810_I2C |
1855 | i810_create_i2c_busses(par); | 1855 | i810_create_i2c_busses(par); |
1856 | 1856 | ||
1857 | for (i = 0; i < 3; i++) { | 1857 | for (i = 0; i < 4; i++) { |
1858 | err = i810_probe_i2c_connector(info, &par->edid, i+1); | 1858 | err = i810_probe_i2c_connector(info, &par->edid, i+1); |
1859 | if (!err) | 1859 | if (!err) |
1860 | break; | 1860 | break; |
@@ -1871,27 +1871,18 @@ static void __devinit i810fb_find_init_mode(struct fb_info *info) | |||
1871 | fb_videomode_to_modelist(specs->modedb, specs->modedb_len, | 1871 | fb_videomode_to_modelist(specs->modedb, specs->modedb_len, |
1872 | &info->modelist); | 1872 | &info->modelist); |
1873 | if (specs->modedb != NULL) { | 1873 | if (specs->modedb != NULL) { |
1874 | if (xres && yres) { | 1874 | struct fb_videomode *m; |
1875 | struct fb_videomode *m; | ||
1876 | 1875 | ||
1876 | if (xres && yres) { | ||
1877 | if ((m = fb_find_best_mode(&var, &info->modelist))) { | 1877 | if ((m = fb_find_best_mode(&var, &info->modelist))) { |
1878 | mode = *m; | 1878 | mode = *m; |
1879 | found = 1; | 1879 | found = 1; |
1880 | } | 1880 | } |
1881 | } | 1881 | } |
1882 | 1882 | ||
1883 | if (!found && specs->misc & FB_MISC_1ST_DETAIL) { | ||
1884 | for (i = 0; i < specs->modedb_len; i++) { | ||
1885 | if (specs->modedb[i].flag & FB_MODE_IS_FIRST) { | ||
1886 | mode = specs->modedb[i]; | ||
1887 | found = 1; | ||
1888 | break; | ||
1889 | } | ||
1890 | } | ||
1891 | } | ||
1892 | |||
1893 | if (!found) { | 1883 | if (!found) { |
1894 | mode = specs->modedb[0]; | 1884 | m = fb_find_best_display(&info->monspecs, &info->modelist); |
1885 | mode = *m; | ||
1895 | found = 1; | 1886 | found = 1; |
1896 | } | 1887 | } |
1897 | 1888 | ||
@@ -2066,8 +2057,7 @@ static void i810fb_release_resource(struct fb_info *info, | |||
2066 | iounmap(par->mmio_start_virtual); | 2057 | iounmap(par->mmio_start_virtual); |
2067 | if (par->aperture.virtual) | 2058 | if (par->aperture.virtual) |
2068 | iounmap(par->aperture.virtual); | 2059 | iounmap(par->aperture.virtual); |
2069 | if (par->edid) | 2060 | kfree(par->edid); |
2070 | kfree(par->edid); | ||
2071 | if (par->res_flags & FRAMEBUFFER_REQ) | 2061 | if (par->res_flags & FRAMEBUFFER_REQ) |
2072 | release_mem_region(par->aperture.physical, | 2062 | release_mem_region(par->aperture.physical, |
2073 | par->aperture.size); | 2063 | par->aperture.size); |
diff --git a/drivers/video/i810/i810_regs.h b/drivers/video/i810/i810_regs.h index 6e4b9afa4d98..91c6bd9d0d0d 100644 --- a/drivers/video/i810/i810_regs.h +++ b/drivers/video/i810/i810_regs.h | |||
@@ -70,6 +70,7 @@ | |||
70 | #define HVSYNC 0x05000 | 70 | #define HVSYNC 0x05000 |
71 | #define GPIOA 0x05010 | 71 | #define GPIOA 0x05010 |
72 | #define GPIOB 0x05014 | 72 | #define GPIOB 0x05014 |
73 | #define GPIOC 0x0501C | ||
73 | 74 | ||
74 | /* Clock Control and Power Management Registers (06000h 06FFFh) */ | 75 | /* Clock Control and Power Management Registers (06000h 06FFFh) */ |
75 | #define DCLK_0D 0x06000 | 76 | #define DCLK_0D 0x06000 |
diff --git a/drivers/video/imsttfb.c b/drivers/video/imsttfb.c index 7b9bf45ab6fe..7fbe24206b19 100644 --- a/drivers/video/imsttfb.c +++ b/drivers/video/imsttfb.c | |||
@@ -1344,7 +1344,6 @@ static struct fb_ops imsttfb_ops = { | |||
1344 | .fb_fillrect = imsttfb_fillrect, | 1344 | .fb_fillrect = imsttfb_fillrect, |
1345 | .fb_copyarea = imsttfb_copyarea, | 1345 | .fb_copyarea = imsttfb_copyarea, |
1346 | .fb_imageblit = cfb_imageblit, | 1346 | .fb_imageblit = cfb_imageblit, |
1347 | .fb_cursor = soft_cursor, | ||
1348 | .fb_ioctl = imsttfb_ioctl, | 1347 | .fb_ioctl = imsttfb_ioctl, |
1349 | }; | 1348 | }; |
1350 | 1349 | ||
diff --git a/drivers/video/imxfb.c b/drivers/video/imxfb.c index 64d9bcc38da3..e20b9f3a255f 100644 --- a/drivers/video/imxfb.c +++ b/drivers/video/imxfb.c | |||
@@ -298,7 +298,6 @@ static struct fb_ops imxfb_ops = { | |||
298 | .fb_copyarea = cfb_copyarea, | 298 | .fb_copyarea = cfb_copyarea, |
299 | .fb_imageblit = cfb_imageblit, | 299 | .fb_imageblit = cfb_imageblit, |
300 | .fb_blank = imxfb_blank, | 300 | .fb_blank = imxfb_blank, |
301 | .fb_cursor = soft_cursor, /* FIXME: i.MX can do hardware cursor */ | ||
302 | }; | 301 | }; |
303 | 302 | ||
304 | /* | 303 | /* |
diff --git a/drivers/video/intelfb/intelfb.h b/drivers/video/intelfb/intelfb.h index 011e11626558..f077ca34faba 100644 --- a/drivers/video/intelfb/intelfb.h +++ b/drivers/video/intelfb/intelfb.h | |||
@@ -10,7 +10,7 @@ | |||
10 | /*** Version/name ***/ | 10 | /*** Version/name ***/ |
11 | #define INTELFB_VERSION "0.9.2" | 11 | #define INTELFB_VERSION "0.9.2" |
12 | #define INTELFB_MODULE_NAME "intelfb" | 12 | #define INTELFB_MODULE_NAME "intelfb" |
13 | #define SUPPORTED_CHIPSETS "830M/845G/852GM/855GM/865G/915G" | 13 | #define SUPPORTED_CHIPSETS "830M/845G/852GM/855GM/865G/915G/915GM" |
14 | 14 | ||
15 | 15 | ||
16 | /*** Debug/feature defines ***/ | 16 | /*** Debug/feature defines ***/ |
@@ -47,6 +47,7 @@ | |||
47 | #define PCI_DEVICE_ID_INTEL_85XGM 0x3582 | 47 | #define PCI_DEVICE_ID_INTEL_85XGM 0x3582 |
48 | #define PCI_DEVICE_ID_INTEL_865G 0x2572 | 48 | #define PCI_DEVICE_ID_INTEL_865G 0x2572 |
49 | #define PCI_DEVICE_ID_INTEL_915G 0x2582 | 49 | #define PCI_DEVICE_ID_INTEL_915G 0x2582 |
50 | #define PCI_DEVICE_ID_INTEL_915GM 0x2592 | ||
50 | 51 | ||
51 | /* Size of MMIO region */ | 52 | /* Size of MMIO region */ |
52 | #define INTEL_REG_SIZE 0x80000 | 53 | #define INTEL_REG_SIZE 0x80000 |
@@ -119,7 +120,8 @@ enum intel_chips { | |||
119 | INTEL_855GM, | 120 | INTEL_855GM, |
120 | INTEL_855GME, | 121 | INTEL_855GME, |
121 | INTEL_865G, | 122 | INTEL_865G, |
122 | INTEL_915G | 123 | INTEL_915G, |
124 | INTEL_915GM | ||
123 | }; | 125 | }; |
124 | 126 | ||
125 | struct intelfb_hwstate { | 127 | struct intelfb_hwstate { |
diff --git a/drivers/video/intelfb/intelfbdrv.c b/drivers/video/intelfb/intelfbdrv.c index 80a09344f1aa..0799b999b314 100644 --- a/drivers/video/intelfb/intelfbdrv.c +++ b/drivers/video/intelfb/intelfbdrv.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * intelfb | 2 | * intelfb |
3 | * | 3 | * |
4 | * Linux framebuffer driver for Intel(R) 830M/845G/852GM/855GM/865G/915G | 4 | * Linux framebuffer driver for Intel(R) 830M/845G/852GM/855GM/865G/915G/915GM |
5 | * integrated graphics chips. | 5 | * integrated graphics chips. |
6 | * | 6 | * |
7 | * Copyright © 2002, 2003 David Dawes <dawes@xfree86.org> | 7 | * Copyright © 2002, 2003 David Dawes <dawes@xfree86.org> |
@@ -186,6 +186,7 @@ static struct pci_device_id intelfb_pci_table[] __devinitdata = { | |||
186 | { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_85XGM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_85XGM }, | 186 | { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_85XGM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_85XGM }, |
187 | { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_865G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_865G }, | 187 | { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_865G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_865G }, |
188 | { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_915G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_915G }, | 188 | { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_915G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_915G }, |
189 | { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_915GM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_915GM }, | ||
189 | { 0, } | 190 | { 0, } |
190 | }; | 191 | }; |
191 | 192 | ||
@@ -549,10 +550,11 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
549 | } | 550 | } |
550 | 551 | ||
551 | /* Set base addresses. */ | 552 | /* Set base addresses. */ |
552 | if (ent->device == PCI_DEVICE_ID_INTEL_915G) { | 553 | if ((ent->device == PCI_DEVICE_ID_INTEL_915G) || |
554 | (ent->device == PCI_DEVICE_ID_INTEL_915GM)) { | ||
553 | aperture_bar = 2; | 555 | aperture_bar = 2; |
554 | mmio_bar = 0; | 556 | mmio_bar = 0; |
555 | /* Disable HW cursor on 915G (not implemented yet) */ | 557 | /* Disable HW cursor on 915G/M (not implemented yet) */ |
556 | hwcursor = 0; | 558 | hwcursor = 0; |
557 | } | 559 | } |
558 | dinfo->aperture.physical = pci_resource_start(pdev, aperture_bar); | 560 | dinfo->aperture.physical = pci_resource_start(pdev, aperture_bar); |
@@ -1483,7 +1485,7 @@ intelfb_cursor(struct fb_info *info, struct fb_cursor *cursor) | |||
1483 | #endif | 1485 | #endif |
1484 | 1486 | ||
1485 | if (!dinfo->hwcursor) | 1487 | if (!dinfo->hwcursor) |
1486 | return soft_cursor(info, cursor); | 1488 | return -ENODEV; |
1487 | 1489 | ||
1488 | intelfbhw_cursor_hide(dinfo); | 1490 | intelfbhw_cursor_hide(dinfo); |
1489 | 1491 | ||
diff --git a/drivers/video/intelfb/intelfbhw.c b/drivers/video/intelfb/intelfbhw.c index 5bafc3c54db7..ac94c2e5ff85 100644 --- a/drivers/video/intelfb/intelfbhw.c +++ b/drivers/video/intelfb/intelfbhw.c | |||
@@ -99,6 +99,11 @@ intelfbhw_get_chipset(struct pci_dev *pdev, const char **name, int *chipset, | |||
99 | *chipset = INTEL_915G; | 99 | *chipset = INTEL_915G; |
100 | *mobile = 0; | 100 | *mobile = 0; |
101 | return 0; | 101 | return 0; |
102 | case PCI_DEVICE_ID_INTEL_915GM: | ||
103 | *name = "Intel(R) 915GM"; | ||
104 | *chipset = INTEL_915GM; | ||
105 | *mobile = 1; | ||
106 | return 0; | ||
102 | default: | 107 | default: |
103 | return 1; | 108 | return 1; |
104 | } | 109 | } |
diff --git a/drivers/video/kyro/fbdev.c b/drivers/video/kyro/fbdev.c index d8bac9e97842..5eb4d5c177bd 100644 --- a/drivers/video/kyro/fbdev.c +++ b/drivers/video/kyro/fbdev.c | |||
@@ -669,7 +669,6 @@ static struct fb_ops kyrofb_ops = { | |||
669 | .fb_fillrect = cfb_fillrect, | 669 | .fb_fillrect = cfb_fillrect, |
670 | .fb_copyarea = cfb_copyarea, | 670 | .fb_copyarea = cfb_copyarea, |
671 | .fb_imageblit = cfb_imageblit, | 671 | .fb_imageblit = cfb_imageblit, |
672 | .fb_cursor = soft_cursor, | ||
673 | }; | 672 | }; |
674 | 673 | ||
675 | static int __devinit kyrofb_probe(struct pci_dev *pdev, | 674 | static int __devinit kyrofb_probe(struct pci_dev *pdev, |
diff --git a/drivers/video/leo.c b/drivers/video/leo.c index 7e1e7fb168bd..84a7fe435bb8 100644 --- a/drivers/video/leo.c +++ b/drivers/video/leo.c | |||
@@ -51,7 +51,6 @@ static struct fb_ops leo_ops = { | |||
51 | .fb_imageblit = cfb_imageblit, | 51 | .fb_imageblit = cfb_imageblit, |
52 | .fb_mmap = leo_mmap, | 52 | .fb_mmap = leo_mmap, |
53 | .fb_ioctl = leo_ioctl, | 53 | .fb_ioctl = leo_ioctl, |
54 | .fb_cursor = soft_cursor, | ||
55 | }; | 54 | }; |
56 | 55 | ||
57 | #define LEO_OFF_LC_SS0_KRN 0x00200000UL | 56 | #define LEO_OFF_LC_SS0_KRN 0x00200000UL |
diff --git a/drivers/video/logo/Kconfig b/drivers/video/logo/Kconfig index 3e9ccf370ab2..8cb7fb4db441 100644 --- a/drivers/video/logo/Kconfig +++ b/drivers/video/logo/Kconfig | |||
@@ -7,6 +7,8 @@ menu "Logo configuration" | |||
7 | config LOGO | 7 | config LOGO |
8 | bool "Bootup logo" | 8 | bool "Bootup logo" |
9 | depends on FB || SGI_NEWPORT_CONSOLE | 9 | depends on FB || SGI_NEWPORT_CONSOLE |
10 | help | ||
11 | Enable and select frame buffer bootup logos. | ||
10 | 12 | ||
11 | config LOGO_LINUX_MONO | 13 | config LOGO_LINUX_MONO |
12 | bool "Standard black and white Linux logo" | 14 | bool "Standard black and white Linux logo" |
diff --git a/drivers/video/macfb.c b/drivers/video/macfb.c index 4945a4c02209..cfc748e94272 100644 --- a/drivers/video/macfb.c +++ b/drivers/video/macfb.c | |||
@@ -589,7 +589,6 @@ static struct fb_ops macfb_ops = { | |||
589 | .fb_fillrect = cfb_fillrect, | 589 | .fb_fillrect = cfb_fillrect, |
590 | .fb_copyarea = cfb_copyarea, | 590 | .fb_copyarea = cfb_copyarea, |
591 | .fb_imageblit = cfb_imageblit, | 591 | .fb_imageblit = cfb_imageblit, |
592 | .fb_cursor = soft_cursor, | ||
593 | }; | 592 | }; |
594 | 593 | ||
595 | void __init macfb_setup(char *options) | 594 | void __init macfb_setup(char *options) |
diff --git a/drivers/video/matrox/matroxfb_DAC1064.c b/drivers/video/matrox/matroxfb_DAC1064.c index 149680f8bcf0..0fbd9b5149f1 100644 --- a/drivers/video/matrox/matroxfb_DAC1064.c +++ b/drivers/video/matrox/matroxfb_DAC1064.c | |||
@@ -657,7 +657,6 @@ static int MGA1064_preinit(WPMINFO2) { | |||
657 | /* ACCESS_FBINFO(capable.cfb4) = 0; ... preinitialized by 0 */ | 657 | /* ACCESS_FBINFO(capable.cfb4) = 0; ... preinitialized by 0 */ |
658 | ACCESS_FBINFO(capable.text) = 1; | 658 | ACCESS_FBINFO(capable.text) = 1; |
659 | ACCESS_FBINFO(capable.vxres) = vxres_mystique; | 659 | ACCESS_FBINFO(capable.vxres) = vxres_mystique; |
660 | ACCESS_FBINFO(features.accel.has_cacheflush) = 1; | ||
661 | 660 | ||
662 | ACCESS_FBINFO(outputs[0]).output = &m1064; | 661 | ACCESS_FBINFO(outputs[0]).output = &m1064; |
663 | ACCESS_FBINFO(outputs[0]).src = ACCESS_FBINFO(outputs[0]).default_src; | 662 | ACCESS_FBINFO(outputs[0]).src = ACCESS_FBINFO(outputs[0]).default_src; |
@@ -842,7 +841,6 @@ static int MGAG100_preinit(WPMINFO2) { | |||
842 | /* ACCESS_FBINFO(capable.cfb4) = 0; ... preinitialized by 0 */ | 841 | /* ACCESS_FBINFO(capable.cfb4) = 0; ... preinitialized by 0 */ |
843 | ACCESS_FBINFO(capable.text) = 1; | 842 | ACCESS_FBINFO(capable.text) = 1; |
844 | ACCESS_FBINFO(capable.vxres) = vxres_g100; | 843 | ACCESS_FBINFO(capable.vxres) = vxres_g100; |
845 | ACCESS_FBINFO(features.accel.has_cacheflush) = 1; | ||
846 | ACCESS_FBINFO(capable.plnwt) = ACCESS_FBINFO(devflags.accelerator) == FB_ACCEL_MATROX_MGAG100 | 844 | ACCESS_FBINFO(capable.plnwt) = ACCESS_FBINFO(devflags.accelerator) == FB_ACCEL_MATROX_MGAG100 |
847 | ? ACCESS_FBINFO(devflags.sgram) : 1; | 845 | ? ACCESS_FBINFO(devflags.sgram) : 1; |
848 | 846 | ||
@@ -980,7 +978,7 @@ static void MGAG100_reset(WPMINFO2) { | |||
980 | hw->MXoptionReg |= 0x40; /* FIXME... */ | 978 | hw->MXoptionReg |= 0x40; /* FIXME... */ |
981 | pci_write_config_dword(ACCESS_FBINFO(pcidev), PCI_OPTION_REG, hw->MXoptionReg); | 979 | pci_write_config_dword(ACCESS_FBINFO(pcidev), PCI_OPTION_REG, hw->MXoptionReg); |
982 | } | 980 | } |
983 | mga_setr(M_EXTVGA_INDEX, 0x06, 0x50); | 981 | mga_setr(M_EXTVGA_INDEX, 0x06, 0x00); |
984 | } | 982 | } |
985 | } | 983 | } |
986 | if (ACCESS_FBINFO(devflags.g450dac)) { | 984 | if (ACCESS_FBINFO(devflags.g450dac)) { |
diff --git a/drivers/video/matrox/matroxfb_accel.c b/drivers/video/matrox/matroxfb_accel.c index c7f3e1321224..a5c825d99466 100644 --- a/drivers/video/matrox/matroxfb_accel.c +++ b/drivers/video/matrox/matroxfb_accel.c | |||
@@ -122,7 +122,7 @@ void matrox_cfbX_init(WPMINFO2) { | |||
122 | ACCESS_FBINFO(fbops).fb_copyarea = cfb_copyarea; | 122 | ACCESS_FBINFO(fbops).fb_copyarea = cfb_copyarea; |
123 | ACCESS_FBINFO(fbops).fb_fillrect = cfb_fillrect; | 123 | ACCESS_FBINFO(fbops).fb_fillrect = cfb_fillrect; |
124 | ACCESS_FBINFO(fbops).fb_imageblit = cfb_imageblit; | 124 | ACCESS_FBINFO(fbops).fb_imageblit = cfb_imageblit; |
125 | ACCESS_FBINFO(fbops).fb_cursor = soft_cursor; | 125 | ACCESS_FBINFO(fbops).fb_cursor = NULL; |
126 | 126 | ||
127 | accel = (ACCESS_FBINFO(fbcon).var.accel_flags & FB_ACCELF_TEXT) == FB_ACCELF_TEXT; | 127 | accel = (ACCESS_FBINFO(fbcon).var.accel_flags & FB_ACCELF_TEXT) == FB_ACCELF_TEXT; |
128 | 128 | ||
diff --git a/drivers/video/matrox/matroxfb_base.c b/drivers/video/matrox/matroxfb_base.c index e02da41f1b26..1e74f4cca53b 100644 --- a/drivers/video/matrox/matroxfb_base.c +++ b/drivers/video/matrox/matroxfb_base.c | |||
@@ -264,7 +264,6 @@ static void matroxfb_disable_irq(WPMINFO2) { | |||
264 | } | 264 | } |
265 | 265 | ||
266 | int matroxfb_wait_for_sync(WPMINFO u_int32_t crtc) { | 266 | int matroxfb_wait_for_sync(WPMINFO u_int32_t crtc) { |
267 | wait_queue_t __wait; | ||
268 | struct matrox_vsync *vs; | 267 | struct matrox_vsync *vs; |
269 | unsigned int cnt; | 268 | unsigned int cnt; |
270 | int ret; | 269 | int ret; |
@@ -286,7 +285,6 @@ int matroxfb_wait_for_sync(WPMINFO u_int32_t crtc) { | |||
286 | if (ret) { | 285 | if (ret) { |
287 | return ret; | 286 | return ret; |
288 | } | 287 | } |
289 | init_waitqueue_entry(&__wait, current); | ||
290 | 288 | ||
291 | cnt = vs->cnt; | 289 | cnt = vs->cnt; |
292 | ret = wait_event_interruptible_timeout(vs->wait, cnt != vs->cnt, HZ/10); | 290 | ret = wait_event_interruptible_timeout(vs->wait, cnt != vs->cnt, HZ/10); |
@@ -500,10 +498,6 @@ static int matroxfb_pitch_adjust(CPMINFO int xres, int bpp) { | |||
500 | } else { | 498 | } else { |
501 | xres_new = matroxfb_test_and_set_rounding(PMINFO xres, bpp); | 499 | xres_new = matroxfb_test_and_set_rounding(PMINFO xres, bpp); |
502 | } | 500 | } |
503 | if (!xres_new) return 0; | ||
504 | if (xres != xres_new) { | ||
505 | printk(KERN_INFO "matroxfb: cannot set xres to %d, rounded up to %d\n", xres, xres_new); | ||
506 | } | ||
507 | return xres_new; | 501 | return xres_new; |
508 | } | 502 | } |
509 | 503 | ||
@@ -1285,7 +1279,7 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi | |||
1285 | vaddr_t vm; | 1279 | vaddr_t vm; |
1286 | unsigned int offs; | 1280 | unsigned int offs; |
1287 | unsigned int offs2; | 1281 | unsigned int offs2; |
1288 | unsigned char store, orig; | 1282 | unsigned char orig; |
1289 | unsigned char bytes[32]; | 1283 | unsigned char bytes[32]; |
1290 | unsigned char* tmp; | 1284 | unsigned char* tmp; |
1291 | 1285 | ||
@@ -1301,16 +1295,12 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi | |||
1301 | orig = mga_inb(M_EXTVGA_DATA); | 1295 | orig = mga_inb(M_EXTVGA_DATA); |
1302 | mga_outb(M_EXTVGA_DATA, orig | 0x80); | 1296 | mga_outb(M_EXTVGA_DATA, orig | 0x80); |
1303 | 1297 | ||
1304 | store = mga_readb(vm, 0x1234); | ||
1305 | tmp = bytes; | 1298 | tmp = bytes; |
1306 | for (offs = 0x100000; offs < maxSize; offs += 0x200000) | 1299 | for (offs = 0x100000; offs < maxSize; offs += 0x200000) |
1307 | *tmp++ = mga_readb(vm, offs); | 1300 | *tmp++ = mga_readb(vm, offs); |
1308 | for (offs = 0x100000; offs < maxSize; offs += 0x200000) | 1301 | for (offs = 0x100000; offs < maxSize; offs += 0x200000) |
1309 | mga_writeb(vm, offs, 0x02); | 1302 | mga_writeb(vm, offs, 0x02); |
1310 | if (ACCESS_FBINFO(features.accel.has_cacheflush)) | 1303 | mga_outb(M_CACHEFLUSH, 0x00); |
1311 | mga_outb(M_CACHEFLUSH, 0x00); | ||
1312 | else | ||
1313 | mga_writeb(vm, 0x1234, 0x99); | ||
1314 | for (offs = 0x100000; offs < maxSize; offs += 0x200000) { | 1304 | for (offs = 0x100000; offs < maxSize; offs += 0x200000) { |
1315 | if (mga_readb(vm, offs) != 0x02) | 1305 | if (mga_readb(vm, offs) != 0x02) |
1316 | break; | 1306 | break; |
@@ -1321,7 +1311,6 @@ static int matroxfb_getmemory(WPMINFO unsigned int maxSize, unsigned int *realSi | |||
1321 | tmp = bytes; | 1311 | tmp = bytes; |
1322 | for (offs2 = 0x100000; offs2 < maxSize; offs2 += 0x200000) | 1312 | for (offs2 = 0x100000; offs2 < maxSize; offs2 += 0x200000) |
1323 | mga_writeb(vm, offs2, *tmp++); | 1313 | mga_writeb(vm, offs2, *tmp++); |
1324 | mga_writeb(vm, 0x1234, store); | ||
1325 | 1314 | ||
1326 | mga_outb(M_EXTVGA_INDEX, 0x03); | 1315 | mga_outb(M_EXTVGA_INDEX, 0x03); |
1327 | mga_outb(M_EXTVGA_DATA, orig); | 1316 | mga_outb(M_EXTVGA_DATA, orig); |
@@ -1430,6 +1419,20 @@ static struct board { | |||
1430 | MGA_1164, | 1419 | MGA_1164, |
1431 | &vbMystique, | 1420 | &vbMystique, |
1432 | "Mystique 220 (PCI)"}, | 1421 | "Mystique 220 (PCI)"}, |
1422 | {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_MYS_AGP, 0x02, | ||
1423 | 0, 0, | ||
1424 | DEVF_VIDEO64BIT | DEVF_CROSS4MB, | ||
1425 | 180000, | ||
1426 | MGA_1064, | ||
1427 | &vbMystique, | ||
1428 | "Mystique (AGP)"}, | ||
1429 | {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_MYS_AGP, 0xFF, | ||
1430 | 0, 0, | ||
1431 | DEVF_VIDEO64BIT | DEVF_SWAPS | DEVF_CROSS4MB, | ||
1432 | 220000, | ||
1433 | MGA_1164, | ||
1434 | &vbMystique, | ||
1435 | "Mystique 220 (AGP)"}, | ||
1433 | #endif | 1436 | #endif |
1434 | #ifdef CONFIG_FB_MATROX_G | 1437 | #ifdef CONFIG_FB_MATROX_G |
1435 | {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G100_MM, 0xFF, | 1438 | {PCI_VENDOR_ID_MATROX, PCI_DEVICE_ID_MATROX_G100_MM, 0xFF, |
diff --git a/drivers/video/matrox/matroxfb_base.h b/drivers/video/matrox/matroxfb_base.h index 85a0b2558452..a8c47ad2cdb6 100644 --- a/drivers/video/matrox/matroxfb_base.h +++ b/drivers/video/matrox/matroxfb_base.h | |||
@@ -272,10 +272,6 @@ struct matrox_DAC1064_features { | |||
272 | u_int8_t xmiscctrl; | 272 | u_int8_t xmiscctrl; |
273 | }; | 273 | }; |
274 | 274 | ||
275 | struct matrox_accel_features { | ||
276 | int has_cacheflush; | ||
277 | }; | ||
278 | |||
279 | /* current hardware status */ | 275 | /* current hardware status */ |
280 | struct mavenregs { | 276 | struct mavenregs { |
281 | u_int8_t regs[256]; | 277 | u_int8_t regs[256]; |
@@ -440,7 +436,6 @@ struct matrox_fb_info { | |||
440 | struct { | 436 | struct { |
441 | struct matrox_pll_features pll; | 437 | struct matrox_pll_features pll; |
442 | struct matrox_DAC1064_features DAC1064; | 438 | struct matrox_DAC1064_features DAC1064; |
443 | struct matrox_accel_features accel; | ||
444 | } features; | 439 | } features; |
445 | struct { | 440 | struct { |
446 | spinlock_t DAC; | 441 | spinlock_t DAC; |
diff --git a/drivers/video/matrox/matroxfb_crtc2.c b/drivers/video/matrox/matroxfb_crtc2.c index 429047ac615a..d52d7d825c41 100644 --- a/drivers/video/matrox/matroxfb_crtc2.c +++ b/drivers/video/matrox/matroxfb_crtc2.c | |||
@@ -576,7 +576,6 @@ static struct fb_ops matroxfb_dh_ops = { | |||
576 | .fb_fillrect = cfb_fillrect, | 576 | .fb_fillrect = cfb_fillrect, |
577 | .fb_copyarea = cfb_copyarea, | 577 | .fb_copyarea = cfb_copyarea, |
578 | .fb_imageblit = cfb_imageblit, | 578 | .fb_imageblit = cfb_imageblit, |
579 | .fb_cursor = soft_cursor, | ||
580 | }; | 579 | }; |
581 | 580 | ||
582 | static struct fb_var_screeninfo matroxfb_dh_defined = { | 581 | static struct fb_var_screeninfo matroxfb_dh_defined = { |
diff --git a/drivers/video/maxinefb.c b/drivers/video/maxinefb.c index f192d995d030..743e7ad26acc 100644 --- a/drivers/video/maxinefb.c +++ b/drivers/video/maxinefb.c | |||
@@ -113,7 +113,6 @@ static struct fb_ops maxinefb_ops = { | |||
113 | .fb_fillrect = cfb_fillrect, | 113 | .fb_fillrect = cfb_fillrect, |
114 | .fb_copyarea = cfb_copyarea, | 114 | .fb_copyarea = cfb_copyarea, |
115 | .fb_imageblit = cfb_imageblit, | 115 | .fb_imageblit = cfb_imageblit, |
116 | .fb_cursor = soft_cursor, | ||
117 | }; | 116 | }; |
118 | 117 | ||
119 | int __init maxinefb_init(void) | 118 | int __init maxinefb_init(void) |
diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c index 47516c44a390..1789a52d776a 100644 --- a/drivers/video/modedb.c +++ b/drivers/video/modedb.c | |||
@@ -676,6 +676,8 @@ void fb_var_to_videomode(struct fb_videomode *mode, | |||
676 | mode->sync = var->sync; | 676 | mode->sync = var->sync; |
677 | mode->vmode = var->vmode & FB_VMODE_MASK; | 677 | mode->vmode = var->vmode & FB_VMODE_MASK; |
678 | mode->flag = FB_MODE_IS_FROM_VAR; | 678 | mode->flag = FB_MODE_IS_FROM_VAR; |
679 | mode->refresh = 0; | ||
680 | |||
679 | if (!var->pixclock) | 681 | if (!var->pixclock) |
680 | return; | 682 | return; |
681 | 683 | ||
@@ -785,39 +787,39 @@ struct fb_videomode *fb_find_best_mode(struct fb_var_screeninfo *var, | |||
785 | } | 787 | } |
786 | 788 | ||
787 | /** | 789 | /** |
788 | * fb_find_nearest_mode - find mode closest video mode | 790 | * fb_find_nearest_mode - find closest videomode |
789 | * | 791 | * |
790 | * @var: pointer to struct fb_var_screeninfo | 792 | * @mode: pointer to struct fb_videomode |
791 | * @head: pointer to modelist | 793 | * @head: pointer to modelist |
792 | * | 794 | * |
793 | * Finds best matching videomode, smaller or greater in dimension. | 795 | * Finds best matching videomode, smaller or greater in dimension. |
794 | * If more than 1 videomode is found, will return the videomode with | 796 | * If more than 1 videomode is found, will return the videomode with |
795 | * the closest refresh rate | 797 | * the closest refresh rate. |
796 | */ | 798 | */ |
797 | struct fb_videomode *fb_find_nearest_mode(struct fb_var_screeninfo *var, | 799 | struct fb_videomode *fb_find_nearest_mode(struct fb_videomode *mode, |
798 | struct list_head *head) | 800 | struct list_head *head) |
799 | { | 801 | { |
800 | struct list_head *pos; | 802 | struct list_head *pos; |
801 | struct fb_modelist *modelist; | 803 | struct fb_modelist *modelist; |
802 | struct fb_videomode *mode, *best = NULL; | 804 | struct fb_videomode *cmode, *best = NULL; |
803 | u32 diff = -1, diff_refresh = -1; | 805 | u32 diff = -1, diff_refresh = -1; |
804 | 806 | ||
805 | list_for_each(pos, head) { | 807 | list_for_each(pos, head) { |
806 | u32 d; | 808 | u32 d; |
807 | 809 | ||
808 | modelist = list_entry(pos, struct fb_modelist, list); | 810 | modelist = list_entry(pos, struct fb_modelist, list); |
809 | mode = &modelist->mode; | 811 | cmode = &modelist->mode; |
810 | 812 | ||
811 | d = abs(mode->xres - var->xres) + | 813 | d = abs(cmode->xres - mode->xres) + |
812 | abs(mode->yres - var->yres); | 814 | abs(cmode->yres - mode->yres); |
813 | if (diff > d) { | 815 | if (diff > d) { |
814 | diff = d; | 816 | diff = d; |
815 | best = mode; | 817 | best = cmode; |
816 | } else if (diff == d) { | 818 | } else if (diff == d) { |
817 | d = abs(mode->refresh - best->refresh); | 819 | d = abs(cmode->refresh - mode->refresh); |
818 | if (diff_refresh > d) { | 820 | if (diff_refresh > d) { |
819 | diff_refresh = d; | 821 | diff_refresh = d; |
820 | best = mode; | 822 | best = cmode; |
821 | } | 823 | } |
822 | } | 824 | } |
823 | } | 825 | } |
@@ -942,6 +944,66 @@ void fb_videomode_to_modelist(struct fb_videomode *modedb, int num, | |||
942 | } | 944 | } |
943 | } | 945 | } |
944 | 946 | ||
947 | struct fb_videomode *fb_find_best_display(struct fb_monspecs *specs, | ||
948 | struct list_head *head) | ||
949 | { | ||
950 | struct list_head *pos; | ||
951 | struct fb_modelist *modelist; | ||
952 | struct fb_videomode *m, *m1 = NULL, *md = NULL, *best = NULL; | ||
953 | int first = 0; | ||
954 | |||
955 | if (!head->prev || !head->next || list_empty(head)) | ||
956 | goto finished; | ||
957 | |||
958 | /* get the first detailed mode and the very first mode */ | ||
959 | list_for_each(pos, head) { | ||
960 | modelist = list_entry(pos, struct fb_modelist, list); | ||
961 | m = &modelist->mode; | ||
962 | |||
963 | if (!first) { | ||
964 | m1 = m; | ||
965 | first = 1; | ||
966 | } | ||
967 | |||
968 | if (m->flag & FB_MODE_IS_FIRST) { | ||
969 | md = m; | ||
970 | break; | ||
971 | } | ||
972 | } | ||
973 | |||
974 | /* first detailed timing is preferred */ | ||
975 | if (specs->misc & FB_MISC_1ST_DETAIL) { | ||
976 | best = md; | ||
977 | goto finished; | ||
978 | } | ||
979 | |||
980 | /* find best mode based on display width and height */ | ||
981 | if (specs->max_x && specs->max_y) { | ||
982 | struct fb_var_screeninfo var; | ||
983 | |||
984 | memset(&var, 0, sizeof(struct fb_var_screeninfo)); | ||
985 | var.xres = (specs->max_x * 7200)/254; | ||
986 | var.yres = (specs->max_y * 7200)/254; | ||
987 | m = fb_find_best_mode(&var, head); | ||
988 | if (m) { | ||
989 | best = m; | ||
990 | goto finished; | ||
991 | } | ||
992 | } | ||
993 | |||
994 | /* use first detailed mode */ | ||
995 | if (md) { | ||
996 | best = md; | ||
997 | goto finished; | ||
998 | } | ||
999 | |||
1000 | /* last resort, use the very first mode */ | ||
1001 | best = m1; | ||
1002 | finished: | ||
1003 | return best; | ||
1004 | } | ||
1005 | EXPORT_SYMBOL(fb_find_best_display); | ||
1006 | |||
945 | EXPORT_SYMBOL(fb_videomode_to_var); | 1007 | EXPORT_SYMBOL(fb_videomode_to_var); |
946 | EXPORT_SYMBOL(fb_var_to_videomode); | 1008 | EXPORT_SYMBOL(fb_var_to_videomode); |
947 | EXPORT_SYMBOL(fb_mode_is_equal); | 1009 | EXPORT_SYMBOL(fb_mode_is_equal); |
diff --git a/drivers/video/neofb.c b/drivers/video/neofb.c index 5d424a30270a..8486e77872dc 100644 --- a/drivers/video/neofb.c +++ b/drivers/video/neofb.c | |||
@@ -1665,7 +1665,6 @@ static struct fb_ops neofb_ops = { | |||
1665 | .fb_fillrect = neofb_fillrect, | 1665 | .fb_fillrect = neofb_fillrect, |
1666 | .fb_copyarea = neofb_copyarea, | 1666 | .fb_copyarea = neofb_copyarea, |
1667 | .fb_imageblit = neofb_imageblit, | 1667 | .fb_imageblit = neofb_imageblit, |
1668 | .fb_cursor = soft_cursor, | ||
1669 | }; | 1668 | }; |
1670 | 1669 | ||
1671 | /* --------------------------------------------------------------------- */ | 1670 | /* --------------------------------------------------------------------- */ |
diff --git a/drivers/video/nvidia/nv_local.h b/drivers/video/nvidia/nv_local.h index afee284fc73c..4243d7fae972 100644 --- a/drivers/video/nvidia/nv_local.h +++ b/drivers/video/nvidia/nv_local.h | |||
@@ -105,7 +105,7 @@ do { \ | |||
105 | *a = byte_rev[*a]; \ | 105 | *a = byte_rev[*a]; \ |
106 | } while(0) | 106 | } while(0) |
107 | #else | 107 | #else |
108 | #define reverse_order(l) | 108 | #define reverse_order(l) do { } while(0) |
109 | #endif /* __LITTLE_ENDIAN */ | 109 | #endif /* __LITTLE_ENDIAN */ |
110 | 110 | ||
111 | #endif /* __NV_LOCAL_H__ */ | 111 | #endif /* __NV_LOCAL_H__ */ |
diff --git a/drivers/video/nvidia/nv_of.c b/drivers/video/nvidia/nv_of.c index 4fa2cf9a8af2..7a03d040b1a3 100644 --- a/drivers/video/nvidia/nv_of.c +++ b/drivers/video/nvidia/nv_of.c | |||
@@ -27,34 +27,60 @@ | |||
27 | #include "nv_local.h" | 27 | #include "nv_local.h" |
28 | #include "nv_proto.h" | 28 | #include "nv_proto.h" |
29 | 29 | ||
30 | void nvidia_create_i2c_busses(struct nvidia_par *par) {} | 30 | #include "../edid.h" |
31 | void nvidia_delete_i2c_busses(struct nvidia_par *par) {} | ||
32 | 31 | ||
33 | int nvidia_probe_i2c_connector(struct fb_info *info, int conn, u8 **out_edid) | 32 | int nvidia_probe_of_connector(struct fb_info *info, int conn, u8 **out_edid) |
34 | { | 33 | { |
35 | struct nvidia_par *par = info->par; | 34 | struct nvidia_par *par = info->par; |
36 | struct device_node *dp; | 35 | struct device_node *parent, *dp; |
37 | unsigned char *pedid = NULL; | 36 | unsigned char *pedid = NULL; |
38 | unsigned char *disptype = NULL; | ||
39 | static char *propnames[] = { | 37 | static char *propnames[] = { |
40 | "DFP,EDID", "LCD,EDID", "EDID", "EDID1", "EDID,B", "EDID,A", NULL }; | 38 | "DFP,EDID", "LCD,EDID", "EDID", "EDID1", |
39 | "EDID,B", "EDID,A", NULL }; | ||
41 | int i; | 40 | int i; |
42 | 41 | ||
43 | dp = pci_device_to_OF_node(par->pci_dev); | 42 | parent = pci_device_to_OF_node(par->pci_dev); |
44 | for (; dp != NULL; dp = dp->child) { | 43 | if (parent == NULL) |
45 | disptype = (unsigned char *)get_property(dp, "display-type", NULL); | 44 | return -1; |
46 | if (disptype == NULL) | 45 | if (par->twoHeads) { |
47 | continue; | 46 | char *pname; |
48 | if (strncmp(disptype, "LCD", 3) != 0) | 47 | int len; |
49 | continue; | 48 | |
49 | for (dp = NULL; | ||
50 | (dp = of_get_next_child(parent, dp)) != NULL;) { | ||
51 | pname = (char *)get_property(dp, "name", NULL); | ||
52 | if (!pname) | ||
53 | continue; | ||
54 | len = strlen(pname); | ||
55 | if ((pname[len-1] == 'A' && conn == 1) || | ||
56 | (pname[len-1] == 'B' && conn == 2)) { | ||
57 | for (i = 0; propnames[i] != NULL; ++i) { | ||
58 | pedid = (unsigned char *) | ||
59 | get_property(dp, propnames[i], | ||
60 | NULL); | ||
61 | if (pedid != NULL) | ||
62 | break; | ||
63 | } | ||
64 | of_node_put(dp); | ||
65 | break; | ||
66 | } | ||
67 | } | ||
68 | } | ||
69 | if (pedid == NULL) { | ||
50 | for (i = 0; propnames[i] != NULL; ++i) { | 70 | for (i = 0; propnames[i] != NULL; ++i) { |
51 | pedid = (unsigned char *) | 71 | pedid = (unsigned char *) |
52 | get_property(dp, propnames[i], NULL); | 72 | get_property(parent, propnames[i], NULL); |
53 | if (pedid != NULL) { | 73 | if (pedid != NULL) |
54 | *out_edid = pedid; | 74 | break; |
55 | return 0; | ||
56 | } | ||
57 | } | 75 | } |
58 | } | 76 | } |
59 | return 1; | 77 | if (pedid) { |
78 | *out_edid = kmalloc(EDID_LENGTH, GFP_KERNEL); | ||
79 | if (*out_edid == NULL) | ||
80 | return -1; | ||
81 | memcpy(*out_edid, pedid, EDID_LENGTH); | ||
82 | printk(KERN_DEBUG "nvidiafb: Found OF EDID for head %d\n", conn); | ||
83 | return 0; | ||
84 | } | ||
85 | return -1; | ||
60 | } | 86 | } |
diff --git a/drivers/video/nvidia/nv_proto.h b/drivers/video/nvidia/nv_proto.h index cac44fc7f587..f60b1f432270 100644 --- a/drivers/video/nvidia/nv_proto.h +++ b/drivers/video/nvidia/nv_proto.h | |||
@@ -31,7 +31,7 @@ int NVShowHideCursor(struct nvidia_par *par, int); | |||
31 | void NVLockUnlock(struct nvidia_par *par, int); | 31 | void NVLockUnlock(struct nvidia_par *par, int); |
32 | 32 | ||
33 | /* in nvidia-i2c.c */ | 33 | /* in nvidia-i2c.c */ |
34 | #if defined(CONFIG_FB_NVIDIA_I2C) || defined (CONFIG_PPC_OF) | 34 | #ifdef CONFIG_FB_NVIDIA_I2C |
35 | void nvidia_create_i2c_busses(struct nvidia_par *par); | 35 | void nvidia_create_i2c_busses(struct nvidia_par *par); |
36 | void nvidia_delete_i2c_busses(struct nvidia_par *par); | 36 | void nvidia_delete_i2c_busses(struct nvidia_par *par); |
37 | int nvidia_probe_i2c_connector(struct fb_info *info, int conn, | 37 | int nvidia_probe_i2c_connector(struct fb_info *info, int conn, |
@@ -39,10 +39,18 @@ int nvidia_probe_i2c_connector(struct fb_info *info, int conn, | |||
39 | #else | 39 | #else |
40 | #define nvidia_create_i2c_busses(...) | 40 | #define nvidia_create_i2c_busses(...) |
41 | #define nvidia_delete_i2c_busses(...) | 41 | #define nvidia_delete_i2c_busses(...) |
42 | #define nvidia_probe_i2c_connector(p, c, edid) \ | 42 | #define nvidia_probe_i2c_connector(p, c, edid) (-1) |
43 | do { \ | 43 | #endif |
44 | *(edid) = NULL; \ | 44 | |
45 | } while(0) | 45 | #ifdef CONFIG_FB_OF |
46 | int nvidia_probe_of_connector(struct fb_info *info, int conn, | ||
47 | u8 ** out_edid); | ||
48 | #else | ||
49 | static inline int nvidia_probe_of_connector(struct fb_info *info, int conn, | ||
50 | u8 ** out_edid) | ||
51 | { | ||
52 | return -1; | ||
53 | } | ||
46 | #endif | 54 | #endif |
47 | 55 | ||
48 | /* in nv_accel.c */ | 56 | /* in nv_accel.c */ |
diff --git a/drivers/video/nvidia/nv_setup.c b/drivers/video/nvidia/nv_setup.c index 11c84178f420..1f06a9f1bd0f 100644 --- a/drivers/video/nvidia/nv_setup.c +++ b/drivers/video/nvidia/nv_setup.c | |||
@@ -190,9 +190,9 @@ static int NVIsConnected(struct nvidia_par *par, int output) | |||
190 | present = (NV_RD32(PRAMDAC, 0x0608) & (1 << 28)) ? 1 : 0; | 190 | present = (NV_RD32(PRAMDAC, 0x0608) & (1 << 28)) ? 1 : 0; |
191 | 191 | ||
192 | if (present) | 192 | if (present) |
193 | printk("nvidiafb: CRTC%i found\n", output); | 193 | printk("nvidiafb: CRTC%i analog found\n", output); |
194 | else | 194 | else |
195 | printk("nvidiafb: CRTC%i not found\n", output); | 195 | printk("nvidiafb: CRTC%i analog not found\n", output); |
196 | 196 | ||
197 | NV_WR32(par->PRAMDAC0, 0x0608, NV_RD32(par->PRAMDAC0, 0x0608) & | 197 | NV_WR32(par->PRAMDAC0, 0x0608, NV_RD32(par->PRAMDAC0, 0x0608) & |
198 | 0x0000EFFF); | 198 | 0x0000EFFF); |
@@ -305,6 +305,9 @@ void NVCommonSetup(struct fb_info *info) | |||
305 | int FlatPanel = -1; /* really means the CRTC is slaved */ | 305 | int FlatPanel = -1; /* really means the CRTC is slaved */ |
306 | int Television = 0; | 306 | int Television = 0; |
307 | 307 | ||
308 | memset(&monitorA, 0, sizeof(struct fb_monspecs)); | ||
309 | memset(&monitorB, 0, sizeof(struct fb_monspecs)); | ||
310 | |||
308 | par->PRAMIN = par->REGS + (0x00710000 / 4); | 311 | par->PRAMIN = par->REGS + (0x00710000 / 4); |
309 | par->PCRTC0 = par->REGS + (0x00600000 / 4); | 312 | par->PCRTC0 = par->REGS + (0x00600000 / 4); |
310 | par->PRAMDAC0 = par->REGS + (0x00680000 / 4); | 313 | par->PRAMDAC0 = par->REGS + (0x00680000 / 4); |
@@ -401,7 +404,8 @@ void NVCommonSetup(struct fb_info *info) | |||
401 | nvidia_create_i2c_busses(par); | 404 | nvidia_create_i2c_busses(par); |
402 | if (!par->twoHeads) { | 405 | if (!par->twoHeads) { |
403 | par->CRTCnumber = 0; | 406 | par->CRTCnumber = 0; |
404 | nvidia_probe_i2c_connector(info, 1, &edidA); | 407 | if (nvidia_probe_i2c_connector(info, 1, &edidA)) |
408 | nvidia_probe_of_connector(info, 1, &edidA); | ||
405 | if (edidA && !fb_parse_edid(edidA, &var)) { | 409 | if (edidA && !fb_parse_edid(edidA, &var)) { |
406 | printk("nvidiafb: EDID found from BUS1\n"); | 410 | printk("nvidiafb: EDID found from BUS1\n"); |
407 | monA = &monitorA; | 411 | monA = &monitorA; |
@@ -488,14 +492,16 @@ void NVCommonSetup(struct fb_info *info) | |||
488 | oldhead = NV_RD32(par->PCRTC0, 0x00000860); | 492 | oldhead = NV_RD32(par->PCRTC0, 0x00000860); |
489 | NV_WR32(par->PCRTC0, 0x00000860, oldhead | 0x00000010); | 493 | NV_WR32(par->PCRTC0, 0x00000860, oldhead | 0x00000010); |
490 | 494 | ||
491 | nvidia_probe_i2c_connector(info, 1, &edidA); | 495 | if (nvidia_probe_i2c_connector(info, 1, &edidA)) |
496 | nvidia_probe_of_connector(info, 1, &edidA); | ||
492 | if (edidA && !fb_parse_edid(edidA, &var)) { | 497 | if (edidA && !fb_parse_edid(edidA, &var)) { |
493 | printk("nvidiafb: EDID found from BUS1\n"); | 498 | printk("nvidiafb: EDID found from BUS1\n"); |
494 | monA = &monitorA; | 499 | monA = &monitorA; |
495 | fb_edid_to_monspecs(edidA, monA); | 500 | fb_edid_to_monspecs(edidA, monA); |
496 | } | 501 | } |
497 | 502 | ||
498 | nvidia_probe_i2c_connector(info, 2, &edidB); | 503 | if (nvidia_probe_i2c_connector(info, 2, &edidB)) |
504 | nvidia_probe_of_connector(info, 2, &edidB); | ||
499 | if (edidB && !fb_parse_edid(edidB, &var)) { | 505 | if (edidB && !fb_parse_edid(edidB, &var)) { |
500 | printk("nvidiafb: EDID found from BUS2\n"); | 506 | printk("nvidiafb: EDID found from BUS2\n"); |
501 | monB = &monitorB; | 507 | monB = &monitorB; |
diff --git a/drivers/video/nvidia/nvidia.c b/drivers/video/nvidia/nvidia.c index 308defc389a2..0b40a2a721c1 100644 --- a/drivers/video/nvidia/nvidia.c +++ b/drivers/video/nvidia/nvidia.c | |||
@@ -411,6 +411,7 @@ MODULE_DEVICE_TABLE(pci, nvidiafb_pci_tbl); | |||
411 | 411 | ||
412 | /* command line data, set in nvidiafb_setup() */ | 412 | /* command line data, set in nvidiafb_setup() */ |
413 | static int flatpanel __devinitdata = -1; /* Autodetect later */ | 413 | static int flatpanel __devinitdata = -1; /* Autodetect later */ |
414 | static int fpdither __devinitdata = -1; | ||
414 | static int forceCRTC __devinitdata = -1; | 415 | static int forceCRTC __devinitdata = -1; |
415 | static int hwcur __devinitdata = 0; | 416 | static int hwcur __devinitdata = 0; |
416 | static int noaccel __devinitdata = 0; | 417 | static int noaccel __devinitdata = 0; |
@@ -627,41 +628,85 @@ static void nvidia_save_vga(struct nvidia_par *par, | |||
627 | NVTRACE_LEAVE(); | 628 | NVTRACE_LEAVE(); |
628 | } | 629 | } |
629 | 630 | ||
631 | #undef DUMP_REG | ||
632 | |||
630 | static void nvidia_write_regs(struct nvidia_par *par) | 633 | static void nvidia_write_regs(struct nvidia_par *par) |
631 | { | 634 | { |
632 | struct _riva_hw_state *state = &par->ModeReg; | 635 | struct _riva_hw_state *state = &par->ModeReg; |
633 | int i; | 636 | int i; |
634 | 637 | ||
635 | NVTRACE_ENTER(); | 638 | NVTRACE_ENTER(); |
636 | NVWriteCrtc(par, 0x11, 0x00); | ||
637 | |||
638 | NVLockUnlock(par, 0); | ||
639 | 639 | ||
640 | NVLoadStateExt(par, state); | 640 | NVLoadStateExt(par, state); |
641 | 641 | ||
642 | NVWriteMiscOut(par, state->misc_output); | 642 | NVWriteMiscOut(par, state->misc_output); |
643 | 643 | ||
644 | for (i = 1; i < NUM_SEQ_REGS; i++) { | ||
645 | #ifdef DUMP_REG | ||
646 | printk(" SEQ[%02x] = %08x\n", i, state->seq[i]); | ||
647 | #endif | ||
648 | NVWriteSeq(par, i, state->seq[i]); | ||
649 | } | ||
650 | |||
651 | /* Ensure CRTC registers 0-7 are unlocked by clearing bit 7 of CRTC[17] */ | ||
652 | NVWriteCrtc(par, 0x11, state->crtc[0x11] & ~0x80); | ||
653 | |||
644 | for (i = 0; i < NUM_CRT_REGS; i++) { | 654 | for (i = 0; i < NUM_CRT_REGS; i++) { |
645 | switch (i) { | 655 | switch (i) { |
646 | case 0x19: | 656 | case 0x19: |
647 | case 0x20 ... 0x40: | 657 | case 0x20 ... 0x40: |
648 | break; | 658 | break; |
649 | default: | 659 | default: |
660 | #ifdef DUMP_REG | ||
661 | printk("CRTC[%02x] = %08x\n", i, state->crtc[i]); | ||
662 | #endif | ||
650 | NVWriteCrtc(par, i, state->crtc[i]); | 663 | NVWriteCrtc(par, i, state->crtc[i]); |
651 | } | 664 | } |
652 | } | 665 | } |
653 | 666 | ||
654 | for (i = 0; i < NUM_ATC_REGS; i++) | 667 | for (i = 0; i < NUM_GRC_REGS; i++) { |
655 | NVWriteAttr(par, i, state->attr[i]); | 668 | #ifdef DUMP_REG |
656 | 669 | printk(" GRA[%02x] = %08x\n", i, state->gra[i]); | |
657 | for (i = 0; i < NUM_GRC_REGS; i++) | 670 | #endif |
658 | NVWriteGr(par, i, state->gra[i]); | 671 | NVWriteGr(par, i, state->gra[i]); |
672 | } | ||
673 | |||
674 | for (i = 0; i < NUM_ATC_REGS; i++) { | ||
675 | #ifdef DUMP_REG | ||
676 | printk("ATTR[%02x] = %08x\n", i, state->attr[i]); | ||
677 | #endif | ||
678 | NVWriteAttr(par, i, state->attr[i]); | ||
679 | } | ||
659 | 680 | ||
660 | for (i = 0; i < NUM_SEQ_REGS; i++) | ||
661 | NVWriteSeq(par, i, state->seq[i]); | ||
662 | NVTRACE_LEAVE(); | 681 | NVTRACE_LEAVE(); |
663 | } | 682 | } |
664 | 683 | ||
684 | static void nvidia_vga_protect(struct nvidia_par *par, int on) | ||
685 | { | ||
686 | unsigned char tmp; | ||
687 | |||
688 | if (on) { | ||
689 | /* | ||
690 | * Turn off screen and disable sequencer. | ||
691 | */ | ||
692 | tmp = NVReadSeq(par, 0x01); | ||
693 | |||
694 | NVWriteSeq(par, 0x00, 0x01); /* Synchronous Reset */ | ||
695 | NVWriteSeq(par, 0x01, tmp | 0x20); /* disable the display */ | ||
696 | } else { | ||
697 | /* | ||
698 | * Reenable sequencer, then turn on screen. | ||
699 | */ | ||
700 | |||
701 | tmp = NVReadSeq(par, 0x01); | ||
702 | |||
703 | NVWriteSeq(par, 0x01, tmp & ~0x20); /* reenable display */ | ||
704 | NVWriteSeq(par, 0x00, 0x03); /* End Reset */ | ||
705 | } | ||
706 | } | ||
707 | |||
708 | |||
709 | |||
665 | static int nvidia_calc_regs(struct fb_info *info) | 710 | static int nvidia_calc_regs(struct fb_info *info) |
666 | { | 711 | { |
667 | struct nvidia_par *par = info->par; | 712 | struct nvidia_par *par = info->par; |
@@ -868,7 +913,7 @@ static void nvidia_init_vga(struct fb_info *info) | |||
868 | for (i = 0; i < 0x10; i++) | 913 | for (i = 0; i < 0x10; i++) |
869 | state->attr[i] = i; | 914 | state->attr[i] = i; |
870 | state->attr[0x10] = 0x41; | 915 | state->attr[0x10] = 0x41; |
871 | state->attr[0x11] = 0x01; | 916 | state->attr[0x11] = 0xff; |
872 | state->attr[0x12] = 0x0f; | 917 | state->attr[0x12] = 0x0f; |
873 | state->attr[0x13] = 0x00; | 918 | state->attr[0x13] = 0x00; |
874 | state->attr[0x14] = 0x00; | 919 | state->attr[0x14] = 0x00; |
@@ -982,16 +1027,24 @@ static int nvidiafb_set_par(struct fb_info *info) | |||
982 | NVTRACE_ENTER(); | 1027 | NVTRACE_ENTER(); |
983 | 1028 | ||
984 | NVLockUnlock(par, 1); | 1029 | NVLockUnlock(par, 1); |
985 | if (!par->FlatPanel || (info->var.bits_per_pixel != 24) || | 1030 | if (!par->FlatPanel || !par->twoHeads) |
986 | !par->twoHeads) | ||
987 | par->FPDither = 0; | 1031 | par->FPDither = 0; |
988 | 1032 | ||
1033 | if (par->FPDither < 0) { | ||
1034 | if ((par->Chipset & 0x0ff0) == 0x0110) | ||
1035 | par->FPDither = !!(NV_RD32(par->PRAMDAC, 0x0528) | ||
1036 | & 0x00010000); | ||
1037 | else | ||
1038 | par->FPDither = !!(NV_RD32(par->PRAMDAC, 0x083C) & 1); | ||
1039 | printk(KERN_INFO PFX "Flat panel dithering %s\n", | ||
1040 | par->FPDither ? "enabled" : "disabled"); | ||
1041 | } | ||
1042 | |||
989 | info->fix.visual = (info->var.bits_per_pixel == 8) ? | 1043 | info->fix.visual = (info->var.bits_per_pixel == 8) ? |
990 | FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_DIRECTCOLOR; | 1044 | FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_DIRECTCOLOR; |
991 | 1045 | ||
992 | nvidia_init_vga(info); | 1046 | nvidia_init_vga(info); |
993 | nvidia_calc_regs(info); | 1047 | nvidia_calc_regs(info); |
994 | nvidia_write_regs(par); | ||
995 | 1048 | ||
996 | NVLockUnlock(par, 0); | 1049 | NVLockUnlock(par, 0); |
997 | if (par->twoHeads) { | 1050 | if (par->twoHeads) { |
@@ -1000,7 +1053,22 @@ static int nvidiafb_set_par(struct fb_info *info) | |||
1000 | NVLockUnlock(par, 0); | 1053 | NVLockUnlock(par, 0); |
1001 | } | 1054 | } |
1002 | 1055 | ||
1003 | NVWriteCrtc(par, 0x11, 0x00); | 1056 | nvidia_vga_protect(par, 1); |
1057 | |||
1058 | nvidia_write_regs(par); | ||
1059 | |||
1060 | #if defined (__BIG_ENDIAN) | ||
1061 | /* turn on LFB swapping */ | ||
1062 | { | ||
1063 | unsigned char tmp; | ||
1064 | |||
1065 | VGA_WR08(par->PCIO, 0x3d4, 0x46); | ||
1066 | tmp = VGA_RD08(par->PCIO, 0x3d5); | ||
1067 | tmp |= (1 << 7); | ||
1068 | VGA_WR08(par->PCIO, 0x3d5, tmp); | ||
1069 | } | ||
1070 | #endif | ||
1071 | |||
1004 | info->fix.line_length = (info->var.xres_virtual * | 1072 | info->fix.line_length = (info->var.xres_virtual * |
1005 | info->var.bits_per_pixel) >> 3; | 1073 | info->var.bits_per_pixel) >> 3; |
1006 | if (info->var.accel_flags) { | 1074 | if (info->var.accel_flags) { |
@@ -1022,7 +1090,7 @@ static int nvidiafb_set_par(struct fb_info *info) | |||
1022 | 1090 | ||
1023 | par->cursor_reset = 1; | 1091 | par->cursor_reset = 1; |
1024 | 1092 | ||
1025 | NVWriteCrtc(par, 0x11, 0xff); | 1093 | nvidia_vga_protect(par, 0); |
1026 | 1094 | ||
1027 | NVTRACE_LEAVE(); | 1095 | NVTRACE_LEAVE(); |
1028 | return 0; | 1096 | return 0; |
@@ -1315,22 +1383,10 @@ static int __devinit nvidia_set_fbinfo(struct fb_info *info) | |||
1315 | fb_var_to_videomode(&modedb, &nvidiafb_default_var); | 1383 | fb_var_to_videomode(&modedb, &nvidiafb_default_var); |
1316 | 1384 | ||
1317 | if (specs->modedb != NULL) { | 1385 | if (specs->modedb != NULL) { |
1318 | /* get preferred timing */ | 1386 | struct fb_videomode *modedb; |
1319 | if (specs->misc & FB_MISC_1ST_DETAIL) { | ||
1320 | int i; | ||
1321 | |||
1322 | for (i = 0; i < specs->modedb_len; i++) { | ||
1323 | if (specs->modedb[i].flag & FB_MODE_IS_FIRST) { | ||
1324 | modedb = specs->modedb[i]; | ||
1325 | break; | ||
1326 | } | ||
1327 | } | ||
1328 | } else { | ||
1329 | /* otherwise, get first mode in database */ | ||
1330 | modedb = specs->modedb[0]; | ||
1331 | } | ||
1332 | 1387 | ||
1333 | fb_videomode_to_var(&nvidiafb_default_var, &modedb); | 1388 | modedb = fb_find_best_display(specs, &info->modelist); |
1389 | fb_videomode_to_var(&nvidiafb_default_var, modedb); | ||
1334 | nvidiafb_default_var.bits_per_pixel = 8; | 1390 | nvidiafb_default_var.bits_per_pixel = 8; |
1335 | } else if (par->fpWidth && par->fpHeight) { | 1391 | } else if (par->fpWidth && par->fpHeight) { |
1336 | char buf[16]; | 1392 | char buf[16]; |
@@ -1365,7 +1421,7 @@ static int __devinit nvidia_set_fbinfo(struct fb_info *info) | |||
1365 | info->pixmap.flags = FB_PIXMAP_SYSTEM; | 1421 | info->pixmap.flags = FB_PIXMAP_SYSTEM; |
1366 | 1422 | ||
1367 | if (!hwcur) | 1423 | if (!hwcur) |
1368 | info->fbops->fb_cursor = soft_cursor; | 1424 | info->fbops->fb_cursor = NULL; |
1369 | 1425 | ||
1370 | info->var.accel_flags = (!noaccel); | 1426 | info->var.accel_flags = (!noaccel); |
1371 | 1427 | ||
@@ -1490,9 +1546,9 @@ static int __devinit nvidiafb_probe(struct pci_dev *pd, | |||
1490 | sprintf(nvidiafb_fix.id, "NV%x", (pd->device & 0x0ff0) >> 4); | 1546 | sprintf(nvidiafb_fix.id, "NV%x", (pd->device & 0x0ff0) >> 4); |
1491 | 1547 | ||
1492 | par->FlatPanel = flatpanel; | 1548 | par->FlatPanel = flatpanel; |
1493 | |||
1494 | if (flatpanel == 1) | 1549 | if (flatpanel == 1) |
1495 | printk(KERN_INFO PFX "flatpanel support enabled\n"); | 1550 | printk(KERN_INFO PFX "flatpanel support enabled\n"); |
1551 | par->FPDither = fpdither; | ||
1496 | 1552 | ||
1497 | par->CRTCnumber = forceCRTC; | 1553 | par->CRTCnumber = forceCRTC; |
1498 | par->FpScale = (!noscale); | 1554 | par->FpScale = (!noscale); |
@@ -1671,6 +1727,8 @@ static int __devinit nvidiafb_setup(char *options) | |||
1671 | } else if (!strncmp(this_opt, "nomtrr", 6)) { | 1727 | } else if (!strncmp(this_opt, "nomtrr", 6)) { |
1672 | nomtrr = 1; | 1728 | nomtrr = 1; |
1673 | #endif | 1729 | #endif |
1730 | } else if (!strncmp(this_opt, "fpdither:", 9)) { | ||
1731 | fpdither = simple_strtol(this_opt+9, NULL, 0); | ||
1674 | } else | 1732 | } else |
1675 | mode_option = this_opt; | 1733 | mode_option = this_opt; |
1676 | } | 1734 | } |
@@ -1717,7 +1775,11 @@ module_exit(nvidiafb_exit); | |||
1717 | module_param(flatpanel, int, 0); | 1775 | module_param(flatpanel, int, 0); |
1718 | MODULE_PARM_DESC(flatpanel, | 1776 | MODULE_PARM_DESC(flatpanel, |
1719 | "Enables experimental flat panel support for some chipsets. " | 1777 | "Enables experimental flat panel support for some chipsets. " |
1720 | "(0 or 1=enabled) (default=0)"); | 1778 | "(0=disabled, 1=enabled, -1=autodetect) (default=-1)"); |
1779 | module_param(fpdither, int, 0); | ||
1780 | MODULE_PARM_DESC(fpdither, | ||
1781 | "Enables dithering of flat panel for 6 bits panels. " | ||
1782 | "(0=disabled, 1=enabled, -1=autodetect) (default=-1)"); | ||
1721 | module_param(hwcur, int, 0); | 1783 | module_param(hwcur, int, 0); |
1722 | MODULE_PARM_DESC(hwcur, | 1784 | MODULE_PARM_DESC(hwcur, |
1723 | "Enables hardware cursor implementation. (0 or 1=enabled) " | 1785 | "Enables hardware cursor implementation. (0 or 1=enabled) " |
diff --git a/drivers/video/offb.c b/drivers/video/offb.c index 611922c0b22f..2c856838694e 100644 --- a/drivers/video/offb.c +++ b/drivers/video/offb.c | |||
@@ -85,7 +85,6 @@ static struct fb_ops offb_ops = { | |||
85 | .fb_fillrect = cfb_fillrect, | 85 | .fb_fillrect = cfb_fillrect, |
86 | .fb_copyarea = cfb_copyarea, | 86 | .fb_copyarea = cfb_copyarea, |
87 | .fb_imageblit = cfb_imageblit, | 87 | .fb_imageblit = cfb_imageblit, |
88 | .fb_cursor = soft_cursor, | ||
89 | }; | 88 | }; |
90 | 89 | ||
91 | /* | 90 | /* |
diff --git a/drivers/video/p9100.c b/drivers/video/p9100.c index b76a5a9a125b..9aaf65fb623a 100644 --- a/drivers/video/p9100.c +++ b/drivers/video/p9100.c | |||
@@ -48,7 +48,6 @@ static struct fb_ops p9100_ops = { | |||
48 | .fb_imageblit = cfb_imageblit, | 48 | .fb_imageblit = cfb_imageblit, |
49 | .fb_mmap = p9100_mmap, | 49 | .fb_mmap = p9100_mmap, |
50 | .fb_ioctl = p9100_ioctl, | 50 | .fb_ioctl = p9100_ioctl, |
51 | .fb_cursor = soft_cursor, | ||
52 | }; | 51 | }; |
53 | 52 | ||
54 | /* P9100 control registers */ | 53 | /* P9100 control registers */ |
diff --git a/drivers/video/platinumfb.c b/drivers/video/platinumfb.c index b00887e9851c..ca4082ae5a18 100644 --- a/drivers/video/platinumfb.c +++ b/drivers/video/platinumfb.c | |||
@@ -109,7 +109,6 @@ static struct fb_ops platinumfb_ops = { | |||
109 | .fb_fillrect = cfb_fillrect, | 109 | .fb_fillrect = cfb_fillrect, |
110 | .fb_copyarea = cfb_copyarea, | 110 | .fb_copyarea = cfb_copyarea, |
111 | .fb_imageblit = cfb_imageblit, | 111 | .fb_imageblit = cfb_imageblit, |
112 | .fb_cursor = soft_cursor, | ||
113 | }; | 112 | }; |
114 | 113 | ||
115 | /* | 114 | /* |
diff --git a/drivers/video/pm2fb.c b/drivers/video/pm2fb.c index 42c17efa9fb0..0277ce031e5e 100644 --- a/drivers/video/pm2fb.c +++ b/drivers/video/pm2fb.c | |||
@@ -1034,7 +1034,6 @@ static struct fb_ops pm2fb_ops = { | |||
1034 | .fb_fillrect = cfb_fillrect, | 1034 | .fb_fillrect = cfb_fillrect, |
1035 | .fb_copyarea = cfb_copyarea, | 1035 | .fb_copyarea = cfb_copyarea, |
1036 | .fb_imageblit = cfb_imageblit, | 1036 | .fb_imageblit = cfb_imageblit, |
1037 | .fb_cursor = soft_cursor, | ||
1038 | }; | 1037 | }; |
1039 | 1038 | ||
1040 | /* | 1039 | /* |
@@ -1121,6 +1120,22 @@ static int __devinit pm2fb_probe(struct pci_dev *pdev, | |||
1121 | default_par->mem_control, default_par->boot_address, | 1120 | default_par->mem_control, default_par->boot_address, |
1122 | default_par->mem_config); | 1121 | default_par->mem_config); |
1123 | 1122 | ||
1123 | if(default_par->mem_control == 0 && | ||
1124 | default_par->boot_address == 0x31 && | ||
1125 | default_par->mem_config == 0x259fffff && | ||
1126 | pdev->subsystem_vendor == 0x1048 && | ||
1127 | pdev->subsystem_device == 0x0a31) { | ||
1128 | DPRINTK("subsystem_vendor: %04x, subsystem_device: %04x\n", | ||
1129 | pdev->subsystem_vendor, pdev->subsystem_device); | ||
1130 | DPRINTK("We have not been initialized by VGA BIOS " | ||
1131 | "and are running on an Elsa Winner 2000 Office\n"); | ||
1132 | DPRINTK("Initializing card timings manually...\n"); | ||
1133 | default_par->mem_control=0; | ||
1134 | default_par->boot_address=0x20; | ||
1135 | default_par->mem_config=0xe6002021; | ||
1136 | default_par->memclock=100000; | ||
1137 | } | ||
1138 | |||
1124 | /* Now work out how big lfb is going to be. */ | 1139 | /* Now work out how big lfb is going to be. */ |
1125 | switch(default_par->mem_config & PM2F_MEM_CONFIG_RAM_MASK) { | 1140 | switch(default_par->mem_config & PM2F_MEM_CONFIG_RAM_MASK) { |
1126 | case PM2F_MEM_BANKS_1: | 1141 | case PM2F_MEM_BANKS_1: |
diff --git a/drivers/video/pmag-ba-fb.c b/drivers/video/pmag-ba-fb.c index c98f1c8d7dc2..f3927b6cda9d 100644 --- a/drivers/video/pmag-ba-fb.c +++ b/drivers/video/pmag-ba-fb.c | |||
@@ -128,7 +128,6 @@ static struct fb_ops pmagbafb_ops = { | |||
128 | .fb_fillrect = cfb_fillrect, | 128 | .fb_fillrect = cfb_fillrect, |
129 | .fb_copyarea = cfb_copyarea, | 129 | .fb_copyarea = cfb_copyarea, |
130 | .fb_imageblit = cfb_imageblit, | 130 | .fb_imageblit = cfb_imageblit, |
131 | .fb_cursor = soft_cursor, | ||
132 | }; | 131 | }; |
133 | 132 | ||
134 | 133 | ||
diff --git a/drivers/video/pmagb-b-fb.c b/drivers/video/pmagb-b-fb.c index a483b13e117b..25148de5fe67 100644 --- a/drivers/video/pmagb-b-fb.c +++ b/drivers/video/pmagb-b-fb.c | |||
@@ -132,7 +132,6 @@ static struct fb_ops pmagbbfb_ops = { | |||
132 | .fb_fillrect = cfb_fillrect, | 132 | .fb_fillrect = cfb_fillrect, |
133 | .fb_copyarea = cfb_copyarea, | 133 | .fb_copyarea = cfb_copyarea, |
134 | .fb_imageblit = cfb_imageblit, | 134 | .fb_imageblit = cfb_imageblit, |
135 | .fb_cursor = soft_cursor, | ||
136 | }; | 135 | }; |
137 | 136 | ||
138 | 137 | ||
diff --git a/drivers/video/pvr2fb.c b/drivers/video/pvr2fb.c index 31c547fd383b..ec4bacf9dd2e 100644 --- a/drivers/video/pvr2fb.c +++ b/drivers/video/pvr2fb.c | |||
@@ -230,7 +230,6 @@ static struct fb_ops pvr2fb_ops = { | |||
230 | .fb_fillrect = cfb_fillrect, | 230 | .fb_fillrect = cfb_fillrect, |
231 | .fb_copyarea = cfb_copyarea, | 231 | .fb_copyarea = cfb_copyarea, |
232 | .fb_imageblit = cfb_imageblit, | 232 | .fb_imageblit = cfb_imageblit, |
233 | .fb_cursor = soft_cursor, | ||
234 | }; | 233 | }; |
235 | 234 | ||
236 | static struct fb_videomode pvr2_modedb[] __initdata = { | 235 | static struct fb_videomode pvr2_modedb[] __initdata = { |
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c index efd9333b05c2..f305a5b77b23 100644 --- a/drivers/video/pxafb.c +++ b/drivers/video/pxafb.c | |||
@@ -418,7 +418,6 @@ static struct fb_ops pxafb_ops = { | |||
418 | .fb_copyarea = cfb_copyarea, | 418 | .fb_copyarea = cfb_copyarea, |
419 | .fb_imageblit = cfb_imageblit, | 419 | .fb_imageblit = cfb_imageblit, |
420 | .fb_blank = pxafb_blank, | 420 | .fb_blank = pxafb_blank, |
421 | .fb_cursor = soft_cursor, | ||
422 | .fb_mmap = pxafb_mmap, | 421 | .fb_mmap = pxafb_mmap, |
423 | }; | 422 | }; |
424 | 423 | ||
diff --git a/drivers/video/q40fb.c b/drivers/video/q40fb.c index 8416b2e2b501..bfc41f2c902a 100644 --- a/drivers/video/q40fb.c +++ b/drivers/video/q40fb.c | |||
@@ -84,7 +84,6 @@ static struct fb_ops q40fb_ops = { | |||
84 | .fb_fillrect = cfb_fillrect, | 84 | .fb_fillrect = cfb_fillrect, |
85 | .fb_copyarea = cfb_copyarea, | 85 | .fb_copyarea = cfb_copyarea, |
86 | .fb_imageblit = cfb_imageblit, | 86 | .fb_imageblit = cfb_imageblit, |
87 | .fb_cursor = soft_cursor, | ||
88 | }; | 87 | }; |
89 | 88 | ||
90 | static int __init q40fb_probe(struct device *device) | 89 | static int __init q40fb_probe(struct device *device) |
diff --git a/drivers/video/radeonfb.c b/drivers/video/radeonfb.c index a78b9bd8f897..600318f708f2 100644 --- a/drivers/video/radeonfb.c +++ b/drivers/video/radeonfb.c | |||
@@ -2218,7 +2218,6 @@ static struct fb_ops radeonfb_ops = { | |||
2218 | .fb_copyarea = cfb_copyarea, | 2218 | .fb_copyarea = cfb_copyarea, |
2219 | .fb_imageblit = cfb_imageblit, | 2219 | .fb_imageblit = cfb_imageblit, |
2220 | #endif | 2220 | #endif |
2221 | .fb_cursor = soft_cursor, | ||
2222 | }; | 2221 | }; |
2223 | 2222 | ||
2224 | 2223 | ||
diff --git a/drivers/video/s1d13xxxfb.c b/drivers/video/s1d13xxxfb.c index f4437430dc5f..3edbd14c5c46 100644 --- a/drivers/video/s1d13xxxfb.c +++ b/drivers/video/s1d13xxxfb.c | |||
@@ -388,7 +388,6 @@ static struct fb_ops s1d13xxxfb_fbops = { | |||
388 | .fb_fillrect = cfb_fillrect, | 388 | .fb_fillrect = cfb_fillrect, |
389 | .fb_copyarea = cfb_copyarea, | 389 | .fb_copyarea = cfb_copyarea, |
390 | .fb_imageblit = cfb_imageblit, | 390 | .fb_imageblit = cfb_imageblit, |
391 | .fb_cursor = soft_cursor | ||
392 | }; | 391 | }; |
393 | 392 | ||
394 | static int s1d13xxxfb_width_tab[2][4] __devinitdata = { | 393 | static int s1d13xxxfb_width_tab[2][4] __devinitdata = { |
diff --git a/drivers/video/s3c2410fb.c b/drivers/video/s3c2410fb.c index 3cef90456a4b..855a6778b9eb 100644 --- a/drivers/video/s3c2410fb.c +++ b/drivers/video/s3c2410fb.c | |||
@@ -495,7 +495,6 @@ static struct fb_ops s3c2410fb_ops = { | |||
495 | .fb_fillrect = cfb_fillrect, | 495 | .fb_fillrect = cfb_fillrect, |
496 | .fb_copyarea = cfb_copyarea, | 496 | .fb_copyarea = cfb_copyarea, |
497 | .fb_imageblit = cfb_imageblit, | 497 | .fb_imageblit = cfb_imageblit, |
498 | .fb_cursor = soft_cursor, | ||
499 | }; | 498 | }; |
500 | 499 | ||
501 | 500 | ||
@@ -885,6 +884,7 @@ static int s3c2410fb_resume(struct device *dev) | |||
885 | 884 | ||
886 | static struct device_driver s3c2410fb_driver = { | 885 | static struct device_driver s3c2410fb_driver = { |
887 | .name = "s3c2410-lcd", | 886 | .name = "s3c2410-lcd", |
887 | .owner = THIS_MODULE, | ||
888 | .bus = &platform_bus_type, | 888 | .bus = &platform_bus_type, |
889 | .probe = s3c2410fb_probe, | 889 | .probe = s3c2410fb_probe, |
890 | .suspend = s3c2410fb_suspend, | 890 | .suspend = s3c2410fb_suspend, |
diff --git a/drivers/video/sa1100fb.c b/drivers/video/sa1100fb.c index 3d35b28aaac7..a5184575cfae 100644 --- a/drivers/video/sa1100fb.c +++ b/drivers/video/sa1100fb.c | |||
@@ -853,7 +853,6 @@ static struct fb_ops sa1100fb_ops = { | |||
853 | .fb_copyarea = cfb_copyarea, | 853 | .fb_copyarea = cfb_copyarea, |
854 | .fb_imageblit = cfb_imageblit, | 854 | .fb_imageblit = cfb_imageblit, |
855 | .fb_blank = sa1100fb_blank, | 855 | .fb_blank = sa1100fb_blank, |
856 | .fb_cursor = soft_cursor, | ||
857 | .fb_mmap = sa1100fb_mmap, | 856 | .fb_mmap = sa1100fb_mmap, |
858 | }; | 857 | }; |
859 | 858 | ||
diff --git a/drivers/video/savage/savagefb.h b/drivers/video/savage/savagefb.h index ea17f7e0482c..58cfdfb41833 100644 --- a/drivers/video/savage/savagefb.h +++ b/drivers/video/savage/savagefb.h | |||
@@ -169,6 +169,7 @@ struct savagefb_par { | |||
169 | struct savagefb_i2c_chan chan; | 169 | struct savagefb_i2c_chan chan; |
170 | unsigned char *edid; | 170 | unsigned char *edid; |
171 | u32 pseudo_palette[16]; | 171 | u32 pseudo_palette[16]; |
172 | int paletteEnabled; | ||
172 | int pm_state; | 173 | int pm_state; |
173 | int display_type; | 174 | int display_type; |
174 | int dvi; | 175 | int dvi; |
@@ -244,105 +245,150 @@ struct savagefb_par { | |||
244 | 245 | ||
245 | 246 | ||
246 | /* IO functions */ | 247 | /* IO functions */ |
248 | static inline u8 savage_in8(u32 addr, struct savagefb_par *par) | ||
249 | { | ||
250 | return readb(par->mmio.vbase + addr); | ||
251 | } | ||
252 | |||
253 | static inline u16 savage_in16(u32 addr, struct savagefb_par *par) | ||
254 | { | ||
255 | return readw(par->mmio.vbase + addr); | ||
256 | } | ||
257 | |||
258 | static inline u32 savage_in32(u32 addr, struct savagefb_par *par) | ||
259 | { | ||
260 | return readl(par->mmio.vbase + addr); | ||
261 | } | ||
262 | |||
263 | static inline void savage_out8(u32 addr, u8 val, struct savagefb_par *par) | ||
264 | { | ||
265 | writeb(val, par->mmio.vbase + addr); | ||
266 | } | ||
267 | |||
268 | static inline void savage_out16(u32 addr, u16 val, struct savagefb_par *par) | ||
269 | { | ||
270 | writew(val, par->mmio.vbase + addr); | ||
271 | } | ||
272 | |||
273 | static inline void savage_out32(u32 addr, u32 val, struct savagefb_par *par) | ||
274 | { | ||
275 | writel(val, par->mmio.vbase + addr); | ||
276 | } | ||
277 | |||
278 | static inline u8 vga_in8(int addr, struct savagefb_par *par) | ||
279 | { | ||
280 | return savage_in8(0x8000 + addr, par); | ||
281 | } | ||
282 | |||
283 | static inline u16 vga_in16(int addr, struct savagefb_par *par) | ||
284 | { | ||
285 | return savage_in16(0x8000 + addr, par); | ||
286 | } | ||
287 | |||
288 | static inline u8 vga_in32(int addr, struct savagefb_par *par) | ||
289 | { | ||
290 | return savage_in32(0x8000 + addr, par); | ||
291 | } | ||
292 | |||
293 | static inline void vga_out8(int addr, u8 val, struct savagefb_par *par) | ||
294 | { | ||
295 | savage_out8(0x8000 + addr, val, par); | ||
296 | } | ||
297 | |||
298 | static inline void vga_out16(int addr, u16 val, struct savagefb_par *par) | ||
299 | { | ||
300 | savage_out16(0x8000 + addr, val, par); | ||
301 | } | ||
302 | |||
303 | static inline void vga_out32(int addr, u32 val, struct savagefb_par *par) | ||
304 | { | ||
305 | savage_out32(0x8000 + addr, val, par); | ||
306 | } | ||
247 | 307 | ||
248 | #define vga_in8(addr) (inb (addr)) | 308 | static inline u8 VGArCR (u8 index, struct savagefb_par *par) |
249 | #define vga_in16(addr) (inw (addr)) | 309 | { |
250 | #define vga_in32(addr) (inl (addr)) | 310 | vga_out8(0x3d4, index, par); |
311 | return vga_in8(0x3d5, par); | ||
312 | } | ||
313 | |||
314 | static inline u8 VGArGR (u8 index, struct savagefb_par *par) | ||
315 | { | ||
316 | vga_out8(0x3ce, index, par); | ||
317 | return vga_in8(0x3cf, par); | ||
318 | } | ||
319 | |||
320 | static inline u8 VGArSEQ (u8 index, struct savagefb_par *par) | ||
321 | { | ||
322 | vga_out8(0x3c4, index, par); | ||
323 | return vga_in8(0x3c5, par); | ||
324 | } | ||
251 | 325 | ||
252 | #define vga_out8(addr,val) (outb ((val), (addr))) | 326 | static inline void VGAwCR(u8 index, u8 val, struct savagefb_par *par) |
253 | #define vga_out16(addr,val) (outw ((val), (addr))) | 327 | { |
254 | #define vga_out32(addr,val) (outl ((val), (addr))) | 328 | vga_out8(0x3d4, index, par); |
329 | vga_out8(0x3d5, val, par); | ||
330 | } | ||
255 | 331 | ||
256 | #define savage_in16(addr) readw(par->mmio.vbase + (addr)) | 332 | static inline void VGAwGR(u8 index, u8 val, struct savagefb_par *par) |
257 | #define savage_in32(addr) readl(par->mmio.vbase + (addr)) | 333 | { |
334 | vga_out8(0x3ce, index, par); | ||
335 | vga_out8(0x3cf, val, par); | ||
336 | } | ||
258 | 337 | ||
259 | #define savage_out16(addr,val) writew((val), par->mmio.vbase + (addr)) | 338 | static inline void VGAwSEQ(u8 index, u8 val, struct savagefb_par *par) |
260 | #define savage_out32(addr,val) writel((val), par->mmio.vbase + (addr)) | 339 | { |
340 | vga_out8(0x3c4, index, par); | ||
341 | vga_out8 (0x3c5, val, par); | ||
342 | } | ||
261 | 343 | ||
262 | static inline u8 VGArCR (u8 index) | 344 | static inline void VGAenablePalette(struct savagefb_par *par) |
263 | { | 345 | { |
264 | outb (index, 0x3d4); | 346 | u8 tmp; |
265 | return inb (0x3d5); | 347 | |
348 | tmp = vga_in8(0x3da, par); | ||
349 | vga_out8(0x3c0, 0x00, par); | ||
350 | par->paletteEnabled = 1; | ||
266 | } | 351 | } |
267 | 352 | ||
268 | static inline u8 VGArGR (u8 index) | 353 | static inline void VGAdisablePalette(struct savagefb_par *par) |
269 | { | 354 | { |
270 | outb (index, 0x3ce); | 355 | u8 tmp; |
271 | return inb (0x3cf); | 356 | |
357 | tmp = vga_in8(0x3da, par); | ||
358 | vga_out8(0x3c0, 0x20, par); | ||
359 | par->paletteEnabled = 0; | ||
272 | } | 360 | } |
273 | 361 | ||
274 | static inline u8 VGArSEQ (u8 index) | 362 | static inline void VGAwATTR(u8 index, u8 value, struct savagefb_par *par) |
275 | { | 363 | { |
276 | outb (index, 0x3c4); | 364 | u8 tmp; |
277 | return inb (0x3c5); | 365 | |
366 | if (par->paletteEnabled) | ||
367 | index &= ~0x20; | ||
368 | else | ||
369 | index |= 0x20; | ||
370 | |||
371 | tmp = vga_in8(0x3da, par); | ||
372 | vga_out8(0x3c0, index, par); | ||
373 | vga_out8 (0x3c0, value, par); | ||
278 | } | 374 | } |
279 | 375 | ||
280 | #define VGAwCR(index, val) \ | 376 | static inline void VGAwMISC(u8 value, struct savagefb_par *par) |
281 | do { \ | 377 | { |
282 | vga_out8 (0x3d4, index); \ | 378 | vga_out8(0x3c2, value, par); |
283 | vga_out8 (0x3d5, val); \ | 379 | } |
284 | } while (0) | ||
285 | |||
286 | #define VGAwGR(index, val) \ | ||
287 | do { \ | ||
288 | vga_out8 (0x3ce, index); \ | ||
289 | vga_out8 (0x3cf, val); \ | ||
290 | } while (0) | ||
291 | |||
292 | #define VGAwSEQ(index, val) \ | ||
293 | do { \ | ||
294 | vga_out8 (0x3c4, index); \ | ||
295 | vga_out8 (0x3c5, val); \ | ||
296 | } while (0) | ||
297 | |||
298 | #define VGAenablePalette() \ | ||
299 | do { \ | ||
300 | u8 tmp; \ | ||
301 | \ | ||
302 | tmp = vga_in8 (0x3da); \ | ||
303 | vga_out8 (0x3c0, 0x00); \ | ||
304 | paletteEnabled = 1; \ | ||
305 | } while (0) | ||
306 | |||
307 | #define VGAdisablePalette() \ | ||
308 | do { \ | ||
309 | u8 tmp; \ | ||
310 | \ | ||
311 | tmp = vga_in8 (0x3da); \ | ||
312 | vga_out8 (0x3c0, 0x20); \ | ||
313 | paletteEnabled = 0; \ | ||
314 | } while (0) | ||
315 | |||
316 | #define VGAwATTR(index, value) \ | ||
317 | do { \ | ||
318 | u8 tmp; \ | ||
319 | \ | ||
320 | if (paletteEnabled) \ | ||
321 | index &= ~0x20; \ | ||
322 | else \ | ||
323 | index |= 0x20; \ | ||
324 | \ | ||
325 | tmp = vga_in8 (0x3da); \ | ||
326 | vga_out8 (0x3c0, index); \ | ||
327 | vga_out8 (0x3c0, value); \ | ||
328 | } while (0) | ||
329 | |||
330 | #define VGAwMISC(value) \ | ||
331 | do { \ | ||
332 | vga_out8 (0x3c2, value); \ | ||
333 | } while (0) | ||
334 | 380 | ||
335 | #ifndef CONFIG_FB_SAVAGE_ACCEL | 381 | #ifndef CONFIG_FB_SAVAGE_ACCEL |
336 | #define savagefb_set_clip(x) | 382 | #define savagefb_set_clip(x) |
337 | #endif | 383 | #endif |
338 | 384 | ||
339 | #define VerticalRetraceWait() \ | 385 | static inline void VerticalRetraceWait(struct savagefb_par *par) |
340 | { \ | 386 | { |
341 | vga_out8 (0x3d4, 0x17); \ | 387 | vga_out8(0x3d4, 0x17, par); |
342 | if (vga_in8 (0x3d5) & 0x80) { \ | 388 | if (vga_in8(0x3d5, par) & 0x80) { |
343 | while ((vga_in8(0x3da) & 0x08) == 0x08) ; \ | 389 | while ((vga_in8(0x3da, par) & 0x08) == 0x08); |
344 | while ((vga_in8(0x3da) & 0x08) == 0x00) ; \ | 390 | while ((vga_in8(0x3da, par) & 0x08) == 0x00); |
345 | } \ | 391 | } |
346 | } | 392 | } |
347 | 393 | ||
348 | extern int savagefb_probe_i2c_connector(struct fb_info *info, | 394 | extern int savagefb_probe_i2c_connector(struct fb_info *info, |
diff --git a/drivers/video/savage/savagefb_driver.c b/drivers/video/savage/savagefb_driver.c index 7c285455c924..f0dfb35e3191 100644 --- a/drivers/video/savage/savagefb_driver.c +++ b/drivers/video/savage/savagefb_driver.c | |||
@@ -74,7 +74,6 @@ | |||
74 | 74 | ||
75 | 75 | ||
76 | static char *mode_option __initdata = NULL; | 76 | static char *mode_option __initdata = NULL; |
77 | static int paletteEnabled = 0; | ||
78 | 77 | ||
79 | #ifdef MODULE | 78 | #ifdef MODULE |
80 | 79 | ||
@@ -90,9 +89,9 @@ MODULE_DESCRIPTION("FBDev driver for S3 Savage PCI/AGP Chips"); | |||
90 | static void vgaHWSeqReset (struct savagefb_par *par, int start) | 89 | static void vgaHWSeqReset (struct savagefb_par *par, int start) |
91 | { | 90 | { |
92 | if (start) | 91 | if (start) |
93 | VGAwSEQ (0x00, 0x01); /* Synchronous Reset */ | 92 | VGAwSEQ (0x00, 0x01, par); /* Synchronous Reset */ |
94 | else | 93 | else |
95 | VGAwSEQ (0x00, 0x03); /* End Reset */ | 94 | VGAwSEQ (0x00, 0x03, par); /* End Reset */ |
96 | } | 95 | } |
97 | 96 | ||
98 | static void vgaHWProtect (struct savagefb_par *par, int on) | 97 | static void vgaHWProtect (struct savagefb_par *par, int on) |
@@ -103,23 +102,23 @@ static void vgaHWProtect (struct savagefb_par *par, int on) | |||
103 | /* | 102 | /* |
104 | * Turn off screen and disable sequencer. | 103 | * Turn off screen and disable sequencer. |
105 | */ | 104 | */ |
106 | tmp = VGArSEQ (0x01); | 105 | tmp = VGArSEQ (0x01, par); |
107 | 106 | ||
108 | vgaHWSeqReset (par, 1); /* start synchronous reset */ | 107 | vgaHWSeqReset (par, 1); /* start synchronous reset */ |
109 | VGAwSEQ (0x01, tmp | 0x20); /* disable the display */ | 108 | VGAwSEQ (0x01, tmp | 0x20, par);/* disable the display */ |
110 | 109 | ||
111 | VGAenablePalette(); | 110 | VGAenablePalette(par); |
112 | } else { | 111 | } else { |
113 | /* | 112 | /* |
114 | * Reenable sequencer, then turn on screen. | 113 | * Reenable sequencer, then turn on screen. |
115 | */ | 114 | */ |
116 | 115 | ||
117 | tmp = VGArSEQ (0x01); | 116 | tmp = VGArSEQ (0x01, par); |
118 | 117 | ||
119 | VGAwSEQ (0x01, tmp & ~0x20); /* reenable display */ | 118 | VGAwSEQ (0x01, tmp & ~0x20, par);/* reenable display */ |
120 | vgaHWSeqReset (par, 0); /* clear synchronous reset */ | 119 | vgaHWSeqReset (par, 0); /* clear synchronous reset */ |
121 | 120 | ||
122 | VGAdisablePalette(); | 121 | VGAdisablePalette(par); |
123 | } | 122 | } |
124 | } | 123 | } |
125 | 124 | ||
@@ -127,27 +126,27 @@ static void vgaHWRestore (struct savagefb_par *par) | |||
127 | { | 126 | { |
128 | int i; | 127 | int i; |
129 | 128 | ||
130 | VGAwMISC (par->MiscOutReg); | 129 | VGAwMISC (par->MiscOutReg, par); |
131 | 130 | ||
132 | for (i = 1; i < 5; i++) | 131 | for (i = 1; i < 5; i++) |
133 | VGAwSEQ (i, par->Sequencer[i]); | 132 | VGAwSEQ (i, par->Sequencer[i], par); |
134 | 133 | ||
135 | /* Ensure CRTC registers 0-7 are unlocked by clearing bit 7 or | 134 | /* Ensure CRTC registers 0-7 are unlocked by clearing bit 7 or |
136 | CRTC[17] */ | 135 | CRTC[17] */ |
137 | VGAwCR (17, par->CRTC[17] & ~0x80); | 136 | VGAwCR (17, par->CRTC[17] & ~0x80, par); |
138 | 137 | ||
139 | for (i = 0; i < 25; i++) | 138 | for (i = 0; i < 25; i++) |
140 | VGAwCR (i, par->CRTC[i]); | 139 | VGAwCR (i, par->CRTC[i], par); |
141 | 140 | ||
142 | for (i = 0; i < 9; i++) | 141 | for (i = 0; i < 9; i++) |
143 | VGAwGR (i, par->Graphics[i]); | 142 | VGAwGR (i, par->Graphics[i], par); |
144 | 143 | ||
145 | VGAenablePalette(); | 144 | VGAenablePalette(par); |
146 | 145 | ||
147 | for (i = 0; i < 21; i++) | 146 | for (i = 0; i < 21; i++) |
148 | VGAwATTR (i, par->Attribute[i]); | 147 | VGAwATTR (i, par->Attribute[i], par); |
149 | 148 | ||
150 | VGAdisablePalette(); | 149 | VGAdisablePalette(par); |
151 | } | 150 | } |
152 | 151 | ||
153 | static void vgaHWInit (struct fb_var_screeninfo *var, | 152 | static void vgaHWInit (struct fb_var_screeninfo *var, |
@@ -267,7 +266,7 @@ savage3D_waitfifo(struct savagefb_par *par, int space) | |||
267 | { | 266 | { |
268 | int slots = MAXFIFO - space; | 267 | int slots = MAXFIFO - space; |
269 | 268 | ||
270 | while ((savage_in32(0x48C00) & 0x0000ffff) > slots); | 269 | while ((savage_in32(0x48C00, par) & 0x0000ffff) > slots); |
271 | } | 270 | } |
272 | 271 | ||
273 | static void | 272 | static void |
@@ -275,7 +274,7 @@ savage4_waitfifo(struct savagefb_par *par, int space) | |||
275 | { | 274 | { |
276 | int slots = MAXFIFO - space; | 275 | int slots = MAXFIFO - space; |
277 | 276 | ||
278 | while ((savage_in32(0x48C60) & 0x001fffff) > slots); | 277 | while ((savage_in32(0x48C60, par) & 0x001fffff) > slots); |
279 | } | 278 | } |
280 | 279 | ||
281 | static void | 280 | static void |
@@ -283,26 +282,26 @@ savage2000_waitfifo(struct savagefb_par *par, int space) | |||
283 | { | 282 | { |
284 | int slots = MAXFIFO - space; | 283 | int slots = MAXFIFO - space; |
285 | 284 | ||
286 | while ((savage_in32(0x48C60) & 0x0000ffff) > slots); | 285 | while ((savage_in32(0x48C60, par) & 0x0000ffff) > slots); |
287 | } | 286 | } |
288 | 287 | ||
289 | /* Wait for idle accelerator */ | 288 | /* Wait for idle accelerator */ |
290 | static void | 289 | static void |
291 | savage3D_waitidle(struct savagefb_par *par) | 290 | savage3D_waitidle(struct savagefb_par *par) |
292 | { | 291 | { |
293 | while ((savage_in32(0x48C00) & 0x0008ffff) != 0x80000); | 292 | while ((savage_in32(0x48C00, par) & 0x0008ffff) != 0x80000); |
294 | } | 293 | } |
295 | 294 | ||
296 | static void | 295 | static void |
297 | savage4_waitidle(struct savagefb_par *par) | 296 | savage4_waitidle(struct savagefb_par *par) |
298 | { | 297 | { |
299 | while ((savage_in32(0x48C60) & 0x00a00000) != 0x00a00000); | 298 | while ((savage_in32(0x48C60, par) & 0x00a00000) != 0x00a00000); |
300 | } | 299 | } |
301 | 300 | ||
302 | static void | 301 | static void |
303 | savage2000_waitidle(struct savagefb_par *par) | 302 | savage2000_waitidle(struct savagefb_par *par) |
304 | { | 303 | { |
305 | while ((savage_in32(0x48C60) & 0x009fffff)); | 304 | while ((savage_in32(0x48C60, par) & 0x009fffff)); |
306 | } | 305 | } |
307 | 306 | ||
308 | 307 | ||
@@ -319,59 +318,64 @@ SavageSetup2DEngine (struct savagefb_par *par) | |||
319 | case S3_SAVAGE3D: | 318 | case S3_SAVAGE3D: |
320 | case S3_SAVAGE_MX: | 319 | case S3_SAVAGE_MX: |
321 | /* Disable BCI */ | 320 | /* Disable BCI */ |
322 | savage_out32(0x48C18, savage_in32(0x48C18) & 0x3FF0); | 321 | savage_out32(0x48C18, savage_in32(0x48C18, par) & 0x3FF0, par); |
323 | /* Setup BCI command overflow buffer */ | 322 | /* Setup BCI command overflow buffer */ |
324 | savage_out32(0x48C14, (par->cob_offset >> 11) | (par->cob_index << 29)); | 323 | savage_out32(0x48C14, |
324 | (par->cob_offset >> 11) | (par->cob_index << 29), | ||
325 | par); | ||
325 | /* Program shadow status update. */ | 326 | /* Program shadow status update. */ |
326 | savage_out32(0x48C10, 0x78207220); | 327 | savage_out32(0x48C10, 0x78207220, par); |
327 | savage_out32(0x48C0C, 0); | 328 | savage_out32(0x48C0C, 0, par); |
328 | /* Enable BCI and command overflow buffer */ | 329 | /* Enable BCI and command overflow buffer */ |
329 | savage_out32(0x48C18, savage_in32(0x48C18) | 0x0C); | 330 | savage_out32(0x48C18, savage_in32(0x48C18, par) | 0x0C, par); |
330 | break; | 331 | break; |
331 | case S3_SAVAGE4: | 332 | case S3_SAVAGE4: |
332 | case S3_PROSAVAGE: | 333 | case S3_PROSAVAGE: |
333 | case S3_SUPERSAVAGE: | 334 | case S3_SUPERSAVAGE: |
334 | /* Disable BCI */ | 335 | /* Disable BCI */ |
335 | savage_out32(0x48C18, savage_in32(0x48C18) & 0x3FF0); | 336 | savage_out32(0x48C18, savage_in32(0x48C18, par) & 0x3FF0, par); |
336 | /* Program shadow status update */ | 337 | /* Program shadow status update */ |
337 | savage_out32(0x48C10, 0x00700040); | 338 | savage_out32(0x48C10, 0x00700040, par); |
338 | savage_out32(0x48C0C, 0); | 339 | savage_out32(0x48C0C, 0, par); |
339 | /* Enable BCI without the COB */ | 340 | /* Enable BCI without the COB */ |
340 | savage_out32(0x48C18, savage_in32(0x48C18) | 0x08); | 341 | savage_out32(0x48C18, savage_in32(0x48C18, par) | 0x08, par); |
341 | break; | 342 | break; |
342 | case S3_SAVAGE2000: | 343 | case S3_SAVAGE2000: |
343 | /* Disable BCI */ | 344 | /* Disable BCI */ |
344 | savage_out32(0x48C18, 0); | 345 | savage_out32(0x48C18, 0, par); |
345 | /* Setup BCI command overflow buffer */ | 346 | /* Setup BCI command overflow buffer */ |
346 | savage_out32(0x48C18, (par->cob_offset >> 7) | (par->cob_index)); | 347 | savage_out32(0x48C18, |
348 | (par->cob_offset >> 7) | (par->cob_index), | ||
349 | par); | ||
347 | /* Disable shadow status update */ | 350 | /* Disable shadow status update */ |
348 | savage_out32(0x48A30, 0); | 351 | savage_out32(0x48A30, 0, par); |
349 | /* Enable BCI and command overflow buffer */ | 352 | /* Enable BCI and command overflow buffer */ |
350 | savage_out32(0x48C18, savage_in32(0x48C18) | 0x00280000 ); | 353 | savage_out32(0x48C18, savage_in32(0x48C18, par) | 0x00280000, |
354 | par); | ||
351 | break; | 355 | break; |
352 | default: | 356 | default: |
353 | break; | 357 | break; |
354 | } | 358 | } |
355 | /* Turn on 16-bit register access. */ | 359 | /* Turn on 16-bit register access. */ |
356 | vga_out8(0x3d4, 0x31); | 360 | vga_out8(0x3d4, 0x31, par); |
357 | vga_out8(0x3d5, 0x0c); | 361 | vga_out8(0x3d5, 0x0c, par); |
358 | 362 | ||
359 | /* Set stride to use GBD. */ | 363 | /* Set stride to use GBD. */ |
360 | vga_out8 (0x3d4, 0x50); | 364 | vga_out8 (0x3d4, 0x50, par); |
361 | vga_out8 (0x3d5, vga_in8 (0x3d5 ) | 0xC1); | 365 | vga_out8 (0x3d5, vga_in8(0x3d5, par) | 0xC1, par); |
362 | 366 | ||
363 | /* Enable 2D engine. */ | 367 | /* Enable 2D engine. */ |
364 | vga_out8 (0x3d4, 0x40 ); | 368 | vga_out8 (0x3d4, 0x40, par); |
365 | vga_out8 (0x3d5, 0x01 ); | 369 | vga_out8 (0x3d5, 0x01, par); |
366 | 370 | ||
367 | savage_out32 (MONO_PAT_0, ~0); | 371 | savage_out32 (MONO_PAT_0, ~0, par); |
368 | savage_out32 (MONO_PAT_1, ~0); | 372 | savage_out32 (MONO_PAT_1, ~0, par); |
369 | 373 | ||
370 | /* Setup plane masks */ | 374 | /* Setup plane masks */ |
371 | savage_out32 (0x8128, ~0 ); /* enable all write planes */ | 375 | savage_out32 (0x8128, ~0, par); /* enable all write planes */ |
372 | savage_out32 (0x812C, ~0 ); /* enable all read planes */ | 376 | savage_out32 (0x812C, ~0, par); /* enable all read planes */ |
373 | savage_out16 (0x8134, 0x27 ); | 377 | savage_out16 (0x8134, 0x27, par); |
374 | savage_out16 (0x8136, 0x07 ); | 378 | savage_out16 (0x8136, 0x07, par); |
375 | 379 | ||
376 | /* Now set the GBD */ | 380 | /* Now set the GBD */ |
377 | par->bci_ptr = 0; | 381 | par->bci_ptr = 0; |
@@ -489,8 +493,8 @@ static void SavagePrintRegs(void) | |||
489 | for( i = 0; i < 0x70; i++ ) { | 493 | for( i = 0; i < 0x70; i++ ) { |
490 | if( !(i % 16) ) | 494 | if( !(i % 16) ) |
491 | printk(KERN_DEBUG "\nSR%xx ", i >> 4 ); | 495 | printk(KERN_DEBUG "\nSR%xx ", i >> 4 ); |
492 | vga_out8( 0x3c4, i ); | 496 | vga_out8( 0x3c4, i, par); |
493 | printk(KERN_DEBUG " %02x", vga_in8(0x3c5) ); | 497 | printk(KERN_DEBUG " %02x", vga_in8(0x3c5, par) ); |
494 | } | 498 | } |
495 | 499 | ||
496 | printk(KERN_DEBUG "\n\nCR x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC " | 500 | printk(KERN_DEBUG "\n\nCR x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC " |
@@ -499,8 +503,8 @@ static void SavagePrintRegs(void) | |||
499 | for( i = 0; i < 0xB7; i++ ) { | 503 | for( i = 0; i < 0xB7; i++ ) { |
500 | if( !(i % 16) ) | 504 | if( !(i % 16) ) |
501 | printk(KERN_DEBUG "\nCR%xx ", i >> 4 ); | 505 | printk(KERN_DEBUG "\nCR%xx ", i >> 4 ); |
502 | vga_out8( vgaCRIndex, i ); | 506 | vga_out8( vgaCRIndex, i, par); |
503 | printk(KERN_DEBUG " %02x", vga_in8(vgaCRReg) ); | 507 | printk(KERN_DEBUG " %02x", vga_in8(vgaCRReg, par) ); |
504 | } | 508 | } |
505 | 509 | ||
506 | printk(KERN_DEBUG "\n\n"); | 510 | printk(KERN_DEBUG "\n\n"); |
@@ -513,152 +517,152 @@ static void savage_get_default_par(struct savagefb_par *par) | |||
513 | { | 517 | { |
514 | unsigned char cr3a, cr53, cr66; | 518 | unsigned char cr3a, cr53, cr66; |
515 | 519 | ||
516 | vga_out16 (0x3d4, 0x4838); | 520 | vga_out16 (0x3d4, 0x4838, par); |
517 | vga_out16 (0x3d4, 0xa039); | 521 | vga_out16 (0x3d4, 0xa039, par); |
518 | vga_out16 (0x3c4, 0x0608); | 522 | vga_out16 (0x3c4, 0x0608, par); |
519 | 523 | ||
520 | vga_out8 (0x3d4, 0x66); | 524 | vga_out8 (0x3d4, 0x66, par); |
521 | cr66 = vga_in8 (0x3d5); | 525 | cr66 = vga_in8 (0x3d5, par); |
522 | vga_out8 (0x3d5, cr66 | 0x80); | 526 | vga_out8 (0x3d5, cr66 | 0x80, par); |
523 | vga_out8 (0x3d4, 0x3a); | 527 | vga_out8 (0x3d4, 0x3a, par); |
524 | cr3a = vga_in8 (0x3d5); | 528 | cr3a = vga_in8 (0x3d5, par); |
525 | vga_out8 (0x3d5, cr3a | 0x80); | 529 | vga_out8 (0x3d5, cr3a | 0x80, par); |
526 | vga_out8 (0x3d4, 0x53); | 530 | vga_out8 (0x3d4, 0x53, par); |
527 | cr53 = vga_in8 (0x3d5); | 531 | cr53 = vga_in8 (0x3d5, par); |
528 | vga_out8 (0x3d5, cr53 & 0x7f); | 532 | vga_out8 (0x3d5, cr53 & 0x7f, par); |
529 | 533 | ||
530 | vga_out8 (0x3d4, 0x66); | 534 | vga_out8 (0x3d4, 0x66, par); |
531 | vga_out8 (0x3d5, cr66); | 535 | vga_out8 (0x3d5, cr66, par); |
532 | vga_out8 (0x3d4, 0x3a); | 536 | vga_out8 (0x3d4, 0x3a, par); |
533 | vga_out8 (0x3d5, cr3a); | 537 | vga_out8 (0x3d5, cr3a, par); |
534 | 538 | ||
535 | vga_out8 (0x3d4, 0x66); | 539 | vga_out8 (0x3d4, 0x66, par); |
536 | vga_out8 (0x3d5, cr66); | 540 | vga_out8 (0x3d5, cr66, par); |
537 | vga_out8 (0x3d4, 0x3a); | 541 | vga_out8 (0x3d4, 0x3a, par); |
538 | vga_out8 (0x3d5, cr3a); | 542 | vga_out8 (0x3d5, cr3a, par); |
539 | 543 | ||
540 | /* unlock extended seq regs */ | 544 | /* unlock extended seq regs */ |
541 | vga_out8 (0x3c4, 0x08); | 545 | vga_out8 (0x3c4, 0x08, par); |
542 | par->SR08 = vga_in8 (0x3c5); | 546 | par->SR08 = vga_in8 (0x3c5, par); |
543 | vga_out8 (0x3c5, 0x06); | 547 | vga_out8 (0x3c5, 0x06, par); |
544 | 548 | ||
545 | /* now save all the extended regs we need */ | 549 | /* now save all the extended regs we need */ |
546 | vga_out8 (0x3d4, 0x31); | 550 | vga_out8 (0x3d4, 0x31, par); |
547 | par->CR31 = vga_in8 (0x3d5); | 551 | par->CR31 = vga_in8 (0x3d5, par); |
548 | vga_out8 (0x3d4, 0x32); | 552 | vga_out8 (0x3d4, 0x32, par); |
549 | par->CR32 = vga_in8 (0x3d5); | 553 | par->CR32 = vga_in8 (0x3d5, par); |
550 | vga_out8 (0x3d4, 0x34); | 554 | vga_out8 (0x3d4, 0x34, par); |
551 | par->CR34 = vga_in8 (0x3d5); | 555 | par->CR34 = vga_in8 (0x3d5, par); |
552 | vga_out8 (0x3d4, 0x36); | 556 | vga_out8 (0x3d4, 0x36, par); |
553 | par->CR36 = vga_in8 (0x3d5); | 557 | par->CR36 = vga_in8 (0x3d5, par); |
554 | vga_out8 (0x3d4, 0x3a); | 558 | vga_out8 (0x3d4, 0x3a, par); |
555 | par->CR3A = vga_in8 (0x3d5); | 559 | par->CR3A = vga_in8 (0x3d5, par); |
556 | vga_out8 (0x3d4, 0x40); | 560 | vga_out8 (0x3d4, 0x40, par); |
557 | par->CR40 = vga_in8 (0x3d5); | 561 | par->CR40 = vga_in8 (0x3d5, par); |
558 | vga_out8 (0x3d4, 0x42); | 562 | vga_out8 (0x3d4, 0x42, par); |
559 | par->CR42 = vga_in8 (0x3d5); | 563 | par->CR42 = vga_in8 (0x3d5, par); |
560 | vga_out8 (0x3d4, 0x45); | 564 | vga_out8 (0x3d4, 0x45, par); |
561 | par->CR45 = vga_in8 (0x3d5); | 565 | par->CR45 = vga_in8 (0x3d5, par); |
562 | vga_out8 (0x3d4, 0x50); | 566 | vga_out8 (0x3d4, 0x50, par); |
563 | par->CR50 = vga_in8 (0x3d5); | 567 | par->CR50 = vga_in8 (0x3d5, par); |
564 | vga_out8 (0x3d4, 0x51); | 568 | vga_out8 (0x3d4, 0x51, par); |
565 | par->CR51 = vga_in8 (0x3d5); | 569 | par->CR51 = vga_in8 (0x3d5, par); |
566 | vga_out8 (0x3d4, 0x53); | 570 | vga_out8 (0x3d4, 0x53, par); |
567 | par->CR53 = vga_in8 (0x3d5); | 571 | par->CR53 = vga_in8 (0x3d5, par); |
568 | vga_out8 (0x3d4, 0x58); | 572 | vga_out8 (0x3d4, 0x58, par); |
569 | par->CR58 = vga_in8 (0x3d5); | 573 | par->CR58 = vga_in8 (0x3d5, par); |
570 | vga_out8 (0x3d4, 0x60); | 574 | vga_out8 (0x3d4, 0x60, par); |
571 | par->CR60 = vga_in8 (0x3d5); | 575 | par->CR60 = vga_in8 (0x3d5, par); |
572 | vga_out8 (0x3d4, 0x66); | 576 | vga_out8 (0x3d4, 0x66, par); |
573 | par->CR66 = vga_in8 (0x3d5); | 577 | par->CR66 = vga_in8 (0x3d5, par); |
574 | vga_out8 (0x3d4, 0x67); | 578 | vga_out8 (0x3d4, 0x67, par); |
575 | par->CR67 = vga_in8 (0x3d5); | 579 | par->CR67 = vga_in8 (0x3d5, par); |
576 | vga_out8 (0x3d4, 0x68); | 580 | vga_out8 (0x3d4, 0x68, par); |
577 | par->CR68 = vga_in8 (0x3d5); | 581 | par->CR68 = vga_in8 (0x3d5, par); |
578 | vga_out8 (0x3d4, 0x69); | 582 | vga_out8 (0x3d4, 0x69, par); |
579 | par->CR69 = vga_in8 (0x3d5); | 583 | par->CR69 = vga_in8 (0x3d5, par); |
580 | vga_out8 (0x3d4, 0x6f); | 584 | vga_out8 (0x3d4, 0x6f, par); |
581 | par->CR6F = vga_in8 (0x3d5); | 585 | par->CR6F = vga_in8 (0x3d5, par); |
582 | 586 | ||
583 | vga_out8 (0x3d4, 0x33); | 587 | vga_out8 (0x3d4, 0x33, par); |
584 | par->CR33 = vga_in8 (0x3d5); | 588 | par->CR33 = vga_in8 (0x3d5, par); |
585 | vga_out8 (0x3d4, 0x86); | 589 | vga_out8 (0x3d4, 0x86, par); |
586 | par->CR86 = vga_in8 (0x3d5); | 590 | par->CR86 = vga_in8 (0x3d5, par); |
587 | vga_out8 (0x3d4, 0x88); | 591 | vga_out8 (0x3d4, 0x88, par); |
588 | par->CR88 = vga_in8 (0x3d5); | 592 | par->CR88 = vga_in8 (0x3d5, par); |
589 | vga_out8 (0x3d4, 0x90); | 593 | vga_out8 (0x3d4, 0x90, par); |
590 | par->CR90 = vga_in8 (0x3d5); | 594 | par->CR90 = vga_in8 (0x3d5, par); |
591 | vga_out8 (0x3d4, 0x91); | 595 | vga_out8 (0x3d4, 0x91, par); |
592 | par->CR91 = vga_in8 (0x3d5); | 596 | par->CR91 = vga_in8 (0x3d5, par); |
593 | vga_out8 (0x3d4, 0xb0); | 597 | vga_out8 (0x3d4, 0xb0, par); |
594 | par->CRB0 = vga_in8 (0x3d5) | 0x80; | 598 | par->CRB0 = vga_in8 (0x3d5, par) | 0x80; |
595 | 599 | ||
596 | /* extended mode timing regs */ | 600 | /* extended mode timing regs */ |
597 | vga_out8 (0x3d4, 0x3b); | 601 | vga_out8 (0x3d4, 0x3b, par); |
598 | par->CR3B = vga_in8 (0x3d5); | 602 | par->CR3B = vga_in8 (0x3d5, par); |
599 | vga_out8 (0x3d4, 0x3c); | 603 | vga_out8 (0x3d4, 0x3c, par); |
600 | par->CR3C = vga_in8 (0x3d5); | 604 | par->CR3C = vga_in8 (0x3d5, par); |
601 | vga_out8 (0x3d4, 0x43); | 605 | vga_out8 (0x3d4, 0x43, par); |
602 | par->CR43 = vga_in8 (0x3d5); | 606 | par->CR43 = vga_in8 (0x3d5, par); |
603 | vga_out8 (0x3d4, 0x5d); | 607 | vga_out8 (0x3d4, 0x5d, par); |
604 | par->CR5D = vga_in8 (0x3d5); | 608 | par->CR5D = vga_in8 (0x3d5, par); |
605 | vga_out8 (0x3d4, 0x5e); | 609 | vga_out8 (0x3d4, 0x5e, par); |
606 | par->CR5E = vga_in8 (0x3d5); | 610 | par->CR5E = vga_in8 (0x3d5, par); |
607 | vga_out8 (0x3d4, 0x65); | 611 | vga_out8 (0x3d4, 0x65, par); |
608 | par->CR65 = vga_in8 (0x3d5); | 612 | par->CR65 = vga_in8 (0x3d5, par); |
609 | 613 | ||
610 | /* save seq extended regs for DCLK PLL programming */ | 614 | /* save seq extended regs for DCLK PLL programming */ |
611 | vga_out8 (0x3c4, 0x0e); | 615 | vga_out8 (0x3c4, 0x0e, par); |
612 | par->SR0E = vga_in8 (0x3c5); | 616 | par->SR0E = vga_in8 (0x3c5, par); |
613 | vga_out8 (0x3c4, 0x0f); | 617 | vga_out8 (0x3c4, 0x0f, par); |
614 | par->SR0F = vga_in8 (0x3c5); | 618 | par->SR0F = vga_in8 (0x3c5, par); |
615 | vga_out8 (0x3c4, 0x10); | 619 | vga_out8 (0x3c4, 0x10, par); |
616 | par->SR10 = vga_in8 (0x3c5); | 620 | par->SR10 = vga_in8 (0x3c5, par); |
617 | vga_out8 (0x3c4, 0x11); | 621 | vga_out8 (0x3c4, 0x11, par); |
618 | par->SR11 = vga_in8 (0x3c5); | 622 | par->SR11 = vga_in8 (0x3c5, par); |
619 | vga_out8 (0x3c4, 0x12); | 623 | vga_out8 (0x3c4, 0x12, par); |
620 | par->SR12 = vga_in8 (0x3c5); | 624 | par->SR12 = vga_in8 (0x3c5, par); |
621 | vga_out8 (0x3c4, 0x13); | 625 | vga_out8 (0x3c4, 0x13, par); |
622 | par->SR13 = vga_in8 (0x3c5); | 626 | par->SR13 = vga_in8 (0x3c5, par); |
623 | vga_out8 (0x3c4, 0x29); | 627 | vga_out8 (0x3c4, 0x29, par); |
624 | par->SR29 = vga_in8 (0x3c5); | 628 | par->SR29 = vga_in8 (0x3c5, par); |
625 | 629 | ||
626 | vga_out8 (0x3c4, 0x15); | 630 | vga_out8 (0x3c4, 0x15, par); |
627 | par->SR15 = vga_in8 (0x3c5); | 631 | par->SR15 = vga_in8 (0x3c5, par); |
628 | vga_out8 (0x3c4, 0x30); | 632 | vga_out8 (0x3c4, 0x30, par); |
629 | par->SR30 = vga_in8 (0x3c5); | 633 | par->SR30 = vga_in8 (0x3c5, par); |
630 | vga_out8 (0x3c4, 0x18); | 634 | vga_out8 (0x3c4, 0x18, par); |
631 | par->SR18 = vga_in8 (0x3c5); | 635 | par->SR18 = vga_in8 (0x3c5, par); |
632 | 636 | ||
633 | /* Save flat panel expansion regsters. */ | 637 | /* Save flat panel expansion regsters. */ |
634 | if (par->chip == S3_SAVAGE_MX) { | 638 | if (par->chip == S3_SAVAGE_MX) { |
635 | int i; | 639 | int i; |
636 | 640 | ||
637 | for (i = 0; i < 8; i++) { | 641 | for (i = 0; i < 8; i++) { |
638 | vga_out8 (0x3c4, 0x54+i); | 642 | vga_out8 (0x3c4, 0x54+i, par); |
639 | par->SR54[i] = vga_in8 (0x3c5); | 643 | par->SR54[i] = vga_in8 (0x3c5, par); |
640 | } | 644 | } |
641 | } | 645 | } |
642 | 646 | ||
643 | vga_out8 (0x3d4, 0x66); | 647 | vga_out8 (0x3d4, 0x66, par); |
644 | cr66 = vga_in8 (0x3d5); | 648 | cr66 = vga_in8 (0x3d5, par); |
645 | vga_out8 (0x3d5, cr66 | 0x80); | 649 | vga_out8 (0x3d5, cr66 | 0x80, par); |
646 | vga_out8 (0x3d4, 0x3a); | 650 | vga_out8 (0x3d4, 0x3a, par); |
647 | cr3a = vga_in8 (0x3d5); | 651 | cr3a = vga_in8 (0x3d5, par); |
648 | vga_out8 (0x3d5, cr3a | 0x80); | 652 | vga_out8 (0x3d5, cr3a | 0x80, par); |
649 | 653 | ||
650 | /* now save MIU regs */ | 654 | /* now save MIU regs */ |
651 | if (par->chip != S3_SAVAGE_MX) { | 655 | if (par->chip != S3_SAVAGE_MX) { |
652 | par->MMPR0 = savage_in32(FIFO_CONTROL_REG); | 656 | par->MMPR0 = savage_in32(FIFO_CONTROL_REG, par); |
653 | par->MMPR1 = savage_in32(MIU_CONTROL_REG); | 657 | par->MMPR1 = savage_in32(MIU_CONTROL_REG, par); |
654 | par->MMPR2 = savage_in32(STREAMS_TIMEOUT_REG); | 658 | par->MMPR2 = savage_in32(STREAMS_TIMEOUT_REG, par); |
655 | par->MMPR3 = savage_in32(MISC_TIMEOUT_REG); | 659 | par->MMPR3 = savage_in32(MISC_TIMEOUT_REG, par); |
656 | } | 660 | } |
657 | 661 | ||
658 | vga_out8 (0x3d4, 0x3a); | 662 | vga_out8 (0x3d4, 0x3a, par); |
659 | vga_out8 (0x3d5, cr3a); | 663 | vga_out8 (0x3d5, cr3a, par); |
660 | vga_out8 (0x3d4, 0x66); | 664 | vga_out8 (0x3d4, 0x66, par); |
661 | vga_out8 (0x3d5, cr66); | 665 | vga_out8 (0x3d5, cr66, par); |
662 | } | 666 | } |
663 | 667 | ||
664 | static void savage_update_var(struct fb_var_screeninfo *var, struct fb_videomode *modedb) | 668 | static void savage_update_var(struct fb_var_screeninfo *var, struct fb_videomode *modedb) |
@@ -868,8 +872,8 @@ static int savagefb_decode_var (struct fb_var_screeninfo *var, | |||
868 | * match. Fall back to traditional register-crunching. | 872 | * match. Fall back to traditional register-crunching. |
869 | */ | 873 | */ |
870 | 874 | ||
871 | vga_out8 (0x3d4, 0x3a); | 875 | vga_out8 (0x3d4, 0x3a, par); |
872 | tmp = vga_in8 (0x3d5); | 876 | tmp = vga_in8 (0x3d5, par); |
873 | if (1 /*FIXME:psav->pci_burst*/) | 877 | if (1 /*FIXME:psav->pci_burst*/) |
874 | par->CR3A = (tmp & 0x7f) | 0x15; | 878 | par->CR3A = (tmp & 0x7f) | 0x15; |
875 | else | 879 | else |
@@ -879,16 +883,16 @@ static int savagefb_decode_var (struct fb_var_screeninfo *var, | |||
879 | par->CR31 = 0x8c; | 883 | par->CR31 = 0x8c; |
880 | par->CR66 = 0x89; | 884 | par->CR66 = 0x89; |
881 | 885 | ||
882 | vga_out8 (0x3d4, 0x58); | 886 | vga_out8 (0x3d4, 0x58, par); |
883 | par->CR58 = vga_in8 (0x3d5) & 0x80; | 887 | par->CR58 = vga_in8 (0x3d5, par) & 0x80; |
884 | par->CR58 |= 0x13; | 888 | par->CR58 |= 0x13; |
885 | 889 | ||
886 | par->SR15 = 0x03 | 0x80; | 890 | par->SR15 = 0x03 | 0x80; |
887 | par->SR18 = 0x00; | 891 | par->SR18 = 0x00; |
888 | par->CR43 = par->CR45 = par->CR65 = 0x00; | 892 | par->CR43 = par->CR45 = par->CR65 = 0x00; |
889 | 893 | ||
890 | vga_out8 (0x3d4, 0x40); | 894 | vga_out8 (0x3d4, 0x40, par); |
891 | par->CR40 = vga_in8 (0x3d5) & ~0x01; | 895 | par->CR40 = vga_in8 (0x3d5, par) & ~0x01; |
892 | 896 | ||
893 | par->MMPR0 = 0x010400; | 897 | par->MMPR0 = 0x010400; |
894 | par->MMPR1 = 0x00; | 898 | par->MMPR1 = 0x00; |
@@ -992,19 +996,19 @@ static int savagefb_decode_var (struct fb_var_screeninfo *var, | |||
992 | 996 | ||
993 | par->CR67 |= 1; | 997 | par->CR67 |= 1; |
994 | 998 | ||
995 | vga_out8(0x3d4, 0x36); | 999 | vga_out8(0x3d4, 0x36, par); |
996 | par->CR36 = vga_in8 (0x3d5); | 1000 | par->CR36 = vga_in8 (0x3d5, par); |
997 | vga_out8 (0x3d4, 0x68); | 1001 | vga_out8 (0x3d4, 0x68, par); |
998 | par->CR68 = vga_in8 (0x3d5); | 1002 | par->CR68 = vga_in8 (0x3d5, par); |
999 | par->CR69 = 0; | 1003 | par->CR69 = 0; |
1000 | vga_out8 (0x3d4, 0x6f); | 1004 | vga_out8 (0x3d4, 0x6f, par); |
1001 | par->CR6F = vga_in8 (0x3d5); | 1005 | par->CR6F = vga_in8 (0x3d5, par); |
1002 | vga_out8 (0x3d4, 0x86); | 1006 | vga_out8 (0x3d4, 0x86, par); |
1003 | par->CR86 = vga_in8 (0x3d5); | 1007 | par->CR86 = vga_in8 (0x3d5, par); |
1004 | vga_out8 (0x3d4, 0x88); | 1008 | vga_out8 (0x3d4, 0x88, par); |
1005 | par->CR88 = vga_in8 (0x3d5) | 0x08; | 1009 | par->CR88 = vga_in8 (0x3d5, par) | 0x08; |
1006 | vga_out8 (0x3d4, 0xb0); | 1010 | vga_out8 (0x3d4, 0xb0, par); |
1007 | par->CRB0 = vga_in8 (0x3d5) | 0x80; | 1011 | par->CRB0 = vga_in8 (0x3d5, par) | 0x80; |
1008 | 1012 | ||
1009 | return 0; | 1013 | return 0; |
1010 | } | 1014 | } |
@@ -1033,11 +1037,11 @@ static int savagefb_setcolreg(unsigned regno, | |||
1033 | 1037 | ||
1034 | switch (info->var.bits_per_pixel) { | 1038 | switch (info->var.bits_per_pixel) { |
1035 | case 8: | 1039 | case 8: |
1036 | vga_out8 (0x3c8, regno); | 1040 | vga_out8 (0x3c8, regno, par); |
1037 | 1041 | ||
1038 | vga_out8 (0x3c9, red >> 10); | 1042 | vga_out8 (0x3c9, red >> 10, par); |
1039 | vga_out8 (0x3c9, green >> 10); | 1043 | vga_out8 (0x3c9, green >> 10, par); |
1040 | vga_out8 (0x3c9, blue >> 10); | 1044 | vga_out8 (0x3c9, blue >> 10, par); |
1041 | break; | 1045 | break; |
1042 | 1046 | ||
1043 | case 16: | 1047 | case 16: |
@@ -1079,11 +1083,11 @@ static void savagefb_set_par_int (struct savagefb_par *par) | |||
1079 | 1083 | ||
1080 | par->SavageWaitIdle (par); | 1084 | par->SavageWaitIdle (par); |
1081 | 1085 | ||
1082 | vga_out8 (0x3c2, 0x23); | 1086 | vga_out8 (0x3c2, 0x23, par); |
1083 | 1087 | ||
1084 | vga_out16 (0x3d4, 0x4838); | 1088 | vga_out16 (0x3d4, 0x4838, par); |
1085 | vga_out16 (0x3d4, 0xa539); | 1089 | vga_out16 (0x3d4, 0xa539, par); |
1086 | vga_out16 (0x3c4, 0x0608); | 1090 | vga_out16 (0x3c4, 0x0608, par); |
1087 | 1091 | ||
1088 | vgaHWProtect (par, 1); | 1092 | vgaHWProtect (par, 1); |
1089 | 1093 | ||
@@ -1094,197 +1098,197 @@ static void savagefb_set_par_int (struct savagefb_par *par) | |||
1094 | * switch to mode 3 here seems to eliminate the issue. | 1098 | * switch to mode 3 here seems to eliminate the issue. |
1095 | */ | 1099 | */ |
1096 | 1100 | ||
1097 | VerticalRetraceWait(); | 1101 | VerticalRetraceWait(par); |
1098 | vga_out8 (0x3d4, 0x67); | 1102 | vga_out8 (0x3d4, 0x67, par); |
1099 | cr67 = vga_in8 (0x3d5); | 1103 | cr67 = vga_in8 (0x3d5, par); |
1100 | vga_out8 (0x3d5, cr67/*par->CR67*/ & ~0x0c); /* no STREAMS yet */ | 1104 | vga_out8 (0x3d5, cr67/*par->CR67*/ & ~0x0c, par); /* no STREAMS yet */ |
1101 | 1105 | ||
1102 | vga_out8 (0x3d4, 0x23); | 1106 | vga_out8 (0x3d4, 0x23, par); |
1103 | vga_out8 (0x3d5, 0x00); | 1107 | vga_out8 (0x3d5, 0x00, par); |
1104 | vga_out8 (0x3d4, 0x26); | 1108 | vga_out8 (0x3d4, 0x26, par); |
1105 | vga_out8 (0x3d5, 0x00); | 1109 | vga_out8 (0x3d5, 0x00, par); |
1106 | 1110 | ||
1107 | /* restore extended regs */ | 1111 | /* restore extended regs */ |
1108 | vga_out8 (0x3d4, 0x66); | 1112 | vga_out8 (0x3d4, 0x66, par); |
1109 | vga_out8 (0x3d5, par->CR66); | 1113 | vga_out8 (0x3d5, par->CR66, par); |
1110 | vga_out8 (0x3d4, 0x3a); | 1114 | vga_out8 (0x3d4, 0x3a, par); |
1111 | vga_out8 (0x3d5, par->CR3A); | 1115 | vga_out8 (0x3d5, par->CR3A, par); |
1112 | vga_out8 (0x3d4, 0x31); | 1116 | vga_out8 (0x3d4, 0x31, par); |
1113 | vga_out8 (0x3d5, par->CR31); | 1117 | vga_out8 (0x3d5, par->CR31, par); |
1114 | vga_out8 (0x3d4, 0x32); | 1118 | vga_out8 (0x3d4, 0x32, par); |
1115 | vga_out8 (0x3d5, par->CR32); | 1119 | vga_out8 (0x3d5, par->CR32, par); |
1116 | vga_out8 (0x3d4, 0x58); | 1120 | vga_out8 (0x3d4, 0x58, par); |
1117 | vga_out8 (0x3d5, par->CR58); | 1121 | vga_out8 (0x3d5, par->CR58, par); |
1118 | vga_out8 (0x3d4, 0x53); | 1122 | vga_out8 (0x3d4, 0x53, par); |
1119 | vga_out8 (0x3d5, par->CR53 & 0x7f); | 1123 | vga_out8 (0x3d5, par->CR53 & 0x7f, par); |
1120 | 1124 | ||
1121 | vga_out16 (0x3c4, 0x0608); | 1125 | vga_out16 (0x3c4, 0x0608, par); |
1122 | 1126 | ||
1123 | /* Restore DCLK registers. */ | 1127 | /* Restore DCLK registers. */ |
1124 | 1128 | ||
1125 | vga_out8 (0x3c4, 0x0e); | 1129 | vga_out8 (0x3c4, 0x0e, par); |
1126 | vga_out8 (0x3c5, par->SR0E); | 1130 | vga_out8 (0x3c5, par->SR0E, par); |
1127 | vga_out8 (0x3c4, 0x0f); | 1131 | vga_out8 (0x3c4, 0x0f, par); |
1128 | vga_out8 (0x3c5, par->SR0F); | 1132 | vga_out8 (0x3c5, par->SR0F, par); |
1129 | vga_out8 (0x3c4, 0x29); | 1133 | vga_out8 (0x3c4, 0x29, par); |
1130 | vga_out8 (0x3c5, par->SR29); | 1134 | vga_out8 (0x3c5, par->SR29, par); |
1131 | vga_out8 (0x3c4, 0x15); | 1135 | vga_out8 (0x3c4, 0x15, par); |
1132 | vga_out8 (0x3c5, par->SR15); | 1136 | vga_out8 (0x3c5, par->SR15, par); |
1133 | 1137 | ||
1134 | /* Restore flat panel expansion regsters. */ | 1138 | /* Restore flat panel expansion regsters. */ |
1135 | if( par->chip == S3_SAVAGE_MX ) { | 1139 | if( par->chip == S3_SAVAGE_MX ) { |
1136 | int i; | 1140 | int i; |
1137 | 1141 | ||
1138 | for( i = 0; i < 8; i++ ) { | 1142 | for( i = 0; i < 8; i++ ) { |
1139 | vga_out8 (0x3c4, 0x54+i); | 1143 | vga_out8 (0x3c4, 0x54+i, par); |
1140 | vga_out8 (0x3c5, par->SR54[i]); | 1144 | vga_out8 (0x3c5, par->SR54[i], par); |
1141 | } | 1145 | } |
1142 | } | 1146 | } |
1143 | 1147 | ||
1144 | vgaHWRestore (par); | 1148 | vgaHWRestore (par); |
1145 | 1149 | ||
1146 | /* extended mode timing registers */ | 1150 | /* extended mode timing registers */ |
1147 | vga_out8 (0x3d4, 0x53); | 1151 | vga_out8 (0x3d4, 0x53, par); |
1148 | vga_out8 (0x3d5, par->CR53); | 1152 | vga_out8 (0x3d5, par->CR53, par); |
1149 | vga_out8 (0x3d4, 0x5d); | 1153 | vga_out8 (0x3d4, 0x5d, par); |
1150 | vga_out8 (0x3d5, par->CR5D); | 1154 | vga_out8 (0x3d5, par->CR5D, par); |
1151 | vga_out8 (0x3d4, 0x5e); | 1155 | vga_out8 (0x3d4, 0x5e, par); |
1152 | vga_out8 (0x3d5, par->CR5E); | 1156 | vga_out8 (0x3d5, par->CR5E, par); |
1153 | vga_out8 (0x3d4, 0x3b); | 1157 | vga_out8 (0x3d4, 0x3b, par); |
1154 | vga_out8 (0x3d5, par->CR3B); | 1158 | vga_out8 (0x3d5, par->CR3B, par); |
1155 | vga_out8 (0x3d4, 0x3c); | 1159 | vga_out8 (0x3d4, 0x3c, par); |
1156 | vga_out8 (0x3d5, par->CR3C); | 1160 | vga_out8 (0x3d5, par->CR3C, par); |
1157 | vga_out8 (0x3d4, 0x43); | 1161 | vga_out8 (0x3d4, 0x43, par); |
1158 | vga_out8 (0x3d5, par->CR43); | 1162 | vga_out8 (0x3d5, par->CR43, par); |
1159 | vga_out8 (0x3d4, 0x65); | 1163 | vga_out8 (0x3d4, 0x65, par); |
1160 | vga_out8 (0x3d5, par->CR65); | 1164 | vga_out8 (0x3d5, par->CR65, par); |
1161 | 1165 | ||
1162 | /* restore the desired video mode with cr67 */ | 1166 | /* restore the desired video mode with cr67 */ |
1163 | vga_out8 (0x3d4, 0x67); | 1167 | vga_out8 (0x3d4, 0x67, par); |
1164 | /* following part not present in X11 driver */ | 1168 | /* following part not present in X11 driver */ |
1165 | cr67 = vga_in8 (0x3d5) & 0xf; | 1169 | cr67 = vga_in8 (0x3d5, par) & 0xf; |
1166 | vga_out8 (0x3d5, 0x50 | cr67); | 1170 | vga_out8 (0x3d5, 0x50 | cr67, par); |
1167 | udelay (10000); | 1171 | udelay (10000); |
1168 | vga_out8 (0x3d4, 0x67); | 1172 | vga_out8 (0x3d4, 0x67, par); |
1169 | /* end of part */ | 1173 | /* end of part */ |
1170 | vga_out8 (0x3d5, par->CR67 & ~0x0c); | 1174 | vga_out8 (0x3d5, par->CR67 & ~0x0c, par); |
1171 | 1175 | ||
1172 | /* other mode timing and extended regs */ | 1176 | /* other mode timing and extended regs */ |
1173 | vga_out8 (0x3d4, 0x34); | 1177 | vga_out8 (0x3d4, 0x34, par); |
1174 | vga_out8 (0x3d5, par->CR34); | 1178 | vga_out8 (0x3d5, par->CR34, par); |
1175 | vga_out8 (0x3d4, 0x40); | 1179 | vga_out8 (0x3d4, 0x40, par); |
1176 | vga_out8 (0x3d5, par->CR40); | 1180 | vga_out8 (0x3d5, par->CR40, par); |
1177 | vga_out8 (0x3d4, 0x42); | 1181 | vga_out8 (0x3d4, 0x42, par); |
1178 | vga_out8 (0x3d5, par->CR42); | 1182 | vga_out8 (0x3d5, par->CR42, par); |
1179 | vga_out8 (0x3d4, 0x45); | 1183 | vga_out8 (0x3d4, 0x45, par); |
1180 | vga_out8 (0x3d5, par->CR45); | 1184 | vga_out8 (0x3d5, par->CR45, par); |
1181 | vga_out8 (0x3d4, 0x50); | 1185 | vga_out8 (0x3d4, 0x50, par); |
1182 | vga_out8 (0x3d5, par->CR50); | 1186 | vga_out8 (0x3d5, par->CR50, par); |
1183 | vga_out8 (0x3d4, 0x51); | 1187 | vga_out8 (0x3d4, 0x51, par); |
1184 | vga_out8 (0x3d5, par->CR51); | 1188 | vga_out8 (0x3d5, par->CR51, par); |
1185 | 1189 | ||
1186 | /* memory timings */ | 1190 | /* memory timings */ |
1187 | vga_out8 (0x3d4, 0x36); | 1191 | vga_out8 (0x3d4, 0x36, par); |
1188 | vga_out8 (0x3d5, par->CR36); | 1192 | vga_out8 (0x3d5, par->CR36, par); |
1189 | vga_out8 (0x3d4, 0x60); | 1193 | vga_out8 (0x3d4, 0x60, par); |
1190 | vga_out8 (0x3d5, par->CR60); | 1194 | vga_out8 (0x3d5, par->CR60, par); |
1191 | vga_out8 (0x3d4, 0x68); | 1195 | vga_out8 (0x3d4, 0x68, par); |
1192 | vga_out8 (0x3d5, par->CR68); | 1196 | vga_out8 (0x3d5, par->CR68, par); |
1193 | vga_out8 (0x3d4, 0x69); | 1197 | vga_out8 (0x3d4, 0x69, par); |
1194 | vga_out8 (0x3d5, par->CR69); | 1198 | vga_out8 (0x3d5, par->CR69, par); |
1195 | vga_out8 (0x3d4, 0x6f); | 1199 | vga_out8 (0x3d4, 0x6f, par); |
1196 | vga_out8 (0x3d5, par->CR6F); | 1200 | vga_out8 (0x3d5, par->CR6F, par); |
1197 | 1201 | ||
1198 | vga_out8 (0x3d4, 0x33); | 1202 | vga_out8 (0x3d4, 0x33, par); |
1199 | vga_out8 (0x3d5, par->CR33); | 1203 | vga_out8 (0x3d5, par->CR33, par); |
1200 | vga_out8 (0x3d4, 0x86); | 1204 | vga_out8 (0x3d4, 0x86, par); |
1201 | vga_out8 (0x3d5, par->CR86); | 1205 | vga_out8 (0x3d5, par->CR86, par); |
1202 | vga_out8 (0x3d4, 0x88); | 1206 | vga_out8 (0x3d4, 0x88, par); |
1203 | vga_out8 (0x3d5, par->CR88); | 1207 | vga_out8 (0x3d5, par->CR88, par); |
1204 | vga_out8 (0x3d4, 0x90); | 1208 | vga_out8 (0x3d4, 0x90, par); |
1205 | vga_out8 (0x3d5, par->CR90); | 1209 | vga_out8 (0x3d5, par->CR90, par); |
1206 | vga_out8 (0x3d4, 0x91); | 1210 | vga_out8 (0x3d4, 0x91, par); |
1207 | vga_out8 (0x3d5, par->CR91); | 1211 | vga_out8 (0x3d5, par->CR91, par); |
1208 | 1212 | ||
1209 | if (par->chip == S3_SAVAGE4) { | 1213 | if (par->chip == S3_SAVAGE4) { |
1210 | vga_out8 (0x3d4, 0xb0); | 1214 | vga_out8 (0x3d4, 0xb0, par); |
1211 | vga_out8 (0x3d5, par->CRB0); | 1215 | vga_out8 (0x3d5, par->CRB0, par); |
1212 | } | 1216 | } |
1213 | 1217 | ||
1214 | vga_out8 (0x3d4, 0x32); | 1218 | vga_out8 (0x3d4, 0x32, par); |
1215 | vga_out8 (0x3d5, par->CR32); | 1219 | vga_out8 (0x3d5, par->CR32, par); |
1216 | 1220 | ||
1217 | /* unlock extended seq regs */ | 1221 | /* unlock extended seq regs */ |
1218 | vga_out8 (0x3c4, 0x08); | 1222 | vga_out8 (0x3c4, 0x08, par); |
1219 | vga_out8 (0x3c5, 0x06); | 1223 | vga_out8 (0x3c5, 0x06, par); |
1220 | 1224 | ||
1221 | /* Restore extended sequencer regs for MCLK. SR10 == 255 indicates | 1225 | /* Restore extended sequencer regs for MCLK. SR10 == 255 indicates |
1222 | * that we should leave the default SR10 and SR11 values there. | 1226 | * that we should leave the default SR10 and SR11 values there. |
1223 | */ | 1227 | */ |
1224 | if (par->SR10 != 255) { | 1228 | if (par->SR10 != 255) { |
1225 | vga_out8 (0x3c4, 0x10); | 1229 | vga_out8 (0x3c4, 0x10, par); |
1226 | vga_out8 (0x3c5, par->SR10); | 1230 | vga_out8 (0x3c5, par->SR10, par); |
1227 | vga_out8 (0x3c4, 0x11); | 1231 | vga_out8 (0x3c4, 0x11, par); |
1228 | vga_out8 (0x3c5, par->SR11); | 1232 | vga_out8 (0x3c5, par->SR11, par); |
1229 | } | 1233 | } |
1230 | 1234 | ||
1231 | /* restore extended seq regs for dclk */ | 1235 | /* restore extended seq regs for dclk */ |
1232 | vga_out8 (0x3c4, 0x0e); | 1236 | vga_out8 (0x3c4, 0x0e, par); |
1233 | vga_out8 (0x3c5, par->SR0E); | 1237 | vga_out8 (0x3c5, par->SR0E, par); |
1234 | vga_out8 (0x3c4, 0x0f); | 1238 | vga_out8 (0x3c4, 0x0f, par); |
1235 | vga_out8 (0x3c5, par->SR0F); | 1239 | vga_out8 (0x3c5, par->SR0F, par); |
1236 | vga_out8 (0x3c4, 0x12); | 1240 | vga_out8 (0x3c4, 0x12, par); |
1237 | vga_out8 (0x3c5, par->SR12); | 1241 | vga_out8 (0x3c5, par->SR12, par); |
1238 | vga_out8 (0x3c4, 0x13); | 1242 | vga_out8 (0x3c4, 0x13, par); |
1239 | vga_out8 (0x3c5, par->SR13); | 1243 | vga_out8 (0x3c5, par->SR13, par); |
1240 | vga_out8 (0x3c4, 0x29); | 1244 | vga_out8 (0x3c4, 0x29, par); |
1241 | vga_out8 (0x3c5, par->SR29); | 1245 | vga_out8 (0x3c5, par->SR29, par); |
1242 | 1246 | ||
1243 | vga_out8 (0x3c4, 0x18); | 1247 | vga_out8 (0x3c4, 0x18, par); |
1244 | vga_out8 (0x3c5, par->SR18); | 1248 | vga_out8 (0x3c5, par->SR18, par); |
1245 | 1249 | ||
1246 | /* load new m, n pll values for dclk & mclk */ | 1250 | /* load new m, n pll values for dclk & mclk */ |
1247 | vga_out8 (0x3c4, 0x15); | 1251 | vga_out8 (0x3c4, 0x15, par); |
1248 | tmp = vga_in8 (0x3c5) & ~0x21; | 1252 | tmp = vga_in8 (0x3c5, par) & ~0x21; |
1249 | 1253 | ||
1250 | vga_out8 (0x3c5, tmp | 0x03); | 1254 | vga_out8 (0x3c5, tmp | 0x03, par); |
1251 | vga_out8 (0x3c5, tmp | 0x23); | 1255 | vga_out8 (0x3c5, tmp | 0x23, par); |
1252 | vga_out8 (0x3c5, tmp | 0x03); | 1256 | vga_out8 (0x3c5, tmp | 0x03, par); |
1253 | vga_out8 (0x3c5, par->SR15); | 1257 | vga_out8 (0x3c5, par->SR15, par); |
1254 | udelay (100); | 1258 | udelay (100); |
1255 | 1259 | ||
1256 | vga_out8 (0x3c4, 0x30); | 1260 | vga_out8 (0x3c4, 0x30, par); |
1257 | vga_out8 (0x3c5, par->SR30); | 1261 | vga_out8 (0x3c5, par->SR30, par); |
1258 | vga_out8 (0x3c4, 0x08); | 1262 | vga_out8 (0x3c4, 0x08, par); |
1259 | vga_out8 (0x3c5, par->SR08); | 1263 | vga_out8 (0x3c5, par->SR08, par); |
1260 | 1264 | ||
1261 | /* now write out cr67 in full, possibly starting STREAMS */ | 1265 | /* now write out cr67 in full, possibly starting STREAMS */ |
1262 | VerticalRetraceWait(); | 1266 | VerticalRetraceWait(par); |
1263 | vga_out8 (0x3d4, 0x67); | 1267 | vga_out8 (0x3d4, 0x67, par); |
1264 | vga_out8 (0x3d5, par->CR67); | 1268 | vga_out8 (0x3d5, par->CR67, par); |
1265 | 1269 | ||
1266 | vga_out8 (0x3d4, 0x66); | 1270 | vga_out8 (0x3d4, 0x66, par); |
1267 | cr66 = vga_in8 (0x3d5); | 1271 | cr66 = vga_in8 (0x3d5, par); |
1268 | vga_out8 (0x3d5, cr66 | 0x80); | 1272 | vga_out8 (0x3d5, cr66 | 0x80, par); |
1269 | vga_out8 (0x3d4, 0x3a); | 1273 | vga_out8 (0x3d4, 0x3a, par); |
1270 | cr3a = vga_in8 (0x3d5); | 1274 | cr3a = vga_in8 (0x3d5, par); |
1271 | vga_out8 (0x3d5, cr3a | 0x80); | 1275 | vga_out8 (0x3d5, cr3a | 0x80, par); |
1272 | 1276 | ||
1273 | if (par->chip != S3_SAVAGE_MX) { | 1277 | if (par->chip != S3_SAVAGE_MX) { |
1274 | VerticalRetraceWait(); | 1278 | VerticalRetraceWait(par); |
1275 | savage_out32 (FIFO_CONTROL_REG, par->MMPR0); | 1279 | savage_out32 (FIFO_CONTROL_REG, par->MMPR0, par); |
1276 | par->SavageWaitIdle (par); | 1280 | par->SavageWaitIdle (par); |
1277 | savage_out32 (MIU_CONTROL_REG, par->MMPR1); | 1281 | savage_out32 (MIU_CONTROL_REG, par->MMPR1, par); |
1278 | par->SavageWaitIdle (par); | 1282 | par->SavageWaitIdle (par); |
1279 | savage_out32 (STREAMS_TIMEOUT_REG, par->MMPR2); | 1283 | savage_out32 (STREAMS_TIMEOUT_REG, par->MMPR2, par); |
1280 | par->SavageWaitIdle (par); | 1284 | par->SavageWaitIdle (par); |
1281 | savage_out32 (MISC_TIMEOUT_REG, par->MMPR3); | 1285 | savage_out32 (MISC_TIMEOUT_REG, par->MMPR3, par); |
1282 | } | 1286 | } |
1283 | 1287 | ||
1284 | vga_out8 (0x3d4, 0x66); | 1288 | vga_out8 (0x3d4, 0x66, par); |
1285 | vga_out8 (0x3d5, cr66); | 1289 | vga_out8 (0x3d5, cr66, par); |
1286 | vga_out8 (0x3d4, 0x3a); | 1290 | vga_out8 (0x3d4, 0x3a, par); |
1287 | vga_out8 (0x3d5, cr3a); | 1291 | vga_out8 (0x3d5, cr3a, par); |
1288 | 1292 | ||
1289 | SavageSetup2DEngine (par); | 1293 | SavageSetup2DEngine (par); |
1290 | vgaHWProtect (par, 0); | 1294 | vgaHWProtect (par, 0); |
@@ -1299,10 +1303,10 @@ static void savagefb_update_start (struct savagefb_par *par, | |||
1299 | * ((var->bits_per_pixel+7) / 8)) >> 2; | 1303 | * ((var->bits_per_pixel+7) / 8)) >> 2; |
1300 | 1304 | ||
1301 | /* now program the start address registers */ | 1305 | /* now program the start address registers */ |
1302 | vga_out16(0x3d4, (base & 0x00ff00) | 0x0c); | 1306 | vga_out16(0x3d4, (base & 0x00ff00) | 0x0c, par); |
1303 | vga_out16(0x3d4, ((base & 0x00ff) << 8) | 0x0d); | 1307 | vga_out16(0x3d4, ((base & 0x00ff) << 8) | 0x0d, par); |
1304 | vga_out8 (0x3d4, 0x69); | 1308 | vga_out8 (0x3d4, 0x69, par); |
1305 | vga_out8 (0x3d5, (base & 0x7f0000) >> 16); | 1309 | vga_out8 (0x3d5, (base & 0x7f0000) >> 16, par); |
1306 | } | 1310 | } |
1307 | 1311 | ||
1308 | 1312 | ||
@@ -1406,12 +1410,12 @@ static int savagefb_blank(int blank, struct fb_info *info) | |||
1406 | u8 sr8 = 0, srd = 0; | 1410 | u8 sr8 = 0, srd = 0; |
1407 | 1411 | ||
1408 | if (par->display_type == DISP_CRT) { | 1412 | if (par->display_type == DISP_CRT) { |
1409 | vga_out8(0x3c4, 0x08); | 1413 | vga_out8(0x3c4, 0x08, par); |
1410 | sr8 = vga_in8(0x3c5); | 1414 | sr8 = vga_in8(0x3c5, par); |
1411 | sr8 |= 0x06; | 1415 | sr8 |= 0x06; |
1412 | vga_out8(0x3c5, sr8); | 1416 | vga_out8(0x3c5, sr8, par); |
1413 | vga_out8(0x3c4, 0x0d); | 1417 | vga_out8(0x3c4, 0x0d, par); |
1414 | srd = vga_in8(0x3c5); | 1418 | srd = vga_in8(0x3c5, par); |
1415 | srd &= 0x03; | 1419 | srd &= 0x03; |
1416 | 1420 | ||
1417 | switch (blank) { | 1421 | switch (blank) { |
@@ -1429,8 +1433,8 @@ static int savagefb_blank(int blank, struct fb_info *info) | |||
1429 | break; | 1433 | break; |
1430 | } | 1434 | } |
1431 | 1435 | ||
1432 | vga_out8(0x3c4, 0x0d); | 1436 | vga_out8(0x3c4, 0x0d, par); |
1433 | vga_out8(0x3c5, srd); | 1437 | vga_out8(0x3c5, srd, par); |
1434 | } | 1438 | } |
1435 | 1439 | ||
1436 | if (par->display_type == DISP_LCD || | 1440 | if (par->display_type == DISP_LCD || |
@@ -1438,14 +1442,14 @@ static int savagefb_blank(int blank, struct fb_info *info) | |||
1438 | switch(blank) { | 1442 | switch(blank) { |
1439 | case FB_BLANK_UNBLANK: | 1443 | case FB_BLANK_UNBLANK: |
1440 | case FB_BLANK_NORMAL: | 1444 | case FB_BLANK_NORMAL: |
1441 | vga_out8(0x3c4, 0x31); /* SR31 bit 4 - FP enable */ | 1445 | vga_out8(0x3c4, 0x31, par); /* SR31 bit 4 - FP enable */ |
1442 | vga_out8(0x3c5, vga_in8(0x3c5) | 0x10); | 1446 | vga_out8(0x3c5, vga_in8(0x3c5, par) | 0x10, par); |
1443 | break; | 1447 | break; |
1444 | case FB_BLANK_VSYNC_SUSPEND: | 1448 | case FB_BLANK_VSYNC_SUSPEND: |
1445 | case FB_BLANK_HSYNC_SUSPEND: | 1449 | case FB_BLANK_HSYNC_SUSPEND: |
1446 | case FB_BLANK_POWERDOWN: | 1450 | case FB_BLANK_POWERDOWN: |
1447 | vga_out8(0x3c4, 0x31); /* SR31 bit 4 - FP enable */ | 1451 | vga_out8(0x3c4, 0x31, par); /* SR31 bit 4 - FP enable */ |
1448 | vga_out8(0x3c5, vga_in8(0x3c5) & ~0x10); | 1452 | vga_out8(0x3c5, vga_in8(0x3c5, par) & ~0x10, par); |
1449 | break; | 1453 | break; |
1450 | } | 1454 | } |
1451 | } | 1455 | } |
@@ -1470,7 +1474,6 @@ static struct fb_ops savagefb_ops = { | |||
1470 | .fb_copyarea = cfb_copyarea, | 1474 | .fb_copyarea = cfb_copyarea, |
1471 | .fb_imageblit = cfb_imageblit, | 1475 | .fb_imageblit = cfb_imageblit, |
1472 | #endif | 1476 | #endif |
1473 | .fb_cursor = soft_cursor, | ||
1474 | }; | 1477 | }; |
1475 | 1478 | ||
1476 | /* --------------------------------------------------------------------- */ | 1479 | /* --------------------------------------------------------------------- */ |
@@ -1499,15 +1502,15 @@ static void savage_enable_mmio (struct savagefb_par *par) | |||
1499 | 1502 | ||
1500 | DBG ("savage_enable_mmio\n"); | 1503 | DBG ("savage_enable_mmio\n"); |
1501 | 1504 | ||
1502 | val = vga_in8 (0x3c3); | 1505 | val = vga_in8 (0x3c3, par); |
1503 | vga_out8 (0x3c3, val | 0x01); | 1506 | vga_out8 (0x3c3, val | 0x01, par); |
1504 | val = vga_in8 (0x3cc); | 1507 | val = vga_in8 (0x3cc, par); |
1505 | vga_out8 (0x3c2, val | 0x01); | 1508 | vga_out8 (0x3c2, val | 0x01, par); |
1506 | 1509 | ||
1507 | if (par->chip >= S3_SAVAGE4) { | 1510 | if (par->chip >= S3_SAVAGE4) { |
1508 | vga_out8 (0x3d4, 0x40); | 1511 | vga_out8 (0x3d4, 0x40, par); |
1509 | val = vga_in8 (0x3d5); | 1512 | val = vga_in8 (0x3d5, par); |
1510 | vga_out8 (0x3d5, val | 1); | 1513 | vga_out8 (0x3d5, val | 1, par); |
1511 | } | 1514 | } |
1512 | } | 1515 | } |
1513 | 1516 | ||
@@ -1519,9 +1522,9 @@ static void savage_disable_mmio (struct savagefb_par *par) | |||
1519 | DBG ("savage_disable_mmio\n"); | 1522 | DBG ("savage_disable_mmio\n"); |
1520 | 1523 | ||
1521 | if(par->chip >= S3_SAVAGE4 ) { | 1524 | if(par->chip >= S3_SAVAGE4 ) { |
1522 | vga_out8 (0x3d4, 0x40); | 1525 | vga_out8 (0x3d4, 0x40, par); |
1523 | val = vga_in8 (0x3d5); | 1526 | val = vga_in8 (0x3d5, par); |
1524 | vga_out8 (0x3d5, val | 1); | 1527 | vga_out8 (0x3d5, val | 1, par); |
1525 | } | 1528 | } |
1526 | } | 1529 | } |
1527 | 1530 | ||
@@ -1641,30 +1644,30 @@ static int __devinit savage_init_hw (struct savagefb_par *par) | |||
1641 | DBG("savage_init_hw"); | 1644 | DBG("savage_init_hw"); |
1642 | 1645 | ||
1643 | /* unprotect CRTC[0-7] */ | 1646 | /* unprotect CRTC[0-7] */ |
1644 | vga_out8(0x3d4, 0x11); | 1647 | vga_out8(0x3d4, 0x11, par); |
1645 | tmp = vga_in8(0x3d5); | 1648 | tmp = vga_in8(0x3d5, par); |
1646 | vga_out8(0x3d5, tmp & 0x7f); | 1649 | vga_out8(0x3d5, tmp & 0x7f, par); |
1647 | 1650 | ||
1648 | /* unlock extended regs */ | 1651 | /* unlock extended regs */ |
1649 | vga_out16(0x3d4, 0x4838); | 1652 | vga_out16(0x3d4, 0x4838, par); |
1650 | vga_out16(0x3d4, 0xa039); | 1653 | vga_out16(0x3d4, 0xa039, par); |
1651 | vga_out16(0x3c4, 0x0608); | 1654 | vga_out16(0x3c4, 0x0608, par); |
1652 | 1655 | ||
1653 | vga_out8(0x3d4, 0x40); | 1656 | vga_out8(0x3d4, 0x40, par); |
1654 | tmp = vga_in8(0x3d5); | 1657 | tmp = vga_in8(0x3d5, par); |
1655 | vga_out8(0x3d5, tmp & ~0x01); | 1658 | vga_out8(0x3d5, tmp & ~0x01, par); |
1656 | 1659 | ||
1657 | /* unlock sys regs */ | 1660 | /* unlock sys regs */ |
1658 | vga_out8(0x3d4, 0x38); | 1661 | vga_out8(0x3d4, 0x38, par); |
1659 | vga_out8(0x3d5, 0x48); | 1662 | vga_out8(0x3d5, 0x48, par); |
1660 | 1663 | ||
1661 | /* Unlock system registers. */ | 1664 | /* Unlock system registers. */ |
1662 | vga_out16(0x3d4, 0x4838); | 1665 | vga_out16(0x3d4, 0x4838, par); |
1663 | 1666 | ||
1664 | /* Next go on to detect amount of installed ram */ | 1667 | /* Next go on to detect amount of installed ram */ |
1665 | 1668 | ||
1666 | vga_out8(0x3d4, 0x36); /* for register CR36 (CONFG_REG1), */ | 1669 | vga_out8(0x3d4, 0x36, par); /* for register CR36 (CONFG_REG1), */ |
1667 | config1 = vga_in8(0x3d5); /* get amount of vram installed */ | 1670 | config1 = vga_in8(0x3d5, par); /* get amount of vram installed */ |
1668 | 1671 | ||
1669 | /* Compute the amount of video memory and offscreen memory. */ | 1672 | /* Compute the amount of video memory and offscreen memory. */ |
1670 | 1673 | ||
@@ -1680,8 +1683,8 @@ static int __devinit savage_init_hw (struct savagefb_par *par) | |||
1680 | * when it really means 8MB. Why do it the same when you | 1683 | * when it really means 8MB. Why do it the same when you |
1681 | * can do it different... | 1684 | * can do it different... |
1682 | */ | 1685 | */ |
1683 | vga_out8(0x3d4, 0x68); /* memory control 1 */ | 1686 | vga_out8(0x3d4, 0x68, par); /* memory control 1 */ |
1684 | if( (vga_in8(0x3d5) & 0xC0) == (0x01 << 6) ) | 1687 | if( (vga_in8(0x3d5, par) & 0xC0) == (0x01 << 6) ) |
1685 | RamSavage4[1] = 8; | 1688 | RamSavage4[1] = 8; |
1686 | 1689 | ||
1687 | /*FALLTHROUGH*/ | 1690 | /*FALLTHROUGH*/ |
@@ -1710,13 +1713,13 @@ static int __devinit savage_init_hw (struct savagefb_par *par) | |||
1710 | printk (KERN_INFO "savagefb: probed videoram: %dk\n", videoRam); | 1713 | printk (KERN_INFO "savagefb: probed videoram: %dk\n", videoRam); |
1711 | 1714 | ||
1712 | /* reset graphics engine to avoid memory corruption */ | 1715 | /* reset graphics engine to avoid memory corruption */ |
1713 | vga_out8 (0x3d4, 0x66); | 1716 | vga_out8 (0x3d4, 0x66, par); |
1714 | cr66 = vga_in8 (0x3d5); | 1717 | cr66 = vga_in8 (0x3d5, par); |
1715 | vga_out8 (0x3d5, cr66 | 0x02); | 1718 | vga_out8 (0x3d5, cr66 | 0x02, par); |
1716 | udelay (10000); | 1719 | udelay (10000); |
1717 | 1720 | ||
1718 | vga_out8 (0x3d4, 0x66); | 1721 | vga_out8 (0x3d4, 0x66, par); |
1719 | vga_out8 (0x3d5, cr66 & ~0x02); /* clear reset flag */ | 1722 | vga_out8 (0x3d5, cr66 & ~0x02, par); /* clear reset flag */ |
1720 | udelay (10000); | 1723 | udelay (10000); |
1721 | 1724 | ||
1722 | 1725 | ||
@@ -1724,13 +1727,13 @@ static int __devinit savage_init_hw (struct savagefb_par *par) | |||
1724 | * reset memory interface, 3D engine, AGP master, PCI master, | 1727 | * reset memory interface, 3D engine, AGP master, PCI master, |
1725 | * master engine unit, motion compensation/LPB | 1728 | * master engine unit, motion compensation/LPB |
1726 | */ | 1729 | */ |
1727 | vga_out8 (0x3d4, 0x3f); | 1730 | vga_out8 (0x3d4, 0x3f, par); |
1728 | cr3f = vga_in8 (0x3d5); | 1731 | cr3f = vga_in8 (0x3d5, par); |
1729 | vga_out8 (0x3d5, cr3f | 0x08); | 1732 | vga_out8 (0x3d5, cr3f | 0x08, par); |
1730 | udelay (10000); | 1733 | udelay (10000); |
1731 | 1734 | ||
1732 | vga_out8 (0x3d4, 0x3f); | 1735 | vga_out8 (0x3d4, 0x3f, par); |
1733 | vga_out8 (0x3d5, cr3f & ~0x08); /* clear reset flags */ | 1736 | vga_out8 (0x3d5, cr3f & ~0x08, par); /* clear reset flags */ |
1734 | udelay (10000); | 1737 | udelay (10000); |
1735 | 1738 | ||
1736 | /* Savage ramdac speeds */ | 1739 | /* Savage ramdac speeds */ |
@@ -1741,15 +1744,15 @@ static int __devinit savage_init_hw (struct savagefb_par *par) | |||
1741 | par->clock[3] = 220000; | 1744 | par->clock[3] = 220000; |
1742 | 1745 | ||
1743 | /* detect current mclk */ | 1746 | /* detect current mclk */ |
1744 | vga_out8(0x3c4, 0x08); | 1747 | vga_out8(0x3c4, 0x08, par); |
1745 | sr8 = vga_in8(0x3c5); | 1748 | sr8 = vga_in8(0x3c5, par); |
1746 | vga_out8(0x3c5, 0x06); | 1749 | vga_out8(0x3c5, 0x06, par); |
1747 | vga_out8(0x3c4, 0x10); | 1750 | vga_out8(0x3c4, 0x10, par); |
1748 | n = vga_in8(0x3c5); | 1751 | n = vga_in8(0x3c5, par); |
1749 | vga_out8(0x3c4, 0x11); | 1752 | vga_out8(0x3c4, 0x11, par); |
1750 | m = vga_in8(0x3c5); | 1753 | m = vga_in8(0x3c5, par); |
1751 | vga_out8(0x3c4, 0x08); | 1754 | vga_out8(0x3c4, 0x08, par); |
1752 | vga_out8(0x3c5, sr8); | 1755 | vga_out8(0x3c5, sr8, par); |
1753 | m &= 0x7f; | 1756 | m &= 0x7f; |
1754 | n1 = n & 0x1f; | 1757 | n1 = n & 0x1f; |
1755 | n2 = (n >> 5) & 0x03; | 1758 | n2 = (n >> 5) & 0x03; |
@@ -1763,10 +1766,10 @@ static int __devinit savage_init_hw (struct savagefb_par *par) | |||
1763 | if (par->chip == S3_SAVAGE4) { | 1766 | if (par->chip == S3_SAVAGE4) { |
1764 | unsigned char sr30 = 0x00; | 1767 | unsigned char sr30 = 0x00; |
1765 | 1768 | ||
1766 | vga_out8(0x3c4, 0x30); | 1769 | vga_out8(0x3c4, 0x30, par); |
1767 | /* clear bit 1 */ | 1770 | /* clear bit 1 */ |
1768 | vga_out8(0x3c5, vga_in8(0x3c5) & ~0x02); | 1771 | vga_out8(0x3c5, vga_in8(0x3c5, par) & ~0x02, par); |
1769 | sr30 = vga_in8(0x3c5); | 1772 | sr30 = vga_in8(0x3c5, par); |
1770 | if (sr30 & 0x02 /*0x04 */) { | 1773 | if (sr30 & 0x02 /*0x04 */) { |
1771 | dvi = 1; | 1774 | dvi = 1; |
1772 | printk("savagefb: Digital Flat Panel Detected\n"); | 1775 | printk("savagefb: Digital Flat Panel Detected\n"); |
@@ -1783,12 +1786,12 @@ static int __devinit savage_init_hw (struct savagefb_par *par) | |||
1783 | /* Check LCD panel parrmation */ | 1786 | /* Check LCD panel parrmation */ |
1784 | 1787 | ||
1785 | if (par->display_type == DISP_LCD) { | 1788 | if (par->display_type == DISP_LCD) { |
1786 | unsigned char cr6b = VGArCR( 0x6b ); | 1789 | unsigned char cr6b = VGArCR( 0x6b, par); |
1787 | 1790 | ||
1788 | int panelX = (VGArSEQ (0x61) + | 1791 | int panelX = (VGArSEQ (0x61, par) + |
1789 | ((VGArSEQ (0x66) & 0x02) << 7) + 1) * 8; | 1792 | ((VGArSEQ (0x66, par) & 0x02) << 7) + 1) * 8; |
1790 | int panelY = (VGArSEQ (0x69) + | 1793 | int panelY = (VGArSEQ (0x69, par) + |
1791 | ((VGArSEQ (0x6e) & 0x70) << 4) + 1); | 1794 | ((VGArSEQ (0x6e, par) & 0x70) << 4) + 1); |
1792 | 1795 | ||
1793 | char * sTechnology = "Unknown"; | 1796 | char * sTechnology = "Unknown"; |
1794 | 1797 | ||
@@ -1810,9 +1813,9 @@ static int __devinit savage_init_hw (struct savagefb_par *par) | |||
1810 | ActiveDUO = 0x80 | 1813 | ActiveDUO = 0x80 |
1811 | }; | 1814 | }; |
1812 | 1815 | ||
1813 | if ((VGArSEQ (0x39) & 0x03) == 0) { | 1816 | if ((VGArSEQ (0x39, par) & 0x03) == 0) { |
1814 | sTechnology = "TFT"; | 1817 | sTechnology = "TFT"; |
1815 | } else if ((VGArSEQ (0x30) & 0x01) == 0) { | 1818 | } else if ((VGArSEQ (0x30, par) & 0x01) == 0) { |
1816 | sTechnology = "DSTN"; | 1819 | sTechnology = "DSTN"; |
1817 | } else { | 1820 | } else { |
1818 | sTechnology = "STN"; | 1821 | sTechnology = "STN"; |
@@ -2049,24 +2052,11 @@ static int __devinit savagefb_probe (struct pci_dev* dev, | |||
2049 | info->monspecs.modedb, info->monspecs.modedb_len, | 2052 | info->monspecs.modedb, info->monspecs.modedb_len, |
2050 | NULL, 8); | 2053 | NULL, 8); |
2051 | } else if (info->monspecs.modedb != NULL) { | 2054 | } else if (info->monspecs.modedb != NULL) { |
2052 | struct fb_monspecs *specs = &info->monspecs; | 2055 | struct fb_videomode *modedb; |
2053 | struct fb_videomode modedb; | ||
2054 | 2056 | ||
2055 | if (info->monspecs.misc & FB_MISC_1ST_DETAIL) { | 2057 | modedb = fb_find_best_display(&info->monspecs, |
2056 | int i; | 2058 | &info->modelist); |
2057 | 2059 | savage_update_var(&info->var, modedb); | |
2058 | for (i = 0; i < specs->modedb_len; i++) { | ||
2059 | if (specs->modedb[i].flag & FB_MODE_IS_FIRST) { | ||
2060 | modedb = specs->modedb[i]; | ||
2061 | break; | ||
2062 | } | ||
2063 | } | ||
2064 | } else { | ||
2065 | /* otherwise, get first mode in database */ | ||
2066 | modedb = specs->modedb[0]; | ||
2067 | } | ||
2068 | |||
2069 | savage_update_var(&info->var, &modedb); | ||
2070 | } | 2060 | } |
2071 | 2061 | ||
2072 | /* maximize virtual vertical length */ | 2062 | /* maximize virtual vertical length */ |
diff --git a/drivers/video/sgivwfb.c b/drivers/video/sgivwfb.c index 5ce81f44c769..2e8769dd345a 100644 --- a/drivers/video/sgivwfb.c +++ b/drivers/video/sgivwfb.c | |||
@@ -126,7 +126,6 @@ static struct fb_ops sgivwfb_ops = { | |||
126 | .fb_fillrect = cfb_fillrect, | 126 | .fb_fillrect = cfb_fillrect, |
127 | .fb_copyarea = cfb_copyarea, | 127 | .fb_copyarea = cfb_copyarea, |
128 | .fb_imageblit = cfb_imageblit, | 128 | .fb_imageblit = cfb_imageblit, |
129 | .fb_cursor = soft_cursor, | ||
130 | .fb_mmap = sgivwfb_mmap, | 129 | .fb_mmap = sgivwfb_mmap, |
131 | }; | 130 | }; |
132 | 131 | ||
diff --git a/drivers/video/sis/sis_main.c b/drivers/video/sis/sis_main.c index 42c54b69726e..dea1a46c67c4 100644 --- a/drivers/video/sis/sis_main.c +++ b/drivers/video/sis/sis_main.c | |||
@@ -2002,7 +2002,9 @@ static struct fb_ops sisfb_ops = { | |||
2002 | .fb_fillrect = fbcon_sis_fillrect, | 2002 | .fb_fillrect = fbcon_sis_fillrect, |
2003 | .fb_copyarea = fbcon_sis_copyarea, | 2003 | .fb_copyarea = fbcon_sis_copyarea, |
2004 | .fb_imageblit = cfb_imageblit, | 2004 | .fb_imageblit = cfb_imageblit, |
2005 | #ifdef CONFIG_FB_SOFT_CURSOR | ||
2005 | .fb_cursor = soft_cursor, | 2006 | .fb_cursor = soft_cursor, |
2007 | #endif | ||
2006 | .fb_sync = fbcon_sis_sync, | 2008 | .fb_sync = fbcon_sis_sync, |
2007 | #ifdef SIS_NEW_CONFIG_COMPAT | 2009 | #ifdef SIS_NEW_CONFIG_COMPAT |
2008 | .fb_compat_ioctl= sisfb_compat_ioctl, | 2010 | .fb_compat_ioctl= sisfb_compat_ioctl, |
diff --git a/drivers/video/skeletonfb.c b/drivers/video/skeletonfb.c index 7b43716ab665..a01e7ecc15ed 100644 --- a/drivers/video/skeletonfb.c +++ b/drivers/video/skeletonfb.c | |||
@@ -457,11 +457,8 @@ void xxxfb_imageblit(struct fb_info *p, const struct fb_image *image) | |||
457 | } | 457 | } |
458 | 458 | ||
459 | /** | 459 | /** |
460 | * xxxfb_cursor - REQUIRED function. If your hardware lacks support | 460 | * xxxfb_cursor - OPTIONAL. If your hardware lacks support |
461 | * for a cursor you can use the default cursor whose | 461 | * for a cursor, leave this field NULL. |
462 | * function is called soft_cursor. It will always | ||
463 | * work since it uses xxxfb_imageblit function which | ||
464 | * is required. | ||
465 | * | 462 | * |
466 | * @info: frame buffer structure that represents a single frame buffer | 463 | * @info: frame buffer structure that represents a single frame buffer |
467 | * @cursor: structure defining the cursor to draw. | 464 | * @cursor: structure defining the cursor to draw. |
@@ -663,7 +660,7 @@ static struct fb_ops xxxfb_ops = { | |||
663 | .fb_fillrect = xxxfb_fillrect, /* Needed !!! */ | 660 | .fb_fillrect = xxxfb_fillrect, /* Needed !!! */ |
664 | .fb_copyarea = xxxfb_copyarea, /* Needed !!! */ | 661 | .fb_copyarea = xxxfb_copyarea, /* Needed !!! */ |
665 | .fb_imageblit = xxxfb_imageblit, /* Needed !!! */ | 662 | .fb_imageblit = xxxfb_imageblit, /* Needed !!! */ |
666 | .fb_cursor = xxxfb_cursor, /* Needed !!! */ | 663 | .fb_cursor = xxxfb_cursor, /* Optional !!! */ |
667 | .fb_rotate = xxxfb_rotate, | 664 | .fb_rotate = xxxfb_rotate, |
668 | .fb_poll = xxxfb_poll, | 665 | .fb_poll = xxxfb_poll, |
669 | .fb_sync = xxxfb_sync, | 666 | .fb_sync = xxxfb_sync, |
diff --git a/drivers/video/sstfb.c b/drivers/video/sstfb.c index 663d53657fa4..e0f14df840d9 100644 --- a/drivers/video/sstfb.c +++ b/drivers/video/sstfb.c | |||
@@ -1382,7 +1382,6 @@ static struct fb_ops sstfb_ops = { | |||
1382 | .fb_fillrect = cfb_fillrect, /* sstfb_fillrect */ | 1382 | .fb_fillrect = cfb_fillrect, /* sstfb_fillrect */ |
1383 | .fb_copyarea = cfb_copyarea, /* sstfb_copyarea */ | 1383 | .fb_copyarea = cfb_copyarea, /* sstfb_copyarea */ |
1384 | .fb_imageblit = cfb_imageblit, | 1384 | .fb_imageblit = cfb_imageblit, |
1385 | .fb_cursor = soft_cursor, | ||
1386 | .fb_ioctl = sstfb_ioctl, | 1385 | .fb_ioctl = sstfb_ioctl, |
1387 | }; | 1386 | }; |
1388 | 1387 | ||
diff --git a/drivers/video/stifb.c b/drivers/video/stifb.c index 9e52794768e6..fbb17332afd7 100644 --- a/drivers/video/stifb.c +++ b/drivers/video/stifb.c | |||
@@ -1147,7 +1147,6 @@ static struct fb_ops stifb_ops = { | |||
1147 | .fb_fillrect = cfb_fillrect, | 1147 | .fb_fillrect = cfb_fillrect, |
1148 | .fb_copyarea = cfb_copyarea, | 1148 | .fb_copyarea = cfb_copyarea, |
1149 | .fb_imageblit = cfb_imageblit, | 1149 | .fb_imageblit = cfb_imageblit, |
1150 | .fb_cursor = soft_cursor, | ||
1151 | }; | 1150 | }; |
1152 | 1151 | ||
1153 | 1152 | ||
diff --git a/drivers/video/tcx.c b/drivers/video/tcx.c index 1986a8b3833c..59fff29bc02e 100644 --- a/drivers/video/tcx.c +++ b/drivers/video/tcx.c | |||
@@ -52,7 +52,6 @@ static struct fb_ops tcx_ops = { | |||
52 | .fb_imageblit = cfb_imageblit, | 52 | .fb_imageblit = cfb_imageblit, |
53 | .fb_mmap = tcx_mmap, | 53 | .fb_mmap = tcx_mmap, |
54 | .fb_ioctl = tcx_ioctl, | 54 | .fb_ioctl = tcx_ioctl, |
55 | .fb_cursor = soft_cursor, | ||
56 | }; | 55 | }; |
57 | 56 | ||
58 | /* THC definitions */ | 57 | /* THC definitions */ |
diff --git a/drivers/video/tdfxfb.c b/drivers/video/tdfxfb.c index 7044226c5d4c..9d53387e6a66 100644 --- a/drivers/video/tdfxfb.c +++ b/drivers/video/tdfxfb.c | |||
@@ -184,7 +184,6 @@ static struct fb_ops tdfxfb_ops = { | |||
184 | .fb_copyarea = cfb_copyarea, | 184 | .fb_copyarea = cfb_copyarea, |
185 | .fb_imageblit = cfb_imageblit, | 185 | .fb_imageblit = cfb_imageblit, |
186 | #endif | 186 | #endif |
187 | .fb_cursor = soft_cursor, | ||
188 | }; | 187 | }; |
189 | 188 | ||
190 | /* | 189 | /* |
diff --git a/drivers/video/tgafb.c b/drivers/video/tgafb.c index 9d9d2009ad8c..7398bd48ba6c 100644 --- a/drivers/video/tgafb.c +++ b/drivers/video/tgafb.c | |||
@@ -63,7 +63,6 @@ static struct fb_ops tgafb_ops = { | |||
63 | .fb_fillrect = tgafb_fillrect, | 63 | .fb_fillrect = tgafb_fillrect, |
64 | .fb_copyarea = tgafb_copyarea, | 64 | .fb_copyarea = tgafb_copyarea, |
65 | .fb_imageblit = tgafb_imageblit, | 65 | .fb_imageblit = tgafb_imageblit, |
66 | .fb_cursor = soft_cursor, | ||
67 | }; | 66 | }; |
68 | 67 | ||
69 | 68 | ||
diff --git a/drivers/video/tridentfb.c b/drivers/video/tridentfb.c index 81a6d9f188cf..9ac2d3171187 100644 --- a/drivers/video/tridentfb.c +++ b/drivers/video/tridentfb.c | |||
@@ -1293,7 +1293,6 @@ static struct fb_ops tridentfb_ops = { | |||
1293 | .fb_fillrect = tridentfb_fillrect, | 1293 | .fb_fillrect = tridentfb_fillrect, |
1294 | .fb_copyarea= tridentfb_copyarea, | 1294 | .fb_copyarea= tridentfb_copyarea, |
1295 | .fb_imageblit = cfb_imageblit, | 1295 | .fb_imageblit = cfb_imageblit, |
1296 | .fb_cursor = soft_cursor, | ||
1297 | }; | 1296 | }; |
1298 | 1297 | ||
1299 | module_init(tridentfb_init); | 1298 | module_init(tridentfb_init); |
diff --git a/drivers/video/tx3912fb.c b/drivers/video/tx3912fb.c index 39d9ca71856b..d904da44e1aa 100644 --- a/drivers/video/tx3912fb.c +++ b/drivers/video/tx3912fb.c | |||
@@ -89,7 +89,6 @@ static struct fb_ops tx3912fb_ops = { | |||
89 | .fb_fillrect = cfb_fillrect, | 89 | .fb_fillrect = cfb_fillrect, |
90 | .fb_copyarea = cfb_copyarea, | 90 | .fb_copyarea = cfb_copyarea, |
91 | .fb_imageblit = cfb_imageblit, | 91 | .fb_imageblit = cfb_imageblit, |
92 | .fb_cursor = soft_cursor, | ||
93 | }; | 92 | }; |
94 | 93 | ||
95 | static int tx3912fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) | 94 | static int tx3912fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) |
diff --git a/drivers/video/valkyriefb.c b/drivers/video/valkyriefb.c index 31a2bbc53974..ce97ec8eae97 100644 --- a/drivers/video/valkyriefb.c +++ b/drivers/video/valkyriefb.c | |||
@@ -135,7 +135,6 @@ static struct fb_ops valkyriefb_ops = { | |||
135 | .fb_fillrect = cfb_fillrect, | 135 | .fb_fillrect = cfb_fillrect, |
136 | .fb_copyarea = cfb_copyarea, | 136 | .fb_copyarea = cfb_copyarea, |
137 | .fb_imageblit = cfb_imageblit, | 137 | .fb_imageblit = cfb_imageblit, |
138 | .fb_cursor = soft_cursor, | ||
139 | }; | 138 | }; |
140 | 139 | ||
141 | /* Sets the video mode according to info->var */ | 140 | /* Sets the video mode according to info->var */ |
diff --git a/drivers/video/vesafb.c b/drivers/video/vesafb.c index 3cc23106641d..e25eae1a78c1 100644 --- a/drivers/video/vesafb.c +++ b/drivers/video/vesafb.c | |||
@@ -48,7 +48,7 @@ static struct fb_fix_screeninfo vesafb_fix __initdata = { | |||
48 | }; | 48 | }; |
49 | 49 | ||
50 | static int inverse = 0; | 50 | static int inverse = 0; |
51 | static int mtrr = 3; /* default to write-combining */ | 51 | static int mtrr = 0; /* disable mtrr */ |
52 | static int vram_remap __initdata = 0; /* Set amount of memory to be used */ | 52 | static int vram_remap __initdata = 0; /* Set amount of memory to be used */ |
53 | static int vram_total __initdata = 0; /* Set total amount of memory */ | 53 | static int vram_total __initdata = 0; /* Set total amount of memory */ |
54 | static int pmi_setpal = 0; /* pmi for palette changes ??? */ | 54 | static int pmi_setpal = 0; /* pmi for palette changes ??? */ |
@@ -166,45 +166,39 @@ static int vesafb_setcolreg(unsigned regno, unsigned red, unsigned green, | |||
166 | if (regno >= info->cmap.len) | 166 | if (regno >= info->cmap.len) |
167 | return 1; | 167 | return 1; |
168 | 168 | ||
169 | switch (info->var.bits_per_pixel) { | 169 | if (info->var.bits_per_pixel == 8) |
170 | case 8: | ||
171 | vesa_setpalette(regno,red,green,blue); | 170 | vesa_setpalette(regno,red,green,blue); |
172 | break; | 171 | else if (regno < 16) { |
173 | case 16: | 172 | switch (info->var.bits_per_pixel) { |
174 | if (info->var.red.offset == 10) { | 173 | case 16: |
175 | /* 1:5:5:5 */ | 174 | if (info->var.red.offset == 10) { |
176 | ((u32*) (info->pseudo_palette))[regno] = | 175 | /* 1:5:5:5 */ |
176 | ((u32*) (info->pseudo_palette))[regno] = | ||
177 | ((red & 0xf800) >> 1) | | 177 | ((red & 0xf800) >> 1) | |
178 | ((green & 0xf800) >> 6) | | 178 | ((green & 0xf800) >> 6) | |
179 | ((blue & 0xf800) >> 11); | 179 | ((blue & 0xf800) >> 11); |
180 | } else { | 180 | } else { |
181 | /* 0:5:6:5 */ | 181 | /* 0:5:6:5 */ |
182 | ((u32*) (info->pseudo_palette))[regno] = | 182 | ((u32*) (info->pseudo_palette))[regno] = |
183 | ((red & 0xf800) ) | | 183 | ((red & 0xf800) ) | |
184 | ((green & 0xfc00) >> 5) | | 184 | ((green & 0xfc00) >> 5) | |
185 | ((blue & 0xf800) >> 11); | 185 | ((blue & 0xf800) >> 11); |
186 | } | ||
187 | break; | ||
188 | case 24: | ||
189 | case 32: | ||
190 | red >>= 8; | ||
191 | green >>= 8; | ||
192 | blue >>= 8; | ||
193 | ((u32 *)(info->pseudo_palette))[regno] = | ||
194 | (red << info->var.red.offset) | | ||
195 | (green << info->var.green.offset) | | ||
196 | (blue << info->var.blue.offset); | ||
197 | break; | ||
186 | } | 198 | } |
187 | break; | 199 | } |
188 | case 24: | 200 | |
189 | red >>= 8; | 201 | return 0; |
190 | green >>= 8; | ||
191 | blue >>= 8; | ||
192 | ((u32 *)(info->pseudo_palette))[regno] = | ||
193 | (red << info->var.red.offset) | | ||
194 | (green << info->var.green.offset) | | ||
195 | (blue << info->var.blue.offset); | ||
196 | break; | ||
197 | case 32: | ||
198 | red >>= 8; | ||
199 | green >>= 8; | ||
200 | blue >>= 8; | ||
201 | ((u32 *)(info->pseudo_palette))[regno] = | ||
202 | (red << info->var.red.offset) | | ||
203 | (green << info->var.green.offset) | | ||
204 | (blue << info->var.blue.offset); | ||
205 | break; | ||
206 | } | ||
207 | return 0; | ||
208 | } | 202 | } |
209 | 203 | ||
210 | static struct fb_ops vesafb_ops = { | 204 | static struct fb_ops vesafb_ops = { |
@@ -215,7 +209,6 @@ static struct fb_ops vesafb_ops = { | |||
215 | .fb_fillrect = cfb_fillrect, | 209 | .fb_fillrect = cfb_fillrect, |
216 | .fb_copyarea = cfb_copyarea, | 210 | .fb_copyarea = cfb_copyarea, |
217 | .fb_imageblit = cfb_imageblit, | 211 | .fb_imageblit = cfb_imageblit, |
218 | .fb_cursor = soft_cursor, | ||
219 | }; | 212 | }; |
220 | 213 | ||
221 | static int __init vesafb_setup(char *options) | 214 | static int __init vesafb_setup(char *options) |
diff --git a/drivers/video/vfb.c b/drivers/video/vfb.c index 92d46555dd86..8794dc5d2466 100644 --- a/drivers/video/vfb.c +++ b/drivers/video/vfb.c | |||
@@ -92,7 +92,6 @@ static struct fb_ops vfb_ops = { | |||
92 | .fb_fillrect = cfb_fillrect, | 92 | .fb_fillrect = cfb_fillrect, |
93 | .fb_copyarea = cfb_copyarea, | 93 | .fb_copyarea = cfb_copyarea, |
94 | .fb_imageblit = cfb_imageblit, | 94 | .fb_imageblit = cfb_imageblit, |
95 | .fb_cursor = soft_cursor, | ||
96 | .fb_mmap = vfb_mmap, | 95 | .fb_mmap = vfb_mmap, |
97 | }; | 96 | }; |
98 | 97 | ||
diff --git a/drivers/video/vga16fb.c b/drivers/video/vga16fb.c index b46454c55c91..690bb6fe8281 100644 --- a/drivers/video/vga16fb.c +++ b/drivers/video/vga16fb.c | |||
@@ -1326,7 +1326,6 @@ static struct fb_ops vga16fb_ops = { | |||
1326 | .fb_fillrect = vga16fb_fillrect, | 1326 | .fb_fillrect = vga16fb_fillrect, |
1327 | .fb_copyarea = vga16fb_copyarea, | 1327 | .fb_copyarea = vga16fb_copyarea, |
1328 | .fb_imageblit = vga16fb_imageblit, | 1328 | .fb_imageblit = vga16fb_imageblit, |
1329 | .fb_cursor = soft_cursor, | ||
1330 | }; | 1329 | }; |
1331 | 1330 | ||
1332 | #ifndef MODULE | 1331 | #ifndef MODULE |
diff --git a/drivers/video/w100fb.c b/drivers/video/w100fb.c index cf8cdb108fd9..48e70f153c4b 100644 --- a/drivers/video/w100fb.c +++ b/drivers/video/w100fb.c | |||
@@ -397,7 +397,6 @@ static struct fb_ops w100fb_ops = { | |||
397 | .fb_fillrect = cfb_fillrect, | 397 | .fb_fillrect = cfb_fillrect, |
398 | .fb_copyarea = cfb_copyarea, | 398 | .fb_copyarea = cfb_copyarea, |
399 | .fb_imageblit = cfb_imageblit, | 399 | .fb_imageblit = cfb_imageblit, |
400 | .fb_cursor = soft_cursor, | ||
401 | }; | 400 | }; |
402 | 401 | ||
403 | #ifdef CONFIG_PM | 402 | #ifdef CONFIG_PM |