diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e8f0e52 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +*.o +*.cmd +*.ko +*.cm +Module.symvers +modules.order +.tmp_versions +fl2000.mod.c +sample/fltes +.cproject +.project +.settings diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f74ecae --- /dev/null +++ b/Makefile @@ -0,0 +1,51 @@ +# Makefile +# +# (c)Copyright 2017, Fresco Logic, Incorporated. +# +# The contents of this file are property of Fresco Logic, Incorporated and are strictly protected +# by Non Disclosure Agreements. Distribution in any form to unauthorized parties is strictly prohibited. +# +# Purpose: +# +# NOTE: DO NOT SEND THIS FILE OUTSIDE OF FRESCO LOGIC. +# + +fl2000-y := src/fl2000_module.o \ + src/fl2000_bulk.o \ + src/fl2000_ioctl.o \ + src/fl2000_render.o \ + src/fl2000_dev.o \ + src/fl2000_dongle.o \ + src/fl2000_big_table.o \ + src/fl2000_i2c.o \ + src/fl2000_register.o \ + src/fl2000_monitor.o \ + src/fl2000_desc.o \ + src/fl2000_interrupt.o \ + src/fl2000_compression.o \ + src/fl2000_surface.o \ + src/fl2000_fops.o \ + src/fl2000_hdmi.o \ + +ifdef CONFIG_USB_FL2000 + +obj-$(CONFIG_USB_FL2000) := fl2000.o + +else + +obj-m := fl2000.o + +KSRC = /lib/modules/$(shell uname -r)/build + +all: modules + +modules: + make -C $(KSRC) M=$(PWD) modules + +clean: + make -C $(KSRC) M=$(PWD) clean + rm -f Module.symvers + +endif + + diff --git a/sample/Makefile b/sample/Makefile index d066edf..94c6215 100644 --- a/sample/Makefile +++ b/sample/Makefile @@ -1,10 +1,5 @@ -arm_prefix = /opt/hi3798/arm-hisiv200-linux/bin/arm-hisiv200-linux-gnueabi +all: + gcc main.c -o fltes -all: fltest fltest_arm - -fltest: main.c - gcc main.c -o fltest - -fltest_arm: main.c - $(arm_prefix)-gcc main.c -Xlinker -static -static-libgcc -o fltest_arm - $(arm_prefix)-strip fltest_arm +clean: + rm fltest diff --git a/sample/test_800_480_0.bmp b/sample/test_800_480_0.bmp new file mode 100644 index 0000000..c653686 Binary files /dev/null and b/sample/test_800_480_0.bmp differ diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index 2ef734e..0000000 --- a/src/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# Makefile -# -# (c)Copyright 2017, Fresco Logic, Incorporated. -# -# The contents of this file are property of Fresco Logic, Incorporated and are strictly protected -# by Non Disclosure Agreements. Distribution in any form to unauthorized parties is strictly prohibited. -# -# Purpose: -# -# NOTE: DO NOT SEND THIS FILE OUTSIDE OF FRESCO LOGIC. -# - -fl2000-y := fl2000_module.o -fl2000-y += fl2000_bulk.o -fl2000-y += fl2000_ioctl.o -fl2000-y += fl2000_render.o -fl2000-y += fl2000_dev.o -fl2000-y += fl2000_dongle.o -fl2000-y += fl2000_big_table.o -fl2000-y += fl2000_i2c.o -fl2000-y += fl2000_register.o -fl2000-y += fl2000_monitor.o -fl2000-y += fl2000_desc.o -fl2000-y += fl2000_interrupt.o -fl2000-y += fl2000_compression.o -fl2000-y += fl2000_surface.o -fl2000-y += fl2000_fops.o -fl2000-y += fl2000_hdmi.o - -ifdef CONFIG_USB_FL2000 - -obj-$(CONFIG_USB_FL2000) := fl2000.o - -else - -obj-m := fl2000.o - -#KERNEL_PATH = ../../../kernel/linux-3.10.0-327.13.1.el7 -#KERNEL_PATH = /usr/src/kernels/3.10.0-327.13.1.el7.x86_64 -#KERNEL_PATH = /usr/src/kernels/`uname -r` -KERNEL_PATH = /usr/src/linux-headers-`uname -r` - -all: - make -C $(KERNEL_PATH) M=$(PWD) modules - -clean: - make -C $(KERNEL_PATH) M=$(PWD) clean - rm -f Module.symvers - -endif - - diff --git a/src/fl2000_big_table.c b/src/fl2000_big_table.c index 2ee486f..22275ce 100644 --- a/src/fl2000_big_table.c +++ b/src/fl2000_big_table.c @@ -10,478 +10,168 @@ #include "fl2000_include.h" -struct resolution_entry const big_table_24bit_r0[VGA_BIG_TABLE_SIZE] = -{ - { 640, 480, 60, 0x320, 0x60, 0x28, 0x20d, 0x2, 0x19, 0x85, 0x1d84, 0x5, 0x85, 0x5, 0x1d9c, 0x2800320, 0x600089, 0x1e0020d, 0x1c2001c, 0x85, 0x3f011e, 0x3f6119, 0x3b011c, 0x304113, 0x2800321, 0x2800320, 0x850120 }, - { 640, 480, 73, 0x340, 0x28, 0x78, 0x208, 0x3, 0x14, 0x6d, 0x23a8, 0x3, 0x6d, 0x3, 0x23c8, 0x2800340, 0x2800a1, 0x1e00208, 0x1830018, 0x6d, 0x320113, 0x3c6113, 0x350114, 0x7f6214, 0x2800341, 0x2800340, 0x6d0120 }, - { 640, 480, 75, 0x348, 0x40, 0x78, 0x1f4, 0x3, 0x10, 0x6a, 0x234c, 0x3, 0x6a, 0x2, 0x2364, 0x2800348, 0x4000b9, 0x1e001f4, 0x1430014, 0x6a, 0x3f0118, 0x3f6114, 0x3a0116, 0x496117, 0x2800346, 0x2800349, 0x6a0120 }, - { 640, 350, 85, 0x340, 0x40, 0x60, 0x1bd, 0x3, 0x3c, 0x5e, 0x237c, 0xc, 0x5e, 0xb, 0x2384, 0x2800340, 0x4000a1, 0x15e01bd, 0x4030040, 0x5e, 0x3f0118, 0x6b6211, 0x3f0118, 0x3f6114, 0x2800340, 0x2800340, 0x5e0120 }, - { 640, 400, 85, 0x340, 0x40, 0x60, 0x1bd, 0x3, 0x29, 0x5e, 0x234c, 0x8, 0x5e, 0x7, 0x2384, 0x2800340, 0x4000a1, 0x19001bd, 0x2d3002d, 0x5e, 0x3f0118, 0x6b6211, 0x3f0118, 0x3f6114, 0x2800340, 0x2800340, 0x5e0120 }, - { 720, 400, 85, 0x3a8, 0x48, 0x6c, 0x1be, 0x3, 0x2a, 0x5e, 0x27b8, 0x8, 0x5e, 0x7, 0x280c, 0x2d003a8, 0x4800b5, 0x19001be, 0x2e3002e, 0x5e, 0x3e0115, 0x476114, 0x3e0115, 0x204109, 0x2d003a5, 0x2d003a9, 0x5e0120 }, - { 800, 600, 56, 0x400, 0x48, 0x80, 0x271, 0x2, 0x16, 0x8e, 0x2910, 0x4, 0x8e, 0x3, 0x2944, 0x3200400, 0x4800c9, 0x2580271, 0x1920019, 0x8e, 0x330111, 0x2b410c, 0x330111, 0x65620e, 0x32003fe, 0x3200400, 0x8e0120 }, - { 640, 480, 85, 0x340, 0x38, 0x50, 0x1fd, 0x3, 0x19, 0x5e, 0x2874, 0x4, 0x5e, 0x3, 0x28a0, 0x2800340, 0x380089, 0x1e001fd, 0x1d3001d, 0x5e, 0x330111, 0x24410a, 0x330111, 0x536117, 0x280033f, 0x2800341, 0x5e0120 }, - { 800, 600, 60, 0x420, 0x80, 0x58, 0x274, 0x4, 0x17, 0x85, 0x2bf4, 0x4, 0x85, 0x3, 0x2c48, 0x3200420, 0x8000d9, 0x2580274, 0x1c4001c, 0x85, 0x3f0113, 0x80102, 0x32010f, 0x80102, 0x3200423, 0x3200423, 0x850120 }, - { 1024, 768, 43, 0x4f0, 0xb0, 0x38, 0x331, 0x4, 0x14, 0xba, 0x34ac, 0x4, 0xba, 0x3, 0x34b8, 0x40004f0, 0xb000e9, 0x3000331, 0x1940019, 0xba, 0x3f0111, 0x476110, 0x3f0111, 0x284109, 0x40004f1, 0x40004f1, 0xba0120 }, - { 848, 480, 60, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x85, 0x2678, 0x6, 0x85, 0x6, 0x26a4, 0x3500440, 0x7000e1, 0x1e00205, 0x2080020, 0x85, 0x3b0115, 0x1b4108, 0x3e0116, 0x736211, 0x3500440, 0x3500440, 0x850120 }, - { 800, 600, 75, 0x420, 0x50, 0xa0, 0x271, 0x3, 0x15, 0x6a, 0x3728, 0x3, 0x6a, 0x2, 0x3748, 0x3200420, 0x5000f1, 0x2580271, 0x1930019, 0x6a, 0x3e010f, 0x636114, 0x36010d, 0xa0102, 0x3200421, 0x3200424, 0x6a0120 }, - { 800, 600, 72, 0x410, 0x78, 0x40, 0x29a, 0x6, 0x17, 0x6f, 0x3840, 0x3, 0x6f, 0x3, 0x3840, 0x3200410, 0x7800b9, 0x258029a, 0x1e6001e, 0x6f, 0x36010d, 0xa0102, 0x32010c, 0xa0102, 0x3200412, 0x3200412, 0x6f0120 }, - { 800, 600, 85, 0x418, 0x40, 0x98, 0x277, 0x3, 0x1b, 0x5e, 0x3e80, 0x3, 0x5e, 0x2, 0x3ef0, 0x3200418, 0x4000d9, 0x2580277, 0x1f3001f, 0x5e, 0x3d010d, 0x2d4108, 0x3d010d, 0x2d4108, 0x3200418, 0x3200417, 0x5e0120 }, - { 1024, 768, 60, 0x540, 0x88, 0xa0, 0x326, 0x6, 0x1d, 0x85, 0x4894, 0x4, 0x85, 0x4, 0x48bc, 0x4000540, 0x880129, 0x3000326, 0x2460024, 0x85, 0x36010a, 0xd2102, 0x3c010b, 0x62610f, 0x4000546, 0x4000543, 0x850120 }, - { 1280, 720, 60, 0x672, 0x28, 0xdc, 0x2ee, 0x5, 0x19, 0x85, 0x5460, 0x4, 0x85, 0x3, 0x5498, 0x5000672, 0x280105, 0x2d002ee, 0x1f5001f, 0x85, 0x3e010a, 0x346107, 0x3e010a, 0x436109, 0x5000672, 0x5000672, 0x850120 }, - { 1024, 768, 70, 0x530, 0x88, 0x90, 0x326, 0x6, 0x1d, 0x72, 0x5490, 0x3, 0x72, 0x3, 0x54d8, 0x4000530, 0x880119, 0x3000326, 0x2460024, 0x72, 0x320108, 0xf2102, 0x320108, 0xf2102, 0x400052e, 0x400052e, 0x720120 }, - { 1024, 768, 75, 0x520, 0x60, 0xb0, 0x320, 0x3, 0x1c, 0x6a, 0x5a5c, 0x3, 0x6a, 0x2, 0x5a94, 0x4000520, 0x600111, 0x3000320, 0x2030020, 0x6a, 0x3b0109, 0x3f6108, 0x350108, 0x6f6207, 0x4000525, 0x4000521, 0x6a0120 }, - { 1280, 768, 60, 0x680, 0x80, 0xc0, 0x31e, 0x7, 0x14, 0x85, 0x5950, 0x3, 0x85, 0x2, 0x5a00, 0x5000680, 0x800141, 0x300031e, 0x1c7001c, 0x85, 0x350108, 0x7f6208, 0x3c0109, 0x102102, 0x5000682, 0x5000682, 0x850120 }, - { 1152, 864, 60, 0x640, 0x80, 0x100, 0x384, 0x3, 0x20, 0x85, 0x5b20, 0x4, 0x85, 0x3, 0x5b5c, 0x4800640, 0x800181, 0x3600384, 0x2430024, 0x85, 0x3a0108, 0x796207, 0x3a0108, 0x346106, 0x4800647, 0x4800641, 0x850120 }, - { 1280, 800, 60, 0x690, 0x80, 0xc8, 0x33f, 0x6, 0x16, 0x85, 0x5d08, 0x3, 0x85, 0x2, 0x5dbc, 0x5000690, 0x800149, 0x320033f, 0x1d6001d, 0x85, 0x380108, 0x436108, 0x380108, 0x54610a, 0x5000690, 0x5000690, 0x850120 }, - { 1366, 768, 60, 0x700, 0x8f, 0xd5, 0x31e, 0x3, 0x18, 0x85, 0x5f50, 0x3, 0x85, 0x2, 0x600c, 0x5560700, 0x8f0165, 0x300031e, 0x1c3001c, 0x85, 0x320107, 0x676206, 0x320107, 0x56610a, 0x55606fa, 0x5560700, 0x850120 }, - { 1360, 768, 60, 0x700, 0x70, 0x100, 0x31b, 0x6, 0x12, 0x85, 0x5ee4, 0x3, 0x85, 0x2, 0x5f44, 0x5500700, 0x700171, 0x300031b, 0x1960019, 0x85, 0x390108, 0x5e610b, 0x320107, 0x3c6107, 0x5500700, 0x5500700, 0x850120 }, - { 1024, 768, 85, 0x560, 0x60, 0xd0, 0x328, 0x3, 0x24, 0x5e, 0x6668, 0x3, 0x5e, 0x2, 0x6728, 0x4000560, 0x600131, 0x3000328, 0x2830028, 0x5e, 0x3f0108, 0x556109, 0x3f0108, 0x556109, 0x400055e, 0x400055e, 0x5e0120 }, - { 1280, 960, 60, 0x708, 0x70, 0x138, 0x3e8, 0x3, 0x24, 0x85, 0x7080, 0x4, 0x85, 0x3, 0x70cc, 0x5000708, 0x7001a9, 0x3c003e8, 0x2830028, 0x85, 0x360106, 0x616109, 0x360106, 0x416106, 0x5000704, 0x5000709, 0x850120 }, - { 1280, 768, 75, 0x6a0, 0x80, 0xd0, 0x325, 0x7, 0x1b, 0x6a, 0x70f4, 0x3, 0x6a, 0x2, 0x71ec, 0x50006a0, 0x800151, 0x3000325, 0x2370023, 0x6a, 0x330106, 0x294104, 0x3c0107, 0x486107, 0x500069d, 0x500069d, 0x6a0120 }, - { 1440, 900, 60, 0x770, 0x98, 0xe8, 0x3a6, 0x6, 0x19, 0x85, 0x75bc, 0x3, 0x85, 0x2, 0x7684, 0x5a00770, 0x980181, 0x38403a6, 0x2060020, 0x85, 0x3e0107, 0x406106, 0x3e0107, 0x4b6107, 0x5a00766, 0x5a00773, 0x850120 }, - { 1280, 800, 75, 0x6a0, 0x80, 0xd0, 0x346, 0x6, 0x1d, 0x6a, 0x75a8, 0x3, 0x6a, 0x2, 0x7698, 0x50006a0, 0x800151, 0x3200346, 0x2460024, 0x6a, 0x3e0107, 0x406106, 0x360106, 0x4b6107, 0x50006aa, 0x500069e, 0x6a0120 }, - { 1280, 1024, 60, 0x698, 0x70, 0xf8, 0x42a, 0x3, 0x26, 0x85, 0x7800, 0x4, 0x85, 0x3, 0x783c, 0x5000698, 0x700169, 0x400042a, 0x2a3002a, 0x85, 0x360106, 0x616109, 0x360106, 0x416106, 0x5000695, 0x5000699, 0x850120 }, - { 1280, 768, 85, 0x6b0, 0x88, 0xd8, 0x329, 0x7, 0x1f, 0x5e, 0x8000, 0x3, 0x5e, 0x2, 0x811c, 0x50006b0, 0x880161, 0x3000329, 0x2770027, 0x5e, 0x3b0106, 0x2f4104, 0x3b0106, 0x2f4104, 0x50006b1, 0x50006ab, 0x5e0120 }, - { 1400, 1050, 60, 0x748, 0x90, 0xe8, 0x441, 0x4, 0x20, 0x85, 0x858c, 0x3, 0x85, 0x2, 0x8658, 0x5780748, 0x900179, 0x41a0441, 0x2540025, 0x85, 0x3d0106, 0x496106, 0x3d0106, 0x314104, 0x5780747, 0x578074e, 0x850120 }, - { 1280, 800, 85, 0x6b0, 0x88, 0xd8, 0x34b, 0x6, 0x22, 0x5e, 0x8558, 0x3, 0x5e, 0x2, 0x8688, 0x50006b0, 0x880161, 0x320034b, 0x2960029, 0x5e, 0x330105, 0x314104, 0x330105, 0x566107, 0x50006aa, 0x50006b0, 0x5e0120 }, - { 1280, 1024, 75, 0x698, 0x90, 0xf8, 0x42a, 0x3, 0x26, 0x6a, 0x9698, 0x3, 0x6a, 0x2, 0x96dc, 0x5000698, 0x900189, 0x400042a, 0x2a3002a, 0x6a, 0x380105, 0x1b4102, 0x390105, 0x5f6107, 0x50006a2, 0x5000697, 0x6a0120 }, - { 1440, 900, 75, 0x790, 0x98, 0xf8, 0x3ae, 0x6, 0x21, 0x6a, 0x94e8, 0x3, 0x6a, 0x2, 0x95f8, 0x5a00790, 0x980191, 0x38403ae, 0x2860028, 0x6a, 0x390105, 0x526106, 0x390105, 0x376104, 0x5a00786, 0x5a0078f, 0x6a0120 }, - { 1680, 1050, 60, 0x8c0, 0xb0, 0x118, 0x441, 0x6, 0x1e, 0x85, 0xa040, 0x3, 0x85, 0x2, 0xa134, 0x69008c0, 0xb001c9, 0x41a0441, 0x2560025, 0x85, 0x3d0105, 0x756204, 0x3d0105, 0x586106, 0x69008bc, 0x69008c0, 0x850120 }, - { 1920, 1080, 50, 0xa50, 0x2c, 0x94, 0x465, 0x5, 0x24, 0xa0, 0x9dcc, 0x4, 0xa0, 0x4, 0x9e34, 0x7800a50, 0x2c00c1, 0x4380465, 0x2a5002a, 0xa0, 0x3e0105, 0x596106, 0x3e0105, 0x596106, 0x7800a55, 0x7800a4e, 0xa00120 }, - { 1920, 1080, 60, 0x898, 0x2c, 0x94, 0x465, 0x5, 0x24, 0x85, 0xbdd8, 0x3, 0x85, 0x3, 0xbe54, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x85, 0x3e0105, 0x596106, 0x3e0105, 0x776204, 0x7800898, 0x7800897, 0x850120 }, - { 1280, 960, 85, 0x6c0, 0xa0, 0xe0, 0x3f3, 0x3, 0x2f, 0x5e, 0xa000, 0x3, 0x5e, 0x2, 0xa158, 0x50006c0, 0xa00181, 0x3c003f3, 0x3330033, 0x5e, 0x3e0105, 0x596106, 0x3e0105, 0x776204, 0x50006c1, 0x50006c0, 0x5e0120 }, - { 1400, 1050, 75, 0x768, 0x90, 0xf8, 0x44b, 0x4, 0x2a, 0x6a, 0xa8e4, 0x3, 0x6a, 0x2, 0xaa1c, 0x5780768, 0x900189, 0x41a044b, 0x2f4002f, 0x6a, 0x340104, 0x7d6204, 0x340104, 0x3f6104, 0x578075e, 0x578076a, 0x6a0120 }, - { 1440, 900, 85, 0x7a0, 0x98, 0x100, 0x3b4, 0x6, 0x27, 0x5e, 0xa8c0, 0x3, 0x5e, 0x2, 0xaa30, 0x5a007a0, 0x980199, 0x38403b4, 0x2e6002e, 0x5e, 0x340104, 0x3f6104, 0x340104, 0x3f6104, 0x5a00796, 0x5a007a0, 0x5e0120 }, - { 1280, 1024, 85, 0x6c0, 0xa0, 0xe0, 0x430, 0x3, 0x2c, 0x5e, 0xaaac, 0x3, 0x5e, 0x2, 0xab14, 0x50006c0, 0xa00181, 0x4000430, 0x3030030, 0x5e, 0x340104, 0x3f6104, 0x350104, 0x3f6104, 0x50006ca, 0x50006bf, 0x5e0120 }, - { 1600, 1200, 60, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x85, 0xafc8, 0x4, 0x85, 0x3, 0xb03c, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x85, 0x360104, 0x616106, 0x360104, 0x416104, 0x640086b, 0x6400871, 0x850120 }, - { 1600, 1200, 65, 0x879, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x7b, 0xbd14, 0x3, 0x7b, 0x3, 0xbe90, 0x6400879, 0xc001f1, 0x4b004e2, 0x3230032, 0x7b, 0x3b0104, 0x234102, 0x3b0104, 0x476104, 0x6400881, 0x6400883, 0x7b0120 }, - { 1400, 1050, 85, 0x778, 0x98, 0x100, 0x451, 0x4, 0x30, 0x5e, 0xbf68, 0x3, 0x5e, 0x2, 0xc0e0, 0x5780778, 0x980199, 0x41a0451, 0x3540035, 0x5e, 0x3c0104, 0x244102, 0x3c0104, 0x244102, 0x578077a, 0x578077a, 0x5e0120 }, - { 1680, 1050, 75, 0x8e0, 0xb0, 0x128, 0x44b, 0x6, 0x28, 0x6a, 0xcaac, 0x3, 0x6a, 0x2, 0xcc20, 0x69008e0, 0xb001d9, 0x41a044b, 0x2f6002f, 0x6a, 0x3e0104, 0x4b6104, 0x3f0104, 0x4b6104, 0x69008e6, 0x69008d6, 0x6a0120 }, - { 1600, 1200, 70, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x72, 0xcc8c, 0x3, 0x72, 0x2, 0xcd98, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x72, 0x3f0104, 0x264102, 0x3f0104, 0x264102, 0x640086b, 0x6400875, 0x720120 }, - { 1920, 1200, 60, 0xa20, 0xc8, 0x150, 0x4dd, 0x6, 0x24, 0x85, 0xd150, 0x3, 0x85, 0x2, 0xd2a0, 0x7800a20, 0xc80219, 0x4b004dd, 0x2b6002b, 0x85, 0x400104, 0x4d6104, 0x400104, 0x274102, 0x7800a16, 0x7800a2a, 0x850120 }, - { 1600, 1200, 75, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x6a, 0xdc98, 0x3, 0x6a, 0x2, 0xdd1c, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x6a, 0x330103, 0x516104, 0x330103, 0x294102, 0x6400872, 0x640087a, 0x6a0120 }, - { 1792, 1344, 60, 0x9b8, 0x19, 0x29, 0x572, 0x3, 0x2e, 0x85, 0xdacc, 0x3, 0x85, 0x2, 0xdc1c, 0x70009b8, 0x190043, 0x5400572, 0x3230032, 0x85, 0x340103, 0x536104, 0x340103, 0x536104, 0x70009b1, 0x70009ae, 0x850120 }, - { 1680, 1050, 85, 0x8f0, 0xb0, 0x130, 0x451, 0x6, 0x2e, 0x5e, 0xe5b0, 0x3, 0x5e, 0x2, 0xe770, 0x69008f0, 0xb001e1, 0x41a0451, 0x3560035, 0x5e, 0x360103, 0x2b4102, 0x360103, 0x2b4102, 0x69008f8, 0x69008ef, 0x5e0120 }, - { 1856, 1392, 60, 0x9e0, 0xe0, 0x160, 0x59f, 0x3, 0x2b, 0x85, 0xeab4, 0x3, 0x85, 0x2, 0xeb54, 0x74009e0, 0xe00241, 0x570059f, 0x2f3002f, 0x85, 0x370103, 0x576104, 0x370103, 0x2c4102, 0x74009ea, 0x74009ea, 0x850120 }, - { 1600, 1200, 85, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x5e, 0xf744, 0x2, 0x5e, 0x1, 0xf958, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x5e, 0x390103, 0x2e4102, 0x390103, 0x2e4102, 0x6400866, 0x6400871, 0x5e0120 }, - { 1920, 1440, 60, 0xa28, 0xd0, 0x158, 0x5dc, 0x3, 0x38, 0x85, 0xfd20, 0x4, 0x85, 0x3, 0xfdc4, 0x7800a28, 0xd00229, 0x5a005dc, 0x3c3003c, 0x85, 0x3a0103, 0x2f4102, 0x3b0103, 0x2f4102, 0x7800a32, 0x7800a2c, 0x850120 }, - { 1920, 1200, 75, 0xa30, 0xd0, 0x158, 0x4e7, 0x6, 0x2e, 0x6a, 0x108b8, 0x3, 0x6a, 0x2, 0x10a68, 0x7800a30, 0xd00229, 0x4b004e7, 0x3560035, 0x6a, 0x3d0103, 0x314102, 0x3e0103, 0x636104, 0x7800a3a, 0x7800a34, 0x6a0120 }, - { 1792, 1344, 75, 0x998, 0xd8, 0x160, 0x589, 0x3, 0x45, 0x6a, 0x11774, 0x4, 0x6a, 0x3, 0x118bc, 0x7000998, 0xd80239, 0x5400589, 0x4930049, 0x6a, 0x400103, 0x346102, 0x400103, 0x696202, 0x700098e, 0x7000997, 0x6a0120 }, - { 1600, 1200, 100, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x50, 0x12438, 0x2, 0x50, 0x1, 0x124f8, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x50, 0x400103, 0x366102, 0x400103, 0x366102, 0x6400866, 0x6400870, 0x500120 }, - { 1920, 1200, 85, 0xa40, 0xd0, 0x160, 0x4ee, 0x6, 0x35, 0x5e, 0x12c00, 0x3, 0x5e, 0x2, 0x12e14, 0x7800a40, 0xd00231, 0x4b004ee, 0x3c6003c, 0x5e, 0x320102, 0x716202, 0x320102, 0x716202, 0x7800a4a, 0x7800a45, 0x5e0120 }, - { 1856, 1392, 75, 0xa00, 0xe0, 0x160, 0x5dc, 0x3, 0x68, 0x6a, 0x131d4, 0x6, 0x6a, 0x5, 0x133cc, 0x7400a00, 0xe00241, 0x57005dc, 0x6c3006c, 0x6a, 0x320102, 0x736202, 0x320102, 0x3a6102, 0x7400a0a, 0x7400a01, 0x6a0120 }, - { 1920, 1440, 75, 0xa50, 0xe0, 0x160, 0x5dc, 0x3, 0x38, 0x6a, 0x13da8, 0x3, 0x6a, 0x2, 0x13e68, 0x7800a50, 0xe00241, 0x5a005dc, 0x3c3003c, 0x6a, 0x320102, 0x776202, 0x320102, 0x3c6102, 0x7800a59, 0x7800a59, 0x6a0120 }, - { 2560, 1600, 60, 0xdb0, 0x118, 0x1d8, 0x67a, 0x6, 0x31, 0x85, 0x17418, 0x3, 0x85, 0x2, 0x17600, 0xa000db0, 0x11802f1, 0x640067a, 0x3860038, 0x85, 0x3a0102, 0x466102, 0x3a0102, 0x466102, 0xa000da6, 0xa000db4, 0x850120 }, - { 2560, 1600, 75, 0xdd0, 0x118, 0x1e8, 0x688, 0x6, 0x3f, 0x6a, 0x1d698, 0x3, 0x6a, 0x2, 0x1d938, 0xa000dd0, 0x1180301, 0x6400688, 0x4660046, 0x6a, 0x400102, 0x596102, 0x400102, 0x596102, 0xa000dc6, 0xa000dc8, 0x6a0120 }, - { 2560, 1600, 85, 0xdd0, 0x118, 0x1e8, 0x692, 0x6, 0x49, 0x5e, 0x21558, 0x3, 0x5e, 0x2, 0x218d0, 0xa000dd0, 0x1180301, 0x6400692, 0x5060050, 0x5e, 0x400102, 0x646102, 0x400102, 0x646102, 0xa000dc6, 0xa000dc6, 0x5e0120 }, - { 1920, 1080, 24, 0xac0, 0x30, 0x90, 0x465, 0x5, 0x24, 0x14d, 0x4bf0, 0xb, 0x14d, 0xa, 0x4c04, 0x7800ac0, 0x3000c1, 0x4380465, 0x2a5002a, 0x14d, 0x3e010a, 0x346107, 0x3e010a, 0x776208, 0x7800ac0, 0x7800ac0, 0x14d0120 }, - { 1600, 900, 60, 0x708, 0x50, 0x60, 0x3e8, 0x3, 0x60, 0x85, 0x8ca0, 0xc, 0x85, 0xb, 0x8cfc, 0x6400708, 0x5000b1, 0x38403e8, 0x6430064, 0x85, 0x360106, 0x616109, 0x360106, 0x416106, 0x6400704, 0x6400709, 0x850120 }, - { 1280, 600, 60, 0x670, 0x80, 0xb8, 0x26e, 0x3, 0x12, 0x85, 0x45c8, 0x3, 0x85, 0x2, 0x4628, 0x5000670, 0x800139, 0x258026e, 0x1630016, 0x85, 0x33010a, 0x7b620a, 0x3e010c, 0x254106, 0x5000679, 0x5000670, 0x850120 }, - { 854, 480, 15, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x215, 0x9b8, 0x1e, 0x215, 0x1e, 0x9b8, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x215, 0x40015b, 0x1b4120, 0x390151, 0x67623d, 0x3560440, 0x3560440, 0x2150120 }, - { 854, 480, 60, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x85, 0x26c0, 0x6, 0x85, 0x6, 0x26e8, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x85, 0x3b0115, 0x1b4108, 0x3e0116, 0x736211, 0x3560440, 0x3560440, 0x850120 }, - { 854, 480, 56, 0x41f, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x8e, 0x25d4, 0x7, 0x8e, 0x6, 0x25ec, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x8e, 0x350114, 0x59611c, 0x380115, 0x20410a, 0x3560420, 0x3560420, 0x8e0120 }, - { 854, 480, 30, 0x41f, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x10a, 0x1430, 0xe, 0x10a, 0xe, 0x1440, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x10a, 0x3d012b, 0x3f6125, 0x40012d, 0x63613a, 0x356041f, 0x356041f, 0x10a0120 }, - { 854, 480, 24, 0x527, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x14d, 0x1020, 0x12, 0x14d, 0x12, 0x102c, 0x3560527, 0x3d009b, 0x1e0021a, 0x2130021, 0x14d, 0x3d012b, 0x6d6220, 0x360126, 0x4b612c, 0x3560527, 0x3560527, 0x14d0120 }, - { 2048, 1152, 60, 0x8a0, 0x20, 0x50, 0x4a1, 0x5, 0x19, 0x85, 0xd4b0, 0x2, 0x85, 0x1, 0xd5d8, 0x80008a0, 0x200071, 0x48004a1, 0x1f5001f, 0x85, 0x340104, 0x5e6106, 0x340104, 0x3f6104, 0x8000896, 0x80008a1, 0x850120 }, - { 1920, 1200, 60, 0xa20, 0xd0, 0xe2, 0x4da, 0x3, 0x26, 0x85, 0xd150, 0x3, 0x85, 0x2, 0xd220, 0x7800a20, 0xd001b3, 0x4b004da, 0x2a3002a, 0x85, 0x400104, 0x4d6104, 0x400104, 0x4d6104, 0x7800a16, 0x7800a16, 0x850120 }, - { 1920, 1080, 30, 0x898, 0x2c, 0x94, 0x465, 0x5, 0x24, 0x10a, 0x5eec, 0x8, 0x10a, 0x7, 0x5f2c, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x10a, 0x3e010a, 0x346107, 0x3e010a, 0x436109, 0x7800898, 0x7800898, 0x10a0120 }, +struct fl2000_timing_entry const big_table_24bit_r0[] = { + { 640,480,60, 0x320, 0x20d, 0x2800320, 0x600089, 0x1e0020d, 0x1c2001c, 0x3f6119 }, + { 640,480,73, 0x340, 0x208, 0x2800340, 0x2800a1, 0x1e00208, 0x1830018, 0x3c6113 }, + { 640,480,75, 0x348, 0x1f4, 0x2800348, 0x4000b9, 0x1e001f4, 0x1430014, 0x3f6114 }, + { 640,350,85, 0x340, 0x1bd, 0x2800340, 0x4000a1, 0x15e01bd, 0x4030040, 0x6b6211 }, + { 640,400,85, 0x340, 0x1bd, 0x2800340, 0x4000a1, 0x19001bd, 0x2d3002d, 0x6b6211 }, + { 720,400,85, 0x3a8, 0x1be, 0x2d003a8, 0x4800b5, 0x19001be, 0x2e3002e, 0x476114 }, + { 800,600,56, 0x400, 0x271, 0x3200400, 0x4800c9, 0x2580271, 0x1920019, 0x2b410c }, + { 640,480,85, 0x340, 0x1fd, 0x2800340, 0x380089, 0x1e001fd, 0x1d3001d, 0x24410a }, + { 800,600,60, 0x420, 0x274, 0x3200420, 0x8000d9, 0x2580274, 0x1c4001c, 0x80102 }, + { 1024,768,43, 0x4f0, 0x331, 0x40004f0, 0xb000e9, 0x3000331, 0x1940019, 0x476110 }, + { 848,480,60, 0x440, 0x205, 0x3500440, 0x7000e1, 0x1e00205, 0x2080020, 0x1b4108 }, + { 800,600,75, 0x420, 0x271, 0x3200420, 0x5000f1, 0x2580271, 0x1930019, 0x636114 }, + { 800,600,72, 0x410, 0x29a, 0x3200410, 0x7800b9, 0x258029a, 0x1e6001e, 0xa0102 }, + { 800,600,85, 0x418, 0x277, 0x3200418, 0x4000d9, 0x2580277, 0x1f3001f, 0x2d4108 }, + { 1024,768,60, 0x540, 0x326, 0x4000540, 0x880129, 0x3000326, 0x2460024, 0xd2102 }, + { 1280,720,60, 0x672, 0x2ee, 0x5000672, 0x280105, 0x2d002ee, 0x1f5001f, 0x346107 }, + { 1024,768,70, 0x530, 0x326, 0x4000530, 0x880119, 0x3000326, 0x2460024, 0xf2102 }, + { 1024,768,75, 0x520, 0x320, 0x4000520, 0x600111, 0x3000320, 0x2030020, 0x3f6108 }, + { 1280,768,60, 0x680, 0x31e, 0x5000680, 0x800141, 0x300031e, 0x1c7001c, 0x7f6208 }, + { 1152,864,60, 0x640, 0x384, 0x4800640, 0x800181, 0x3600384, 0x2430024, 0x796207 }, + { 1280,800,60, 0x690, 0x33f, 0x5000690, 0x800149, 0x320033f, 0x1d6001d, 0x436108 }, + { 1366,768,60, 0x700, 0x31e, 0x5560700, 0x8f0165, 0x300031e, 0x1c3001c, 0x676206 }, + { 1360,768,60, 0x700, 0x31b, 0x5500700, 0x700171, 0x300031b, 0x1960019, 0x5e610b }, + { 1024,768,85, 0x560, 0x328, 0x4000560, 0x600131, 0x3000328, 0x2830028, 0x556109 }, + { 1280,960,60, 0x708, 0x3e8, 0x5000708, 0x7001a9, 0x3c003e8, 0x2830028, 0x616109 }, + { 1280,768,75, 0x6a0, 0x325, 0x50006a0, 0x800151, 0x3000325, 0x2370023, 0x294104 }, + { 1440,900,60, 0x770, 0x3a6, 0x5a00770, 0x980181, 0x38403a6, 0x2060020, 0x406106 }, + { 1280,800,75, 0x6a0, 0x346, 0x50006a0, 0x800151, 0x3200346, 0x2460024, 0x406106 }, + { 1280,1024,60, 0x698, 0x42a, 0x5000698, 0x700169, 0x400042a, 0x2a3002a, 0x616109 }, + { 1280,768,85, 0x6b0, 0x329, 0x50006b0, 0x880161, 0x3000329, 0x2770027, 0x2f4104 }, + { 1400,1050,60, 0x748, 0x441, 0x5780748, 0x900179, 0x41a0441, 0x2540025, 0x496106 }, + { 1280,800,85, 0x6b0, 0x34b, 0x50006b0, 0x880161, 0x320034b, 0x2960029, 0x314104 }, + { 1280,1024,75, 0x698, 0x42a, 0x5000698, 0x900189, 0x400042a, 0x2a3002a, 0x1b4102 }, + { 1440,900,75, 0x790, 0x3ae, 0x5a00790, 0x980191, 0x38403ae, 0x2860028, 0x526106 }, + { 1680,1050,60, 0x8c0, 0x441, 0x69008c0, 0xb001c9, 0x41a0441, 0x2560025, 0x756204 }, + { 1920,1080,50, 0xa50, 0x465, 0x7800a50, 0x2c00c1, 0x4380465, 0x2a5002a, 0x596106 }, + { 1920,1080,60, 0x898, 0x465, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x596106 }, + { 1280,960,85, 0x6c0, 0x3f3, 0x50006c0, 0xa00181, 0x3c003f3, 0x3330033, 0x596106 }, + { 1400,1050,75, 0x768, 0x44b, 0x5780768, 0x900189, 0x41a044b, 0x2f4002f, 0x7d6204 }, + { 1440,900,85, 0x7a0, 0x3b4, 0x5a007a0, 0x980199, 0x38403b4, 0x2e6002e, 0x3f6104 }, + { 1280,1024,85, 0x6c0, 0x430, 0x50006c0, 0xa00181, 0x4000430, 0x3030030, 0x3f6104 }, + { 1600,1200,60, 0x870, 0x4e2, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x616106 }, + { 1600,1200,65, 0x879, 0x4e2, 0x6400879, 0xc001f1, 0x4b004e2, 0x3230032, 0x234102 }, + { 1400,1050,85, 0x778, 0x451, 0x5780778, 0x980199, 0x41a0451, 0x3540035, 0x244102 }, + { 1680,1050,75, 0x8e0, 0x44b, 0x69008e0, 0xb001d9, 0x41a044b, 0x2f6002f, 0x4b6104 }, + { 1600,1200,70, 0x870, 0x4e2, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x264102 }, + { 1920,1200,60, 0xa20, 0x4dd, 0x7800a20, 0xc80219, 0x4b004dd, 0x2b6002b, 0x4d6104 }, + { 1600,1200,75, 0x870, 0x4e2, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x516104 }, + { 1792,1344,60, 0x9b8, 0x572, 0x70009b8, 0x190043, 0x5400572, 0x3230032, 0x536104 }, + { 1680,1050,85, 0x8f0, 0x451, 0x69008f0, 0xb001e1, 0x41a0451, 0x3560035, 0x2b4102 }, + { 1856,1392,60, 0x9e0, 0x59f, 0x74009e0, 0xe00241, 0x570059f, 0x2f3002f, 0x576104 }, + { 1600,1200,85, 0x870, 0x4e2, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x2e4102 }, + { 1920,1440,60, 0xa28, 0x5dc, 0x7800a28, 0xd00229, 0x5a005dc, 0x3c3003c, 0x2f4102 }, + { 1920,1200,75, 0xa30, 0x4e7, 0x7800a30, 0xd00229, 0x4b004e7, 0x3560035, 0x314102 }, + { 1792,1344,75, 0x998, 0x589, 0x7000998, 0xd80239, 0x5400589, 0x4930049, 0x346102 }, + { 1600,1200,100, 0x870, 0x4e2, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x366102 }, + { 1920,1200,85, 0xa40, 0x4ee, 0x7800a40, 0xd00231, 0x4b004ee, 0x3c6003c, 0x716202 }, + { 1856,1392,75, 0xa00, 0x5dc, 0x7400a00, 0xe00241, 0x57005dc, 0x6c3006c, 0x736202 }, + { 1920,1440,75, 0xa50, 0x5dc, 0x7800a50, 0xe00241, 0x5a005dc, 0x3c3003c, 0x776202 }, + { 2560,1600,60, 0xdb0, 0x67a, 0xa000db0, 0x11802f1, 0x640067a, 0x3860038, 0x466102 }, + { 2560,1600,75, 0xdd0, 0x688, 0xa000dd0, 0x1180301, 0x6400688, 0x4660046, 0x596102 }, + { 2560,1600,85, 0xdd0, 0x692, 0xa000dd0, 0x1180301, 0x6400692, 0x5060050, 0x646102 }, + { 1920,1080,24, 0xac0, 0x465, 0x7800ac0, 0x3000c1, 0x4380465, 0x2a5002a, 0x346107 }, + { 1600,900,60, 0x708, 0x3e8, 0x6400708, 0x5000b1, 0x38403e8, 0x6430064, 0x616109 }, + { 1280,600,60, 0x670, 0x26e, 0x5000670, 0x800139, 0x258026e, 0x1630016, 0x7b620a }, + { 854,480,15, 0x440, 0x205, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x1b4120 }, + { 854,480,60, 0x440, 0x205, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x1b4108 }, + { 854,480,56, 0x41f, 0x21a, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x59611c }, + { 854,480,30, 0x41f, 0x21a, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x3f6125 }, + { 854,480,24, 0x527, 0x21a, 0x3560527, 0x3d009b, 0x1e0021a, 0x2130021, 0x6d6220 }, + { 2048,1152,60, 0x8a0, 0x4a1, 0x80008a0, 0x200071, 0x48004a1, 0x1f5001f, 0x5e6106 }, + { 1920,1200,60, 0xa20, 0x4da, 0x7800a20, 0xd001b3, 0x4b004da, 0x2a3002a, 0x4d6104 }, + { 1920,1080,30, 0x898, 0x465, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x346107 }, }; -struct resolution_entry const big_table_24bit_r1[VGA_BIG_TABLE_SIZE] = -{ - { 640, 480, 60, 0x320, 0x60, 0x28, 0x20d, 0x2, 0x19, 0x85, 0x1d84, 0x5, 0x85, 0x5, 0x1d9c, 0x2800320, 0x600089, 0x1e0020d, 0x1c2001c, 0x85, 0x3f011e, 0x3f6119, 0x3f011e, 0x3f6119, 0x2800320, 0x2800320, 0x1900320 }, - { 640, 480, 73, 0x340, 0x28, 0x78, 0x208, 0x3, 0x14, 0x6d, 0x23a8, 0x3, 0x6d, 0x3, 0x23c8, 0x2800340, 0x2800a1, 0x1e00208, 0x1830018, 0x6d, 0x320113, 0x3c6113, 0x320113, 0x3c6113, 0x2800340, 0x2800340, 0x1f404920 }, - { 640, 480, 75, 0x348, 0x40, 0x78, 0x1f4, 0x3, 0x10, 0x6a, 0x234c, 0x3, 0x6a, 0x2, 0x2364, 0x2800348, 0x4000b9, 0x1e001f4, 0x1430014, 0x6a, 0x3f0118, 0x3f6114, 0x3f0118, 0x3f6114, 0x2800348, 0x2800348, 0x1400320 }, - { 640, 350, 85, 0x340, 0x40, 0x60, 0x1bd, 0x3, 0x3c, 0x5e, 0x237c, 0xc, 0x5e, 0xb, 0x2384, 0x2800340, 0x4000a1, 0x15e01bd, 0x4030040, 0x5e, 0x3f0118, 0x6b6211, 0x3f0118, 0x6b6211, 0x2800341, 0x2800340, 0x6401120 }, - { 640, 400, 85, 0x340, 0x40, 0x60, 0x1bd, 0x3, 0x29, 0x5e, 0x234c, 0x8, 0x5e, 0x7, 0x2384, 0x2800340, 0x4000a1, 0x19001bd, 0x2d3002d, 0x5e, 0x3f0118, 0x6b6211, 0x3f0118, 0x6b6211, 0x2800341, 0x2800340, 0x6401120 }, - { 720, 400, 85, 0x3a8, 0x48, 0x6c, 0x1be, 0x3, 0x2a, 0x5e, 0x27b8, 0x8, 0x5e, 0x7, 0x280c, 0x2d003a8, 0x4800b5, 0x19001be, 0x2e3002e, 0x5e, 0x3e0115, 0x476114, 0x3e0115, 0x476114, 0x2d003a7, 0x2d003a8, 0x6401120 }, - { 800, 600, 56, 0x400, 0x48, 0x80, 0x271, 0x2, 0x16, 0x8e, 0x2910, 0x4, 0x8e, 0x3, 0x2944, 0x3200400, 0x4800c9, 0x2580271, 0x1920019, 0x8e, 0x330111, 0x2b410c, 0x330111, 0x2b410c, 0x3200405, 0x3200400, 0x3e80720 }, - { 640, 480, 85, 0x340, 0x38, 0x50, 0x1fd, 0x3, 0x19, 0x5e, 0x2874, 0x4, 0x5e, 0x3, 0x28a0, 0x2800340, 0x380089, 0x1e001fd, 0x1d3001d, 0x5e, 0x330111, 0x24410a, 0x330111, 0x24410a, 0x2800340, 0x2800340, 0x6401120 }, - { 800, 600, 60, 0x420, 0x80, 0x58, 0x274, 0x4, 0x17, 0x85, 0x2bf4, 0x4, 0x85, 0x3, 0x2c48, 0x3200420, 0x8000d9, 0x2580274, 0x1c4001c, 0x85, 0x3f0113, 0x80102, 0x3f0113, 0x77620f, 0x3200420, 0x320041d, 0x1900320 }, - { 1024, 768, 43, 0x4f0, 0xb0, 0x38, 0x331, 0x4, 0x14, 0xba, 0x34ac, 0x4, 0xba, 0x3, 0x34b8, 0x40004f0, 0xb000e9, 0x3000331, 0x1940019, 0xba, 0x3f0111, 0x476110, 0x3f0111, 0x284109, 0x40004f2, 0x40004f1, 0x1f402b20 }, - { 848, 480, 60, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x85, 0x2678, 0x6, 0x85, 0x6, 0x26a4, 0x3500440, 0x7000e1, 0x1e00205, 0x2080020, 0x85, 0x3b0115, 0x1b4108, 0x3b0115, 0x1b4108, 0x350043f, 0x3500440, 0x1900320 }, - { 800, 600, 75, 0x420, 0x50, 0xa0, 0x271, 0x3, 0x15, 0x6a, 0x3728, 0x3, 0x6a, 0x2, 0x3748, 0x3200420, 0x5000f1, 0x2580271, 0x1930019, 0x6a, 0x3e010f, 0x636114, 0x3e010f, 0x636114, 0x3200422, 0x3200420, 0x1400320 }, - { 800, 600, 72, 0x410, 0x78, 0x40, 0x29a, 0x6, 0x17, 0x6f, 0x37b4, 0x3, 0x6f, 0x3, 0x3840, 0x3200410, 0x7800b9, 0x258029a, 0x1e6001e, 0x6f, 0x36010d, 0xa0102, 0x36010d, 0xa0102, 0x3200410, 0x3200413, 0x3e80920 }, - { 800, 600, 85, 0x418, 0x40, 0x98, 0x277, 0x3, 0x1b, 0x5e, 0x3e80, 0x3, 0x5e, 0x2, 0x3ef0, 0x3200418, 0x4000d9, 0x2580277, 0x1f3001f, 0x5e, 0x3d010d, 0x2d4108, 0x3d010d, 0x2d4108, 0x320041a, 0x3200419, 0x6401120 }, - { 1024, 768, 60, 0x540, 0x88, 0xa0, 0x326, 0x6, 0x1d, 0x85, 0x4894, 0x4, 0x85, 0x4, 0x48bc, 0x4000540, 0x880129, 0x3000326, 0x2460024, 0x85, 0x36010a, 0xd2102, 0x36010a, 0xd2102, 0x400053c, 0x4000540, 0x1900320 }, - { 1280, 720, 60, 0x672, 0x28, 0xdc, 0x2ee, 0x5, 0x19, 0x85, 0x5460, 0x4, 0x85, 0x3, 0x5498, 0x5000672, 0x280105, 0x2d002ee, 0x1f5001f, 0x85, 0x3e010a, 0x346107, 0x3e010a, 0x346107, 0x5000675, 0x5000672, 0x1900320 }, - { 1024, 768, 70, 0x530, 0x88, 0x90, 0x326, 0x6, 0x1d, 0x72, 0x5490, 0x3, 0x72, 0x3, 0x54d8, 0x4000530, 0x880119, 0x3000326, 0x2460024, 0x72, 0x320108, 0xf2102, 0x320108, 0xf2102, 0x4000531, 0x4000531, 0x3200720 }, - { 1024, 768, 75, 0x520, 0x60, 0xb0, 0x320, 0x3, 0x1c, 0x6a, 0x5a5c, 0x3, 0x6a, 0x2, 0x5a94, 0x4000520, 0x600111, 0x3000320, 0x2030020, 0x6a, 0x3b0109, 0x3f6108, 0x3b0109, 0x3f6108, 0x400051f, 0x4000520, 0x1400320 }, - { 1280, 768, 60, 0x680, 0x80, 0xc0, 0x31e, 0x7, 0x14, 0x85, 0x5a00, 0x3, 0x85, 0x2, 0x5a00, 0x5000680, 0x800141, 0x300031e, 0x1c7001c, 0x85, 0x350108, 0x7f6208, 0x350108, 0x7f6208, 0x500067d, 0x500067a, 0x1900320 }, - { 1152, 864, 60, 0x640, 0x80, 0x100, 0x384, 0x3, 0x20, 0x85, 0x5b20, 0x4, 0x85, 0x3, 0x5b5c, 0x4800640, 0x800181, 0x3600384, 0x2430024, 0x85, 0x3a0108, 0x796207, 0x3a0108, 0x796207, 0x480064a, 0x4800640, 0x1900320 }, - { 1280, 800, 60, 0x690, 0x80, 0xc8, 0x33f, 0x6, 0x16, 0x85, 0x5d08, 0x3, 0x85, 0x2, 0x5dbc, 0x5000690, 0x800149, 0x320033f, 0x1d6001d, 0x85, 0x380108, 0x436108, 0x380108, 0x436108, 0x5000694, 0x5000690, 0x1900320 }, - { 1366, 768, 60, 0x700, 0x8f, 0xd5, 0x31e, 0x3, 0x18, 0x85, 0x600c, 0x3, 0x85, 0x2, 0x600c, 0x5560700, 0x8f0165, 0x300031e, 0x1c3001c, 0x85, 0x320107, 0x676206, 0x320107, 0x676206, 0x55606ff, 0x5560700, 0x1900320 }, - { 1360, 768, 60, 0x700, 0x70, 0x100, 0x31b, 0x6, 0x12, 0x85, 0x5ee4, 0x3, 0x85, 0x2, 0x5f44, 0x5500700, 0x700171, 0x300031b, 0x1960019, 0x85, 0x390108, 0x5e610b, 0x390108, 0x5e610b, 0x5500700, 0x5500700, 0x1900320 }, - { 1024, 768, 85, 0x560, 0x60, 0xd0, 0x328, 0x3, 0x24, 0x5e, 0x6668, 0x3, 0x5e, 0x2, 0x6728, 0x4000560, 0x600131, 0x3000328, 0x2830028, 0x5e, 0x3f0108, 0x556109, 0x3f0108, 0x556109, 0x4000560, 0x400055f, 0x6401120 }, - { 1280, 960, 60, 0x708, 0x70, 0x138, 0x3e8, 0x3, 0x24, 0x85, 0x7080, 0x4, 0x85, 0x3, 0x70cc, 0x5000708, 0x7001a9, 0x3c003e8, 0x2830028, 0x85, 0x360106, 0x616109, 0x360106, 0x616109, 0x5000708, 0x5000705, 0x1900320 }, - { 1280, 768, 75, 0x6a0, 0x80, 0xd0, 0x325, 0x7, 0x1b, 0x6a, 0x70f4, 0x3, 0x6a, 0x2, 0x71ec, 0x50006a0, 0x800151, 0x3000325, 0x2370023, 0x6a, 0x330106, 0x294104, 0x330106, 0x294104, 0x500069a, 0x50006a1, 0x1400320 }, - { 1440, 900, 60, 0x770, 0x98, 0xe8, 0x3a6, 0x6, 0x19, 0x85, 0x75bc, 0x3, 0x85, 0x2, 0x7684, 0x5a00770, 0x980181, 0x38403a6, 0x2060020, 0x85, 0x3e0107, 0x406106, 0x3e0107, 0x406106, 0x5a00769, 0x5a00770, 0x1900320 }, - { 1280, 800, 75, 0x6a0, 0x80, 0xd0, 0x346, 0x6, 0x1d, 0x6a, 0x75a8, 0x3, 0x6a, 0x2, 0x7698, 0x50006a0, 0x800151, 0x3200346, 0x2460024, 0x6a, 0x3e0107, 0x406106, 0x3e0107, 0x406106, 0x500069b, 0x50006a1, 0x1400320 }, - { 1280, 1024, 60, 0x698, 0x70, 0xf8, 0x42a, 0x3, 0x26, 0x85, 0x7800, 0x4, 0x85, 0x3, 0x783c, 0x5000698, 0x700169, 0x400042a, 0x2a3002a, 0x85, 0x360106, 0x616109, 0x360106, 0x616109, 0x5000698, 0x5000695, 0x1900320 }, - { 1280, 768, 85, 0x6b0, 0x88, 0xd8, 0x329, 0x7, 0x1f, 0x5e, 0x8000, 0x3, 0x5e, 0x2, 0x811c, 0x50006b0, 0x880161, 0x3000329, 0x2770027, 0x5e, 0x3b0106, 0x2f4104, 0x3b0106, 0x2f4104, 0x50006b4, 0x50006ad, 0x6401120 }, - { 1400, 1050, 60, 0x748, 0x90, 0xe8, 0x441, 0x4, 0x20, 0x85, 0x858c, 0x3, 0x85, 0x2, 0x8658, 0x5780748, 0x900179, 0x41a0441, 0x2540025, 0x85, 0x3d0106, 0x496106, 0x3d0106, 0x496106, 0x578074b, 0x5780746, 0x1900320 }, - { 1280, 800, 85, 0x6b0, 0x88, 0xd8, 0x34b, 0x6, 0x22, 0x5e, 0x8558, 0x3, 0x5e, 0x2, 0x8688, 0x50006b0, 0x880161, 0x320034b, 0x2960029, 0x5e, 0x330105, 0x314104, 0x330105, 0x566107, 0x50006ad, 0x50006b2, 0x6401120 }, - { 1280, 1024, 75, 0x698, 0x90, 0xf8, 0x42a, 0x3, 0x26, 0x6a, 0x9698, 0x3, 0x6a, 0x2, 0x96dc, 0x5000698, 0x900189, 0x400042a, 0x2a3002a, 0x6a, 0x380105, 0x1b4102, 0x380105, 0x1b4102, 0x5000691, 0x5000698, 0x1400320 }, - { 1440, 900, 75, 0x790, 0x98, 0xf8, 0x3ae, 0x6, 0x21, 0x6a, 0x94e8, 0x3, 0x6a, 0x2, 0x95f8, 0x5a00790, 0x980191, 0x38403ae, 0x2860028, 0x6a, 0x390105, 0x526106, 0x390105, 0x526106, 0x5a00790, 0x5a0078f, 0x1400320 }, - { 1680, 1050, 60, 0x8c0, 0xb0, 0x118, 0x441, 0x6, 0x1e, 0x85, 0xa040, 0x3, 0x85, 0x2, 0xa134, 0x69008c0, 0xb001c9, 0x41a0441, 0x2560025, 0x85, 0x3d0105, 0x756204, 0x3d0105, 0x756204, 0x69008c0, 0x69008bf, 0x1900320 }, - { 1920, 1080, 50, 0xa50, 0x2c, 0x94, 0x465, 0x5, 0x24, 0xa0, 0x9dcc, 0x4, 0xa0, 0x4, 0x9e34, 0x7800a50, 0x2c00c1, 0x4380465, 0x2a5002a, 0xa0, 0x3e0105, 0x596106, 0x3e0105, 0x596106, 0x7800a55, 0x7800a4e, 0xa00120 }, - { 1920, 1080, 60, 0x898, 0x2c, 0x94, 0x465, 0x5, 0x24, 0x85, 0xbdd8, 0x3, 0x85, 0x3, 0xbe54, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x85, 0x3e0105, 0x596106, 0x3e0105, 0x596106, 0x780089c, 0x7800896, 0x1900320 }, - { 1280, 960, 85, 0x6c0, 0xa0, 0xe0, 0x3f3, 0x3, 0x2f, 0x5e, 0xa000, 0x3, 0x5e, 0x2, 0xa158, 0x50006c0, 0xa00181, 0x3c003f3, 0x3330033, 0x5e, 0x3e0105, 0x596106, 0x3e0105, 0x596106, 0x50006c3, 0x50006be, 0x6401120 }, - { 1400, 1050, 75, 0x768, 0x90, 0xf8, 0x44b, 0x4, 0x2a, 0x6a, 0xa8e4, 0x3, 0x6a, 0x2, 0xaa1c, 0x5780768, 0x900189, 0x41a044b, 0x2f4002f, 0x6a, 0x340104, 0x7d6204, 0x340104, 0x7d6204, 0x5780765, 0x5780768, 0x1400320 }, - { 1440, 900, 85, 0x7a0, 0x98, 0x100, 0x3b4, 0x6, 0x27, 0x5e, 0xa8c0, 0x3, 0x5e, 0x2, 0xaa30, 0x5a007a0, 0x980199, 0x38403b4, 0x2e6002e, 0x5e, 0x340104, 0x3f6104, 0x340104, 0x3f6104, 0x5a00796, 0x5a007a2, 0x6401120 }, - { 1280, 1024, 85, 0x6c0, 0xa0, 0xe0, 0x430, 0x3, 0x2c, 0x5e, 0xaaac, 0x3, 0x5e, 0x2, 0xab14, 0x50006c0, 0xa00181, 0x4000430, 0x3030030, 0x5e, 0x340104, 0x3f6104, 0x340104, 0x3f6104, 0x50006b6, 0x50006c0, 0x6401120 }, - { 1600, 1200, 60, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x85, 0xafc8, 0x4, 0x85, 0x3, 0xb03c, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x85, 0x360104, 0x616106, 0x360104, 0x616106, 0x6400870, 0x640086c, 0x1900320 }, - { 1600, 1200, 65, 0x879, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x7b, 0xbd14, 0x3, 0x7b, 0x3, 0xbe90, 0x6400879, 0xc001f1, 0x4b004e2, 0x3230032, 0x7b, 0x3b0104, 0x234102, 0x3b0104, 0x234102, 0x6400882, 0x640086f, 0x6400d20 }, - { 1400, 1050, 85, 0x778, 0x98, 0x100, 0x451, 0x4, 0x30, 0x5e, 0xbf68, 0x3, 0x5e, 0x2, 0xc0e0, 0x5780778, 0x980199, 0x41a0451, 0x3540035, 0x5e, 0x3c0104, 0x244102, 0x3c0104, 0x244102, 0x578077c, 0x578077c, 0x6401120 }, - { 1680, 1050, 75, 0x8e0, 0xb0, 0x128, 0x44b, 0x6, 0x28, 0x6a, 0xcaac, 0x3, 0x6a, 0x2, 0xcc20, 0x69008e0, 0xb001d9, 0x41a044b, 0x2f6002f, 0x6a, 0x3e0104, 0x4b6104, 0x3e0104, 0x4b6104, 0x69008d6, 0x69008e2, 0x1400320 }, - { 1600, 1200, 70, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x72, 0xcc8c, 0x3, 0x72, 0x2, 0xcd98, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x72, 0x3f0104, 0x264102, 0x3f0104, 0x264102, 0x6400870, 0x640087a, 0x3200720 }, - { 1920, 1200, 60, 0xa20, 0xc8, 0x150, 0x4dd, 0x6, 0x24, 0x85, 0xd150, 0x3, 0x85, 0x2, 0xd2a0, 0x7800a20, 0xc80219, 0x4b004dd, 0x2b6002b, 0x85, 0x400104, 0x4d6104, 0x400104, 0x4d6104, 0x7800a16, 0x7800a16, 0x1900320 }, - { 1600, 1200, 75, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x6a, 0xdc98, 0x3, 0x6a, 0x2, 0xdd1c, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x6a, 0x330103, 0x516104, 0x330103, 0x516104, 0x640087a, 0x6400870, 0x1400320 }, - { 1792, 1344, 60, 0x9b8, 0x19, 0x29, 0x572, 0x3, 0x2e, 0x85, 0xdacc, 0x3, 0x85, 0x2, 0xdc1c, 0x70009b8, 0x190043, 0x5400572, 0x3230032, 0x85, 0x340103, 0x536104, 0x340103, 0x536104, 0x70009b8, 0x70009b2, 0x1900320 }, - { 1680, 1050, 85, 0x8f0, 0xb0, 0x130, 0x451, 0x6, 0x2e, 0x5e, 0xe5b0, 0x3, 0x5e, 0x2, 0xe770, 0x69008f0, 0xb001e1, 0x41a0451, 0x3560035, 0x5e, 0x360103, 0x2b4102, 0x360103, 0x2b4102, 0x69008fa, 0x69008f0, 0x6401120 }, - { 1856, 1392, 60, 0x9e0, 0xe0, 0x160, 0x59f, 0x3, 0x2b, 0x85, 0xeab4, 0x3, 0x85, 0x2, 0xeb54, 0x74009e0, 0xe00241, 0x570059f, 0x2f3002f, 0x85, 0x370103, 0x576104, 0x370103, 0x576104, 0x74009ea, 0x74009d8, 0x1900320 }, - { 1600, 1200, 85, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x5e, 0xf744, 0x2, 0x5e, 0x1, 0xf958, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x5e, 0x390103, 0x2e4102, 0x390103, 0x2e4102, 0x6400866, 0x6400874, 0x6401120 }, - { 1920, 1440, 60, 0xa28, 0xd0, 0x158, 0x5dc, 0x3, 0x38, 0x85, 0xfd20, 0x4, 0x85, 0x3, 0xfdc4, 0x7800a28, 0xd00229, 0x5a005dc, 0x3c3003c, 0x85, 0x3a0103, 0x2f4102, 0x3b0103, 0x2f4102, 0x7800a32, 0x7800a32, 0x1900320 }, - { 1920, 1200, 75, 0xa30, 0xd0, 0x158, 0x4e7, 0x6, 0x2e, 0x6a, 0x108b8, 0x3, 0x6a, 0x2, 0x10a68, 0x7800a30, 0xd00229, 0x4b004e7, 0x3560035, 0x6a, 0x3d0103, 0x314102, 0x3d0103, 0x314102, 0x7800a26, 0x7800a2c, 0x1400320 }, - { 1792, 1344, 75, 0x998, 0xd8, 0x160, 0x589, 0x3, 0x45, 0x6a, 0x11774, 0x4, 0x6a, 0x3, 0x118bc, 0x7000998, 0xd80239, 0x5400589, 0x4930049, 0x6a, 0x400103, 0x346102, 0x400103, 0x346102, 0x700098e, 0x700098f, 0x1400320 }, - { 1600, 1200, 100, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x50, 0x12438, 0x2, 0x50, 0x1, 0x124f8, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x50, 0x400103, 0x366102, 0x400103, 0x366102, 0x6400866, 0x6400870, 0x500120 }, - { 1920, 1200, 85, 0xa40, 0xd0, 0x160, 0x4ee, 0x6, 0x35, 0x5e, 0x12c00, 0x3, 0x5e, 0x2, 0x12e14, 0x7800a40, 0xd00231, 0x4b004ee, 0x3c6003c, 0x5e, 0x320102, 0x716202, 0x320102, 0x716202, 0x7800a4a, 0x7800a49, 0x6401120 }, - { 1856, 1392, 75, 0xa00, 0xe0, 0x160, 0x5dc, 0x3, 0x68, 0x6a, 0x131d4, 0x6, 0x6a, 0x5, 0x133cc, 0x7400a00, 0xe00241, 0x57005dc, 0x6c3006c, 0x6a, 0x320102, 0x736202, 0x320102, 0x736202, 0x7400a0a, 0x74009fc, 0x1400320 }, - { 1920, 1440, 75, 0xa50, 0xe0, 0x160, 0x5dc, 0x3, 0x38, 0x6a, 0x13da8, 0x3, 0x6a, 0x2, 0x13e68, 0x7800a50, 0xe00241, 0x5a005dc, 0x3c3003c, 0x6a, 0x320102, 0x776202, 0x320102, 0x776202, 0x7800a5a, 0x7800a54, 0x1400320 }, - { 2560, 1600, 60, 0xdb0, 0x118, 0x1d8, 0x67a, 0x6, 0x31, 0x85, 0x17418, 0x3, 0x85, 0x2, 0x17600, 0xa000db0, 0x11802f1, 0x640067a, 0x3860038, 0x85, 0x3a0102, 0x466102, 0x3a0102, 0x466102, 0xa000dab, 0xa000dba, 0x1900320 }, - { 2560, 1600, 75, 0xdd0, 0x118, 0x1e8, 0x688, 0x6, 0x3f, 0x6a, 0x1d698, 0x3, 0x6a, 0x2, 0x1d938, 0xa000dd0, 0x1180301, 0x6400688, 0x4660046, 0x6a, 0x400102, 0x596102, 0x400102, 0x596102, 0xa000dc6, 0xa000dda, 0x1400320 }, - { 2560, 1600, 85, 0xdd0, 0x118, 0x1e8, 0x692, 0x6, 0x49, 0x5e, 0x21558, 0x3, 0x5e, 0x2, 0x218d0, 0xa000dd0, 0x1180301, 0x6400692, 0x5060050, 0x5e, 0x400102, 0x646102, 0x400102, 0x646102, 0xa000dc6, 0xa000dc6, 0x6401120 }, - { 1920, 1080, 24, 0xac0, 0x30, 0x90, 0x465, 0x5, 0x24, 0x14d, 0x4bf0, 0xb, 0x14d, 0xa, 0x4c04, 0x7800ac0, 0x3000c1, 0x4380465, 0x2a5002a, 0x14d, 0x3e010a, 0x346107, 0x3e010a, 0x346107, 0x7800ac3, 0x7800ac0, 0x3e80320 }, - { 1600, 900, 60, 0x708, 0x50, 0x60, 0x3e8, 0x3, 0x60, 0x85, 0x8ca0, 0xc, 0x85, 0xb, 0x8cfc, 0x6400708, 0x5000b1, 0x38403e8, 0x6430064, 0x85, 0x360106, 0x616109, 0x360106, 0x616109, 0x6400708, 0x6400705, 0x1900320 }, - { 1280, 600, 60, 0x670, 0x80, 0xb8, 0x26e, 0x3, 0x12, 0x85, 0x45c8, 0x3, 0x85, 0x2, 0x4628, 0x5000670, 0x800139, 0x258026e, 0x1630016, 0x85, 0x33010a, 0x7b620a, 0x33010a, 0x7b620a, 0x5000668, 0x5000670, 0x1900320 }, - { 854, 480, 15, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x215, 0x9b8, 0x1e, 0x215, 0x1e, 0x9b8, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x215, 0x40015b, 0x1b4120, 0x40015b, 0x1b4120, 0x3560440, 0x3560440, 0x6400320 }, - { 854, 480, 60, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x85, 0x26c0, 0x6, 0x85, 0x6, 0x26e8, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x85, 0x3b0115, 0x1b4108, 0x3b0115, 0x1b4108, 0x356043f, 0x3560440, 0x1900320 }, - { 854, 480, 56, 0x41f, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x8e, 0x25d4, 0x7, 0x8e, 0x6, 0x25ec, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x8e, 0x350114, 0x59611c, 0x350114, 0x59611c, 0x356041f, 0x356041f, 0x3e80720 }, - { 854, 480, 30, 0x41f, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x10a, 0x1430, 0xe, 0x10a, 0xe, 0x1440, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x10a, 0x3d012b, 0x3f6125, 0x3d012b, 0x3f6125, 0x356041f, 0x356041f, 0x3200320 }, - { 854, 480, 24, 0x527, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x14d, 0x1020, 0x12, 0x14d, 0x12, 0x102c, 0x3560527, 0x3d009b, 0x1e0021a, 0x2130021, 0x14d, 0x3d012b, 0x6d6220, 0x3d012b, 0x6d6220, 0x3560527, 0x3560527, 0x3e80320 }, - { 2048, 1152, 60, 0x8a0, 0x20, 0x50, 0x4a1, 0x5, 0x19, 0x85, 0xd4b0, 0x2, 0x85, 0x1, 0xd5d8, 0x80008a0, 0x200071, 0x48004a1, 0x1f5001f, 0x85, 0x340104, 0x5e6106, 0x340104, 0x5e6106, 0x8000896, 0x800089c, 0x1900320 }, - { 1920, 1200, 60, 0xa20, 0xd0, 0xe2, 0x4da, 0x3, 0x26, 0x85, 0xd150, 0x3, 0x85, 0x2, 0xd220, 0x7800a20, 0xd001b3, 0x4b004da, 0x2a3002a, 0x85, 0x400104, 0x4d6104, 0x400104, 0x4d6104, 0x7800a16, 0x7800a18, 0x1900320 }, - { 1920, 1080, 30, 0x898, 0x2c, 0x94, 0x465, 0x5, 0x24, 0x10a, 0x5eec, 0x8, 0x10a, 0x7, 0x5f2c, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x10a, 0x3e010a, 0x346107, 0x3e010a, 0x346107, 0x780089c, 0x7800898, 0x3200320 }, -}; - -struct resolution_entry const big_table_16bit_r0[VGA_BIG_TABLE_SIZE] = -{ - { 640, 480, 60, 0x320, 0x60, 0x28, 0x20d, 0x2, 0x19, 0x85, 0x13b0, 0x5, 0x85, 0x5, 0x13c0, 0x2800320, 0x600089, 0x1e0020d, 0x1c2001c, 0x85, 0x3f011e, 0x3f6119, 0x3b011c, 0x304113, 0x2800321, 0x2800320, 0x850120 }, - { 640, 480, 73, 0x340, 0x28, 0x78, 0x208, 0x3, 0x14, 0x6d, 0x17c4, 0x3, 0x6d, 0x3, 0x17dc, 0x2800340, 0x2800a1, 0x1e00208, 0x1830018, 0x6d, 0x320113, 0x3c6113, 0x350114, 0x7f6214, 0x2800341, 0x2800340, 0x6d0120 }, - { 640, 480, 75, 0x348, 0x40, 0x78, 0x1f4, 0x3, 0x10, 0x6a, 0x1788, 0x3, 0x6a, 0x2, 0x1798, 0x2800348, 0x4000b9, 0x1e001f4, 0x1430014, 0x6a, 0x3f0118, 0x3f6114, 0x3a0116, 0x496117, 0x2800346, 0x2800349, 0x6a0120 }, - { 640, 350, 85, 0x340, 0x40, 0x60, 0x1bd, 0x3, 0x3c, 0x5e, 0x17a8, 0xc, 0x5e, 0xb, 0x17ac, 0x2800340, 0x4000a1, 0x15e01bd, 0x4030040, 0x5e, 0x3f0118, 0x6b6211, 0x3f0118, 0x3f6114, 0x2800340, 0x2800340, 0x5e0120 }, - { 640, 400, 85, 0x340, 0x40, 0x60, 0x1bd, 0x3, 0x29, 0x5e, 0x1788, 0x8, 0x5e, 0x7, 0x17ac, 0x2800340, 0x4000a1, 0x19001bd, 0x2d3002d, 0x5e, 0x3f0118, 0x6b6211, 0x3f0118, 0x3f6114, 0x2800340, 0x2800340, 0x5e0120 }, - { 720, 400, 85, 0x3a8, 0x48, 0x6c, 0x1be, 0x3, 0x2a, 0x5e, 0x1a7c, 0x8, 0x5e, 0x7, 0x1ab4, 0x2d003a8, 0x4800b5, 0x19001be, 0x2e3002e, 0x5e, 0x3e0115, 0x476114, 0x3e0115, 0x204109, 0x2d003a5, 0x2d003a9, 0x5e0120 }, - { 800, 600, 56, 0x400, 0x48, 0x80, 0x271, 0x2, 0x16, 0x8e, 0x1b60, 0x4, 0x8e, 0x3, 0x1b84, 0x3200400, 0x4800c9, 0x2580271, 0x1920019, 0x8e, 0x330111, 0x2b410c, 0x330111, 0x65620e, 0x32003fe, 0x3200400, 0x8e0120 }, - { 640, 480, 85, 0x340, 0x38, 0x50, 0x1fd, 0x3, 0x19, 0x5e, 0x1af8, 0x4, 0x5e, 0x3, 0x1b14, 0x2800340, 0x380089, 0x1e001fd, 0x1d3001d, 0x5e, 0x330111, 0x24410a, 0x330111, 0x536117, 0x280033f, 0x2800341, 0x5e0120 }, - { 800, 600, 60, 0x420, 0x80, 0x58, 0x274, 0x4, 0x17, 0x85, 0x1d4c, 0x4, 0x85, 0x3, 0x1d84, 0x3200420, 0x8000d9, 0x2580274, 0x1c4001c, 0x85, 0x3f0113, 0x80102, 0x32010f, 0x80102, 0x3200423, 0x3200423, 0x850120 }, - { 1024, 768, 43, 0x4f0, 0xb0, 0x38, 0x331, 0x4, 0x14, 0xba, 0x231c, 0x4, 0xba, 0x3, 0x2324, 0x40004f0, 0xb000e9, 0x3000331, 0x1940019, 0xba, 0x3f0111, 0x476110, 0x3f0111, 0x284109, 0x40004f1, 0x40004f1, 0xba0120 }, - { 848, 480, 60, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x85, 0x19a8, 0x6, 0x85, 0x6, 0x19c4, 0x3500440, 0x7000e1, 0x1e00205, 0x2080020, 0x85, 0x3b0115, 0x1b4108, 0x3e0116, 0x736211, 0x3500440, 0x3500440, 0x850120 }, - { 800, 600, 75, 0x420, 0x50, 0xa0, 0x271, 0x3, 0x15, 0x6a, 0x24c4, 0x3, 0x6a, 0x2, 0x24dc, 0x3200420, 0x5000f1, 0x2580271, 0x1930019, 0x6a, 0x3e010f, 0x636114, 0x36010d, 0xa0102, 0x3200421, 0x3200424, 0x6a0120 }, - { 800, 600, 72, 0x410, 0x78, 0x40, 0x29a, 0x6, 0x17, 0x6f, 0x2580, 0x3, 0x6f, 0x3, 0x2580, 0x3200410, 0x7800b9, 0x258029a, 0x1e6001e, 0x6f, 0x36010d, 0xa0102, 0x32010c, 0xa0102, 0x3200412, 0x3200412, 0x6f0120 }, - { 800, 600, 85, 0x418, 0x40, 0x98, 0x277, 0x3, 0x1b, 0x5e, 0x29ac, 0x3, 0x5e, 0x2, 0x29f8, 0x3200418, 0x4000d9, 0x2580277, 0x1f3001f, 0x5e, 0x3d010d, 0x2d4108, 0x3d010d, 0x2d4108, 0x3200418, 0x3200417, 0x5e0120 }, - { 1024, 768, 60, 0x540, 0x88, 0xa0, 0x326, 0x6, 0x1d, 0x85, 0x3064, 0x4, 0x85, 0x4, 0x307c, 0x4000540, 0x880129, 0x3000326, 0x2460024, 0x85, 0x36010a, 0xd2102, 0x3c010b, 0x62610f, 0x4000546, 0x4000543, 0x850120 }, - { 1280, 720, 60, 0x672, 0x28, 0xdc, 0x2ee, 0x5, 0x19, 0x85, 0x3840, 0x4, 0x85, 0x3, 0x3868, 0x5000672, 0x280105, 0x2d002ee, 0x1f5001f, 0x85, 0x3e010a, 0x346107, 0x3e010a, 0x436109, 0x5000672, 0x5000672, 0x850120 }, - { 1024, 768, 70, 0x530, 0x88, 0x90, 0x326, 0x6, 0x1d, 0x72, 0x3860, 0x3, 0x72, 0x3, 0x3890, 0x4000530, 0x880119, 0x3000326, 0x2460024, 0x72, 0x320108, 0xf2102, 0x320108, 0xf2102, 0x400052e, 0x400052e, 0x720120 }, - { 1024, 768, 75, 0x520, 0x60, 0xb0, 0x320, 0x3, 0x1c, 0x6a, 0x3c40, 0x3, 0x6a, 0x2, 0x3c64, 0x4000520, 0x600111, 0x3000320, 0x2030020, 0x6a, 0x3b0109, 0x3f6108, 0x350108, 0x6f6207, 0x4000525, 0x4000521, 0x6a0120 }, - { 1280, 768, 60, 0x680, 0x80, 0xc0, 0x31e, 0x7, 0x14, 0x85, 0x3b8c, 0x3, 0x85, 0x2, 0x3c00, 0x5000680, 0x800141, 0x300031e, 0x1c7001c, 0x85, 0x350108, 0x7f6208, 0x3c0109, 0x102102, 0x5000682, 0x5000682, 0x850120 }, - { 1152, 864, 60, 0x640, 0x80, 0x100, 0x384, 0x3, 0x20, 0x85, 0x3cc0, 0x4, 0x85, 0x3, 0x3ce8, 0x4800640, 0x800181, 0x3600384, 0x2430024, 0x85, 0x3a0108, 0x796207, 0x3a0108, 0x346106, 0x4800647, 0x4800641, 0x850120 }, - { 1280, 800, 60, 0x690, 0x80, 0xc8, 0x33f, 0x6, 0x16, 0x85, 0x3e04, 0x3, 0x85, 0x2, 0x3e7c, 0x5000690, 0x800149, 0x320033f, 0x1d6001d, 0x85, 0x380108, 0x436108, 0x380108, 0x54610a, 0x5000690, 0x5000690, 0x850120 }, - { 1366, 768, 60, 0x700, 0x8f, 0xd5, 0x31e, 0x3, 0x18, 0x85, 0x3f8c, 0x3, 0x85, 0x2, 0x4008, 0x5560700, 0x8f0165, 0x300031e, 0x1c3001c, 0x85, 0x320107, 0x676206, 0x320107, 0x56610a, 0x55606fa, 0x5560700, 0x850120 }, - { 1360, 768, 60, 0x700, 0x70, 0x100, 0x31b, 0x6, 0x12, 0x85, 0x3f44, 0x3, 0x85, 0x2, 0x3f84, 0x5500700, 0x700171, 0x300031b, 0x1960019, 0x85, 0x390108, 0x5e610b, 0x320107, 0x3c6107, 0x5500700, 0x5500700, 0x850120 }, - { 1024, 768, 85, 0x560, 0x60, 0xd0, 0x328, 0x3, 0x24, 0x5e, 0x4448, 0x3, 0x5e, 0x2, 0x44c8, 0x4000560, 0x600131, 0x3000328, 0x2830028, 0x5e, 0x3f0108, 0x556109, 0x3f0108, 0x556109, 0x400055e, 0x400055e, 0x5e0120 }, - { 1280, 960, 60, 0x708, 0x70, 0x138, 0x3e8, 0x3, 0x24, 0x85, 0x4b00, 0x4, 0x85, 0x3, 0x4b34, 0x5000708, 0x7001a9, 0x3c003e8, 0x2830028, 0x85, 0x360106, 0x616109, 0x360106, 0x416106, 0x5000704, 0x5000709, 0x850120 }, - { 1280, 768, 75, 0x6a0, 0x80, 0xd0, 0x325, 0x7, 0x1b, 0x6a, 0x4b4c, 0x3, 0x6a, 0x2, 0x4bf4, 0x50006a0, 0x800151, 0x3000325, 0x2370023, 0x6a, 0x330106, 0x294104, 0x3c0107, 0x486107, 0x500069d, 0x500069d, 0x6a0120 }, - { 1440, 900, 60, 0x770, 0x98, 0xe8, 0x3a6, 0x6, 0x19, 0x85, 0x4e80, 0x3, 0x85, 0x2, 0x4f04, 0x5a00770, 0x980181, 0x38403a6, 0x2060020, 0x85, 0x3e0107, 0x406106, 0x3e0107, 0x4b6107, 0x5a00766, 0x5a00773, 0x850120 }, - { 1280, 800, 75, 0x6a0, 0x80, 0xd0, 0x346, 0x6, 0x1d, 0x6a, 0x4e70, 0x3, 0x6a, 0x2, 0x4f10, 0x50006a0, 0x800151, 0x3200346, 0x2460024, 0x6a, 0x3e0107, 0x406106, 0x360106, 0x4b6107, 0x50006aa, 0x500069e, 0x6a0120 }, - { 1280, 1024, 60, 0x698, 0x70, 0xf8, 0x42a, 0x3, 0x26, 0x85, 0x5000, 0x4, 0x85, 0x3, 0x5028, 0x5000698, 0x700169, 0x400042a, 0x2a3002a, 0x85, 0x360106, 0x616109, 0x360106, 0x416106, 0x5000695, 0x5000699, 0x850120 }, - { 1280, 768, 85, 0x6b0, 0x88, 0xd8, 0x329, 0x7, 0x1f, 0x5e, 0x5558, 0x3, 0x5e, 0x2, 0x5614, 0x50006b0, 0x880161, 0x3000329, 0x2770027, 0x5e, 0x3b0106, 0x2f4104, 0x3b0106, 0x2f4104, 0x50006b1, 0x50006ab, 0x5e0120 }, - { 1400, 1050, 60, 0x748, 0x90, 0xe8, 0x441, 0x4, 0x20, 0x85, 0x5908, 0x3, 0x85, 0x2, 0x5990, 0x5780748, 0x900179, 0x41a0441, 0x2540025, 0x85, 0x3d0106, 0x496106, 0x3d0106, 0x314104, 0x5780747, 0x578074e, 0x850120 }, - { 1280, 800, 85, 0x6b0, 0x88, 0xd8, 0x34b, 0x6, 0x22, 0x5e, 0x58e4, 0x3, 0x5e, 0x2, 0x59b0, 0x50006b0, 0x880161, 0x320034b, 0x2960029, 0x5e, 0x330105, 0x314104, 0x330105, 0x566107, 0x50006aa, 0x50006b0, 0x5e0120 }, - { 1280, 1024, 75, 0x698, 0x90, 0xf8, 0x42a, 0x3, 0x26, 0x6a, 0x6468, 0x3, 0x6a, 0x2, 0x6494, 0x5000698, 0x900189, 0x400042a, 0x2a3002a, 0x6a, 0x380105, 0x1b4102, 0x390105, 0x5f6107, 0x50006a2, 0x5000697, 0x6a0120 }, - { 1440, 900, 75, 0x790, 0x98, 0xf8, 0x3ae, 0x6, 0x21, 0x6a, 0x6344, 0x3, 0x6a, 0x2, 0x63fc, 0x5a00790, 0x980191, 0x38403ae, 0x2860028, 0x6a, 0x390105, 0x526106, 0x390105, 0x376104, 0x5a00786, 0x5a0078f, 0x6a0120 }, - { 1680, 1050, 60, 0x8c0, 0xb0, 0x118, 0x441, 0x6, 0x1e, 0x85, 0x6ad8, 0x3, 0x85, 0x2, 0x6b78, 0x69008c0, 0xb001c9, 0x41a0441, 0x2560025, 0x85, 0x3d0105, 0x756204, 0x3d0105, 0x586106, 0x69008bc, 0x69008c0, 0x850120 }, - { 1920, 1080, 50, 0xa50, 0x2c, 0x94, 0x465, 0x5, 0x24, 0xa0, 0x6934, 0x4, 0xa0, 0x4, 0x6978, 0x7800a50, 0x2c00c1, 0x4380465, 0x2a5002a, 0xa0, 0x3e0105, 0x596106, 0x3e0105, 0x596106, 0x7800a55, 0x7800a4e, 0xa00120 }, - { 1920, 1080, 60, 0x898, 0x2c, 0x94, 0x465, 0x5, 0x24, 0x85, 0x7e90, 0x3, 0x85, 0x3, 0x7ee4, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x85, 0x3e0105, 0x596106, 0x3e0105, 0x776204, 0x7800898, 0x7800897, 0x850120 }, - { 1280, 960, 85, 0x6c0, 0xa0, 0xe0, 0x3f3, 0x3, 0x2f, 0x5e, 0x6aac, 0x3, 0x5e, 0x2, 0x6b90, 0x50006c0, 0xa00181, 0x3c003f3, 0x3330033, 0x5e, 0x3e0105, 0x596106, 0x3e0105, 0x776204, 0x50006c1, 0x50006c0, 0x5e0120 }, - { 1400, 1050, 75, 0x768, 0x90, 0xf8, 0x44b, 0x4, 0x2a, 0x6a, 0x7098, 0x3, 0x6a, 0x2, 0x7168, 0x5780768, 0x900189, 0x41a044b, 0x2f4002f, 0x6a, 0x340104, 0x7d6204, 0x340104, 0x3f6104, 0x578075e, 0x578076a, 0x6a0120 }, - { 1440, 900, 85, 0x7a0, 0x98, 0x100, 0x3b4, 0x6, 0x27, 0x5e, 0x7080, 0x3, 0x5e, 0x2, 0x7178, 0x5a007a0, 0x980199, 0x38403b4, 0x2e6002e, 0x5e, 0x340104, 0x3f6104, 0x340104, 0x3f6104, 0x5a00796, 0x5a007a0, 0x5e0120 }, - { 1280, 1024, 85, 0x6c0, 0xa0, 0xe0, 0x430, 0x3, 0x2c, 0x5e, 0x71c8, 0x3, 0x5e, 0x2, 0x720c, 0x50006c0, 0xa00181, 0x4000430, 0x3030030, 0x5e, 0x340104, 0x3f6104, 0x350104, 0x3f6104, 0x50006ca, 0x50006bf, 0x5e0120 }, - { 1600, 1200, 60, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x85, 0x7530, 0x4, 0x85, 0x3, 0x757c, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x85, 0x360104, 0x616106, 0x360104, 0x416104, 0x640086b, 0x6400871, 0x850120 }, - { 1600, 1200, 65, 0x879, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x7b, 0x7e10, 0x3, 0x7b, 0x3, 0x7f0c, 0x6400879, 0xc001f1, 0x4b004e2, 0x3230032, 0x7b, 0x3b0104, 0x234102, 0x3b0104, 0x476104, 0x6400881, 0x6400883, 0x7b0120 }, - { 1400, 1050, 85, 0x778, 0x98, 0x100, 0x451, 0x4, 0x30, 0x5e, 0x7f9c, 0x3, 0x5e, 0x2, 0x8094, 0x5780778, 0x980199, 0x41a0451, 0x3540035, 0x5e, 0x3c0104, 0x244102, 0x3c0104, 0x244102, 0x578077a, 0x578077a, 0x5e0120 }, - { 1680, 1050, 75, 0x8e0, 0xb0, 0x128, 0x44b, 0x6, 0x28, 0x6a, 0x8720, 0x3, 0x6a, 0x2, 0x8818, 0x69008e0, 0xb001d9, 0x41a044b, 0x2f6002f, 0x6a, 0x3e0104, 0x4b6104, 0x3f0104, 0x4b6104, 0x69008e6, 0x69008d6, 0x6a0120 }, - { 1600, 1200, 70, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x72, 0x8860, 0x3, 0x72, 0x2, 0x8910, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x72, 0x3f0104, 0x264102, 0x3f0104, 0x264102, 0x640086b, 0x6400875, 0x720120 }, - { 1920, 1200, 60, 0xa20, 0xc8, 0x150, 0x4dd, 0x6, 0x24, 0x85, 0x8b8c, 0x3, 0x85, 0x2, 0x8c6c, 0x7800a20, 0xc80219, 0x4b004dd, 0x2b6002b, 0x85, 0x400104, 0x4d6104, 0x400104, 0x274102, 0x7800a16, 0x7800a2a, 0x850120 }, - { 1600, 1200, 75, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x6a, 0x9310, 0x3, 0x6a, 0x2, 0x9368, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x6a, 0x330103, 0x516104, 0x330103, 0x294102, 0x6400872, 0x640087a, 0x6a0120 }, - { 1792, 1344, 60, 0x9b8, 0x19, 0x29, 0x572, 0x3, 0x2e, 0x85, 0x91e0, 0x3, 0x85, 0x2, 0x92c0, 0x70009b8, 0x190043, 0x5400572, 0x3230032, 0x85, 0x340103, 0x536104, 0x340103, 0x536104, 0x70009b1, 0x70009ae, 0x850120 }, - { 1680, 1050, 85, 0x8f0, 0xb0, 0x130, 0x451, 0x6, 0x2e, 0x5e, 0x9920, 0x3, 0x5e, 0x2, 0x9a4c, 0x69008f0, 0xb001e1, 0x41a0451, 0x3560035, 0x5e, 0x360103, 0x2b4102, 0x360103, 0x2b4102, 0x69008f8, 0x69008ef, 0x5e0120 }, - { 1856, 1392, 60, 0x9e0, 0xe0, 0x160, 0x59f, 0x3, 0x2b, 0x85, 0x9c78, 0x3, 0x85, 0x2, 0x9ce4, 0x74009e0, 0xe00241, 0x570059f, 0x2f3002f, 0x85, 0x370103, 0x576104, 0x370103, 0x2c4102, 0x74009ea, 0x74009ea, 0x850120 }, - { 1600, 1200, 85, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x5e, 0xa4d8, 0x2, 0x5e, 0x1, 0xa63c, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x5e, 0x390103, 0x2e4102, 0x390103, 0x2e4102, 0x6400866, 0x6400871, 0x5e0120 }, - { 1920, 1440, 60, 0xa28, 0xd0, 0x158, 0x5dc, 0x3, 0x38, 0x85, 0xa8c0, 0x4, 0x85, 0x3, 0xa930, 0x7800a28, 0xd00229, 0x5a005dc, 0x3c3003c, 0x85, 0x3a0103, 0x2f4102, 0x3b0103, 0x2f4102, 0x7800a32, 0x7800a2c, 0x850120 }, - { 1920, 1200, 75, 0xa30, 0xd0, 0x158, 0x4e7, 0x6, 0x2e, 0x6a, 0xb07c, 0x3, 0x6a, 0x2, 0xb19c, 0x7800a30, 0xd00229, 0x4b004e7, 0x3560035, 0x6a, 0x3d0103, 0x314102, 0x3e0103, 0x636104, 0x7800a3a, 0x7800a34, 0x6a0120 }, - { 1792, 1344, 75, 0x998, 0xd8, 0x160, 0x589, 0x3, 0x45, 0x6a, 0xba50, 0x4, 0x6a, 0x3, 0xbb28, 0x7000998, 0xd80239, 0x5400589, 0x4930049, 0x6a, 0x400103, 0x346102, 0x400103, 0x696202, 0x700098e, 0x7000997, 0x6a0120 }, - { 1600, 1200, 100, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x50, 0xc2d0, 0x2, 0x50, 0x1, 0xc350, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x50, 0x400103, 0x366102, 0x400103, 0x366102, 0x6400866, 0x6400870, 0x500120 }, - { 1920, 1200, 85, 0xa40, 0xd0, 0x160, 0x4ee, 0x6, 0x35, 0x5e, 0xc800, 0x3, 0x5e, 0x2, 0xc964, 0x7800a40, 0xd00231, 0x4b004ee, 0x3c6003c, 0x5e, 0x320102, 0x716202, 0x320102, 0x716202, 0x7800a4a, 0x7800a45, 0x5e0120 }, - { 1856, 1392, 75, 0xa00, 0xe0, 0x160, 0x5dc, 0x3, 0x68, 0x6a, 0xcbe4, 0x6, 0x6a, 0x5, 0xcd34, 0x7400a00, 0xe00241, 0x57005dc, 0x6c3006c, 0x6a, 0x320102, 0x736202, 0x320102, 0x3a6102, 0x7400a0a, 0x7400a01, 0x6a0120 }, - { 1920, 1440, 75, 0xa50, 0xe0, 0x160, 0x5dc, 0x3, 0x38, 0x6a, 0xd3c4, 0x3, 0x6a, 0x2, 0xd444, 0x7800a50, 0xe00241, 0x5a005dc, 0x3c3003c, 0x6a, 0x320102, 0x776202, 0x320102, 0x3c6102, 0x7800a59, 0x7800a59, 0x6a0120 }, - { 2560, 1600, 60, 0xdb0, 0x118, 0x1d8, 0x67a, 0x6, 0x31, 0x85, 0xf810, 0x3, 0x85, 0x2, 0xf954, 0xa000db0, 0x11802f1, 0x640067a, 0x3860038, 0x85, 0x3a0102, 0x466102, 0x3a0102, 0x466102, 0xa000da6, 0xa000db4, 0x850120 }, - { 2560, 1600, 75, 0xdd0, 0x118, 0x1e8, 0x688, 0x6, 0x3f, 0x6a, 0x139bc, 0x3, 0x6a, 0x2, 0x13b7c, 0xa000dd0, 0x1180301, 0x6400688, 0x4660046, 0x6a, 0x400102, 0x596102, 0x400102, 0x596102, 0xa000dc6, 0xa000dc8, 0x6a0120 }, - { 2560, 1600, 85, 0xdd0, 0x118, 0x1e8, 0x692, 0x6, 0x49, 0x5e, 0x16390, 0x3, 0x5e, 0x2, 0x165e0, 0xa000dd0, 0x1180301, 0x6400692, 0x5060050, 0x5e, 0x400102, 0x646102, 0x400102, 0x646102, 0xa000dc6, 0xa000dc6, 0x5e0120 }, - { 1920, 1080, 24, 0xac0, 0x30, 0x90, 0x465, 0x5, 0x24, 0x14d, 0x32a0, 0xb, 0x14d, 0xa, 0x32b0, 0x7800ac0, 0x3000c1, 0x4380465, 0x2a5002a, 0x14d, 0x3e010a, 0x346107, 0x3e010a, 0x776208, 0x7800ac0, 0x7800ac0, 0x14d0120 }, - { 1600, 900, 60, 0x708, 0x50, 0x60, 0x3e8, 0x3, 0x60, 0x85, 0x5dc0, 0xc, 0x85, 0xb, 0x5e00, 0x6400708, 0x5000b1, 0x38403e8, 0x6430064, 0x85, 0x360106, 0x616109, 0x360106, 0x416106, 0x6400704, 0x6400709, 0x850120 }, - { 1280, 600, 60, 0x670, 0x80, 0xb8, 0x26e, 0x3, 0x12, 0x85, 0x2e84, 0x3, 0x85, 0x2, 0x2ec8, 0x5000670, 0x800139, 0x258026e, 0x1630016, 0x85, 0x33010a, 0x7b620a, 0x3e010c, 0x254106, 0x5000679, 0x5000670, 0x850120 }, - { 854, 480, 15, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x215, 0x67c, 0x1e, 0x215, 0x1e, 0x67c, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x215, 0x40015b, 0x1b4120, 0x390151, 0x67623d, 0x3560440, 0x3560440, 0x2150120 }, - { 854, 480, 60, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x85, 0x19d4, 0x6, 0x85, 0x6, 0x19f0, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x85, 0x3b0115, 0x1b4108, 0x3e0116, 0x736211, 0x3560440, 0x3560440, 0x850120 }, - { 854, 480, 56, 0x41f, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x8e, 0x1938, 0x7, 0x8e, 0x6, 0x1948, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x8e, 0x350114, 0x59611c, 0x380115, 0x20410a, 0x3560420, 0x3560420, 0x8e0120 }, - { 854, 480, 30, 0x41f, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x10a, 0xd78, 0xe, 0x10a, 0xe, 0xd80, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x10a, 0x3d012b, 0x3f6125, 0x40012d, 0x63613a, 0x356041f, 0x356041f, 0x10a0120 }, - { 854, 480, 24, 0x527, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x14d, 0xac0, 0x12, 0x14d, 0x12, 0xac8, 0x3560527, 0x3d009b, 0x1e0021a, 0x2130021, 0x14d, 0x3d012b, 0x6d6220, 0x360126, 0x4b612c, 0x3560527, 0x3560527, 0x14d0120 }, - { 2048, 1152, 60, 0x8a0, 0x20, 0x50, 0x4a1, 0x5, 0x19, 0x85, 0x8dcc, 0x2, 0x85, 0x1, 0x8e90, 0x80008a0, 0x200071, 0x48004a1, 0x1f5001f, 0x85, 0x340104, 0x5e6106, 0x340104, 0x3f6104, 0x8000896, 0x80008a1, 0x850120 }, - { 1920, 1200, 60, 0xa20, 0xd0, 0xe2, 0x4da, 0x3, 0x26, 0x85, 0x8b8c, 0x3, 0x85, 0x2, 0x8c14, 0x7800a20, 0xd001b3, 0x4b004da, 0x2a3002a, 0x85, 0x400104, 0x4d6104, 0x400104, 0x4d6104, 0x7800a16, 0x7800a16, 0x850120 }, - { 1920, 1080, 30, 0x898, 0x2c, 0x94, 0x465, 0x5, 0x24, 0x10a, 0x3f48, 0x8, 0x10a, 0x7, 0x3f74, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x10a, 0x3e010a, 0x346107, 0x3e010a, 0x436109, 0x7800898, 0x7800898, 0x10a0120 }, +struct fl2000_timing_entry const big_table_16bit_r0[] = { + { 640,480,60, 0x320, 0x20d, 0x2800320, 0x600089, 0x1e0020d, 0x1c2001c, 0x3f6119 }, + { 640,480,73, 0x340, 0x208, 0x2800340, 0x2800a1, 0x1e00208, 0x1830018, 0x3c6113 }, + { 640,480,75, 0x348, 0x1f4, 0x2800348, 0x4000b9, 0x1e001f4, 0x1430014, 0x3f6114 }, + { 640,350,85, 0x340, 0x1bd, 0x2800340, 0x4000a1, 0x15e01bd, 0x4030040, 0x6b6211 }, + { 640,400,85, 0x340, 0x1bd, 0x2800340, 0x4000a1, 0x19001bd, 0x2d3002d, 0x6b6211 }, + { 720,400,85, 0x3a8, 0x1be, 0x2d003a8, 0x4800b5, 0x19001be, 0x2e3002e, 0x476114 }, + { 800,600,56, 0x400, 0x271, 0x3200400, 0x4800c9, 0x2580271, 0x1920019, 0x2b410c }, + { 640,480,85, 0x340, 0x1fd, 0x2800340, 0x380089, 0x1e001fd, 0x1d3001d, 0x24410a }, + { 800,600,60, 0x420, 0x274, 0x3200420, 0x8000d9, 0x2580274, 0x1c4001c, 0x80102 }, + { 1024,768,43, 0x4f0, 0x331, 0x40004f0, 0xb000e9, 0x3000331, 0x1940019, 0x476110 }, + { 848,480,60, 0x440, 0x205, 0x3500440, 0x7000e1, 0x1e00205, 0x2080020, 0x1b4108 }, + { 800,600,75, 0x420, 0x271, 0x3200420, 0x5000f1, 0x2580271, 0x1930019, 0x636114 }, + { 800,600,72, 0x410, 0x29a, 0x3200410, 0x7800b9, 0x258029a, 0x1e6001e, 0xa0102 }, + { 800,600,85, 0x418, 0x277, 0x3200418, 0x4000d9, 0x2580277, 0x1f3001f, 0x2d4108 }, + { 1024,768,60, 0x540, 0x326, 0x4000540, 0x880129, 0x3000326, 0x2460024, 0xd2102 }, + { 1280,720,60, 0x672, 0x2ee, 0x5000672, 0x280105, 0x2d002ee, 0x1f5001f, 0x346107 }, + { 1024,768,70, 0x530, 0x326, 0x4000530, 0x880119, 0x3000326, 0x2460024, 0xf2102 }, + { 1024,768,75, 0x520, 0x320, 0x4000520, 0x600111, 0x3000320, 0x2030020, 0x3f6108 }, + { 1280,768,60, 0x680, 0x31e, 0x5000680, 0x800141, 0x300031e, 0x1c7001c, 0x7f6208 }, + { 1152,864,60, 0x640, 0x384, 0x4800640, 0x800181, 0x3600384, 0x2430024, 0x796207 }, + { 1280,800,60, 0x690, 0x33f, 0x5000690, 0x800149, 0x320033f, 0x1d6001d, 0x436108 }, + { 1366,768,60, 0x700, 0x31e, 0x5560700, 0x8f0165, 0x300031e, 0x1c3001c, 0x676206 }, + { 1360,768,60, 0x700, 0x31b, 0x5500700, 0x700171, 0x300031b, 0x1960019, 0x5e610b }, + { 1024,768,85, 0x560, 0x328, 0x4000560, 0x600131, 0x3000328, 0x2830028, 0x556109 }, + { 1280,960,60, 0x708, 0x3e8, 0x5000708, 0x7001a9, 0x3c003e8, 0x2830028, 0x616109 }, + { 1280,768,75, 0x6a0, 0x325, 0x50006a0, 0x800151, 0x3000325, 0x2370023, 0x294104 }, + { 1440,900,60, 0x770, 0x3a6, 0x5a00770, 0x980181, 0x38403a6, 0x2060020, 0x406106 }, + { 1280,800,75, 0x6a0, 0x346, 0x50006a0, 0x800151, 0x3200346, 0x2460024, 0x406106 }, + { 1280,1024,60, 0x698, 0x42a, 0x5000698, 0x700169, 0x400042a, 0x2a3002a, 0x616109 }, + { 1280,768,85, 0x6b0, 0x329, 0x50006b0, 0x880161, 0x3000329, 0x2770027, 0x2f4104 }, + { 1400,1050,60, 0x748, 0x441, 0x5780748, 0x900179, 0x41a0441, 0x2540025, 0x496106 }, + { 1280,800,85, 0x6b0, 0x34b, 0x50006b0, 0x880161, 0x320034b, 0x2960029, 0x314104 }, + { 1280,1024,75, 0x698, 0x42a, 0x5000698, 0x900189, 0x400042a, 0x2a3002a, 0x1b4102 }, + { 1440,900,75, 0x790, 0x3ae, 0x5a00790, 0x980191, 0x38403ae, 0x2860028, 0x526106 }, + { 1680,1050,60, 0x8c0, 0x441, 0x69008c0, 0xb001c9, 0x41a0441, 0x2560025, 0x756204 }, + { 1920,1080,50, 0xa50, 0x465, 0x7800a50, 0x2c00c1, 0x4380465, 0x2a5002a, 0x596106 }, + { 1920,1080,60, 0x898, 0x465, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x596106 }, + { 1280,960,85, 0x6c0, 0x3f3, 0x50006c0, 0xa00181, 0x3c003f3, 0x3330033, 0x596106 }, + { 1400,1050,75, 0x768, 0x44b, 0x5780768, 0x900189, 0x41a044b, 0x2f4002f, 0x7d6204 }, + { 1440,900,85, 0x7a0, 0x3b4, 0x5a007a0, 0x980199, 0x38403b4, 0x2e6002e, 0x3f6104 }, + { 1280,1024,85, 0x6c0, 0x430, 0x50006c0, 0xa00181, 0x4000430, 0x3030030, 0x3f6104 }, + { 1600,1200,60, 0x870, 0x4e2, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x616106 }, + { 1600,1200,65, 0x879, 0x4e2, 0x6400879, 0xc001f1, 0x4b004e2, 0x3230032, 0x234102 }, + { 1400,1050,85, 0x778, 0x451, 0x5780778, 0x980199, 0x41a0451, 0x3540035, 0x244102 }, + { 1680,1050,75, 0x8e0, 0x44b, 0x69008e0, 0xb001d9, 0x41a044b, 0x2f6002f, 0x4b6104 }, + { 1600,1200,70, 0x870, 0x4e2, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x264102 }, + { 1920,1200,60, 0xa20, 0x4dd, 0x7800a20, 0xc80219, 0x4b004dd, 0x2b6002b, 0x4d6104 }, + { 1600,1200,75, 0x870, 0x4e2, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x516104 }, + { 1792,1344,60, 0x9b8, 0x572, 0x70009b8, 0x190043, 0x5400572, 0x3230032, 0x536104 }, + { 1680,1050,85, 0x8f0, 0x451, 0x69008f0, 0xb001e1, 0x41a0451, 0x3560035, 0x2b4102 }, + { 1856,1392,60, 0x9e0, 0x59f, 0x74009e0, 0xe00241, 0x570059f, 0x2f3002f, 0x576104 }, + { 1600,1200,85, 0x870, 0x4e2, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x2e4102 }, + { 1920,1440,60, 0xa28, 0x5dc, 0x7800a28, 0xd00229, 0x5a005dc, 0x3c3003c, 0x2f4102 }, + { 1920,1200,75, 0xa30, 0x4e7, 0x7800a30, 0xd00229, 0x4b004e7, 0x3560035, 0x314102 }, + { 1792,1344,75, 0x998, 0x589, 0x7000998, 0xd80239, 0x5400589, 0x4930049, 0x346102 }, + { 1600,1200,100, 0x870, 0x4e2, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x366102 }, + { 1920,1200,85, 0xa40, 0x4ee, 0x7800a40, 0xd00231, 0x4b004ee, 0x3c6003c, 0x716202 }, + { 1856,1392,75, 0xa00, 0x5dc, 0x7400a00, 0xe00241, 0x57005dc, 0x6c3006c, 0x736202 }, + { 1920,1440,75, 0xa50, 0x5dc, 0x7800a50, 0xe00241, 0x5a005dc, 0x3c3003c, 0x776202 }, + { 2560,1600,60, 0xdb0, 0x67a, 0xa000db0, 0x11802f1, 0x640067a, 0x3860038, 0x466102 }, + { 2560,1600,75, 0xdd0, 0x688, 0xa000dd0, 0x1180301, 0x6400688, 0x4660046, 0x596102 }, + { 2560,1600,85, 0xdd0, 0x692, 0xa000dd0, 0x1180301, 0x6400692, 0x5060050, 0x646102 }, + { 1920,1080,24, 0xac0, 0x465, 0x7800ac0, 0x3000c1, 0x4380465, 0x2a5002a, 0x346107 }, + { 1600,900,60, 0x708, 0x3e8, 0x6400708, 0x5000b1, 0x38403e8, 0x6430064, 0x616109 }, + { 1280,600,60, 0x670, 0x26e, 0x5000670, 0x800139, 0x258026e, 0x1630016, 0x7b620a }, + { 854,480,15, 0x440, 0x205, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x1b4120 }, + { 854,480,60, 0x440, 0x205, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x1b4108 }, + { 854,480,56, 0x41f, 0x21a, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x59611c }, + { 854,480,30, 0x41f, 0x21a, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x3f6125 }, + { 854,480,24, 0x527, 0x21a, 0x3560527, 0x3d009b, 0x1e0021a, 0x2130021, 0x6d6220 }, + { 2048,1152,60, 0x8a0, 0x4a1, 0x80008a0, 0x200071, 0x48004a1, 0x1f5001f, 0x5e6106 }, + { 1920,1200,60, 0xa20, 0x4da, 0x7800a20, 0xd001b3, 0x4b004da, 0x2a3002a, 0x4d6104 }, + { 1920,1080,30, 0x898, 0x465, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x346107 }, }; -struct resolution_entry const big_table_16bit_r1[VGA_BIG_TABLE_SIZE] = -{ - { 640, 480, 60, 0x320, 0x60, 0x28, 0x20d, 0x2, 0x19, 0x85, 0x13b0, 0x5, 0x85, 0x5, 0x13c0, 0x2800320, 0x600089, 0x1e0020d, 0x1c2001c, 0x85, 0x3f011e, 0x3f6119, 0x3f011e, 0x3f6119, 0x2800320, 0x2800320, 0x1900320 }, - { 640, 480, 73, 0x340, 0x28, 0x78, 0x208, 0x3, 0x14, 0x6d, 0x17c4, 0x3, 0x6d, 0x3, 0x17dc, 0x2800340, 0x2800a1, 0x1e00208, 0x1830018, 0x6d, 0x320113, 0x3c6113, 0x320113, 0x3c6113, 0x2800340, 0x2800340, 0x1f404920 }, - { 640, 480, 75, 0x348, 0x40, 0x78, 0x1f4, 0x3, 0x10, 0x6a, 0x1788, 0x3, 0x6a, 0x2, 0x1798, 0x2800348, 0x4000b9, 0x1e001f4, 0x1430014, 0x6a, 0x3f0118, 0x3f6114, 0x3f0118, 0x3f6114, 0x2800348, 0x2800348, 0x1400320 }, - { 640, 350, 85, 0x340, 0x40, 0x60, 0x1bd, 0x3, 0x3c, 0x5e, 0x17a8, 0xc, 0x5e, 0xb, 0x17ac, 0x2800340, 0x4000a1, 0x15e01bd, 0x4030040, 0x5e, 0x3f0118, 0x6b6211, 0x3f0118, 0x6b6211, 0x2800341, 0x2800340, 0x6401120 }, - { 640, 400, 85, 0x340, 0x40, 0x60, 0x1bd, 0x3, 0x29, 0x5e, 0x1788, 0x8, 0x5e, 0x7, 0x17ac, 0x2800340, 0x4000a1, 0x19001bd, 0x2d3002d, 0x5e, 0x3f0118, 0x6b6211, 0x3f0118, 0x6b6211, 0x2800341, 0x2800340, 0x6401120 }, - { 720, 400, 85, 0x3a8, 0x48, 0x6c, 0x1be, 0x3, 0x2a, 0x5e, 0x1a7c, 0x8, 0x5e, 0x7, 0x1ab4, 0x2d003a8, 0x4800b5, 0x19001be, 0x2e3002e, 0x5e, 0x3e0115, 0x476114, 0x3e0115, 0x476114, 0x2d003a7, 0x2d003a8, 0x6401120 }, - { 800, 600, 56, 0x400, 0x48, 0x80, 0x271, 0x2, 0x16, 0x8e, 0x1b60, 0x4, 0x8e, 0x3, 0x1b84, 0x3200400, 0x4800c9, 0x2580271, 0x1920019, 0x8e, 0x330111, 0x2b410c, 0x330111, 0x2b410c, 0x3200405, 0x3200400, 0x3e80720 }, - { 640, 480, 85, 0x340, 0x38, 0x50, 0x1fd, 0x3, 0x19, 0x5e, 0x1af8, 0x4, 0x5e, 0x3, 0x1b14, 0x2800340, 0x380089, 0x1e001fd, 0x1d3001d, 0x5e, 0x330111, 0x24410a, 0x330111, 0x24410a, 0x2800340, 0x2800340, 0x6401120 }, - { 800, 600, 60, 0x420, 0x80, 0x58, 0x274, 0x4, 0x17, 0x85, 0x1d4c, 0x4, 0x85, 0x3, 0x1d84, 0x3200420, 0x8000d9, 0x2580274, 0x1c4001c, 0x85, 0x3f0113, 0x80102, 0x3f0113, 0x77620f, 0x3200420, 0x320041d, 0x1900320 }, - { 1024, 768, 43, 0x4f0, 0xb0, 0x38, 0x331, 0x4, 0x14, 0xba, 0x231c, 0x4, 0xba, 0x3, 0x2324, 0x40004f0, 0xb000e9, 0x3000331, 0x1940019, 0xba, 0x3f0111, 0x476110, 0x3f0111, 0x284109, 0x40004f2, 0x40004f1, 0x1f402b20 }, - { 848, 480, 60, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x85, 0x19a8, 0x6, 0x85, 0x6, 0x19c4, 0x3500440, 0x7000e1, 0x1e00205, 0x2080020, 0x85, 0x3b0115, 0x1b4108, 0x3b0115, 0x1b4108, 0x350043f, 0x3500440, 0x1900320 }, - { 800, 600, 75, 0x420, 0x50, 0xa0, 0x271, 0x3, 0x15, 0x6a, 0x24c4, 0x3, 0x6a, 0x2, 0x24dc, 0x3200420, 0x5000f1, 0x2580271, 0x1930019, 0x6a, 0x3e010f, 0x636114, 0x3e010f, 0x636114, 0x3200422, 0x3200420, 0x1400320 }, - { 800, 600, 72, 0x410, 0x78, 0x40, 0x29a, 0x6, 0x17, 0x6f, 0x2524, 0x3, 0x6f, 0x3, 0x2580, 0x3200410, 0x7800b9, 0x258029a, 0x1e6001e, 0x6f, 0x36010d, 0xa0102, 0x36010d, 0xa0102, 0x3200410, 0x3200413, 0x3e80920 }, - { 800, 600, 85, 0x418, 0x40, 0x98, 0x277, 0x3, 0x1b, 0x5e, 0x29ac, 0x3, 0x5e, 0x2, 0x29f8, 0x3200418, 0x4000d9, 0x2580277, 0x1f3001f, 0x5e, 0x3d010d, 0x2d4108, 0x3d010d, 0x2d4108, 0x320041a, 0x3200419, 0x6401120 }, - { 1024, 768, 60, 0x540, 0x88, 0xa0, 0x326, 0x6, 0x1d, 0x85, 0x3064, 0x4, 0x85, 0x4, 0x307c, 0x4000540, 0x880129, 0x3000326, 0x2460024, 0x85, 0x36010a, 0xd2102, 0x36010a, 0xd2102, 0x400053c, 0x4000540, 0x1900320 }, - { 1280, 720, 60, 0x672, 0x28, 0xdc, 0x2ee, 0x5, 0x19, 0x85, 0x3840, 0x4, 0x85, 0x3, 0x3868, 0x5000672, 0x280105, 0x2d002ee, 0x1f5001f, 0x85, 0x3e010a, 0x346107, 0x3e010a, 0x346107, 0x5000675, 0x5000672, 0x1900320 }, - { 1024, 768, 70, 0x530, 0x88, 0x90, 0x326, 0x6, 0x1d, 0x72, 0x3860, 0x3, 0x72, 0x3, 0x3890, 0x4000530, 0x880119, 0x3000326, 0x2460024, 0x72, 0x320108, 0xf2102, 0x320108, 0xf2102, 0x4000531, 0x4000531, 0x3200720 }, - { 1024, 768, 75, 0x520, 0x60, 0xb0, 0x320, 0x3, 0x1c, 0x6a, 0x3c40, 0x3, 0x6a, 0x2, 0x3c64, 0x4000520, 0x600111, 0x3000320, 0x2030020, 0x6a, 0x3b0109, 0x3f6108, 0x3b0109, 0x3f6108, 0x400051f, 0x4000520, 0x1400320 }, - { 1280, 768, 60, 0x680, 0x80, 0xc0, 0x31e, 0x7, 0x14, 0x85, 0x3c00, 0x3, 0x85, 0x2, 0x3c00, 0x5000680, 0x800141, 0x300031e, 0x1c7001c, 0x85, 0x350108, 0x7f6208, 0x350108, 0x7f6208, 0x500067d, 0x500067a, 0x1900320 }, - { 1152, 864, 60, 0x640, 0x80, 0x100, 0x384, 0x3, 0x20, 0x85, 0x3cc0, 0x4, 0x85, 0x3, 0x3ce8, 0x4800640, 0x800181, 0x3600384, 0x2430024, 0x85, 0x3a0108, 0x796207, 0x3a0108, 0x796207, 0x480064a, 0x4800640, 0x1900320 }, - { 1280, 800, 60, 0x690, 0x80, 0xc8, 0x33f, 0x6, 0x16, 0x85, 0x3e04, 0x3, 0x85, 0x2, 0x3e7c, 0x5000690, 0x800149, 0x320033f, 0x1d6001d, 0x85, 0x380108, 0x436108, 0x380108, 0x436108, 0x5000694, 0x5000690, 0x1900320 }, - { 1366, 768, 60, 0x700, 0x8f, 0xd5, 0x31e, 0x3, 0x18, 0x85, 0x4008, 0x3, 0x85, 0x2, 0x4008, 0x5560700, 0x8f0165, 0x300031e, 0x1c3001c, 0x85, 0x320107, 0x676206, 0x320107, 0x676206, 0x55606ff, 0x5560700, 0x1900320 }, - { 1360, 768, 60, 0x700, 0x70, 0x100, 0x31b, 0x6, 0x12, 0x85, 0x3f44, 0x3, 0x85, 0x2, 0x3f84, 0x5500700, 0x700171, 0x300031b, 0x1960019, 0x85, 0x390108, 0x5e610b, 0x390108, 0x5e610b, 0x5500700, 0x5500700, 0x1900320 }, - { 1024, 768, 85, 0x560, 0x60, 0xd0, 0x328, 0x3, 0x24, 0x5e, 0x4448, 0x3, 0x5e, 0x2, 0x44c8, 0x4000560, 0x600131, 0x3000328, 0x2830028, 0x5e, 0x3f0108, 0x556109, 0x3f0108, 0x556109, 0x4000560, 0x400055f, 0x6401120 }, - { 1280, 960, 60, 0x708, 0x70, 0x138, 0x3e8, 0x3, 0x24, 0x85, 0x4b00, 0x4, 0x85, 0x3, 0x4b34, 0x5000708, 0x7001a9, 0x3c003e8, 0x2830028, 0x85, 0x360106, 0x616109, 0x360106, 0x616109, 0x5000708, 0x5000705, 0x1900320 }, - { 1280, 768, 75, 0x6a0, 0x80, 0xd0, 0x325, 0x7, 0x1b, 0x6a, 0x4b4c, 0x3, 0x6a, 0x2, 0x4bf4, 0x50006a0, 0x800151, 0x3000325, 0x2370023, 0x6a, 0x330106, 0x294104, 0x330106, 0x294104, 0x500069a, 0x50006a1, 0x1400320 }, - { 1440, 900, 60, 0x770, 0x98, 0xe8, 0x3a6, 0x6, 0x19, 0x85, 0x4e80, 0x3, 0x85, 0x2, 0x4f04, 0x5a00770, 0x980181, 0x38403a6, 0x2060020, 0x85, 0x3e0107, 0x406106, 0x3e0107, 0x406106, 0x5a00769, 0x5a00770, 0x1900320 }, - { 1280, 800, 75, 0x6a0, 0x80, 0xd0, 0x346, 0x6, 0x1d, 0x6a, 0x4e70, 0x3, 0x6a, 0x2, 0x4f10, 0x50006a0, 0x800151, 0x3200346, 0x2460024, 0x6a, 0x3e0107, 0x406106, 0x3e0107, 0x406106, 0x500069b, 0x50006a1, 0x1400320 }, - { 1280, 1024, 60, 0x698, 0x70, 0xf8, 0x42a, 0x3, 0x26, 0x85, 0x5000, 0x4, 0x85, 0x3, 0x5028, 0x5000698, 0x700169, 0x400042a, 0x2a3002a, 0x85, 0x360106, 0x616109, 0x360106, 0x616109, 0x5000698, 0x5000695, 0x1900320 }, - { 1280, 768, 85, 0x6b0, 0x88, 0xd8, 0x329, 0x7, 0x1f, 0x5e, 0x5558, 0x3, 0x5e, 0x2, 0x5614, 0x50006b0, 0x880161, 0x3000329, 0x2770027, 0x5e, 0x3b0106, 0x2f4104, 0x3b0106, 0x2f4104, 0x50006b4, 0x50006ad, 0x6401120 }, - { 1400, 1050, 60, 0x748, 0x90, 0xe8, 0x441, 0x4, 0x20, 0x85, 0x5908, 0x3, 0x85, 0x2, 0x5990, 0x5780748, 0x900179, 0x41a0441, 0x2540025, 0x85, 0x3d0106, 0x496106, 0x3d0106, 0x496106, 0x578074b, 0x5780746, 0x1900320 }, - { 1280, 800, 85, 0x6b0, 0x88, 0xd8, 0x34b, 0x6, 0x22, 0x5e, 0x58e4, 0x3, 0x5e, 0x2, 0x59b0, 0x50006b0, 0x880161, 0x320034b, 0x2960029, 0x5e, 0x330105, 0x314104, 0x330105, 0x566107, 0x50006ad, 0x50006b2, 0x6401120 }, - { 1280, 1024, 75, 0x698, 0x90, 0xf8, 0x42a, 0x3, 0x26, 0x6a, 0x6468, 0x3, 0x6a, 0x2, 0x6494, 0x5000698, 0x900189, 0x400042a, 0x2a3002a, 0x6a, 0x380105, 0x1b4102, 0x380105, 0x1b4102, 0x5000691, 0x5000698, 0x1400320 }, - { 1440, 900, 75, 0x790, 0x98, 0xf8, 0x3ae, 0x6, 0x21, 0x6a, 0x6344, 0x3, 0x6a, 0x2, 0x63fc, 0x5a00790, 0x980191, 0x38403ae, 0x2860028, 0x6a, 0x390105, 0x526106, 0x390105, 0x526106, 0x5a00790, 0x5a0078f, 0x1400320 }, - { 1680, 1050, 60, 0x8c0, 0xb0, 0x118, 0x441, 0x6, 0x1e, 0x85, 0x6ad8, 0x3, 0x85, 0x2, 0x6b78, 0x69008c0, 0xb001c9, 0x41a0441, 0x2560025, 0x85, 0x3d0105, 0x756204, 0x3d0105, 0x756204, 0x69008c0, 0x69008bf, 0x1900320 }, - { 1920, 1080, 50, 0xa50, 0x2c, 0x94, 0x465, 0x5, 0x24, 0xa0, 0x6934, 0x4, 0xa0, 0x4, 0x6978, 0x7800a50, 0x2c00c1, 0x4380465, 0x2a5002a, 0xa0, 0x3e0105, 0x596106, 0x3e0105, 0x596106, 0x7800a55, 0x7800a4e, 0xa00120 }, - { 1920, 1080, 60, 0x898, 0x2c, 0x94, 0x465, 0x5, 0x24, 0x85, 0x7e90, 0x3, 0x85, 0x3, 0x7ee4, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x85, 0x3e0105, 0x596106, 0x3e0105, 0x596106, 0x780089c, 0x7800896, 0x1900320 }, - { 1280, 960, 85, 0x6c0, 0xa0, 0xe0, 0x3f3, 0x3, 0x2f, 0x5e, 0x6aac, 0x3, 0x5e, 0x2, 0x6b90, 0x50006c0, 0xa00181, 0x3c003f3, 0x3330033, 0x5e, 0x3e0105, 0x596106, 0x3e0105, 0x596106, 0x50006c3, 0x50006be, 0x6401120 }, - { 1400, 1050, 75, 0x768, 0x90, 0xf8, 0x44b, 0x4, 0x2a, 0x6a, 0x7098, 0x3, 0x6a, 0x2, 0x7168, 0x5780768, 0x900189, 0x41a044b, 0x2f4002f, 0x6a, 0x340104, 0x7d6204, 0x340104, 0x7d6204, 0x5780765, 0x5780768, 0x1400320 }, - { 1440, 900, 85, 0x7a0, 0x98, 0x100, 0x3b4, 0x6, 0x27, 0x5e, 0x7080, 0x3, 0x5e, 0x2, 0x7178, 0x5a007a0, 0x980199, 0x38403b4, 0x2e6002e, 0x5e, 0x340104, 0x3f6104, 0x340104, 0x3f6104, 0x5a00796, 0x5a007a2, 0x6401120 }, - { 1280, 1024, 85, 0x6c0, 0xa0, 0xe0, 0x430, 0x3, 0x2c, 0x5e, 0x71c8, 0x3, 0x5e, 0x2, 0x720c, 0x50006c0, 0xa00181, 0x4000430, 0x3030030, 0x5e, 0x340104, 0x3f6104, 0x340104, 0x3f6104, 0x50006b6, 0x50006c0, 0x6401120 }, - { 1600, 1200, 60, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x85, 0x7530, 0x4, 0x85, 0x3, 0x757c, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x85, 0x360104, 0x616106, 0x360104, 0x616106, 0x6400870, 0x640086c, 0x1900320 }, - { 1600, 1200, 65, 0x879, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x7b, 0x7e10, 0x3, 0x7b, 0x3, 0x7f0c, 0x6400879, 0xc001f1, 0x4b004e2, 0x3230032, 0x7b, 0x3b0104, 0x234102, 0x3b0104, 0x234102, 0x6400882, 0x640086f, 0x6400d20 }, - { 1400, 1050, 85, 0x778, 0x98, 0x100, 0x451, 0x4, 0x30, 0x5e, 0x7f9c, 0x3, 0x5e, 0x2, 0x8094, 0x5780778, 0x980199, 0x41a0451, 0x3540035, 0x5e, 0x3c0104, 0x244102, 0x3c0104, 0x244102, 0x578077c, 0x578077c, 0x6401120 }, - { 1680, 1050, 75, 0x8e0, 0xb0, 0x128, 0x44b, 0x6, 0x28, 0x6a, 0x8720, 0x3, 0x6a, 0x2, 0x8818, 0x69008e0, 0xb001d9, 0x41a044b, 0x2f6002f, 0x6a, 0x3e0104, 0x4b6104, 0x3e0104, 0x4b6104, 0x69008d6, 0x69008e2, 0x1400320 }, - { 1600, 1200, 70, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x72, 0x8860, 0x3, 0x72, 0x2, 0x8910, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x72, 0x3f0104, 0x264102, 0x3f0104, 0x264102, 0x6400870, 0x640087a, 0x3200720 }, - { 1920, 1200, 60, 0xa20, 0xc8, 0x150, 0x4dd, 0x6, 0x24, 0x85, 0x8b8c, 0x3, 0x85, 0x2, 0x8c6c, 0x7800a20, 0xc80219, 0x4b004dd, 0x2b6002b, 0x85, 0x400104, 0x4d6104, 0x400104, 0x4d6104, 0x7800a16, 0x7800a16, 0x1900320 }, - { 1600, 1200, 75, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x6a, 0x9310, 0x3, 0x6a, 0x2, 0x9368, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x6a, 0x330103, 0x516104, 0x330103, 0x516104, 0x640087a, 0x6400870, 0x1400320 }, - { 1792, 1344, 60, 0x9b8, 0x19, 0x29, 0x572, 0x3, 0x2e, 0x85, 0x91e0, 0x3, 0x85, 0x2, 0x92c0, 0x70009b8, 0x190043, 0x5400572, 0x3230032, 0x85, 0x340103, 0x536104, 0x340103, 0x536104, 0x70009b8, 0x70009b2, 0x1900320 }, - { 1680, 1050, 85, 0x8f0, 0xb0, 0x130, 0x451, 0x6, 0x2e, 0x5e, 0x9920, 0x3, 0x5e, 0x2, 0x9a4c, 0x69008f0, 0xb001e1, 0x41a0451, 0x3560035, 0x5e, 0x360103, 0x2b4102, 0x360103, 0x2b4102, 0x69008fa, 0x69008f0, 0x6401120 }, - { 1856, 1392, 60, 0x9e0, 0xe0, 0x160, 0x59f, 0x3, 0x2b, 0x85, 0x9c78, 0x3, 0x85, 0x2, 0x9ce4, 0x74009e0, 0xe00241, 0x570059f, 0x2f3002f, 0x85, 0x370103, 0x576104, 0x370103, 0x576104, 0x74009ea, 0x74009d8, 0x1900320 }, - { 1600, 1200, 85, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x5e, 0xa4d8, 0x2, 0x5e, 0x1, 0xa63c, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x5e, 0x390103, 0x2e4102, 0x390103, 0x2e4102, 0x6400866, 0x6400874, 0x6401120 }, - { 1920, 1440, 60, 0xa28, 0xd0, 0x158, 0x5dc, 0x3, 0x38, 0x85, 0xa8c0, 0x4, 0x85, 0x3, 0xa930, 0x7800a28, 0xd00229, 0x5a005dc, 0x3c3003c, 0x85, 0x3a0103, 0x2f4102, 0x3b0103, 0x2f4102, 0x7800a32, 0x7800a32, 0x1900320 }, - { 1920, 1200, 75, 0xa30, 0xd0, 0x158, 0x4e7, 0x6, 0x2e, 0x6a, 0xb07c, 0x3, 0x6a, 0x2, 0xb19c, 0x7800a30, 0xd00229, 0x4b004e7, 0x3560035, 0x6a, 0x3d0103, 0x314102, 0x3d0103, 0x314102, 0x7800a26, 0x7800a2c, 0x1400320 }, - { 1792, 1344, 75, 0x998, 0xd8, 0x160, 0x589, 0x3, 0x45, 0x6a, 0xba50, 0x4, 0x6a, 0x3, 0xbb28, 0x7000998, 0xd80239, 0x5400589, 0x4930049, 0x6a, 0x400103, 0x346102, 0x400103, 0x346102, 0x700098e, 0x700098f, 0x1400320 }, - { 1600, 1200, 100, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x50, 0xc2d0, 0x2, 0x50, 0x1, 0xc350, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x50, 0x400103, 0x366102, 0x400103, 0x366102, 0x6400866, 0x6400870, 0x500120 }, - { 1920, 1200, 85, 0xa40, 0xd0, 0x160, 0x4ee, 0x6, 0x35, 0x5e, 0xc800, 0x3, 0x5e, 0x2, 0xc964, 0x7800a40, 0xd00231, 0x4b004ee, 0x3c6003c, 0x5e, 0x320102, 0x716202, 0x320102, 0x716202, 0x7800a4a, 0x7800a49, 0x6401120 }, - { 1856, 1392, 75, 0xa00, 0xe0, 0x160, 0x5dc, 0x3, 0x68, 0x6a, 0xcbe4, 0x6, 0x6a, 0x5, 0xcd34, 0x7400a00, 0xe00241, 0x57005dc, 0x6c3006c, 0x6a, 0x320102, 0x736202, 0x320102, 0x736202, 0x7400a0a, 0x74009fc, 0x1400320 }, - { 1920, 1440, 75, 0xa50, 0xe0, 0x160, 0x5dc, 0x3, 0x38, 0x6a, 0xd3c4, 0x3, 0x6a, 0x2, 0xd444, 0x7800a50, 0xe00241, 0x5a005dc, 0x3c3003c, 0x6a, 0x320102, 0x776202, 0x320102, 0x776202, 0x7800a5a, 0x7800a54, 0x1400320 }, - { 2560, 1600, 60, 0xdb0, 0x118, 0x1d8, 0x67a, 0x6, 0x31, 0x85, 0xf810, 0x3, 0x85, 0x2, 0xf954, 0xa000db0, 0x11802f1, 0x640067a, 0x3860038, 0x85, 0x3a0102, 0x466102, 0x3a0102, 0x466102, 0xa000dab, 0xa000dba, 0x1900320 }, - { 2560, 1600, 75, 0xdd0, 0x118, 0x1e8, 0x688, 0x6, 0x3f, 0x6a, 0x139bc, 0x3, 0x6a, 0x2, 0x13b7c, 0xa000dd0, 0x1180301, 0x6400688, 0x4660046, 0x6a, 0x400102, 0x596102, 0x400102, 0x596102, 0xa000dc6, 0xa000dda, 0x1400320 }, - { 2560, 1600, 85, 0xdd0, 0x118, 0x1e8, 0x692, 0x6, 0x49, 0x5e, 0x16390, 0x3, 0x5e, 0x2, 0x165e0, 0xa000dd0, 0x1180301, 0x6400692, 0x5060050, 0x5e, 0x400102, 0x646102, 0x400102, 0x646102, 0xa000dc6, 0xa000dc6, 0x6401120 }, - { 1920, 1080, 24, 0xac0, 0x30, 0x90, 0x465, 0x5, 0x24, 0x14d, 0x32a0, 0xb, 0x14d, 0xa, 0x32b0, 0x7800ac0, 0x3000c1, 0x4380465, 0x2a5002a, 0x14d, 0x3e010a, 0x346107, 0x3e010a, 0x346107, 0x7800ac3, 0x7800ac0, 0x3e80320 }, - { 1600, 900, 60, 0x708, 0x50, 0x60, 0x3e8, 0x3, 0x60, 0x85, 0x5dc0, 0xc, 0x85, 0xb, 0x5e00, 0x6400708, 0x5000b1, 0x38403e8, 0x6430064, 0x85, 0x360106, 0x616109, 0x360106, 0x616109, 0x6400708, 0x6400705, 0x1900320 }, - { 1280, 600, 60, 0x670, 0x80, 0xb8, 0x26e, 0x3, 0x12, 0x85, 0x2e84, 0x3, 0x85, 0x2, 0x2ec8, 0x5000670, 0x800139, 0x258026e, 0x1630016, 0x85, 0x33010a, 0x7b620a, 0x33010a, 0x7b620a, 0x5000668, 0x5000670, 0x1900320 }, - { 854, 480, 15, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x215, 0x67c, 0x1e, 0x215, 0x1e, 0x67c, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x215, 0x40015b, 0x1b4120, 0x40015b, 0x1b4120, 0x3560440, 0x3560440, 0x6400320 }, - { 854, 480, 60, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x85, 0x19d4, 0x6, 0x85, 0x6, 0x19f0, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x85, 0x3b0115, 0x1b4108, 0x3b0115, 0x1b4108, 0x356043f, 0x3560440, 0x1900320 }, - { 854, 480, 56, 0x41f, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x8e, 0x1938, 0x7, 0x8e, 0x6, 0x1948, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x8e, 0x350114, 0x59611c, 0x350114, 0x59611c, 0x356041f, 0x356041f, 0x3e80720 }, - { 854, 480, 30, 0x41f, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x10a, 0xd78, 0xe, 0x10a, 0xe, 0xd80, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x10a, 0x3d012b, 0x3f6125, 0x3d012b, 0x3f6125, 0x356041f, 0x356041f, 0x3200320 }, - { 854, 480, 24, 0x527, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x14d, 0xac0, 0x12, 0x14d, 0x12, 0xac8, 0x3560527, 0x3d009b, 0x1e0021a, 0x2130021, 0x14d, 0x3d012b, 0x6d6220, 0x3d012b, 0x6d6220, 0x3560527, 0x3560527, 0x3e80320 }, - { 2048, 1152, 60, 0x8a0, 0x20, 0x50, 0x4a1, 0x5, 0x19, 0x85, 0x8dcc, 0x2, 0x85, 0x1, 0x8e90, 0x80008a0, 0x200071, 0x48004a1, 0x1f5001f, 0x85, 0x340104, 0x5e6106, 0x340104, 0x5e6106, 0x8000896, 0x800089c, 0x1900320 }, - { 1920, 1200, 60, 0xa20, 0xd0, 0xe2, 0x4da, 0x3, 0x26, 0x85, 0x8b8c, 0x3, 0x85, 0x2, 0x8c14, 0x7800a20, 0xd001b3, 0x4b004da, 0x2a3002a, 0x85, 0x400104, 0x4d6104, 0x400104, 0x4d6104, 0x7800a16, 0x7800a18, 0x1900320 }, - { 1920, 1080, 30, 0x898, 0x2c, 0x94, 0x465, 0x5, 0x24, 0x10a, 0x3f48, 0x8, 0x10a, 0x7, 0x3f74, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x10a, 0x3e010a, 0x346107, 0x3e010a, 0x346107, 0x780089c, 0x7800898, 0x3200320 }, -}; - -struct resolution_entry const big_table_8bit_r0[VGA_BIG_TABLE_SIZE] = -{ - { 640, 480, 60, 0x320, 0x60, 0x28, 0x20d, 0x2, 0x19, 0x85, 0x9d8, 0x5, 0x85, 0x5, 0x9e0, 0x2800320, 0x600089, 0x1e0020d, 0x1c2001c, 0x85, 0x3f011e, 0x3f6119, 0x3b011c, 0x304113, 0x2800321, 0x2800320, 0x850120 }, - { 640, 480, 73, 0x340, 0x28, 0x78, 0x208, 0x3, 0x14, 0x6d, 0xbe4, 0x3, 0x6d, 0x3, 0xbf0, 0x2800340, 0x2800a1, 0x1e00208, 0x1830018, 0x6d, 0x320113, 0x3c6113, 0x350114, 0x7f6214, 0x2800341, 0x2800340, 0x6d0120 }, - { 640, 480, 75, 0x348, 0x40, 0x78, 0x1f4, 0x3, 0x10, 0x6a, 0xbc4, 0x3, 0x6a, 0x2, 0xbcc, 0x2800348, 0x4000b9, 0x1e001f4, 0x1430014, 0x6a, 0x3f0118, 0x3f6114, 0x3a0116, 0x496117, 0x2800346, 0x2800349, 0x6a0120 }, - { 640, 350, 85, 0x340, 0x40, 0x60, 0x1bd, 0x3, 0x3c, 0x5e, 0xbd4, 0xc, 0x5e, 0xb, 0xbd8, 0x2800340, 0x4000a1, 0x15e01bd, 0x4030040, 0x5e, 0x3f0118, 0x6b6211, 0x3f0118, 0x3f6114, 0x2800340, 0x2800340, 0x5e0120 }, - { 640, 400, 85, 0x340, 0x40, 0x60, 0x1bd, 0x3, 0x29, 0x5e, 0xbc4, 0x8, 0x5e, 0x7, 0xbd8, 0x2800340, 0x4000a1, 0x19001bd, 0x2d3002d, 0x5e, 0x3f0118, 0x6b6211, 0x3f0118, 0x3f6114, 0x2800340, 0x2800340, 0x5e0120 }, - { 720, 400, 85, 0x3a8, 0x48, 0x6c, 0x1be, 0x3, 0x2a, 0x5e, 0xd40, 0x8, 0x5e, 0x7, 0xd5c, 0x2d003a8, 0x4800b5, 0x19001be, 0x2e3002e, 0x5e, 0x3e0115, 0x476114, 0x3e0115, 0x204109, 0x2d003a5, 0x2d003a9, 0x5e0120 }, - { 800, 600, 56, 0x400, 0x48, 0x80, 0x271, 0x2, 0x16, 0x8e, 0xdb0, 0x4, 0x8e, 0x3, 0xdc4, 0x3200400, 0x4800c9, 0x2580271, 0x1920019, 0x8e, 0x330111, 0x2b410c, 0x330111, 0x65620e, 0x32003fe, 0x3200400, 0x8e0120 }, - { 640, 480, 85, 0x340, 0x38, 0x50, 0x1fd, 0x3, 0x19, 0x5e, 0xd7c, 0x4, 0x5e, 0x3, 0xd8c, 0x2800340, 0x380089, 0x1e001fd, 0x1d3001d, 0x5e, 0x330111, 0x24410a, 0x330111, 0x536117, 0x280033f, 0x2800341, 0x5e0120 }, - { 800, 600, 60, 0x420, 0x80, 0x58, 0x274, 0x4, 0x17, 0x85, 0xea8, 0x4, 0x85, 0x3, 0xec4, 0x3200420, 0x8000d9, 0x2580274, 0x1c4001c, 0x85, 0x3f0113, 0x7f6210, 0x32010f, 0x80102, 0x3200423, 0x3200423, 0x850120 }, - { 1024, 768, 43, 0x4f0, 0xb0, 0x38, 0x331, 0x4, 0x14, 0xba, 0x1190, 0x4, 0xba, 0x3, 0x1194, 0x40004f0, 0xb000e9, 0x3000331, 0x1940019, 0xba, 0x3f0111, 0x476110, 0x3f0111, 0x284109, 0x40004f1, 0x40004f1, 0xba0120 }, - { 848, 480, 60, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x85, 0xcd4, 0x6, 0x85, 0x6, 0xce4, 0x3500440, 0x7000e1, 0x1e00205, 0x2080020, 0x85, 0x3b0115, 0x1b4108, 0x3e0116, 0x736211, 0x3500440, 0x3500440, 0x850120 }, - { 800, 600, 75, 0x420, 0x50, 0xa0, 0x271, 0x3, 0x15, 0x6a, 0x1264, 0x3, 0x6a, 0x2, 0x1270, 0x3200420, 0x5000f1, 0x2580271, 0x1930019, 0x6a, 0x3e010f, 0x636114, 0x36010d, 0xa0102, 0x3200421, 0x3200424, 0x6a0120 }, - { 800, 600, 72, 0x410, 0x78, 0x40, 0x29a, 0x6, 0x17, 0x6f, 0x12c0, 0x3, 0x6f, 0x3, 0x12c0, 0x3200410, 0x7800b9, 0x258029a, 0x1e6001e, 0x6f, 0x36010d, 0xa0102, 0x32010c, 0xa0102, 0x3200412, 0x3200412, 0x6f0120 }, - { 800, 600, 85, 0x418, 0x40, 0x98, 0x277, 0x3, 0x1b, 0x5e, 0x14d8, 0x3, 0x5e, 0x2, 0x14fc, 0x3200418, 0x4000d9, 0x2580277, 0x1f3001f, 0x5e, 0x3d010d, 0x2d4108, 0x3d010d, 0x2d4108, 0x3200418, 0x3200417, 0x5e0120 }, - { 1024, 768, 60, 0x540, 0x88, 0xa0, 0x326, 0x6, 0x1d, 0x85, 0x1834, 0x4, 0x85, 0x4, 0x1840, 0x4000540, 0x880129, 0x3000326, 0x2460024, 0x85, 0x36010a, 0xd2102, 0x3c010b, 0x62610f, 0x4000546, 0x4000543, 0x850120 }, - { 1280, 720, 60, 0x672, 0x28, 0xdc, 0x2ee, 0x5, 0x19, 0x85, 0x1c20, 0x4, 0x85, 0x3, 0x1c34, 0x5000672, 0x280105, 0x2d002ee, 0x1f5001f, 0x85, 0x3e010a, 0x346107, 0x3e010a, 0x436109, 0x5000672, 0x5000672, 0x850120 }, - { 1024, 768, 70, 0x530, 0x88, 0x90, 0x326, 0x6, 0x1d, 0x72, 0x1c30, 0x3, 0x72, 0x3, 0x1c48, 0x4000530, 0x880119, 0x3000326, 0x2460024, 0x72, 0x320108, 0xf2102, 0x320108, 0xf2102, 0x400052e, 0x400052e, 0x720120 }, - { 1024, 768, 75, 0x520, 0x60, 0xb0, 0x320, 0x3, 0x1c, 0x6a, 0x1e20, 0x3, 0x6a, 0x2, 0x1e34, 0x4000520, 0x600111, 0x3000320, 0x2030020, 0x6a, 0x3b0109, 0x3f6108, 0x350108, 0x6f6207, 0x4000525, 0x4000521, 0x6a0120 }, - { 1280, 768, 60, 0x680, 0x80, 0xc0, 0x31e, 0x7, 0x14, 0x85, 0x1dc8, 0x3, 0x85, 0x2, 0x1e00, 0x5000680, 0x800141, 0x300031e, 0x1c7001c, 0x85, 0x350108, 0x7f6208, 0x3c0109, 0x102102, 0x5000682, 0x5000682, 0x850120 }, - { 1152, 864, 60, 0x640, 0x80, 0x100, 0x384, 0x3, 0x20, 0x85, 0x1e60, 0x4, 0x85, 0x3, 0x1e74, 0x4800640, 0x800181, 0x3600384, 0x2430024, 0x85, 0x3a0108, 0x796207, 0x3a0108, 0x346106, 0x4800647, 0x4800641, 0x850120 }, - { 1280, 800, 60, 0x690, 0x80, 0xc8, 0x33f, 0x6, 0x16, 0x85, 0x1f04, 0x3, 0x85, 0x2, 0x1f40, 0x5000690, 0x800149, 0x320033f, 0x1d6001d, 0x85, 0x380108, 0x436108, 0x380108, 0x54610a, 0x5000690, 0x5000690, 0x850120 }, - { 1366, 768, 60, 0x700, 0x8f, 0xd5, 0x31e, 0x3, 0x18, 0x85, 0x1fc8, 0x3, 0x85, 0x2, 0x2004, 0x5560700, 0x8f0165, 0x300031e, 0x1c3001c, 0x85, 0x320107, 0x676206, 0x320107, 0x56610a, 0x55606fa, 0x5560700, 0x850120 }, - { 1360, 768, 60, 0x700, 0x70, 0x100, 0x31b, 0x6, 0x12, 0x85, 0x1fa4, 0x3, 0x85, 0x2, 0x1fc4, 0x5500700, 0x700171, 0x300031b, 0x1960019, 0x85, 0x390108, 0x5e610b, 0x320107, 0x3c6107, 0x5500700, 0x5500700, 0x850120 }, - { 1024, 768, 85, 0x560, 0x60, 0xd0, 0x328, 0x3, 0x24, 0x5e, 0x2224, 0x3, 0x5e, 0x2, 0x2264, 0x4000560, 0x600131, 0x3000328, 0x2830028, 0x5e, 0x3f0108, 0x556109, 0x3f0108, 0x556109, 0x400055e, 0x400055e, 0x5e0120 }, - { 1280, 960, 60, 0x708, 0x70, 0x138, 0x3e8, 0x3, 0x24, 0x85, 0x2580, 0x4, 0x85, 0x3, 0x259c, 0x5000708, 0x7001a9, 0x3c003e8, 0x2830028, 0x85, 0x360106, 0x616109, 0x360106, 0x416106, 0x5000704, 0x5000709, 0x850120 }, - { 1280, 768, 75, 0x6a0, 0x80, 0xd0, 0x325, 0x7, 0x1b, 0x6a, 0x25a8, 0x3, 0x6a, 0x2, 0x25fc, 0x50006a0, 0x800151, 0x3000325, 0x2370023, 0x6a, 0x330106, 0x294104, 0x3c0107, 0x486107, 0x500069d, 0x500069d, 0x6a0120 }, - { 1440, 900, 60, 0x770, 0x98, 0xe8, 0x3a6, 0x6, 0x19, 0x85, 0x2740, 0x3, 0x85, 0x2, 0x2784, 0x5a00770, 0x980181, 0x38403a6, 0x2060020, 0x85, 0x3e0107, 0x406106, 0x3e0107, 0x4b6107, 0x5a00766, 0x5a00773, 0x850120 }, - { 1280, 800, 75, 0x6a0, 0x80, 0xd0, 0x346, 0x6, 0x1d, 0x6a, 0x2738, 0x3, 0x6a, 0x2, 0x2788, 0x50006a0, 0x800151, 0x3200346, 0x2460024, 0x6a, 0x3e0107, 0x406106, 0x360106, 0x4b6107, 0x50006aa, 0x500069e, 0x6a0120 }, - { 1280, 1024, 60, 0x698, 0x70, 0xf8, 0x42a, 0x3, 0x26, 0x85, 0x2800, 0x4, 0x85, 0x3, 0x2814, 0x5000698, 0x700169, 0x400042a, 0x2a3002a, 0x85, 0x360106, 0x616109, 0x360106, 0x416106, 0x5000695, 0x5000699, 0x850120 }, - { 1280, 768, 85, 0x6b0, 0x88, 0xd8, 0x329, 0x7, 0x1f, 0x5e, 0x2aac, 0x3, 0x5e, 0x2, 0x2b0c, 0x50006b0, 0x880161, 0x3000329, 0x2770027, 0x5e, 0x3b0106, 0x2f4104, 0x3b0106, 0x2f4104, 0x50006b1, 0x50006ab, 0x5e0120 }, - { 1400, 1050, 60, 0x748, 0x90, 0xe8, 0x441, 0x4, 0x20, 0x85, 0x2c84, 0x3, 0x85, 0x2, 0x2cc8, 0x5780748, 0x900179, 0x41a0441, 0x2540025, 0x85, 0x3d0106, 0x496106, 0x3d0106, 0x314104, 0x5780747, 0x578074e, 0x850120 }, - { 1280, 800, 85, 0x6b0, 0x88, 0xd8, 0x34b, 0x6, 0x22, 0x5e, 0x2c74, 0x3, 0x5e, 0x2, 0x2cd8, 0x50006b0, 0x880161, 0x320034b, 0x2960029, 0x5e, 0x330105, 0x314104, 0x330105, 0x566107, 0x50006aa, 0x50006b0, 0x5e0120 }, - { 1280, 1024, 75, 0x698, 0x90, 0xf8, 0x42a, 0x3, 0x26, 0x6a, 0x3234, 0x3, 0x6a, 0x2, 0x324c, 0x5000698, 0x900189, 0x400042a, 0x2a3002a, 0x6a, 0x380105, 0x1b4102, 0x390105, 0x5f6107, 0x50006a2, 0x5000697, 0x6a0120 }, - { 1440, 900, 75, 0x790, 0x98, 0xf8, 0x3ae, 0x6, 0x21, 0x6a, 0x31a4, 0x3, 0x6a, 0x2, 0x3200, 0x5a00790, 0x980191, 0x38403ae, 0x2860028, 0x6a, 0x390105, 0x526106, 0x390105, 0x376104, 0x5a00786, 0x5a0078f, 0x6a0120 }, - { 1680, 1050, 60, 0x8c0, 0xb0, 0x118, 0x441, 0x6, 0x1e, 0x85, 0x356c, 0x3, 0x85, 0x2, 0x35bc, 0x69008c0, 0xb001c9, 0x41a0441, 0x2560025, 0x85, 0x3d0105, 0x756204, 0x3d0105, 0x586106, 0x69008bc, 0x69008c0, 0x850120 }, - { 1920, 1080, 50, 0xa50, 0x2c, 0x94, 0x465, 0x5, 0x24, 0xa0, 0x349c, 0x4, 0xa0, 0x4, 0x34bc, 0x7800a50, 0x2c00c1, 0x4380465, 0x2a5002a, 0xa0, 0x3e0105, 0x596106, 0x3e0105, 0x596106, 0x7800a55, 0x7800a4e, 0xa00120 }, - { 1920, 1080, 60, 0x898, 0x2c, 0x94, 0x465, 0x5, 0x24, 0x85, 0x3f48, 0x3, 0x85, 0x3, 0x3f74, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x85, 0x3e0105, 0x596106, 0x3e0105, 0x776204, 0x7800898, 0x7800897, 0x850120 }, - { 1280, 960, 85, 0x6c0, 0xa0, 0xe0, 0x3f3, 0x3, 0x2f, 0x5e, 0x3558, 0x3, 0x5e, 0x2, 0x35c8, 0x50006c0, 0xa00181, 0x3c003f3, 0x3330033, 0x5e, 0x3e0105, 0x596106, 0x3e0105, 0x776204, 0x50006c1, 0x50006c0, 0x5e0120 }, - { 1400, 1050, 75, 0x768, 0x90, 0xf8, 0x44b, 0x4, 0x2a, 0x6a, 0x384c, 0x3, 0x6a, 0x2, 0x38b4, 0x5780768, 0x900189, 0x41a044b, 0x2f4002f, 0x6a, 0x340104, 0x7d6204, 0x340104, 0x3f6104, 0x578075e, 0x578076a, 0x6a0120 }, - { 1440, 900, 85, 0x7a0, 0x98, 0x100, 0x3b4, 0x6, 0x27, 0x5e, 0x3840, 0x3, 0x5e, 0x2, 0x38bc, 0x5a007a0, 0x980199, 0x38403b4, 0x2e6002e, 0x5e, 0x340104, 0x3f6104, 0x340104, 0x3f6104, 0x5a00796, 0x5a007a0, 0x5e0120 }, - { 1280, 1024, 85, 0x6c0, 0xa0, 0xe0, 0x430, 0x3, 0x2c, 0x5e, 0x38e4, 0x3, 0x5e, 0x2, 0x3908, 0x50006c0, 0xa00181, 0x4000430, 0x3030030, 0x5e, 0x340104, 0x3f6104, 0x350104, 0x3f6104, 0x50006ca, 0x50006bf, 0x5e0120 }, - { 1600, 1200, 60, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x85, 0x3a98, 0x4, 0x85, 0x3, 0x3ac0, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x85, 0x360104, 0x616106, 0x360104, 0x416104, 0x640086b, 0x6400871, 0x850120 }, - { 1600, 1200, 65, 0x879, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x7b, 0x3f08, 0x3, 0x7b, 0x3, 0x3f88, 0x6400879, 0xc001f1, 0x4b004e2, 0x3230032, 0x7b, 0x3b0104, 0x234102, 0x3b0104, 0x476104, 0x6400881, 0x6400883, 0x7b0120 }, - { 1400, 1050, 85, 0x778, 0x98, 0x100, 0x451, 0x4, 0x30, 0x5e, 0x3fd0, 0x3, 0x5e, 0x2, 0x404c, 0x5780778, 0x980199, 0x41a0451, 0x3540035, 0x5e, 0x3c0104, 0x244102, 0x3c0104, 0x244102, 0x578077a, 0x578077a, 0x5e0120 }, - { 1680, 1050, 75, 0x8e0, 0xb0, 0x128, 0x44b, 0x6, 0x28, 0x6a, 0x4390, 0x3, 0x6a, 0x2, 0x440c, 0x69008e0, 0xb001d9, 0x41a044b, 0x2f6002f, 0x6a, 0x3e0104, 0x4b6104, 0x3f0104, 0x4b6104, 0x69008e6, 0x69008d6, 0x6a0120 }, - { 1600, 1200, 70, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x72, 0x4430, 0x3, 0x72, 0x2, 0x4488, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x72, 0x3f0104, 0x264102, 0x3f0104, 0x264102, 0x640086b, 0x6400875, 0x720120 }, - { 1920, 1200, 60, 0xa20, 0xc8, 0x150, 0x4dd, 0x6, 0x24, 0x85, 0x45c8, 0x3, 0x85, 0x2, 0x4638, 0x7800a20, 0xc80219, 0x4b004dd, 0x2b6002b, 0x85, 0x400104, 0x4d6104, 0x400104, 0x274102, 0x7800a16, 0x7800a2a, 0x850120 }, - { 1600, 1200, 75, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x6a, 0x4988, 0x3, 0x6a, 0x2, 0x49b4, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x6a, 0x330103, 0x516104, 0x330103, 0x294102, 0x6400872, 0x640087a, 0x6a0120 }, - { 1792, 1344, 60, 0x9b8, 0x19, 0x29, 0x572, 0x3, 0x2e, 0x85, 0x48f0, 0x3, 0x85, 0x2, 0x4960, 0x70009b8, 0x190043, 0x5400572, 0x3230032, 0x85, 0x340103, 0x536104, 0x340103, 0x536104, 0x70009b1, 0x70009ae, 0x850120 }, - { 1680, 1050, 85, 0x8f0, 0xb0, 0x130, 0x451, 0x6, 0x2e, 0x5e, 0x4c90, 0x3, 0x5e, 0x2, 0x4d28, 0x69008f0, 0xb001e1, 0x41a0451, 0x3560035, 0x5e, 0x360103, 0x2b4102, 0x360103, 0x2b4102, 0x69008f8, 0x69008ef, 0x5e0120 }, - { 1856, 1392, 60, 0x9e0, 0xe0, 0x160, 0x59f, 0x3, 0x2b, 0x85, 0x4e3c, 0x3, 0x85, 0x2, 0x4e74, 0x74009e0, 0xe00241, 0x570059f, 0x2f3002f, 0x85, 0x370103, 0x576104, 0x370103, 0x2c4102, 0x74009ea, 0x74009ea, 0x850120 }, - { 1600, 1200, 85, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x5e, 0x526c, 0x2, 0x5e, 0x1, 0x5320, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x5e, 0x390103, 0x2e4102, 0x390103, 0x2e4102, 0x6400866, 0x6400871, 0x5e0120 }, - { 1920, 1440, 60, 0xa28, 0xd0, 0x158, 0x5dc, 0x3, 0x38, 0x85, 0x5460, 0x4, 0x85, 0x3, 0x5498, 0x7800a28, 0xd00229, 0x5a005dc, 0x3c3003c, 0x85, 0x3a0103, 0x2f4102, 0x3b0103, 0x2f4102, 0x7800a32, 0x7800a2c, 0x850120 }, - { 1920, 1200, 75, 0xa30, 0xd0, 0x158, 0x4e7, 0x6, 0x2e, 0x6a, 0x5840, 0x3, 0x6a, 0x2, 0x58d0, 0x7800a30, 0xd00229, 0x4b004e7, 0x3560035, 0x6a, 0x3d0103, 0x314102, 0x3e0103, 0x636104, 0x7800a3a, 0x7800a34, 0x6a0120 }, - { 1792, 1344, 75, 0x998, 0xd8, 0x160, 0x589, 0x3, 0x45, 0x6a, 0x5d28, 0x4, 0x6a, 0x3, 0x5d94, 0x7000998, 0xd80239, 0x5400589, 0x4930049, 0x6a, 0x400103, 0x346102, 0x400103, 0x696202, 0x700098e, 0x7000997, 0x6a0120 }, - { 1600, 1200, 100, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x50, 0x6168, 0x2, 0x50, 0x1, 0x61a8, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x50, 0x400103, 0x366102, 0x400103, 0x366102, 0x6400866, 0x6400870, 0x500120 }, - { 1920, 1200, 85, 0xa40, 0xd0, 0x160, 0x4ee, 0x6, 0x35, 0x5e, 0x6400, 0x3, 0x5e, 0x2, 0x64b4, 0x7800a40, 0xd00231, 0x4b004ee, 0x3c6003c, 0x5e, 0x320102, 0x716202, 0x320102, 0x716202, 0x7800a4a, 0x7800a45, 0x5e0120 }, - { 1856, 1392, 75, 0xa00, 0xe0, 0x160, 0x5dc, 0x3, 0x68, 0x6a, 0x65f4, 0x6, 0x6a, 0x5, 0x669c, 0x7400a00, 0xe00241, 0x57005dc, 0x6c3006c, 0x6a, 0x320102, 0x736202, 0x320102, 0x3a6102, 0x7400a0a, 0x7400a01, 0x6a0120 }, - { 1920, 1440, 75, 0xa50, 0xe0, 0x160, 0x5dc, 0x3, 0x38, 0x6a, 0x69e4, 0x3, 0x6a, 0x2, 0x6a24, 0x7800a50, 0xe00241, 0x5a005dc, 0x3c3003c, 0x6a, 0x320102, 0x776202, 0x320102, 0x3c6102, 0x7800a59, 0x7800a59, 0x6a0120 }, - { 2560, 1600, 60, 0xdb0, 0x118, 0x1d8, 0x67a, 0x6, 0x31, 0x85, 0x7c08, 0x3, 0x85, 0x2, 0x7cac, 0xa000db0, 0x11802f1, 0x640067a, 0x3860038, 0x85, 0x3a0102, 0x466102, 0x3a0102, 0x466102, 0xa000da6, 0xa000db4, 0x850120 }, - { 2560, 1600, 75, 0xdd0, 0x118, 0x1e8, 0x688, 0x6, 0x3f, 0x6a, 0x9ce0, 0x3, 0x6a, 0x2, 0x9dc0, 0xa000dd0, 0x1180301, 0x6400688, 0x4660046, 0x6a, 0x400102, 0x596102, 0x400102, 0x596102, 0xa000dc6, 0xa000dc8, 0x6a0120 }, - { 2560, 1600, 85, 0xdd0, 0x118, 0x1e8, 0x692, 0x6, 0x49, 0x5e, 0xb1c8, 0x3, 0x5e, 0x2, 0xb2f0, 0xa000dd0, 0x1180301, 0x6400692, 0x5060050, 0x5e, 0x400102, 0x646102, 0x400102, 0x646102, 0xa000dc6, 0xa000dc6, 0x5e0120 }, - { 1920, 1080, 24, 0xac0, 0x30, 0x90, 0x465, 0x5, 0x24, 0x14d, 0x1950, 0xb, 0x14d, 0xa, 0x1958, 0x7800ac0, 0x3000c1, 0x4380465, 0x2a5002a, 0x14d, 0x3e010a, 0x346107, 0x3e010a, 0x776208, 0x7800ac0, 0x7800ac0, 0x14d0120 }, - { 1600, 900, 60, 0x708, 0x50, 0x60, 0x3e8, 0x3, 0x60, 0x85, 0x2ee0, 0xc, 0x85, 0xb, 0x2f00, 0x6400708, 0x5000b1, 0x38403e8, 0x6430064, 0x85, 0x360106, 0x616109, 0x360106, 0x416106, 0x6400704, 0x6400709, 0x850120 }, - { 1280, 600, 60, 0x670, 0x80, 0xb8, 0x26e, 0x3, 0x12, 0x85, 0x1744, 0x3, 0x85, 0x2, 0x1764, 0x5000670, 0x800139, 0x258026e, 0x1630016, 0x85, 0x33010a, 0x7b620a, 0x3e010c, 0x254106, 0x5000679, 0x5000670, 0x850120 }, - { 854, 480, 15, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x215, 0x340, 0x1e, 0x215, 0x1e, 0x340, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x215, 0x40015b, 0x1b4120, 0x390151, 0x67623d, 0x3560440, 0x3560440, 0x2150120 }, - { 854, 480, 60, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x85, 0xcec, 0x6, 0x85, 0x6, 0xcf8, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x85, 0x3b0115, 0x1b4108, 0x3e0116, 0x736211, 0x3560440, 0x3560440, 0x850120 }, - { 854, 480, 56, 0x41f, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x8e, 0xc9c, 0x7, 0x8e, 0x6, 0xca4, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x8e, 0x350114, 0x59611c, 0x380115, 0x20410a, 0x3560420, 0x3560420, 0x8e0120 }, - { 854, 480, 30, 0x41f, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x10a, 0x6bc, 0xe, 0x10a, 0xe, 0x6c0, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x10a, 0x3d012b, 0x3f6125, 0x40012d, 0x63613a, 0x356041f, 0x356041f, 0x10a0120 }, - { 854, 480, 24, 0x527, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x14d, 0x560, 0x12, 0x14d, 0x12, 0x564, 0x3560527, 0x3d009b, 0x1e0021a, 0x2130021, 0x14d, 0x3d012b, 0x6d6220, 0x360126, 0x4b612c, 0x3560527, 0x3560527, 0x14d0120 }, - { 2048, 1152, 60, 0x8a0, 0x20, 0x50, 0x4a1, 0x5, 0x19, 0x85, 0x46e8, 0x2, 0x85, 0x1, 0x4748, 0x80008a0, 0x200071, 0x48004a1, 0x1f5001f, 0x85, 0x340104, 0x5e6106, 0x340104, 0x3f6104, 0x8000896, 0x80008a1, 0x850120 }, - { 1920, 1200, 60, 0xa20, 0xd0, 0xe2, 0x4da, 0x3, 0x26, 0x85, 0x45c8, 0x3, 0x85, 0x2, 0x460c, 0x7800a20, 0xd001b3, 0x4b004da, 0x2a3002a, 0x85, 0x400104, 0x4d6104, 0x400104, 0x4d6104, 0x7800a16, 0x7800a16, 0x850120 }, - { 1920, 1080, 30, 0x898, 0x2c, 0x94, 0x465, 0x5, 0x24, 0x10a, 0x1fa4, 0x8, 0x10a, 0x7, 0x1fbc, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x10a, 0x3e010a, 0x346107, 0x3e010a, 0x436109, 0x7800898, 0x7800898, 0x10a0120 }, -}; - -struct resolution_entry const big_table_8bit_r1[VGA_BIG_TABLE_SIZE] = -{ - { 640, 480, 60, 0x320, 0x60, 0x28, 0x20d, 0x2, 0x19, 0x85, 0x9d8, 0x5, 0x85, 0x5, 0x9e0, 0x2800320, 0x600089, 0x1e0020d, 0x1c2001c, 0x85, 0x3f011e, 0x3f6119, 0x3f011e, 0x3f6119, 0x2800320, 0x2800320, 0x1900320 }, - { 640, 480, 73, 0x340, 0x28, 0x78, 0x208, 0x3, 0x14, 0x6d, 0xbe4, 0x3, 0x6d, 0x3, 0xbf0, 0x2800340, 0x2800a1, 0x1e00208, 0x1830018, 0x6d, 0x320113, 0x3c6113, 0x320113, 0x3c6113, 0x2800340, 0x2800340, 0x1f404920 }, - { 640, 480, 75, 0x348, 0x40, 0x78, 0x1f4, 0x3, 0x10, 0x6a, 0xbc4, 0x3, 0x6a, 0x2, 0xbcc, 0x2800348, 0x4000b9, 0x1e001f4, 0x1430014, 0x6a, 0x3f0118, 0x3f6114, 0x3f0118, 0x3f6114, 0x2800348, 0x2800348, 0x1400320 }, - { 640, 350, 85, 0x340, 0x40, 0x60, 0x1bd, 0x3, 0x3c, 0x5e, 0xbd4, 0xc, 0x5e, 0xb, 0xbd8, 0x2800340, 0x4000a1, 0x15e01bd, 0x4030040, 0x5e, 0x3f0118, 0x6b6211, 0x3f0118, 0x6b6211, 0x2800341, 0x2800340, 0x6401120 }, - { 640, 400, 85, 0x340, 0x40, 0x60, 0x1bd, 0x3, 0x29, 0x5e, 0xbc4, 0x8, 0x5e, 0x7, 0xbd8, 0x2800340, 0x4000a1, 0x19001bd, 0x2d3002d, 0x5e, 0x3f0118, 0x6b6211, 0x3f0118, 0x6b6211, 0x2800341, 0x2800340, 0x6401120 }, - { 720, 400, 85, 0x3a8, 0x48, 0x6c, 0x1be, 0x3, 0x2a, 0x5e, 0xd40, 0x8, 0x5e, 0x7, 0xd5c, 0x2d003a8, 0x4800b5, 0x19001be, 0x2e3002e, 0x5e, 0x3e0115, 0x476114, 0x3e0115, 0x476114, 0x2d003a7, 0x2d003a8, 0x6401120 }, - { 800, 600, 56, 0x400, 0x48, 0x80, 0x271, 0x2, 0x16, 0x8e, 0xdb0, 0x4, 0x8e, 0x3, 0xdc4, 0x3200400, 0x4800c9, 0x2580271, 0x1920019, 0x8e, 0x330111, 0x2b410c, 0x330111, 0x2b410c, 0x3200405, 0x3200400, 0x3e80720 }, - { 640, 480, 85, 0x340, 0x38, 0x50, 0x1fd, 0x3, 0x19, 0x5e, 0xd7c, 0x4, 0x5e, 0x3, 0xd8c, 0x2800340, 0x380089, 0x1e001fd, 0x1d3001d, 0x5e, 0x330111, 0x24410a, 0x330111, 0x24410a, 0x2800340, 0x2800340, 0x6401120 }, - { 800, 600, 60, 0x420, 0x80, 0x58, 0x274, 0x4, 0x17, 0x85, 0xea8, 0x4, 0x85, 0x3, 0xec4, 0x3200420, 0x8000d9, 0x2580274, 0x1c4001c, 0x85, 0x3f0113, 0x7f6210, 0x3f0113, 0x77620f, 0x3200420, 0x320041d, 0x1900320 }, - { 1024, 768, 43, 0x4f0, 0xb0, 0x38, 0x331, 0x4, 0x14, 0xba, 0x1190, 0x4, 0xba, 0x3, 0x1194, 0x40004f0, 0xb000e9, 0x3000331, 0x1940019, 0xba, 0x3f0111, 0x476110, 0x3f0111, 0x284109, 0x40004f2, 0x40004f1, 0x1f402b20 }, - { 848, 480, 60, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x85, 0xcd4, 0x6, 0x85, 0x6, 0xce4, 0x3500440, 0x7000e1, 0x1e00205, 0x2080020, 0x85, 0x3b0115, 0x1b4108, 0x3b0115, 0x1b4108, 0x350043f, 0x3500440, 0x1900320 }, - { 800, 600, 75, 0x420, 0x50, 0xa0, 0x271, 0x3, 0x15, 0x6a, 0x1264, 0x3, 0x6a, 0x2, 0x1270, 0x3200420, 0x5000f1, 0x2580271, 0x1930019, 0x6a, 0x3e010f, 0x636114, 0x3e010f, 0x636114, 0x3200422, 0x3200420, 0x1400320 }, - { 800, 600, 72, 0x410, 0x78, 0x40, 0x29a, 0x6, 0x17, 0x6f, 0x1294, 0x3, 0x6f, 0x3, 0x12c0, 0x3200410, 0x7800b9, 0x258029a, 0x1e6001e, 0x6f, 0x36010d, 0xa0102, 0x36010d, 0xa0102, 0x3200410, 0x3200413, 0x3e80920 }, - { 800, 600, 85, 0x418, 0x40, 0x98, 0x277, 0x3, 0x1b, 0x5e, 0x14d8, 0x3, 0x5e, 0x2, 0x14fc, 0x3200418, 0x4000d9, 0x2580277, 0x1f3001f, 0x5e, 0x3d010d, 0x2d4108, 0x3d010d, 0x2d4108, 0x320041a, 0x3200419, 0x6401120 }, - { 1024, 768, 60, 0x540, 0x88, 0xa0, 0x326, 0x6, 0x1d, 0x85, 0x1834, 0x4, 0x85, 0x4, 0x1840, 0x4000540, 0x880129, 0x3000326, 0x2460024, 0x85, 0x36010a, 0xd2102, 0x36010a, 0xd2102, 0x400053c, 0x4000540, 0x1900320 }, - { 1280, 720, 60, 0x672, 0x28, 0xdc, 0x2ee, 0x5, 0x19, 0x85, 0x1c20, 0x4, 0x85, 0x3, 0x1c34, 0x5000672, 0x280105, 0x2d002ee, 0x1f5001f, 0x85, 0x3e010a, 0x346107, 0x3e010a, 0x346107, 0x5000675, 0x5000672, 0x1900320 }, - { 1024, 768, 70, 0x530, 0x88, 0x90, 0x326, 0x6, 0x1d, 0x72, 0x1c30, 0x3, 0x72, 0x3, 0x1c48, 0x4000530, 0x880119, 0x3000326, 0x2460024, 0x72, 0x320108, 0xf2102, 0x320108, 0xf2102, 0x4000531, 0x4000531, 0x3200720 }, - { 1024, 768, 75, 0x520, 0x60, 0xb0, 0x320, 0x3, 0x1c, 0x6a, 0x1e20, 0x3, 0x6a, 0x2, 0x1e34, 0x4000520, 0x600111, 0x3000320, 0x2030020, 0x6a, 0x3b0109, 0x3f6108, 0x3b0109, 0x3f6108, 0x400051f, 0x4000520, 0x1400320 }, - { 1280, 768, 60, 0x680, 0x80, 0xc0, 0x31e, 0x7, 0x14, 0x85, 0x1e00, 0x3, 0x85, 0x2, 0x1e00, 0x5000680, 0x800141, 0x300031e, 0x1c7001c, 0x85, 0x350108, 0x7f6208, 0x350108, 0x7f6208, 0x500067d, 0x500067a, 0x1900320 }, - { 1152, 864, 60, 0x640, 0x80, 0x100, 0x384, 0x3, 0x20, 0x85, 0x1e60, 0x4, 0x85, 0x3, 0x1e74, 0x4800640, 0x800181, 0x3600384, 0x2430024, 0x85, 0x3a0108, 0x796207, 0x3a0108, 0x796207, 0x480064a, 0x4800640, 0x1900320 }, - { 1280, 800, 60, 0x690, 0x80, 0xc8, 0x33f, 0x6, 0x16, 0x85, 0x1f04, 0x3, 0x85, 0x2, 0x1f40, 0x5000690, 0x800149, 0x320033f, 0x1d6001d, 0x85, 0x380108, 0x436108, 0x380108, 0x436108, 0x5000694, 0x5000690, 0x1900320 }, - { 1366, 768, 60, 0x700, 0x8f, 0xd5, 0x31e, 0x3, 0x18, 0x85, 0x2004, 0x3, 0x85, 0x2, 0x2004, 0x5560700, 0x8f0165, 0x300031e, 0x1c3001c, 0x85, 0x320107, 0x676206, 0x320107, 0x676206, 0x55606ff, 0x5560700, 0x1900320 }, - { 1360, 768, 60, 0x700, 0x70, 0x100, 0x31b, 0x6, 0x12, 0x85, 0x1fa4, 0x3, 0x85, 0x2, 0x1fc4, 0x5500700, 0x700171, 0x300031b, 0x1960019, 0x85, 0x390108, 0x5e610b, 0x390108, 0x5e610b, 0x5500700, 0x5500700, 0x1900320 }, - { 1024, 768, 85, 0x560, 0x60, 0xd0, 0x328, 0x3, 0x24, 0x5e, 0x2224, 0x3, 0x5e, 0x2, 0x2264, 0x4000560, 0x600131, 0x3000328, 0x2830028, 0x5e, 0x3f0108, 0x556109, 0x3f0108, 0x556109, 0x4000560, 0x400055f, 0x6401120 }, - { 1280, 960, 60, 0x708, 0x70, 0x138, 0x3e8, 0x3, 0x24, 0x85, 0x2580, 0x4, 0x85, 0x3, 0x259c, 0x5000708, 0x7001a9, 0x3c003e8, 0x2830028, 0x85, 0x360106, 0x616109, 0x360106, 0x616109, 0x5000708, 0x5000705, 0x1900320 }, - { 1280, 768, 75, 0x6a0, 0x80, 0xd0, 0x325, 0x7, 0x1b, 0x6a, 0x25a8, 0x3, 0x6a, 0x2, 0x25fc, 0x50006a0, 0x800151, 0x3000325, 0x2370023, 0x6a, 0x330106, 0x294104, 0x330106, 0x294104, 0x500069a, 0x50006a1, 0x1400320 }, - { 1440, 900, 60, 0x770, 0x98, 0xe8, 0x3a6, 0x6, 0x19, 0x85, 0x2740, 0x3, 0x85, 0x2, 0x2784, 0x5a00770, 0x980181, 0x38403a6, 0x2060020, 0x85, 0x3e0107, 0x406106, 0x3e0107, 0x406106, 0x5a00769, 0x5a00770, 0x1900320 }, - { 1280, 800, 75, 0x6a0, 0x80, 0xd0, 0x346, 0x6, 0x1d, 0x6a, 0x2738, 0x3, 0x6a, 0x2, 0x2788, 0x50006a0, 0x800151, 0x3200346, 0x2460024, 0x6a, 0x3e0107, 0x406106, 0x3e0107, 0x406106, 0x500069b, 0x50006a1, 0x1400320 }, - { 1280, 1024, 60, 0x698, 0x70, 0xf8, 0x42a, 0x3, 0x26, 0x85, 0x2800, 0x4, 0x85, 0x3, 0x2814, 0x5000698, 0x700169, 0x400042a, 0x2a3002a, 0x85, 0x360106, 0x616109, 0x360106, 0x616109, 0x5000698, 0x5000695, 0x1900320 }, - { 1280, 768, 85, 0x6b0, 0x88, 0xd8, 0x329, 0x7, 0x1f, 0x5e, 0x2aac, 0x3, 0x5e, 0x2, 0x2b0c, 0x50006b0, 0x880161, 0x3000329, 0x2770027, 0x5e, 0x3b0106, 0x2f4104, 0x3b0106, 0x2f4104, 0x50006b4, 0x50006ad, 0x6401120 }, - { 1400, 1050, 60, 0x748, 0x90, 0xe8, 0x441, 0x4, 0x20, 0x85, 0x2c84, 0x3, 0x85, 0x2, 0x2cc8, 0x5780748, 0x900179, 0x41a0441, 0x2540025, 0x85, 0x3d0106, 0x496106, 0x3d0106, 0x496106, 0x578074b, 0x5780746, 0x1900320 }, - { 1280, 800, 85, 0x6b0, 0x88, 0xd8, 0x34b, 0x6, 0x22, 0x5e, 0x2c74, 0x3, 0x5e, 0x2, 0x2cd8, 0x50006b0, 0x880161, 0x320034b, 0x2960029, 0x5e, 0x330105, 0x314104, 0x330105, 0x566107, 0x50006ad, 0x50006b2, 0x6401120 }, - { 1280, 1024, 75, 0x698, 0x90, 0xf8, 0x42a, 0x3, 0x26, 0x6a, 0x3234, 0x3, 0x6a, 0x2, 0x324c, 0x5000698, 0x900189, 0x400042a, 0x2a3002a, 0x6a, 0x380105, 0x1b4102, 0x380105, 0x1b4102, 0x5000691, 0x5000698, 0x1400320 }, - { 1440, 900, 75, 0x790, 0x98, 0xf8, 0x3ae, 0x6, 0x21, 0x6a, 0x31a4, 0x3, 0x6a, 0x2, 0x3200, 0x5a00790, 0x980191, 0x38403ae, 0x2860028, 0x6a, 0x390105, 0x526106, 0x390105, 0x526106, 0x5a00790, 0x5a0078f, 0x1400320 }, - { 1680, 1050, 60, 0x8c0, 0xb0, 0x118, 0x441, 0x6, 0x1e, 0x85, 0x356c, 0x3, 0x85, 0x2, 0x35bc, 0x69008c0, 0xb001c9, 0x41a0441, 0x2560025, 0x85, 0x3d0105, 0x756204, 0x3d0105, 0x756204, 0x69008c0, 0x69008bf, 0x1900320 }, - { 1920, 1080, 50, 0xa50, 0x2c, 0x94, 0x465, 0x5, 0x24, 0xa0, 0x349c, 0x4, 0xa0, 0x4, 0x34bc, 0x7800a50, 0x2c00c1, 0x4380465, 0x2a5002a, 0xa0, 0x3e0105, 0x596106, 0x3e0105, 0x596106, 0x7800a55, 0x7800a4e, 0xa00120 }, - { 1920, 1080, 60, 0x898, 0x2c, 0x94, 0x465, 0x5, 0x24, 0x85, 0x3f48, 0x3, 0x85, 0x3, 0x3f74, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x85, 0x3e0105, 0x596106, 0x3e0105, 0x596106, 0x780089c, 0x7800896, 0x1900320 }, - { 1280, 960, 85, 0x6c0, 0xa0, 0xe0, 0x3f3, 0x3, 0x2f, 0x5e, 0x3558, 0x3, 0x5e, 0x2, 0x35c8, 0x50006c0, 0xa00181, 0x3c003f3, 0x3330033, 0x5e, 0x3e0105, 0x596106, 0x3e0105, 0x596106, 0x50006c3, 0x50006be, 0x6401120 }, - { 1400, 1050, 75, 0x768, 0x90, 0xf8, 0x44b, 0x4, 0x2a, 0x6a, 0x384c, 0x3, 0x6a, 0x2, 0x38b4, 0x5780768, 0x900189, 0x41a044b, 0x2f4002f, 0x6a, 0x340104, 0x7d6204, 0x340104, 0x7d6204, 0x5780765, 0x5780768, 0x1400320 }, - { 1440, 900, 85, 0x7a0, 0x98, 0x100, 0x3b4, 0x6, 0x27, 0x5e, 0x3840, 0x3, 0x5e, 0x2, 0x38bc, 0x5a007a0, 0x980199, 0x38403b4, 0x2e6002e, 0x5e, 0x340104, 0x3f6104, 0x340104, 0x3f6104, 0x5a00796, 0x5a007a2, 0x6401120 }, - { 1280, 1024, 85, 0x6c0, 0xa0, 0xe0, 0x430, 0x3, 0x2c, 0x5e, 0x38e4, 0x3, 0x5e, 0x2, 0x3908, 0x50006c0, 0xa00181, 0x4000430, 0x3030030, 0x5e, 0x340104, 0x3f6104, 0x340104, 0x3f6104, 0x50006b6, 0x50006c0, 0x6401120 }, - { 1600, 1200, 60, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x85, 0x3a98, 0x4, 0x85, 0x3, 0x3ac0, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x85, 0x360104, 0x616106, 0x360104, 0x616106, 0x6400870, 0x640086c, 0x1900320 }, - { 1600, 1200, 65, 0x879, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x7b, 0x3f08, 0x3, 0x7b, 0x3, 0x3f88, 0x6400879, 0xc001f1, 0x4b004e2, 0x3230032, 0x7b, 0x3b0104, 0x234102, 0x3b0104, 0x234102, 0x6400882, 0x640086f, 0x6400d20 }, - { 1400, 1050, 85, 0x778, 0x98, 0x100, 0x451, 0x4, 0x30, 0x5e, 0x3fd0, 0x3, 0x5e, 0x2, 0x404c, 0x5780778, 0x980199, 0x41a0451, 0x3540035, 0x5e, 0x3c0104, 0x244102, 0x3c0104, 0x244102, 0x578077c, 0x578077c, 0x6401120 }, - { 1680, 1050, 75, 0x8e0, 0xb0, 0x128, 0x44b, 0x6, 0x28, 0x6a, 0x4390, 0x3, 0x6a, 0x2, 0x440c, 0x69008e0, 0xb001d9, 0x41a044b, 0x2f6002f, 0x6a, 0x3e0104, 0x4b6104, 0x3e0104, 0x4b6104, 0x69008d6, 0x69008e2, 0x1400320 }, - { 1600, 1200, 70, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x72, 0x4430, 0x3, 0x72, 0x2, 0x4488, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x72, 0x3f0104, 0x264102, 0x3f0104, 0x264102, 0x6400870, 0x640087a, 0x3200720 }, - { 1920, 1200, 60, 0xa20, 0xc8, 0x150, 0x4dd, 0x6, 0x24, 0x85, 0x45c8, 0x3, 0x85, 0x2, 0x4638, 0x7800a20, 0xc80219, 0x4b004dd, 0x2b6002b, 0x85, 0x400104, 0x4d6104, 0x400104, 0x4d6104, 0x7800a16, 0x7800a16, 0x1900320 }, - { 1600, 1200, 75, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x6a, 0x4988, 0x3, 0x6a, 0x2, 0x49b4, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x6a, 0x330103, 0x516104, 0x330103, 0x516104, 0x640087a, 0x6400870, 0x1400320 }, - { 1792, 1344, 60, 0x9b8, 0x19, 0x29, 0x572, 0x3, 0x2e, 0x85, 0x48f0, 0x3, 0x85, 0x2, 0x4960, 0x70009b8, 0x190043, 0x5400572, 0x3230032, 0x85, 0x340103, 0x536104, 0x340103, 0x536104, 0x70009b8, 0x70009b2, 0x1900320 }, - { 1680, 1050, 85, 0x8f0, 0xb0, 0x130, 0x451, 0x6, 0x2e, 0x5e, 0x4c90, 0x3, 0x5e, 0x2, 0x4d28, 0x69008f0, 0xb001e1, 0x41a0451, 0x3560035, 0x5e, 0x360103, 0x2b4102, 0x360103, 0x2b4102, 0x69008fa, 0x69008f0, 0x6401120 }, - { 1856, 1392, 60, 0x9e0, 0xe0, 0x160, 0x59f, 0x3, 0x2b, 0x85, 0x4e3c, 0x3, 0x85, 0x2, 0x4e74, 0x74009e0, 0xe00241, 0x570059f, 0x2f3002f, 0x85, 0x370103, 0x576104, 0x370103, 0x576104, 0x74009ea, 0x74009d8, 0x1900320 }, - { 1600, 1200, 85, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x5e, 0x526c, 0x2, 0x5e, 0x1, 0x5320, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x5e, 0x390103, 0x2e4102, 0x390103, 0x2e4102, 0x6400866, 0x6400874, 0x6401120 }, - { 1920, 1440, 60, 0xa28, 0xd0, 0x158, 0x5dc, 0x3, 0x38, 0x85, 0x5460, 0x4, 0x85, 0x3, 0x5498, 0x7800a28, 0xd00229, 0x5a005dc, 0x3c3003c, 0x85, 0x3a0103, 0x2f4102, 0x3b0103, 0x2f4102, 0x7800a32, 0x7800a32, 0x1900320 }, - { 1920, 1200, 75, 0xa30, 0xd0, 0x158, 0x4e7, 0x6, 0x2e, 0x6a, 0x5840, 0x3, 0x6a, 0x2, 0x58d0, 0x7800a30, 0xd00229, 0x4b004e7, 0x3560035, 0x6a, 0x3d0103, 0x314102, 0x3d0103, 0x314102, 0x7800a26, 0x7800a2c, 0x1400320 }, - { 1792, 1344, 75, 0x998, 0xd8, 0x160, 0x589, 0x3, 0x45, 0x6a, 0x5d28, 0x4, 0x6a, 0x3, 0x5d94, 0x7000998, 0xd80239, 0x5400589, 0x4930049, 0x6a, 0x400103, 0x346102, 0x400103, 0x346102, 0x700098e, 0x700098f, 0x1400320 }, - { 1600, 1200, 100, 0x870, 0xc0, 0x130, 0x4e2, 0x3, 0x2e, 0x50, 0x6168, 0x2, 0x50, 0x1, 0x61a8, 0x6400870, 0xc001f1, 0x4b004e2, 0x3230032, 0x50, 0x400103, 0x366102, 0x400103, 0x366102, 0x6400866, 0x6400870, 0x500120 }, - { 1920, 1200, 85, 0xa40, 0xd0, 0x160, 0x4ee, 0x6, 0x35, 0x5e, 0x6400, 0x3, 0x5e, 0x2, 0x64b4, 0x7800a40, 0xd00231, 0x4b004ee, 0x3c6003c, 0x5e, 0x320102, 0x716202, 0x320102, 0x716202, 0x7800a4a, 0x7800a49, 0x6401120 }, - { 1856, 1392, 75, 0xa00, 0xe0, 0x160, 0x5dc, 0x3, 0x68, 0x6a, 0x65f4, 0x6, 0x6a, 0x5, 0x669c, 0x7400a00, 0xe00241, 0x57005dc, 0x6c3006c, 0x6a, 0x320102, 0x736202, 0x320102, 0x736202, 0x7400a0a, 0x74009fc, 0x1400320 }, - { 1920, 1440, 75, 0xa50, 0xe0, 0x160, 0x5dc, 0x3, 0x38, 0x6a, 0x69e4, 0x3, 0x6a, 0x2, 0x6a24, 0x7800a50, 0xe00241, 0x5a005dc, 0x3c3003c, 0x6a, 0x320102, 0x776202, 0x320102, 0x776202, 0x7800a5a, 0x7800a54, 0x1400320 }, - { 2560, 1600, 60, 0xdb0, 0x118, 0x1d8, 0x67a, 0x6, 0x31, 0x85, 0x7c08, 0x3, 0x85, 0x2, 0x7cac, 0xa000db0, 0x11802f1, 0x640067a, 0x3860038, 0x85, 0x3a0102, 0x466102, 0x3a0102, 0x466102, 0xa000dab, 0xa000dba, 0x1900320 }, - { 2560, 1600, 75, 0xdd0, 0x118, 0x1e8, 0x688, 0x6, 0x3f, 0x6a, 0x9ce0, 0x3, 0x6a, 0x2, 0x9dc0, 0xa000dd0, 0x1180301, 0x6400688, 0x4660046, 0x6a, 0x400102, 0x596102, 0x400102, 0x596102, 0xa000dc6, 0xa000dda, 0x1400320 }, - { 2560, 1600, 85, 0xdd0, 0x118, 0x1e8, 0x692, 0x6, 0x49, 0x5e, 0xb1c8, 0x3, 0x5e, 0x2, 0xb2f0, 0xa000dd0, 0x1180301, 0x6400692, 0x5060050, 0x5e, 0x400102, 0x646102, 0x400102, 0x646102, 0xa000dc6, 0xa000dc6, 0x6401120 }, - { 1920, 1080, 24, 0xac0, 0x30, 0x90, 0x465, 0x5, 0x24, 0x14d, 0x1950, 0xb, 0x14d, 0xa, 0x1958, 0x7800ac0, 0x3000c1, 0x4380465, 0x2a5002a, 0x14d, 0x3e010a, 0x346107, 0x3e010a, 0x346107, 0x7800ac3, 0x7800ac0, 0x3e80320 }, - { 1600, 900, 60, 0x708, 0x50, 0x60, 0x3e8, 0x3, 0x60, 0x85, 0x2ee0, 0xc, 0x85, 0xb, 0x2f00, 0x6400708, 0x5000b1, 0x38403e8, 0x6430064, 0x85, 0x360106, 0x616109, 0x360106, 0x616109, 0x6400708, 0x6400705, 0x1900320 }, - { 1280, 600, 60, 0x670, 0x80, 0xb8, 0x26e, 0x3, 0x12, 0x85, 0x1744, 0x3, 0x85, 0x2, 0x1764, 0x5000670, 0x800139, 0x258026e, 0x1630016, 0x85, 0x33010a, 0x7b620a, 0x33010a, 0x7b620a, 0x5000668, 0x5000670, 0x1900320 }, - { 854, 480, 15, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x215, 0x340, 0x1e, 0x215, 0x1e, 0x340, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x215, 0x40015b, 0x1b4120, 0x40015b, 0x1b4120, 0x3560440, 0x3560440, 0x6400320 }, - { 854, 480, 60, 0x440, 0x70, 0x70, 0x205, 0x8, 0x17, 0x85, 0xcec, 0x6, 0x85, 0x6, 0xcf8, 0x3560440, 0x7000e1, 0x1e00205, 0x2080020, 0x85, 0x3b0115, 0x1b4108, 0x3b0115, 0x1b4108, 0x356043f, 0x3560440, 0x1900320 }, - { 854, 480, 56, 0x41f, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x8e, 0xc9c, 0x7, 0x8e, 0x6, 0xca4, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x8e, 0x350114, 0x59611c, 0x350114, 0x59611c, 0x356041f, 0x356041f, 0x3e80720 }, - { 854, 480, 30, 0x41f, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x10a, 0x6bc, 0xe, 0x10a, 0xe, 0x6c0, 0x356041f, 0x3d009b, 0x1e0021a, 0x2130021, 0x10a, 0x3d012b, 0x3f6125, 0x3d012b, 0x3f6125, 0x356041f, 0x356041f, 0x3200320 }, - { 854, 480, 24, 0x527, 0x3d, 0x5d, 0x21a, 0x3, 0x1d, 0x14d, 0x560, 0x12, 0x14d, 0x12, 0x564, 0x3560527, 0x3d009b, 0x1e0021a, 0x2130021, 0x14d, 0x3d012b, 0x6d6220, 0x3d012b, 0x6d6220, 0x3560527, 0x3560527, 0x3e80320 }, - { 2048, 1152, 60, 0x8a0, 0x20, 0x50, 0x4a1, 0x5, 0x19, 0x85, 0x46e8, 0x2, 0x85, 0x1, 0x4748, 0x80008a0, 0x200071, 0x48004a1, 0x1f5001f, 0x85, 0x340104, 0x5e6106, 0x340104, 0x5e6106, 0x8000896, 0x800089c, 0x1900320 }, - { 1920, 1200, 60, 0xa20, 0xd0, 0xe2, 0x4da, 0x3, 0x26, 0x85, 0x45c8, 0x3, 0x85, 0x2, 0x460c, 0x7800a20, 0xd001b3, 0x4b004da, 0x2a3002a, 0x85, 0x400104, 0x4d6104, 0x400104, 0x4d6104, 0x7800a16, 0x7800a18, 0x1900320 }, - { 1920, 1080, 30, 0x898, 0x2c, 0x94, 0x465, 0x5, 0x24, 0x10a, 0x1fa4, 0x8, 0x10a, 0x7, 0x1fbc, 0x7800898, 0x2c00c1, 0x4380465, 0x2a5002a, 0x10a, 0x3e010a, 0x346107, 0x3e010a, 0x346107, 0x780089c, 0x7800898, 0x3200320 }, -}; - -struct resolution_entry const * +struct fl2000_timing_entry const * fl2000_table_get_entry( uint32_t table_num, uint32_t width, uint32_t height, uint32_t freq) { - struct resolution_entry const * table; - struct resolution_entry const * entry = NULL; - uint32_t i; + struct fl2000_timing_entry const * table; + struct fl2000_timing_entry const * entry = NULL; + uint32_t i, size; table = NULL; @@ -495,26 +185,18 @@ fl2000_table_get_entry( switch (table_num) { case VGA_BIG_TABLE_24BIT_R0: table = big_table_24bit_r0; - break; - case VGA_BIG_TABLE_24BIT_R1: - table = big_table_24bit_r1; + size = ARRAY_SIZE(big_table_24bit_r0); break; case VGA_BIG_TABLE_16BIT_R0: table = big_table_16bit_r0; + size = ARRAY_SIZE(big_table_16bit_r0); break; - case VGA_BIG_TABLE_16BIT_R1: - table = big_table_16bit_r1; - break; - case VGA_BIG_TABLE_8BIT_R0: - table = big_table_8bit_r0; - break; - case VGA_BIG_TABLE_8BIT_R1: default: - table = big_table_8bit_r1; + BUG(); break; } - for(i = 0; i < VGA_BIG_TABLE_SIZE; i++) { + for(i = 0; i < size; i++) { if (width == table[i].width && height == table[i].height && freq == table[i].freq) { diff --git a/src/fl2000_big_table.h b/src/fl2000_big_table.h index 01b682e..1aab9af 100644 --- a/src/fl2000_big_table.h +++ b/src/fl2000_big_table.h @@ -11,16 +11,11 @@ #ifndef _FL2000_BIG_TABLE_H_ #define _FL2000_BIG_TABLE_H_ -#define VGA_BIG_TABLE_SIZE 73 - #define VGA_BIG_TABLE_24BIT_R0 0 -#define VGA_BIG_TABLE_24BIT_R1 1 #define VGA_BIG_TABLE_16BIT_R0 2 -#define VGA_BIG_TABLE_16BIT_R1 3 -#define VGA_BIG_TABLE_8BIT_R0 4 -#define VGA_BIG_TABLE_8BIT_R1 5 -struct resolution_entry const * + +struct fl2000_timing_entry const * fl2000_table_get_entry( uint32_t table_num, uint32_t width, diff --git a/src/fl2000_bulk.c b/src/fl2000_bulk.c index 193c461..55e2e0e 100644 --- a/src/fl2000_bulk.c +++ b/src/fl2000_bulk.c @@ -246,17 +246,15 @@ void fl2000_bulk_prepare_urb( fl2000_bulk_main_completion, render_ctx); - if (dev_ctx->vr_params.end_of_frame_type == EOF_ZERO_LENGTH) { - usb_init_urb(render_ctx->zero_length_urb); - usb_fill_bulk_urb( - render_ctx->zero_length_urb, - dev_ctx->usb_dev, - dev_ctx->usb_pipe_bulk_out, - NULL, - 0, - fl2000_bulk_zero_length_completion, - render_ctx); - } + usb_init_urb(render_ctx->zero_length_urb); + usb_fill_bulk_urb( + render_ctx->zero_length_urb, + dev_ctx->usb_dev, + dev_ctx->usb_pipe_bulk_out, + NULL, + 0, + fl2000_bulk_zero_length_completion, + render_ctx); } // eof: fl2000_bulk.c diff --git a/src/fl2000_compression.c b/src/fl2000_compression.c index ca4f9d4..7fe7281 100644 --- a/src/fl2000_compression.c +++ b/src/fl2000_compression.c @@ -24,10 +24,11 @@ GET_BYTES_PER_PIXEL( uint32_t bytes_per_pixel; switch (image_type) { +#if 0 /* ULLI : disabled, code is kept here only for consistently */ case OUTPUT_IMAGE_TYPE_RGB_8: bytes_per_pixel = PIXEL_BYTE_1; break; - +#endif case OUTPUT_IMAGE_TYPE_RGB_16: bytes_per_pixel = PIXEL_BYTE_2; break; diff --git a/src/fl2000_ctx.h b/src/fl2000_ctx.h index a197490..df8d7de 100644 --- a/src/fl2000_ctx.h +++ b/src/fl2000_ctx.h @@ -22,42 +22,22 @@ struct render_ctx; */ #define NUM_RENDER_ON_BUS 2 -struct resolution_entry -{ +struct fl2000_timing_entry { uint32_t width; uint32_t height; uint32_t freq; uint32_t h_total_time; - uint32_t h_sync_time; - uint32_t h_back_porch; uint32_t v_total_time; - uint32_t v_sync_time; - uint32_t v_back_porch; - uint32_t isoch_num_of_pkt; - uint32_t isoch_td_size_in_kb; - uint32_t isoch_zero_bytes; - uint32_t itp_per_frame; - uint32_t num_of_idle; - uint32_t td_size; uint32_t h_sync_reg_1; uint32_t h_sync_reg_2; uint32_t v_sync_reg_1; uint32_t v_sync_reg_2; - uint32_t iso_reg; - uint32_t bulk_fpga_pll; uint32_t bulk_asic_pll; - uint32_t isoch_fpga_pll; - uint32_t isoch_asic_pll; - uint32_t isoch_fpga_h_sync_reg_1; - uint32_t isoch_asic_h_sync_reg_1; - uint32_t bus_interval_adjust; }; struct registry { - uint32_t FilterEdidTableEnable; uint32_t CurrentNumberOfDevices; - uint32_t UsePollingMonitorConnection; uint32_t CompressionEnable; uint32_t Usb2PixelFormatTransformCompressionEnable; @@ -69,12 +49,7 @@ struct vr_params uint32_t height; uint32_t freq; uint32_t h_total_time; - uint32_t h_sync_time; - uint32_t h_back_porch; uint32_t v_total_time; - uint32_t v_sync_time; - uint32_t v_back_porch; - uint32_t trasfer_pipe; // Compression. // @@ -84,14 +59,9 @@ struct vr_params uint32_t compression_mask_index_min; uint32_t compression_mask_index_max; - uint32_t h_sync_reg_1; - uint32_t h_sync_reg_2; - uint32_t v_sync_reg_1; - uint32_t v_sync_reg_2; uint32_t pll_reg; uint32_t input_bytes_per_pixel; uint32_t output_image_type; - uint32_t end_of_frame_type; uint32_t color_mode_16bit; }; @@ -162,6 +132,22 @@ struct render { uint32_t green_light; }; +struct urb_node { + struct list_head entry; + struct dev_ctx *fl2k; + struct delayed_work release_urb_work; + struct urb *urb; +}; + +struct urb_list { + struct list_head list; + spinlock_t lock; + struct semaphore limit_sem; + int available; + int count; + size_t size; +}; + struct dev_ctx { struct usb_device* usb_dev; struct usb_device_descriptor usb_dev_desc; @@ -181,6 +167,8 @@ struct dev_ctx { * __sync_xxx_and_fetch. kind of sucks. we use our sync lock here. */ spinlock_t count_lock; + struct urb_list urbs; + atomic_t lost_pixels; /* 1 = a render op failed. Need screen refresh */ /* * bulk out interface diff --git a/src/fl2000_def.h b/src/fl2000_def.h index 4fad5ea..83c0282 100644 --- a/src/fl2000_def.h +++ b/src/fl2000_def.h @@ -71,10 +71,9 @@ #define EDID_SIZE 128 #define NUM_OF_RENDER_CTX 4 -#define IS_DEVICE_USB3LINK(dev_ctx) (USB3_BCD == dev_ctx->usb_dev_desc.bcdUSB) -#define IS_DEVICE_USB2LINK(dev_ctx) (!IS_DEVICE_USB3LINK(dev_ctx)) - +#if 0 #define OUTPUT_IMAGE_TYPE_RGB_8 0 +#endif #define OUTPUT_IMAGE_TYPE_RGB_16 1 #define OUTPUT_IMAGE_TYPE_RGB_24 2 @@ -82,17 +81,10 @@ #define VR_USB_LINKUP_TYPE_USB2 1 #define VR_USB_LINKUP_TYPE_USB3 2 -#define VR_TRANSFER_PIPE_BULK 0 -#define VR_TRANSFER_PIPE_ISOCH 1 -#define VR_TRANSFER_PIPE_MAX 2 - #define PIXEL_BYTE_1 1 #define PIXEL_BYTE_2 2 #define PIXEL_BYTE_3 3 -#define EOF_PENDING_BIT 0 -#define EOF_ZERO_LENGTH 1 - #define VR_16_BIT_COLOR_MODE_565 0 #define VR_16_BIT_COLOR_MODE_555 1 diff --git a/src/fl2000_dongle.c b/src/fl2000_dongle.c index bdfd877..00aba68 100644 --- a/src/fl2000_dongle.c +++ b/src/fl2000_dongle.c @@ -14,41 +14,38 @@ // P R I V A T E ///////////////////////////////////////////////////////////////////////////////// // -void -fl2000_dongle_i2c_detection_enable(struct dev_ctx * dev_ctx) -{ - // Enable I2C VGA Detection - // - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_8020, 30); - DELAY_MS(DELAY_FOR_I2C_CONNECTION_ENABLE); -} - -void -fl2000_dongle_ext_monitor_detect_enable(struct dev_ctx * dev_ctx) -{ - // Enable external monitor detection. - // - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_8020, 28); -} void fl2000_dongle_init_fl2000dx(struct dev_ctx * dev_ctx) { // Enable interrupt for I2C detection and external monitor. // - fl2000_dongle_i2c_detection_enable(dev_ctx); - fl2000_dongle_ext_monitor_detect_enable(dev_ctx); + + int ret; + uint32_t value; + + /* ULLI : I2C interrupt controller init, should be done in i2c driver */ + + ret = fl2000_reg_read(dev_ctx, FL2K_REG_I2C_CTRL, &value); + if (ret < 0) + return; + + value |= BIT(30); /* Enable I2C VGA Detection */ + value |= BIT(28); /* Enable external monitor detection */ + + fl2000_reg_write(dev_ctx, FL2K_REG_I2C_CTRL, &value); // BUG: We turn-off hardward reset for now. // But we do need it for resolve accumulate interrupt packet issue. // Got debug with NJ for this problem. // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_8088, 10); - // Disable polling for FL2000DX. - // - dev_ctx->registry.UsePollingMonitorConnection = 0; + ret = fl2000_reg_read(dev_ctx, REG_OFFSET_8088, &value); + if (ret < 0) + return; - dev_ctx->registry.FilterEdidTableEnable = EDID_FILTER_USB2_800_600_60HZ; + value &= BIT(10); /* BUG: We turn-off hardward reset for now. */ + + fl2000_reg_write(dev_ctx, REG_OFFSET_8088, &value); // Compression registry and flags. // @@ -63,31 +60,41 @@ void fl2000_dongle_init_fl2000dx(struct dev_ctx * dev_ctx) void fl2000_dongle_u1u2_setup(struct dev_ctx * dev_ctx, bool enable) { + int ret; + uint32_t value; + + ret = fl2000_reg_read(dev_ctx, REG_OFFSET_0070, &value); + if (ret < 0) + return; + if (enable) { // Set 0x0070 bit 20 = 0, accept U1. // Set 0x0070 bit 19 = 0, accept U2. // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_0070, 20); - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_0070, 19); - } - else { + value &= ~(BIT(20) | BIT(19)); + } else { // Set 0x0070 bit 20 = 1, reject U1. // Set 0x0070 bit 19 = 1, reject U2. // - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_0070, 20); - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_0070, 19); + value |= BIT(20) | BIT(19); } + + fl2000_reg_write(dev_ctx, REG_OFFSET_0070, &value); } void fl2000_dongle_reset(struct dev_ctx * dev_ctx) { - dbg_msg(TRACE_LEVEL_VERBOSE, DBG_INIT, ">>>>"); + int ret; + uint32_t value; + + ret = fl2000_reg_read(dev_ctx, REG_OFFSET_8048, &value); + if (ret < 0) + return; // REG_OFFSET_8048(0x8048)< bit 15 > = 1, app reset, self clear. // - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_8048, 15); - - dbg_msg(TRACE_LEVEL_VERBOSE, DBG_INIT, "<<<<"); + value |= BIT(15); + fl2000_reg_write(dev_ctx, REG_OFFSET_0070, &value); } void fl2000_dongle_stop(struct dev_ctx * dev_ctx) @@ -104,126 +111,6 @@ void fl2000_dongle_stop(struct dev_ctx * dev_ctx) dbg_msg(TRACE_LEVEL_VERBOSE, DBG_PNP, "<<<<"); } -int -fl2000_dongle_set_params(struct dev_ctx * dev_ctx, struct vr_params * vr_params) -{ - int ret_val; - bool ret; - uint32_t old_pll; - uint32_t new_pll; - bool pll_changed; - struct resolution_entry const * entry = NULL; - size_t table_num; - - dbg_msg(TRACE_LEVEL_VERBOSE, DBG_PNP, ">>>>"); - - // FileIO thread references to parameters and need to avoid concurrent access. - // - ret_val = 0; - pll_changed = false; - - // Set PLL register takes long time to stabilize, therefore, we set that only - // found it's different to previous setting. - // - old_pll = dev_ctx->vr_params.pll_reg; - memcpy(&dev_ctx->vr_params, vr_params, sizeof(struct vr_params)); - - dev_ctx->vr_params.pll_reg = old_pll; - dev_ctx->vr_params.end_of_frame_type = EOF_ZERO_LENGTH; - - if (dev_ctx->registry.CompressionEnable || - vr_params->use_compression) { - dev_ctx->vr_params.use_compression = 1; - - dev_ctx->vr_params.compression_mask_index_min = COMPRESSION_MASK_INDEX_MINIMUM; - dev_ctx->vr_params.compression_mask_index_max = COMPRESSION_MASK_INDEX_MAXIMUM; - - if (dev_ctx->registry.Usb2PixelFormatTransformCompressionEnable) { - // Bug#6346: Need more aggressive compression mask. - // - dev_ctx->vr_params.compression_mask = COMPRESSION_MASK_13_BIT_VALUE; - dev_ctx->vr_params.compression_mask_index = COMPRESSION_MASK_13_BIT_INDEX; - - // Output is RGB555, and need at most the mask. - // - dev_ctx->vr_params.compression_mask_index_min = COMPRESSION_MASK_15_BIT_INDEX; - } - else { - dev_ctx->vr_params.compression_mask = COMPRESSION_MASK_23_BIT_VALUE; - dev_ctx->vr_params.compression_mask_index = COMPRESSION_MASK_23_BIT_INDEX; - } - } - - switch (dev_ctx->vr_params.output_image_type) { - case OUTPUT_IMAGE_TYPE_RGB_8: - table_num = VGA_BIG_TABLE_8BIT_R0; - break; - case OUTPUT_IMAGE_TYPE_RGB_16: - table_num = VGA_BIG_TABLE_16BIT_R0; - break; - case OUTPUT_IMAGE_TYPE_RGB_24: - default: - table_num = VGA_BIG_TABLE_24BIT_R0; - break; - } - - entry = fl2000_table_get_entry( - table_num, - dev_ctx->vr_params.width, - dev_ctx->vr_params.height, - dev_ctx->vr_params.freq); - if (entry == NULL) { - dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, - "ERROR fl2000_table_get_entry failed."); - ret_val = -EINVAL; - goto exit; - } - - dev_ctx->vr_params.h_sync_reg_1 = entry->h_sync_reg_1; - dev_ctx->vr_params.h_sync_reg_2 = entry->h_sync_reg_2; - dev_ctx->vr_params.v_sync_reg_1 = entry->v_sync_reg_1; - dev_ctx->vr_params.v_sync_reg_2 = entry->v_sync_reg_2; - - dev_ctx->vr_params.h_total_time = entry->h_total_time; - dev_ctx->vr_params.h_sync_time = entry->h_sync_time; - dev_ctx->vr_params.h_back_porch = entry->h_back_porch; - dev_ctx->vr_params.v_total_time = entry->v_total_time; - dev_ctx->vr_params.v_sync_time = entry->v_sync_time; - dev_ctx->vr_params.v_back_porch = entry->v_back_porch; - - if (dev_ctx->hdmi_chip_found) - fl2000_hdmi_compliance_tweak(dev_ctx); - - new_pll = entry->bulk_asic_pll; - - if (new_pll != dev_ctx->vr_params.pll_reg) { - pll_changed = true; - dev_ctx->vr_params.pll_reg = new_pll; - } - - ret = fl2000_monitor_set_resolution(dev_ctx, pll_changed); - if (!ret) { - dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, - "[ERR] fl2000_monitor_set_resolution failed?"); - ret_val = -EIO; - goto exit; - } - - // Select Interface - // - ret_val = fl2000_dev_select_interface(dev_ctx); - if (ret_val < 0) { - dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, - "ERROR fl2000_dev_select_interface failed?"); - goto exit; - } - - dev_ctx->usb_pipe_bulk_out = usb_sndbulkpipe(dev_ctx->usb_dev, 1); - -exit: - dbg_msg(TRACE_LEVEL_VERBOSE, DBG_PNP, "<<<<"); - return (ret_val); -} int fl2000_set_display_mode( @@ -285,9 +172,7 @@ fl2000_set_display_mode( break; } - vr_params.trasfer_pipe = VR_TRANSFER_PIPE_BULK; - - if (IS_DEVICE_USB2LINK(dev_ctx)) { + if (dev_ctx->usb_dev->speed < USB_SPEED_SUPER) { /* * Considering physical bw limitation, force frequency to 60Hz * once user select higher frequency from panel. diff --git a/src/fl2000_hdmi.c b/src/fl2000_hdmi.c index 3932351..3bdfa42 100644 --- a/src/fl2000_hdmi.c +++ b/src/fl2000_hdmi.c @@ -1966,27 +1966,6 @@ fl2000_hdmi_read_block(struct dev_ctx * dev_ctx, uint8_t block_id) return is_good; } -void -fl2000_hdmi_compliance_tweak(struct dev_ctx * dev_ctx) -{ - if (dev_ctx->vr_params.width == 640 && - dev_ctx->vr_params.height == 480 && - dev_ctx->vr_params.freq == 60) { - dev_ctx->vr_params.h_back_porch = 48; - dev_ctx->vr_params.v_back_porch = 33; - dev_ctx->vr_params.h_sync_reg_2 = 0x600091; - dev_ctx->vr_params.v_sync_reg_2 = 0x2420024; - } else if (dev_ctx->vr_params.width == 1280 && - dev_ctx->vr_params.height == 720 && - dev_ctx->vr_params.freq == 60) { - dev_ctx->vr_params.v_back_porch = 20; - dev_ctx->vr_params.v_sync_reg_2 = 0x1A5001A; - } else { - // No adjustment. - // - } -} - void fl2000_hdmi_generate_ddc_sclk(struct dev_ctx * dev_ctx) { @@ -2026,11 +2005,11 @@ fl2000_hdmi_init(struct dev_ctx * dev_ctx, bool resolution_change) // //HDMI_ForceMonitorConnected( dev_ctx ); - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_803C, 25); + fl2000_reg_bit_set(dev_ctx, FL2K_REG_INT_CTRL, FL2K_USB_HDMI_CTRL); is_good = fl2000_hdmi_set_display_mode(dev_ctx); - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_803C, 25); + fl2000_reg_bit_clear(dev_ctx, FL2K_REG_INT_CTRL, FL2K_USB_HDMI_CTRL); if (!is_good) { dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, diff --git a/src/fl2000_hdmi.h b/src/fl2000_hdmi.h index f10e0b0..d9a7cd2 100644 --- a/src/fl2000_hdmi.h +++ b/src/fl2000_hdmi.h @@ -812,9 +812,6 @@ fl2000_hdmi_check_stable(struct dev_ctx * dev_ctx); bool fl2000_hdmi_read_block(struct dev_ctx * dev_ctx, uint8_t block_id); -void -fl2000_hdmi_compliance_tweak(struct dev_ctx * dev_ctx); - void fl2000_hdmi_init(struct dev_ctx * dev_ctx, bool resolution_change); diff --git a/src/fl2000_i2c.c b/src/fl2000_i2c.c index 3f065fd..1fba09a 100644 --- a/src/fl2000_i2c.c +++ b/src/fl2000_i2c.c @@ -87,7 +87,7 @@ fl2000_i2c_read( ret_val = fl2000_i2c_xfer( dev_ctx, VGA_MMIO_READ, - REG_OFFSET_8020, + FL2K_REG_I2C_CTRL, &read_back_data); if (ret_val < 0) { dbg_msg(TRACE_LEVEL_WARNING, DBG_HW, @@ -100,7 +100,7 @@ fl2000_i2c_read( // read_back_data |= 0x10000000; - // Step 2: Program data to REG_OFFSET_8020. + // Step 2: Program data to FL2K_REG_I2C_CTRL. // i2c_data.value = read_back_data; i2c_data.s.Addr = i2c_addr; @@ -113,7 +113,7 @@ fl2000_i2c_read( ret_val = fl2000_i2c_xfer( dev_ctx, VGA_MMIO_WRITE, - REG_OFFSET_8020, + FL2K_REG_I2C_CTRL, (uint32_t*)&i2c_data); if (ret_val < 0) { @@ -126,7 +126,7 @@ fl2000_i2c_read( // DELAY_MS(3); - // Step 3: Read back REG_OFFSET_8020, and make sure bit31 is set to 1. + // Step 3: Read back FL2K_REG_I2C_CTRL, and make sure bit31 is set to 1. // Because I2C is very slow, we should retry to make sure it done. // i2c_done = false; @@ -136,7 +136,7 @@ fl2000_i2c_read( ret_val = fl2000_i2c_xfer( dev_ctx, VGA_MMIO_READ, - REG_OFFSET_8020, + FL2K_REG_I2C_CTRL, &read_back_data); if (ret_val < 0) { dbg_msg(TRACE_LEVEL_WARNING, DBG_HW, @@ -169,7 +169,7 @@ fl2000_i2c_read( ret_val = fl2000_i2c_xfer( dev_ctx, VGA_MMIO_READ, - REG_OFFSET_8024, + FL2K_REG_I2C_DATA_RD, &read_back_data); if (ret_val < 0) { dbg_msg(TRACE_LEVEL_WARNING, DBG_HW, @@ -203,7 +203,7 @@ int fl2000_i2c_write( ret_val = fl2000_i2c_xfer( dev_ctx, VGA_MMIO_WRITE, - REG_OFFSET_8028, + FL2K_REG_I2C_DATA_WR, write_dword); if (ret_val < 0) { dbg_msg(TRACE_LEVEL_WARNING, DBG_HW, @@ -217,7 +217,7 @@ int fl2000_i2c_write( ret_val = fl2000_i2c_xfer( dev_ctx, VGA_MMIO_READ, - REG_OFFSET_8020, + FL2K_REG_I2C_CTRL, &read_back_data); if (ret_val < 0) { dbg_msg(TRACE_LEVEL_WARNING, DBG_HW, @@ -230,7 +230,7 @@ int fl2000_i2c_write( // read_back_data |= 0x10000000; - // Step 3: Porgram data to REG_OFFSET_8020. + // Step 3: Porgram data to FL2K_REG_I2C_CTRL. // i2c_data.value = read_back_data; i2c_data.s.Addr = i2c_addr; @@ -243,7 +243,7 @@ int fl2000_i2c_write( ret_val = fl2000_i2c_xfer( dev_ctx, VGA_MMIO_WRITE, - REG_OFFSET_8020, + FL2K_REG_I2C_CTRL, (uint32_t*)&i2c_data); if (ret_val < 0) { dbg_msg(TRACE_LEVEL_WARNING, DBG_HW, @@ -255,7 +255,7 @@ int fl2000_i2c_write( // DELAY_MS(3); - // Step 3: Read back REG_OFFSET_8020, and make sure bit31 is set to 1. + // Step 3: Read back FL2K_REG_I2C_CTRL, and make sure bit31 is set to 1. // Because I2C is very slow, we should retry to make sure it done. // i2c_done = false; @@ -265,7 +265,7 @@ int fl2000_i2c_write( ret_val = fl2000_i2c_xfer( dev_ctx, VGA_MMIO_READ, - REG_OFFSET_8020, + FL2K_REG_I2C_CTRL, &read_back_data); if (ret_val < 0) { dbg_msg(TRACE_LEVEL_WARNING, DBG_HW, diff --git a/src/fl2000_interrupt.c b/src/fl2000_interrupt.c index 43c2b1a..80d8c28 100644 --- a/src/fl2000_interrupt.c +++ b/src/fl2000_interrupt.c @@ -272,7 +272,7 @@ fl2000_intr_process(struct dev_ctx * dev_ctx) // Get interrupt status // - if (fl2000_reg_read(dev_ctx, REG_OFFSET_8000, &data)) { + if (fl2000_reg_read(dev_ctx, FL2K_REG_INT_STATUS, &data)) { struct vga_status * vga_status; vga_status = (struct vga_status *)&data; diff --git a/src/fl2000_monitor.c b/src/fl2000_monitor.c index f1b53c0..abd6033 100644 --- a/src/fl2000_monitor.c +++ b/src/fl2000_monitor.c @@ -14,72 +14,6 @@ // P R I V A T E ///////////////////////////////////////////////////////////////////////////////// // -void -fl2000_monitor_filter_established_timing(struct dev_ctx * dev_ctx) -{ - // Check byte 35 - // - // Bit 0 800x600 @ 60 Hz - // Bit 1 800x600 @ 56 Hz - // Bit 2 640x480 @ 75 Hz - // Bit 3 640x480 @ 72 Hz - // Bit 4 640x480 @ 67 Hz - // Bit 5 640x480 @ 60 Hz - // Bit 6 720x400 @ 88 Hz - // Bit 7 720x400 @ 70 Hz - // - dev_ctx->monitor_edid[0][35] = 0x21; - - // Check byte 36 - // - // Bit 0 1280x1024 @ 75 Hz - // Bit 1 1024x768 @ 75 Hz - // Bit 2 1024x768 @ 72 Hz - // Bit 3 1024x768 @ 60 Hz - // Bit 4 1024x768 @ 87 Hz, interlaced (1024*768i) - // Bit 5 832x624 @ 75 Hz - // Bit 6 800x600 @ 75 Hz - // Bit 7 800x600 @ 72 Hz - // - dev_ctx->monitor_edid[0][36] = 0x8; - - // Check Byte 37 - // - // Bit 7 for 1152x870@75Hz. - // - dev_ctx->monitor_edid[0][37] = 0; -} - -bool -fl2000_monitor_resolution_in_white_table( - uint32_t width, - uint32_t height, - uint32_t freq) -{ - bool in_white_list; - const struct resolution_entry * entry; - - if (freq != 60) { - in_white_list = false; - goto exit; - } - - if (width * height > MAX_WIDTH * MAX_HEIGHT) { - in_white_list = false; - goto exit; - } - - entry = fl2000_table_get_entry( - VGA_BIG_TABLE_24BIT_R0, - width, - height, - freq); - in_white_list = (entry != NULL); - -exit: - return in_white_list; -} - void fl2000_monitor_ratio_to_dimension( uint8_t x, uint8_t aspect_ratio, @@ -114,100 +48,6 @@ void fl2000_monitor_ratio_to_dimension( *height = temp_height; } -void fl2000_monitor_filter_std_timing(struct dev_ctx * dev_ctx) -{ - uint8_t i; - uint32_t width; - uint32_t height; - uint32_t freq; - bool in_white_table; - - /* - * EDID offset 38 ~ 53. Standard timing information. Upto 8 2-bytes. - * Unused fields are filled with 01 01 - */ - for (i = 38; i < 53; i+= 2) { - uint8_t x = dev_ctx->monitor_edid[0][i]; - uint8_t ratio = dev_ctx->monitor_edid[0][i + 1] >> 6; - - freq = (dev_ctx->monitor_edid[0][i + 1] & 0x3F) + 60; - if (dev_ctx->monitor_edid[0][i] == 1 && - dev_ctx->monitor_edid[0][i + 1] == 1) - break; - - fl2000_monitor_ratio_to_dimension( - x, - ratio, - &width, - &height); - - in_white_table = fl2000_monitor_resolution_in_white_table( - width, - height, - freq); - if (!in_white_table) { - /* - * make it a 1024x768 - */ - dev_ctx->monitor_edid[0][i] = 97; - dev_ctx->monitor_edid[0][i + 1]= IMAGE_ASPECT_RATIO_4_3 << 6; - } - - } -} - -void fl2000_monitor_filter_detailed_timing(struct dev_ctx * dev_ctx) -{ - uint32_t pixel_clock; - uint32_t h_active; - uint32_t h_blanking; - uint32_t v_active; - uint32_t v_blanking; - uint32_t i; - - for (i = 54; i < 125; i+= 18) { - uint8_t * entry = &dev_ctx->monitor_edid[0][i]; - - /* - * NOT detailed timing descriptor - */ - if (entry[0] == 0 && entry[1] == 0) - break; - - pixel_clock = entry[1] << 8 | entry[0]; - pixel_clock *= 10000; - - h_active = (entry[4] >> 4) << 8 | entry[2]; - h_blanking = (entry[4] & 0x0F) << 8 | entry[3]; - v_active = (entry[7] >> 4) << 8 | entry[5]; - v_blanking = (entry[7] & 0x0F) << 8 | entry[6]; - - /* - * if image is larger than 1920x1080, downgrade it - */ - if (h_active * v_active > MAX_WIDTH * MAX_HEIGHT) { - h_active = MAX_WIDTH; - v_active = MAX_HEIGHT; - h_blanking = 128; - v_blanking = 32; - pixel_clock = (h_active + h_blanking) * - (v_active + v_blanking) * 60; - pixel_clock /= 10000; - entry[0] = pixel_clock & 0xFF; - entry[1] = (pixel_clock >> 8) & 0xFF; - entry[2] = h_active & 0xFF; - entry[3] = h_blanking & 0xFF; - entry[4] = (h_active >> 8) << 4 | (h_blanking >> 8); - entry[5] = v_active & 0xFF; - entry[6] = v_blanking & 0xFF; - entry[7] = (v_active >> 8) << 4 | (v_blanking >> 8); - /* - * don't care entry[8 ~ 17], leave them as is. - */ - } - } -} - bool fl2000_monitor_read_edid_dsub(struct dev_ctx * dev_ctx) { uint8_t index; @@ -221,31 +61,6 @@ bool fl2000_monitor_read_edid_dsub(struct dev_ctx * dev_ctx) // EDID Header check. // - read_status = fl2000_i2c_read(dev_ctx, I2C_ADDRESS_DSUB, 0, &data); - if (read_status < 0) { - dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, - "ERROR Read Edid table failed."); - goto exit; - } - - if (EDID_HEADER_DWORD1 != data) { - dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, - "ERROR Read Edid data incorrect."); - goto exit; - } - - read_status = fl2000_i2c_read(dev_ctx, I2C_ADDRESS_DSUB, 4, &data); - if (read_status < 0) { - dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, - "ERROR Read Edid table failed."); - goto exit; - } - - if (EDID_HEADER_DWORD2 != data) { - dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, - "ERROR Read Edid data incorrect."); - goto exit; - } for (index = 0; index < EDID_SIZE; index += 4) { read_status = fl2000_i2c_read( @@ -268,118 +83,75 @@ bool fl2000_monitor_read_edid_dsub(struct dev_ctx * dev_ctx) return ret_val; } -///////////////////////////////////////////////////////////////////////////////// -// P U B L I C -///////////////////////////////////////////////////////////////////////////////// -// -bool fl2000_monitor_set_resolution(struct dev_ctx * dev_ctx, bool pll_changed) -{ - uint32_t data; - bool ret_val; +/* ULLI : Fresco Logic does some verify after write monitor register + * add some helper to simplify/reduce code + */ - dbg_msg(TRACE_LEVEL_VERBOSE, DBG_PNP, ">>>>"); - ret_val = true; - - if (pll_changed) { - // REG_OFFSET_802C - // - data = dev_ctx->vr_params.pll_reg; - if (fl2000_reg_write(dev_ctx, REG_OFFSET_802C, &data)) { - // From Ni Jie, only isoch transfer needs to wait until - // PLL stabilized. - if (VR_TRANSFER_PIPE_ISOCH == - dev_ctx->vr_params.trasfer_pipe) - DELAY_MS(1000); - } - } - - // REG_OFFSET_8048 ( 0x8048 )< bit 15 > = 1, app reset, self clear. - // - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_8048, 15); - - // Confirm PLL setting. - // - data = 0; - fl2000_reg_read(dev_ctx, REG_OFFSET_802C, &data); - if (dev_ctx->vr_params.pll_reg != data) { - ret_val = false; - goto exit; - } - - // REG_OFFSET_803C - // - - // Clear bit 22 - Disable BIA. - // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_803C, 22); +int _fl2000_reg_write_verify(struct dev_ctx * dev_ctx, uint32_t offset, + uint32_t *data) +{ + int ret; + uint32_t read_back = 0; - // Clear bit 24 - Disable isoch error interrupt. - // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_803C, 24); + ret = fl2000_reg_write(dev_ctx, offset, data); + if (ret < 0) + return ret; - // Clear bit 19,21 - Disable isoch auto recover. - // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_803C, 19); - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_803C, 21); + ret = fl2000_reg_read(dev_ctx, offset, &read_back); + if (ret < 0) + return ret; - // Clear bit 13 - Disable isoch feedback interrupt. - // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_803C, 13); + if (*data != read_back) + return -1; - // Clear bit 27:29 - End Of Frame Type - // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_803C, 27); - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_803C, 28); - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_803C, 29); + return 0; +} - if (dev_ctx->vr_params.end_of_frame_type == EOF_ZERO_LENGTH) { - // Zero Length Bulk. - // - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_803C, 28); - } - else { - // Pending Bit. - // - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_803C, 29); - } +static void _fl2000_set_video_mode(struct dev_ctx * dev_ctx) +{ + int ret; + uint32_t value; // REG_OFFSET_8004 - // + + ret = fl2000_reg_read(dev_ctx, FL2K_REG_FORMAT, &value); + if (ret < 0) + return; // Clear bit 28, Default setting. // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_8004, 28); + + value &= ~FL2K_MON_RESET_DEFAULT; // Clear bit 6( 565 ) & 31( 555 ), 16 bit color mode. - // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_8004, 6); - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_8004, 31); + + value &= ~(FL2K_MON_RGB_565_MODE | FL2K_MON_RGB_555_MODE); // Clear bit 24, Disable compression. - // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_8004, 24); + + value &= ~FL2K_MON_COMPRESSION; // Clear bit 25, Disable 8 bit color mode. - // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_8004, 25); + + value &= ~FL2K_MON_8BIT_RGB; // Clear bit 26, Disable 256 color palette. - // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_8004, 26); + + value &= ~FL2K_MON_256COLOR_PALETTE; // Clear bit 27, Disable first byte mask. - // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_8004, 27); + + value &= ~FL2K_MON_FIRST_BYTE_MASK; // Set bit 0, Reset VGA CCS. - // - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_8004, 0); + + value |= FL2K_MON_RESET_VGA_CSS; if (dev_ctx->vr_params.use_compression) { // Set bit 24, Enable compression mode. - // - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_8004, 24); + + value |= FL2K_MON_COMPRESSION; } if (OUTPUT_IMAGE_TYPE_RGB_16 == dev_ctx->vr_params.output_image_type) { @@ -387,80 +159,188 @@ bool fl2000_monitor_set_resolution(struct dev_ctx * dev_ctx, bool pll_changed) dev_ctx->vr_params.color_mode_16bit) { // Bit 31 for 555 mode. // - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_8004, 31); + value |= FL2K_MON_RGB_555_MODE; } else { // Bit 6 for 565 mode. // - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_8004, 6); + value |= FL2K_MON_RGB_565_MODE; } } +#if 0 /* ULLI : disabled, code is kept here only for consistently */ else if (OUTPUT_IMAGE_TYPE_RGB_8 == dev_ctx->vr_params.output_image_type) { // Bit 25 for enable eight bit color mode. // - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_8004, 25); + value |= FL2K_MON_8BIT_RGB; } +#endif // External DAC Control // // Set bit 7, Enable external DAC. // - fl2000_reg_bit_set(dev_ctx, REG_OFFSET_8004, 7); + value |= FL2K_MON_EXTERNAL_DAC; + + ret = fl2000_reg_write(dev_ctx, FL2K_REG_FORMAT, &value); +} + +static void _fl2000_set_intrl_ctrl(struct dev_ctx * dev_ctx) +{ + int ret; + uint32_t value; + + // REG_OFFSET_803C + // + + ret = fl2000_reg_read(dev_ctx, FL2K_REG_INT_CTRL, &value); + if (ret < 0) + return; + + // Clear bit 22 - Disable BIA. + + value &= ~FL2K_USB_BIA; + + // Clear bit 24 - Disable isoch error interrupt. + + value &= ~FL2K_USB_ISO_ERR_INT; + + // Clear bit 19,21 - Disable isoch auto recover. + + value &= ~FL2K_USB_ISO_AUTO_RECOVER; + + // Clear bit 13 - Disable isoch feedback interrupt. + + value &= ~FL2K_USB_ISO_FRAME_FEEDBACK; + + // Clear bit 27:29 - End Of Frame Type + + value &= ~FL2K_USB_END_MASK; + +#if 0 /* ULLI : remains only as remark */ + if (dev_ctx->vr_params.end_of_frame_type == EOF_ZERO_LENGTH) { + // Zero Length Bulk. + // +#endif + value |= FL2K_USB_END_ZERO_BULK; +#if 0 /* ULLI : remains only as remark */ + } + else { + // Pending Bit. + // + value |= FL2K_USB_END_PENDIG_BIT; + } +#endif + + ret = fl2000_reg_write(dev_ctx, FL2K_REG_INT_CTRL, &value); + +} + +static int _fl2000_set_video_timing(struct dev_ctx * dev_ctx, + struct fl2000_timing_entry const * entry) +{ + bool ret_val; + uint32_t h_sync_reg_1 = entry->h_sync_reg_1; + uint32_t h_sync_reg_2 = entry->h_sync_reg_2; + uint32_t v_sync_reg_1 = entry->v_sync_reg_1; + uint32_t v_sync_reg_2 = entry->v_sync_reg_2; + + ret_val = true; + + if (dev_ctx->hdmi_chip_found) { + if (dev_ctx->vr_params.width == 640 && + dev_ctx->vr_params.height == 480 && + dev_ctx->vr_params.freq == 60) { + h_sync_reg_2 = 0x600091; + v_sync_reg_2 = 0x2420024; + } else if (dev_ctx->vr_params.width == 1280 && + dev_ctx->vr_params.height == 720 && + dev_ctx->vr_params.freq == 60) { + v_sync_reg_2 = 0x1A5001A; + } else { + // No adjustment. + // + } + } // REG_OFFSET_8008 // - data = dev_ctx->vr_params.h_sync_reg_1; - if (fl2000_reg_write(dev_ctx, REG_OFFSET_8008, &data)) { - data = 0; - fl2000_reg_read(dev_ctx, REG_OFFSET_8008, &data); - if (dev_ctx->vr_params.h_sync_reg_1 != data) { - ret_val = false; - goto exit; - } + if (_fl2000_reg_write_verify(dev_ctx, FL2K_REG_H_SYNC1, &h_sync_reg_1)) { + ret_val = false; + goto exit; } // REG_OFFSET_800C // - data = dev_ctx->vr_params.h_sync_reg_2; - if (fl2000_reg_write(dev_ctx, REG_OFFSET_800C, &data)) { - fl2000_reg_read(dev_ctx, REG_OFFSET_800C, &data); - if (dev_ctx->vr_params.h_sync_reg_2 != data) { - ret_val = false; - goto exit; - } + if (_fl2000_reg_write_verify(dev_ctx, FL2K_REG_H_SYNC2, &h_sync_reg_2)) { + ret_val = false; + goto exit; } // REG_OFFSET_8010 // - data = dev_ctx->vr_params.v_sync_reg_1; - if (fl2000_reg_write(dev_ctx, REG_OFFSET_8010, &data)) { - fl2000_reg_read(dev_ctx, REG_OFFSET_8010, &data); - if (dev_ctx->vr_params.v_sync_reg_1 != data) { - ret_val = false; - goto exit; - } + if (_fl2000_reg_write_verify(dev_ctx, FL2K_REG_V_SYNC1, &v_sync_reg_1)) { + ret_val = false; + goto exit; } // REG_OFFSET_8014 // - data = dev_ctx->vr_params.v_sync_reg_2; - if (fl2000_reg_write(dev_ctx, REG_OFFSET_8014, &data)) { - fl2000_reg_read(dev_ctx, REG_OFFSET_8014, &data); - if ( dev_ctx->vr_params.v_sync_reg_2 != data ) { - ret_val = false; - goto exit; - } + if (_fl2000_reg_write_verify(dev_ctx, FL2K_REG_V_SYNC2, &v_sync_reg_2)) { + ret_val = false; + goto exit; + } + +exit: + return ret_val; +} + +///////////////////////////////////////////////////////////////////////////////// +// P U B L I C +///////////////////////////////////////////////////////////////////////////////// +// + +static bool fl2000_monitor_set_resolution(struct dev_ctx * dev_ctx, bool pll_changed, + struct fl2000_timing_entry const * entry) +{ + uint32_t data; + bool ret_val; + + dbg_msg(TRACE_LEVEL_VERBOSE, DBG_PNP, ">>>>"); + ret_val = true; + + if (pll_changed) { + // REG_OFFSET_802C + // + data = dev_ctx->vr_params.pll_reg; + fl2000_reg_write(dev_ctx, FL2K_REG_PLL, &data); + } + + // REG_OFFSET_8048 ( 0x8048 )< bit 15 > = 1, app reset, self clear. + // + fl2000_reg_bit_set(dev_ctx, REG_OFFSET_8048, 15); + + // Confirm PLL setting. + // + data = 0; + fl2000_reg_read(dev_ctx, FL2K_REG_PLL, &data); + if (dev_ctx->vr_params.pll_reg != data) { + ret_val = false; + goto exit; } + _fl2000_set_intrl_ctrl(dev_ctx); + _fl2000_set_video_mode(dev_ctx); + _fl2000_set_video_timing(dev_ctx, entry); + // REG_OFFSET_801C // // Clear bit 29:16 - Iso Register // - if (fl2000_reg_read(dev_ctx, REG_OFFSET_801C, &data)) { + if (fl2000_reg_read(dev_ctx, FL2K_REG_ISO_CTRL, &data)) { data &= 0xC000FFFF; - if (!fl2000_reg_write( dev_ctx, REG_OFFSET_801C, &data)) { + if (!fl2000_reg_write( dev_ctx, FL2K_REG_ISO_CTRL, &data)) { ret_val = false; goto exit; } @@ -474,6 +354,111 @@ bool fl2000_monitor_set_resolution(struct dev_ctx * dev_ctx, bool pll_changed) return ret_val; } +int +fl2000_dongle_set_params(struct dev_ctx * dev_ctx, struct vr_params * vr_params) +{ + int ret_val; + bool ret; + uint32_t old_pll; + uint32_t new_pll; + bool pll_changed; + struct fl2000_timing_entry const * entry = NULL; + size_t table_num; + + dbg_msg(TRACE_LEVEL_VERBOSE, DBG_PNP, ">>>>"); + + // FileIO thread references to parameters and need to avoid concurrent access. + // + ret_val = 0; + pll_changed = false; + + // Set PLL register takes long time to stabilize, therefore, we set that only + // found it's different to previous setting. + // + old_pll = dev_ctx->vr_params.pll_reg; + memcpy(&dev_ctx->vr_params, vr_params, sizeof(struct vr_params)); + + dev_ctx->vr_params.pll_reg = old_pll; + + if (dev_ctx->registry.CompressionEnable || + vr_params->use_compression) { + dev_ctx->vr_params.use_compression = 1; + + dev_ctx->vr_params.compression_mask_index_min = COMPRESSION_MASK_INDEX_MINIMUM; + dev_ctx->vr_params.compression_mask_index_max = COMPRESSION_MASK_INDEX_MAXIMUM; + + if (dev_ctx->registry.Usb2PixelFormatTransformCompressionEnable) { + // Bug#6346: Need more aggressive compression mask. + // + dev_ctx->vr_params.compression_mask = COMPRESSION_MASK_13_BIT_VALUE; + dev_ctx->vr_params.compression_mask_index = COMPRESSION_MASK_13_BIT_INDEX; + + // Output is RGB555, and need at most the mask. + // + dev_ctx->vr_params.compression_mask_index_min = COMPRESSION_MASK_15_BIT_INDEX; + } + else { + dev_ctx->vr_params.compression_mask = COMPRESSION_MASK_23_BIT_VALUE; + dev_ctx->vr_params.compression_mask_index = COMPRESSION_MASK_23_BIT_INDEX; + } + } + + switch (dev_ctx->vr_params.output_image_type) { + case OUTPUT_IMAGE_TYPE_RGB_16: + table_num = VGA_BIG_TABLE_16BIT_R0; + break; + case OUTPUT_IMAGE_TYPE_RGB_24: + default: + table_num = VGA_BIG_TABLE_24BIT_R0; + break; + } + + entry = fl2000_table_get_entry( + table_num, + dev_ctx->vr_params.width, + dev_ctx->vr_params.height, + dev_ctx->vr_params.freq); + if (entry == NULL) { + dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, + "ERROR fl2000_table_get_entry failed."); + ret_val = -EINVAL; + goto exit; + } + + dev_ctx->vr_params.h_total_time = entry->h_total_time; + dev_ctx->vr_params.v_total_time = entry->v_total_time; + + new_pll = entry->bulk_asic_pll; + + if (new_pll != dev_ctx->vr_params.pll_reg) { + pll_changed = true; + dev_ctx->vr_params.pll_reg = new_pll; + } + + ret = fl2000_monitor_set_resolution(dev_ctx, pll_changed, entry); + if (!ret) { + dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, + "[ERR] fl2000_monitor_set_resolution failed?"); + ret_val = -EIO; + goto exit; + } + + // Select Interface + // + ret_val = fl2000_dev_select_interface(dev_ctx); + if (ret_val < 0) { + dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, + "ERROR fl2000_dev_select_interface failed?"); + goto exit; + } + + dev_ctx->usb_pipe_bulk_out = usb_sndbulkpipe(dev_ctx->usb_dev, 1); + +exit: + dbg_msg(TRACE_LEVEL_VERBOSE, DBG_PNP, "<<<<"); + return (ret_val); +} + void fl2000_monitor_read_edid(struct dev_ctx * dev_ctx) { uint8_t index; @@ -529,71 +514,6 @@ void fl2000_monitor_read_edid(struct dev_ctx * dev_ctx) goto exit; } - if (dev_ctx->registry.FilterEdidTableEnable) { - // Filter EDID - // - if (IS_DEVICE_USB3LINK(dev_ctx)) { - fl2000_monitor_filter_established_timing(dev_ctx); - fl2000_monitor_filter_std_timing(dev_ctx); - fl2000_monitor_filter_detailed_timing(dev_ctx); - } - else { - switch (dev_ctx->registry.FilterEdidTableEnable) { - case EDID_FILTER_USB2_800_600_60HZ: - // 800x600@60Hz. - // - // PrivateParseEdidEstablishedTimingBitmap - // - dev_ctx->monitor_edid[0][35] = 1; - dev_ctx->monitor_edid[0][36] = 0; - dev_ctx->monitor_edid[0][37] = 0; - - // PrivateParseEdidStandardTimingInformation - // - for (index = 38; index < 54; index++) - dev_ctx->monitor_edid[0][index] = 0x01; - - // PrivateParseEdidDetailedTimingDescriptors - // - dev_ctx->monitor_edid[0][54] = 0x40; - dev_ctx->monitor_edid[0][55] = 0x0B; - dev_ctx->monitor_edid[0][56] = 0x20; - dev_ctx->monitor_edid[0][57] = 0x00; - dev_ctx->monitor_edid[0][58] = 0x30; - dev_ctx->monitor_edid[0][59] = 0x58; - dev_ctx->monitor_edid[0][60] = 0x00; - dev_ctx->monitor_edid[0][61] = 0x20; - break; - case EDID_FILTER_USB2_640_480_60HZ: - // - // PrivateParseEdidEstablishedTimingBitmap - // - dev_ctx->monitor_edid[0][35] = 0x20; - dev_ctx->monitor_edid[0][36] = 0; - dev_ctx->monitor_edid[0][37] = 0; - - // PrivateParseEdidStandardTimingInformation - // - for (index = 38; index < 54; index++) - dev_ctx->monitor_edid[0][index] = 0x01; - - // PrivateParseEdidDetailedTimingDescriptors - // - dev_ctx->monitor_edid[0][54] = 0x3F; - dev_ctx->monitor_edid[0][55] = 0x07; - dev_ctx->monitor_edid[0][56] = 0x80; - dev_ctx->monitor_edid[0][57] = 0x00; - dev_ctx->monitor_edid[0][58] = 0x20; - dev_ctx->monitor_edid[0][59] = 0xE0; - dev_ctx->monitor_edid[0][60] = 0x0; - dev_ctx->monitor_edid[0][61] = 0x10; - break; - default: - break; - } - } - } - check_sum = 0; for (index = 0; index < (EDID_SIZE - 1); index++) check_sum += dev_ctx->monitor_edid[0][index]; @@ -694,7 +614,7 @@ fl2000_monitor_plugout_handler( // TODO: FL2000DX should not need this step per Stanley's description. // This maybe hardware issue, and Jun is checking now. // - fl2000_reg_bit_clear(dev_ctx, REG_OFFSET_803C, 26); + fl2000_reg_bit_clear(dev_ctx, FL2K_REG_INT_CTRL, 26); // Per NJ's description: // Register 0x78 bit17 is used to control a bug where we did not wake up U1/U2 even @@ -718,6 +638,9 @@ fl2000_monitor_vga_status_handler( dbg_msg(TRACE_LEVEL_VERBOSE, DBG_PNP, ">>>>"); + dev_info(&dev_ctx->usb_dev->dev, "FL2000 interrupt status word %08x", + raw_status); + vga_status = (struct vga_status *) &raw_status; if (vga_status->connected) { /* @@ -768,7 +691,7 @@ fl2000_monitor_manual_check_connection(struct dev_ctx * dev_ctx) dbg_msg(TRACE_LEVEL_VERBOSE, DBG_PNP, ">>>>"); data = 0; - if (fl2000_reg_read(dev_ctx, REG_OFFSET_8000, &data)) { + if (fl2000_reg_read(dev_ctx, FL2K_REG_INT_STATUS, &data)) { fl2000_monitor_vga_status_handler(dev_ctx, data); } diff --git a/src/fl2000_monitor.h b/src/fl2000_monitor.h index 59ddcce..8caf298 100644 --- a/src/fl2000_monitor.h +++ b/src/fl2000_monitor.h @@ -11,7 +11,30 @@ #ifndef _FL2000_MONITOR_H_ #define _FL2000_MONITOR_H_ -bool fl2000_monitor_set_resolution(struct dev_ctx * dev_ctx, bool pll_changed); +enum fl2k_monitor_config { + FL2K_MON_RESET_VGA_CSS = BIT(0), + FL2K_MON_RGB_565_MODE = BIT(6), + FL2K_MON_EXTERNAL_DAC = BIT(7), /* HDMI ? */ + FL2K_MON_COMPRESSION = BIT(24), + FL2K_MON_8BIT_RGB = BIT(25), /* really only 8 bit, so maybe 222 RGB*/ + FL2K_MON_256COLOR_PALETTE = BIT(26), /* like old VGA displays ?? */ + + FL2K_MON_FIRST_BYTE_MASK = BIT(27), + FL2K_MON_RESET_DEFAULT = BIT(28), /* active low */ + FL2K_MON_RGB_555_MODE = BIT(31), +}; + +enum fl2k_usb_config_ctrl { + FL2K_USB_BIA = BIT(22), /* USB BIA ??? */ + FL2K_USB_ISO_ERR_INT = BIT(24), /* USB isoch err interrupt */ + FL2K_USB_HDMI_CTRL = BIT(25), /* HDMI control for resulution change ? */ + FL2K_USB_ISO_AUTO_RECOVER = (BIT(21) | BIT(19)), /* 2 bits why */ + FL2K_USB_ISO_FRAME_FEEDBACK = BIT(13), /* Feedback interrupt ? see REG_OFFSET_8000 */ + FL2K_USB_END_ZERO_BULK = BIT(28), /* send zero bulk at end of picture frame */ + FL2K_USB_END_PENDIG_BIT = BIT(29), /* send pending ? bit at end of frame */ +}; + +#define FL2K_USB_END_MASK GENMASK(29,27) void fl2000_monitor_read_edid(struct dev_ctx * dev_ctx); @@ -21,7 +44,7 @@ bool fl2000_monitor_resolution_in_white_table( uint32_t freq); void fl2000_monitor_manual_check_connection(struct dev_ctx * dev_ctx); - +int fl2000_dongle_set_params(struct dev_ctx * dev_ctx, struct vr_params * vr_params); void fl2000_monitor_vga_status_handler( struct dev_ctx * dev_ctx, uint32_t raw_status ); diff --git a/src/fl2000_register.h b/src/fl2000_register.h index eb9bd37..797f356 100644 --- a/src/fl2000_register.h +++ b/src/fl2000_register.h @@ -11,39 +11,39 @@ #ifndef _FL2000_REGISTER_H_ #define _FL2000_REGISTER_H_ -#define REG_OFFSET_8000 0x8000 -#define REG_OFFSET_8004 0x8004 -#define REG_OFFSET_8008 0x8008 -#define REG_OFFSET_800C 0x800C -#define REG_OFFSET_8010 0x8010 -#define REG_OFFSET_8014 0x8014 -#define REG_OFFSET_8018 0x8018 -#define REG_OFFSET_801C 0x801C -#define REG_OFFSET_8020 0x8020 -#define REG_OFFSET_8024 0x8024 -#define REG_OFFSET_8028 0x8028 -#define REG_OFFSET_802C 0x802C -#define REG_OFFSET_8030 0x8030 -#define REG_OFFSET_8034 0x8034 -#define REG_OFFSET_8038 0x8038 -#define REG_OFFSET_803C 0x803C -#define REG_OFFSET_8040 0x8040 -#define REG_OFFSET_8044 0x8044 -#define REG_OFFSET_8048 0x8048 -#define REG_OFFSET_804C 0x804C -#define REG_OFFSET_8050 0x8050 -#define REG_OFFSET_8054 0x8054 -#define REG_OFFSET_8058 0x8058 -#define REG_OFFSET_805C 0x805C -#define REG_OFFSET_8064 0x8064 -#define REG_OFFSET_8070 0x8070 -#define REG_OFFSET_8074 0x8074 -#define REG_OFFSET_8078 0x8078 -#define REG_OFFSET_807C 0x807C +#define FL2K_REG_INT_STATUS 0x8000 /* INT Status ? */ +#define FL2K_REG_FORMAT 0x8004 /* Picture format / Colormode ? */ +#define FL2K_REG_H_SYNC1 0x8008 /* h_sync_reg_1 */ +#define FL2K_REG_H_SYNC2 0x800C /* h_sync_reg_2 */ +#define FL2K_REG_V_SYNC1 0x8010 /* v_sync_reg_1 */ +#define FL2K_REG_V_SYNC2 0x8014 /* v_sync_reg_2 */ +#define REG_OFFSET_8018 0x8018 /* unknwon */ +#define FL2K_REG_ISO_CTRL 0x801C /* ISO ? reg 14 bit value ? */ +#define FL2K_REG_I2C_CTRL 0x8020 /* I2C Controller and I2C send */ +#define FL2K_REG_I2C_DATA_RD 0x8024 /* I2C read reg, 32 bit wide */ +#define FL2K_REG_I2C_DATA_WR 0x8028 /* I2C write reg, 2 bit wide */ +#define FL2K_REG_PLL 0x802C /* PLL regster */ +#define REG_OFFSET_8030 0x8030 /* unknown */ +#define REG_OFFSET_8034 0x8034 /* unknown */ +#define REG_OFFSET_8038 0x8038 /* unknown */ +#define FL2K_REG_INT_CTRL 0x803C /* INT control */ +#define REG_OFFSET_8040 0x8040 /* unknown */ +#define REG_OFFSET_8044 0x8044 /* unknown */ +#define REG_OFFSET_8048 0x8048 /* App reset */ +#define REG_OFFSET_804C 0x804C /* unknown */ +#define REG_OFFSET_8050 0x8050 /* unknown */ +#define REG_OFFSET_8054 0x8054 /* unknown */ +#define REG_OFFSET_8058 0x8058 /* unknown */ +#define REG_OFFSET_805C 0x805C /* unknown */ +#define REG_OFFSET_8064 0x8064 /* unknown */ +#define REG_OFFSET_8070 0x8070 /* unknown */ +#define REG_OFFSET_8074 0x8074 /* unknown */ +#define REG_OFFSET_8078 0x8078 /* unknown */ +#define REG_OFFSET_807C 0x807C /* unknown */ #define REG_OFFSET_8088 0x8088 -#define REG_OFFSET_0070 0x0070 -#define REG_OFFSET_0078 0x0078 +#define REG_OFFSET_0070 0x0070 /* unknown */ +#define REG_OFFSET_0078 0x0078 /* unknown */ bool fl2000_reg_write( struct dev_ctx * dev_ctx, diff --git a/src/fl2000_render.c b/src/fl2000_render.c index 68facf5..ec03660 100644 --- a/src/fl2000_render.c +++ b/src/fl2000_render.c @@ -10,6 +10,207 @@ #include "fl2000_include.h" +#define BULK_SIZE 512 +#define MAX_TRANSFER (58*1024) +#define GET_URB_TIMEOUT HZ +#define WRITES_IN_FLIGHT 4 + +void fl2k_urb_completion(struct urb *urb) +{ + struct urb_node *unode = urb->context; + struct dev_ctx *fl2k = unode->fl2k; + unsigned long flags; + + /* sync/async unlink faults aren't errors */ + if (urb->status) { + if (!(urb->status == -ENOENT || + urb->status == -ECONNRESET || + urb->status == -ESHUTDOWN)) { + dev_err(&fl2k->usb_dev->dev, "%s - nonzero write bulk status received: %d\n", + __func__, urb->status); + atomic_set(&fl2k->lost_pixels, 1); + } + } + + urb->transfer_buffer_length = fl2k->urbs.size; /* reset to actual */ + + spin_lock_irqsave(&fl2k->urbs.lock, flags); + list_add_tail(&unode->entry, &fl2k->urbs.list); + fl2k->urbs.available++; + spin_unlock_irqrestore(&fl2k->urbs.lock, flags); + +#if 0 + /* + * When using fb_defio, we deadlock if up() is called + * while another is waiting. So queue to another process. + */ + if (fb_defio) + schedule_delayed_work(&unode->release_urb_work, 0); + else +#endif + up(&fl2k->urbs.limit_sem); +} + +void fl2k_release_urb_work(struct work_struct *work) +{ + struct urb_node *unode = container_of(work, struct urb_node, + release_urb_work.work); + + up(&unode->fl2k->urbs.limit_sem); +} + +static void fl2k_free_urb_list(struct dev_ctx *fl2k) +{ + int count = fl2k->urbs.count; + struct list_head *node; + struct urb_node *unode; + struct urb *urb; + int ret; + unsigned long flags; + + dev_info(&fl2k->usb_dev->dev, "Waiting for completes and freeing all render urbs\n"); + + /* keep waiting and freeing, until we've got 'em all */ + while (count--) { + + /* Getting interrupted means a leak, but ok at shutdown*/ + ret = down_interruptible(&fl2k->urbs.limit_sem); + if (ret) + break; + + spin_lock_irqsave(&fl2k->urbs.lock, flags); + + node = fl2k->urbs.list.next; /* have reserved one with sem */ + list_del_init(node); + + spin_unlock_irqrestore(&fl2k->urbs.lock, flags); + + unode = list_entry(node, struct urb_node, entry); + urb = unode->urb; + + /* Free each separately allocated piece */ + usb_free_coherent(urb->dev, fl2k->urbs.size, + urb->transfer_buffer, urb->transfer_dma); + usb_free_urb(urb); + kfree(node); + } + fl2k->urbs.count = 0; +} + + +int fl2k_alloc_urb_list(struct dev_ctx *fl2k, int count, size_t size) +{ + int i = 0; + struct urb *urb; + struct urb_node *unode; + char *buf; + struct usb_host_endpoint *ep = + usb_pipe_endpoint(fl2k->usb_dev, usb_sndbulkpipe(fl2k->usb_dev, 1)); + + spin_lock_init(&fl2k->urbs.lock); + + fl2k->urbs.size = size; + INIT_LIST_HEAD(&fl2k->urbs.list); + + dev_info(&fl2k->usb_dev->dev, "ep fl2k_alloc_urb_list() pipe %d ep %p", + 1, ep); + + while (i < count) { + unode = kzalloc(sizeof(struct urb_node), GFP_KERNEL); + if (!unode) + break; + unode->fl2k = fl2k; + + INIT_DELAYED_WORK(&unode->release_urb_work, + fl2k_release_urb_work); + + urb = usb_alloc_urb(0, GFP_KERNEL); + if (!urb) { + kfree(unode); + break; + } + unode->urb = urb; /* ULLI check udl driver here */ + + buf = usb_alloc_coherent(fl2k->usb_dev, MAX_TRANSFER, GFP_KERNEL, + &urb->transfer_dma); + if (!buf) { + kfree(unode); + usb_free_urb(urb); + break; + } + + /* urb->transfer_buffer_length set to actual before submit */ + usb_fill_bulk_urb(urb, fl2k->usb_dev, + usb_sndbulkpipe(fl2k->usb_dev, 1), + buf, size, + fl2k_urb_completion, unode); + urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + + list_add_tail(&unode->entry, &fl2k->urbs.list); + + i++; + } + + sema_init(&fl2k->urbs.limit_sem, i); + fl2k->urbs.count = i; + fl2k->urbs.available = i; + + dev_info(&fl2k->usb_dev->dev ,"allocated %d %d byte urbs\n", i, (int) size); + + return i; +} + +struct urb *fl2k_get_urb(struct dev_ctx *fl2k) +{ + int ret = 0; + struct list_head *entry; + struct urb_node *unode; + struct urb *urb = NULL; + unsigned long flags; + + /* Wait for an in-flight buffer to complete and get re-queued */ + ret = down_timeout(&fl2k->urbs.limit_sem, GET_URB_TIMEOUT); + if (ret) { + atomic_set(&fl2k->lost_pixels, 1); + dev_info(&fl2k->usb_dev->dev, "wait for urb interrupted: %x available: %d\n", + ret, fl2k->urbs.available); + goto error; + } + + spin_lock_irqsave(&fl2k->urbs.lock, flags); + + BUG_ON(list_empty(&fl2k->urbs.list)); /* reserved one with limit_sem */ + entry = fl2k->urbs.list.next; + list_del_init(entry); + fl2k->urbs.available--; + + spin_unlock_irqrestore(&fl2k->urbs.lock, flags); + + unode = list_entry(entry, struct urb_node, entry); + urb = unode->urb; + +error: + return urb; +} + +int fl2k_submit_urb(struct dev_ctx *fl2k, struct urb *urb, size_t len) +{ + int ret; + + BUG_ON(len > fl2k->urbs.size); + + urb->transfer_buffer_length = len; /* set to actual payload len */ + ret = usb_submit_urb(urb, GFP_ATOMIC); + if (ret) { + fl2k_urb_completion(urb); /* because no one else will */ + atomic_set(&fl2k->lost_pixels, 1); + dev_err(&fl2k->usb_dev->dev, "usb_submit_urb error %d ep %p\n", + ret, urb->ep); + } + return ret; +} + + ///////////////////////////////////////////////////////////////////////////////// // P R I V A T E ///////////////////////////////////////////////////////////////////////////////// @@ -98,39 +299,110 @@ fl2000_render_with_busy_list_lock( goto exit; } - if ((dev_ctx->vr_params.end_of_frame_type == EOF_ZERO_LENGTH) && - (VR_TRANSFER_PIPE_BULK == dev_ctx->vr_params.trasfer_pipe)) { + spin_lock_irqsave(&dev_ctx->count_lock, flags); + render_ctx->pending_count++; + spin_unlock_irqrestore(&dev_ctx->count_lock, flags); + ret_val = usb_submit_urb( + render_ctx->zero_length_urb, GFP_ATOMIC); + if (ret_val != 0) { + dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, + "[ERR] zero_length_urb submit fails with %d.", + ret_val); + + /* + * the main_urb is already schedule, we wait until + * the completion to move the render_ctx to free_list + */ spin_lock_irqsave(&dev_ctx->count_lock, flags); - render_ctx->pending_count++; + render_ctx->pending_count--; spin_unlock_irqrestore(&dev_ctx->count_lock, flags); - ret_val = usb_submit_urb( - render_ctx->zero_length_urb, GFP_ATOMIC); - if (ret_val != 0) { - dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, - "[ERR] zero_length_urb submit fails with %d.", - ret_val); - + if (-ENODEV == ret_val || -ENOENT == ret_val) { /* - * the main_urb is already schedule, we wait until - * the completion to move the render_ctx to free_list + * mark the fl2000 device gone */ - spin_lock_irqsave(&dev_ctx->count_lock, flags); - render_ctx->pending_count--; - spin_unlock_irqrestore(&dev_ctx->count_lock, flags); - if (-ENODEV == ret_val || -ENOENT == ret_val) { - /* - * mark the fl2000 device gone - */ - dev_ctx->dev_gone = 1; - } - goto exit; + dev_ctx->dev_gone = 1; } + goto exit; } exit: dbg_msg(TRACE_LEVEL_VERBOSE, DBG_RENDER, "<<<<"); return ret_val; } +int fl2k_render_hline(struct dev_ctx *fl2k, const char *src, + u32 length) +{ + struct urb *urb; + char *buf; + + urb = fl2k_get_urb(fl2k); + if (!urb) + return -1; /* lost_pixels is set */ + + buf = urb->transfer_buffer; + + memcpy(buf, src, length); + return fl2k_submit_urb(fl2k, urb, length); +} + +int fl2k_handle_damage(struct dev_ctx *fl2k, + struct render_ctx *node) +{ + int ret; + struct primary_surface *surface = node->primary_surface; + int width = surface->width; + int height = surface->height; + u32 length; + uint8_t *buf = surface->render_buffer; + struct urb *urb; + unsigned long start_jiffies; + unsigned long end_jiffies; + int msec; + + start_jiffies = jiffies; + +#if 0 /* ULLI : this causes problems with logging via serial */ + dev_info(&fl2k->usb_dev->dev, "fl2k handle damage for %d lines", height); +#endif + if (in_irq()) + dev_info(&fl2k->usb_dev->dev, "ERROR fl2k_handle_damage in IRQ"); + + length = width * height * 3; + + while (length >= MAX_TRANSFER) { + ret = fl2k_render_hline(fl2k, buf, MAX_TRANSFER); + if (ret < 0) { + dev_err(&fl2k->usb_dev->dev, "fl2k fl2k_handle_damage(), no URB"); + return ret; + } + length -= MAX_TRANSFER; + buf += MAX_TRANSFER; + } + + if (length > 0) { + ret = fl2k_render_hline(fl2k, buf, length); + if (ret < 0) { + dev_err(&fl2k->usb_dev->dev, "fl2k fl2k_handle_damage(), no URB"); + return ret; + } + } + + /* ULLI : send null size USB at the end */ + urb = fl2k_get_urb(fl2k); + if (!urb) + return -1; /* lost_pixels is set */ + + fl2k_submit_urb(fl2k, urb, 0); + + end_jiffies = jiffies; + msec = jiffies_to_msecs(end_jiffies - start_jiffies); + +#if 0 /* : ULLI this causes problems with logging via serial */ + dev_info(&fl2k->usb_dev->dev, "fl2k handle damage for %d lines msec : %d", + height, msec); +#endif + return 0; +} int fl2000_render_ctx_create( @@ -244,6 +516,11 @@ fl2000_render_create(struct dev_ctx * dev_ctx) goto exit; } + if (!fl2k_alloc_urb_list(dev_ctx, WRITES_IN_FLIGHT, MAX_TRANSFER)) { + dev_err(&dev_ctx->usb_dev->dev, "udl_alloc_urb_list failed\n"); + goto exit; + } + INIT_LIST_HEAD(&dev_ctx->render.surface_list); spin_lock_init(&dev_ctx->render.surface_list_lock); dev_ctx->render.surface_list_count = 0; @@ -266,6 +543,9 @@ fl2000_render_destroy(struct dev_ctx * dev_ctx) fl2000_render_ctx_destroy(dev_ctx); + if (dev_ctx->urbs.count) + fl2k_free_urb_list(dev_ctx); + dbg_msg(TRACE_LEVEL_VERBOSE, DBG_RENDER, "<<<<"); } @@ -451,7 +731,7 @@ fl2000_schedule_next_render(struct dev_ctx * dev_ctx) render_ctx = list_first_entry( &staging_list, struct render_ctx, list_entry); list_del(&render_ctx->list_entry); - ret_val = fl2000_render_with_busy_list_lock(dev_ctx, render_ctx); + ret_val = fl2k_handle_damage(dev_ctx, render_ctx); if (ret_val < 0) { dbg_msg(TRACE_LEVEL_ERROR, DBG_PNP, "usb_submit_urb failed %d, "