via_id.c revision 90b17f1b
17e6fb56fSmrg/*
27e6fb56fSmrg * Copyright 2004-2005 The Unichrome Project  [unichrome.sf.net]
37e6fb56fSmrg *
47e6fb56fSmrg * Permission is hereby granted, free of charge, to any person obtaining a
57e6fb56fSmrg * copy of this software and associated documentation files (the "Software"),
67e6fb56fSmrg * to deal in the Software without restriction, including without limitation
77e6fb56fSmrg * the rights to use, copy, modify, merge, publish, distribute, sub license,
87e6fb56fSmrg * and/or sell copies of the Software, and to permit persons to whom the
97e6fb56fSmrg * Software is furnished to do so, subject to the following conditions:
107e6fb56fSmrg *
117e6fb56fSmrg * The above copyright notice and this permission notice (including the
127e6fb56fSmrg * next paragraph) shall be included in all copies or substantial portions
137e6fb56fSmrg * of the Software.
147e6fb56fSmrg *
157e6fb56fSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
167e6fb56fSmrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
177e6fb56fSmrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
187e6fb56fSmrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
197e6fb56fSmrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
207e6fb56fSmrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
217e6fb56fSmrg * DEALINGS IN THE SOFTWARE.
227e6fb56fSmrg */
237e6fb56fSmrg
247e6fb56fSmrg/*
257e6fb56fSmrg * A big structure with card-ID information, plus some checking functions.
267e6fb56fSmrg */
277e6fb56fSmrg
287e6fb56fSmrg#ifdef HAVE_CONFIG_H
297e6fb56fSmrg#include "config.h"
307e6fb56fSmrg#endif
317e6fb56fSmrg
327e6fb56fSmrg#include "via_driver.h"
337e6fb56fSmrg
347e6fb56fSmrg/*
357e6fb56fSmrg * There's no reason for this to be known outside of via_id.o;
367e6fb56fSmrg * only a pointer to a single entry will ever be used outside.
377e6fb56fSmrg */
387e6fb56fSmrgstatic struct ViaCardIdStruct ViaCardId[] = {
397e6fb56fSmrg    /*** CLE266 ***/
407e6fb56fSmrg    {"ECS CLE266 (1.0)",                      VIA_CLE266,  0x1019, 0x1B43, VIA_DEVICE_CRT | VIA_DEVICE_TV},
417e6fb56fSmrg    {"LT21 VA28",                             VIA_CLE266,  0x1019, 0x1B44, VIA_DEVICE_CRT},
427e6fb56fSmrg    {"ECS G320",                              VIA_CLE266,  0x1019, 0xB320, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
437e6fb56fSmrg    {"Asustek Terminator C3V",                VIA_CLE266,  0x1043, 0x8155, VIA_DEVICE_CRT},
447e6fb56fSmrg    {"VIA VT3122 (CLE266)-EPIA M/MII/...",    VIA_CLE266,  0x1106, 0x3122, VIA_DEVICE_CRT | VIA_DEVICE_TV},
457e6fb56fSmrg    {"MSI MS-6723",                           VIA_CLE266,  0x1462, 0X7238, VIA_DEVICE_CRT | VIA_DEVICE_TV},
467e6fb56fSmrg    {"Clevo T200V",                           VIA_CLE266,  0x1558, 0x200A, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
477e6fb56fSmrg    {"Biostar ARKplus III",                   VIA_CLE266,  0x1565, 0x3204, VIA_DEVICE_CRT | VIA_DEVICE_TV}, /* FS454 TV encoder */
487e6fb56fSmrg
497e6fb56fSmrg    /*** KM400, KM400A, KN400, P4M800 ***/
507e6fb56fSmrg    {"ECS KM400-M2",                          VIA_KM400,   0x1019, 0x1842, VIA_DEVICE_CRT},
517e6fb56fSmrg    {"Acer Aspire 135x",                      VIA_KM400,   0x1025, 0x0033, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV},
527e6fb56fSmrg    {"Asustek A7V8X-MX",                      VIA_KM400,   0x1043, 0x80ED, VIA_DEVICE_CRT},
537e6fb56fSmrg    {"Asustek A7V8X-LA",                      VIA_KM400,   0x1043, 0x80F9, VIA_DEVICE_CRT},
547e6fb56fSmrg    {"Asustek A7V8X-MX SE / A7V400-MX",       VIA_KM400,   0x1043, 0x8118, VIA_DEVICE_CRT},
557e6fb56fSmrg    {"Asustek Terminator A7VT",               VIA_KM400,   0x1043, 0x813E, VIA_DEVICE_CRT | VIA_DEVICE_TV},
567e6fb56fSmrg    {"Mitac 8375X",                           VIA_KM400,   0x1071, 0x8375, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, /* aka "UMAX 585T" */
577e6fb56fSmrg    {"Soltek SL-75MIV2",                      VIA_KM400,   0x1106, 0x0000, VIA_DEVICE_CRT}, /* VIA/0x0000 */
5890b17f1bSmrg    {"VIA VT3205 (KM400)",                    VIA_KM400,   0x1106, 0x3205, VIA_DEVICE_CRT | VIA_DEVICE_TV}, /* borrowed by Soltek SL-B7C-FGR */
597e6fb56fSmrg    {"VIA VT7205 (KM400A)",                   VIA_KM400,   0x1106, 0x7205, VIA_DEVICE_CRT}, /* borrowed by Biostar iDEQ 200V/Chaintech 7VIF4 */
607e6fb56fSmrg    {"Shuttle FX43",                          VIA_KM400,   0x1297, 0xF643, VIA_DEVICE_CRT | VIA_DEVICE_TV},
617e6fb56fSmrg    {"Giga-byte 7VM400(A)M",                  VIA_KM400,   0x1458, 0xD000, VIA_DEVICE_CRT},
627e6fb56fSmrg    {"MSI KM4(A)M-V",                         VIA_KM400,   0x1462, 0x7061, VIA_DEVICE_CRT}, /* aka "DFI KM400-MLV" */
637e6fb56fSmrg    {"MSI PM8M2-V",                           VIA_KM400,   0x1462, 0x7071, VIA_DEVICE_CRT},
6490b17f1bSmrg    {"MSI PM8M-V",                            VIA_KM400,   0x1462, 0x7104, VIA_DEVICE_CRT},
657e6fb56fSmrg    {"MSI KM4(A)M-L",                         VIA_KM400,   0x1462, 0x7348, VIA_DEVICE_CRT},
667e6fb56fSmrg    {"Abit VA-10 (1)",                        VIA_KM400,   0x147B, 0x140B, VIA_DEVICE_CRT},
677e6fb56fSmrg    {"Abit VA-10 (2)",                        VIA_KM400,   0x147B, 0x140C, VIA_DEVICE_CRT},
687e6fb56fSmrg    {"Abit VA-20",                            VIA_KM400,   0x147B, 0x1411, VIA_DEVICE_CRT},
697e6fb56fSmrg    {"Averatec 322x",                         VIA_KM400,   0x14FF, 0x030D, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
707e6fb56fSmrg    {"FIC K7M-400A",                          VIA_KM400,   0x1509, 0x9233, VIA_DEVICE_CRT},
717e6fb56fSmrg    {"Biostar M7VIZ",                         VIA_KM400,   0x1565, 0x1200, VIA_DEVICE_CRT},
727e6fb56fSmrg    {"Biostar P4M800-M7",                     VIA_KM400,   0x1565, 0x1202, VIA_DEVICE_CRT},
737e6fb56fSmrg    {"Uniwill 755CI",                         VIA_KM400,   0x1584, 0x800A, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, /* aka "Gericom Hummer Advance", "Maxdata M-Book 1200X" */
747e6fb56fSmrg    {"Packard Bell Quasar2 (MSI MS6786)",     VIA_KM400,   0x1631, 0xD002, VIA_DEVICE_CRT},
7590b17f1bSmrg    {"Nec Powermate VL5",                     VIA_KM400,   0x1631, 0xD003, VIA_DEVICE_CRT},
767e6fb56fSmrg    {"Epox EP-8KMM3I",                        VIA_KM400,   0x1695, 0x9023, VIA_DEVICE_CRT},
777e6fb56fSmrg    {"ASRock Inc. K7VM2/3/4",                 VIA_KM400,   0x1849, 0x7205, VIA_DEVICE_CRT},
787e6fb56fSmrg    {"ACorp KM400QP",                         VIA_KM400,   0x1915, 0x1100, VIA_DEVICE_CRT | VIA_DEVICE_TV},
797e6fb56fSmrg    {"Mercury P4VM800M7 (1.0)",               VIA_KM400,   0x3344, 0x1122, VIA_DEVICE_CRT},
807e6fb56fSmrg    {"Soyo K7VME",                            VIA_KM400,   0xA723, 0x10FD, VIA_DEVICE_CRT},
817e6fb56fSmrg
827e6fb56fSmrg    /*** K8M800, K8N800, K8N800A ***/
837e6fb56fSmrg    {"ZX-5360",                               VIA_K8M800,  0x1019, 0x0F60, VIA_DEVICE_CRT | VIA_DEVICE_LCD },
847e6fb56fSmrg    {"ECS K8M800-M2 (1.0)",                   VIA_K8M800,  0x1019, 0x1828, VIA_DEVICE_CRT},
857e6fb56fSmrg    {"ECS K8M800-M2 (2.0)",                   VIA_K8M800,  0x1019, 0x1B45, VIA_DEVICE_CRT},
867e6fb56fSmrg    {"Acer Aspire 136x",                      VIA_K8M800,  0x1025, 0x006E, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV},
877e6fb56fSmrg    {"Asustek K8V-MX",                        VIA_K8M800,  0x1043, 0x8129, VIA_DEVICE_CRT},
887e6fb56fSmrg    {"Mitac 8399",                            VIA_K8M800,  0x1071, 0x8399, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, /* aka "Pogolinux Konabook 3100" */
897e6fb56fSmrg    {"Mitac 8889",                            VIA_K8M800,  0x1071, 0x8889, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV},
907e6fb56fSmrg    {"MSI K8M Neo-V (broken pci id)",         VIA_K8M800,  0x1106, 0x0204, VIA_DEVICE_CRT},
9190b17f1bSmrg    {"VIA VT3108 (K8M800)",                   VIA_K8M800,  0x1106, 0x3108, VIA_DEVICE_CRT}, /* borrowed by Asustek A8V-MX */
927e6fb56fSmrg    {"Shuttle FX21",                          VIA_K8M800,  0x1297, 0x3052, VIA_DEVICE_CRT},
937e6fb56fSmrg    {"Shuttle FX83",                          VIA_K8M800,  0x1297, 0xF683, VIA_DEVICE_CRT | VIA_DEVICE_TV},
947e6fb56fSmrg    {"Sharp Actius AL27",                     VIA_K8M800,  0x13BD, 0x1044, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
9590b17f1bSmrg    {"Sharp Mebius PC-CS30H",                 VIA_K8M800,  0x13BD, 0x1047, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
967e6fb56fSmrg    {"Sharp PC-AE30J",                        VIA_K8M800,  0x13BD, 0x104B, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
977e6fb56fSmrg    {"Giga-byte GA-K8VM800M",                 VIA_K8M800,  0x1458, 0xD000, VIA_DEVICE_CRT},
987e6fb56fSmrg    {"MSI K8M Neo-V",                         VIA_K8M800,  0x1462, 0x0320, VIA_DEVICE_CRT},
997e6fb56fSmrg    {"MSI K8MM-V",                            VIA_K8M800,  0x1462, 0x7142, VIA_DEVICE_CRT},
1007e6fb56fSmrg    {"MSI K8MM3-V",                           VIA_K8M800,  0x1462, 0x7181, VIA_DEVICE_CRT},
1017e6fb56fSmrg    {"MSI K9MM-V",                            VIA_K8M800,  0x1462, 0x7312, VIA_DEVICE_CRT},
1027e6fb56fSmrg    {"MSI K8MM-ILSR",                         VIA_K8M800,  0x1462, 0x7410, VIA_DEVICE_CRT},
1037e6fb56fSmrg    {"Abit KV-80",                            VIA_K8M800,  0x147B, 0x1419, VIA_DEVICE_CRT},
1047e6fb56fSmrg    {"Abit KV-81",                            VIA_K8M800,  0x147B, 0x141A, VIA_DEVICE_CRT},
1057e6fb56fSmrg    {"Averatec 327x",                         VIA_K8M800,  0x14FF, 0x0315, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1067e6fb56fSmrg    {"Twinhead N14RA",                        VIA_K8M800,  0x14FF, 0x0321, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1077e6fb56fSmrg    {"Averatec 3715",                         VIA_K8M800,  0x14FF, 0x0322, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1087e6fb56fSmrg    {"Averatec 54xx",                         VIA_K8M800,  0x1509, 0x3930, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1097e6fb56fSmrg    {"FIC K8M-800M",                          VIA_K8M800,  0x1509, 0x6001, VIA_DEVICE_CRT},
1107e6fb56fSmrg    {"Clevo L570W",                           VIA_K8M800,  0x1558, 0x0570, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1117e6fb56fSmrg    {"Mesh Pegasus",                          VIA_K8M800,  0x1558, 0x4702, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1127e6fb56fSmrg    {"Biostar K8VGA-M",                       VIA_K8M800,  0x1565, 0x1203, VIA_DEVICE_CRT},
1137e6fb56fSmrg    {"DFI K8M800-MLVF",                       VIA_K8M800,  0x15BD, 0x1002, VIA_DEVICE_CRT},
1147e6fb56fSmrg    {"Packard Bell Easynote E6116/E63xx",     VIA_K8M800,  0x1631, 0xC008, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV},
1157e6fb56fSmrg    {"Packard Bell Easynote B3 800/B3340",    VIA_K8M800,  0x1631, 0xC009, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1167e6fb56fSmrg    {"Packard Bell Imedia 2097",              VIA_K8M800,  0x1631, 0xD007, VIA_DEVICE_CRT},
1177e6fb56fSmrg    {"Fujitsu-Siemens Amilo K7610",           VIA_K8M800,  0x1734, 0x10B3, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
11890b17f1bSmrg    {"Lenovo ThinkCenter E51 8714",           VIA_K8M800,  0x17AA, 0x1008, VIA_DEVICE_CRT},
1197e6fb56fSmrg    {"ASRock K8Upgrade-VM800",                VIA_K8M800,  0x1849, 0x3108, VIA_DEVICE_CRT},
1207e6fb56fSmrg    {"Axper XP-M8VM800",                      VIA_K8M800,  0x1940, 0xD000, VIA_DEVICE_CRT},
1217e6fb56fSmrg
1227e6fb56fSmrg    /*** PM800, PM880, PN800, CN400 ***/
1237e6fb56fSmrg    {"VIA VT3118 (PM800)",                    VIA_PM800,   0x1106, 0x3118, VIA_DEVICE_CRT}, /* borrowed by ECS PM800-M2 */
1247e6fb56fSmrg    {"Hasee F700C",                           VIA_PM800,   0x1071, 0x8650, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1257e6fb56fSmrg    {"Mitac 8666",                            VIA_PM800,   0x1071, 0x8666, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV},
1267e6fb56fSmrg    {"Medion MIM2080",                        VIA_PM800,   0x1071, 0x8965, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV},
1277e6fb56fSmrg    {"TwinHead E12BL",                        VIA_PM800,   0x14FF, 0x0314, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1287e6fb56fSmrg    {"MaxSelect Optima C4",                   VIA_PM800,   0x1558, 0x5402, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1297e6fb56fSmrg    {"Biostar P4VMA-M",                       VIA_PM800,   0x1565, 0x1202, VIA_DEVICE_CRT},
1307e6fb56fSmrg    {"Sotec WA2330S5",                        VIA_PM800,   0x161F, 0x2037, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV},
1317e6fb56fSmrg    {"Packard Bell Easynote R1100",           VIA_PM800,   0x1631, 0xC015, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1327e6fb56fSmrg    {"Fujitsu/Siemens Amilo Pro V2010",       VIA_PM800,   0x1734, 0x1078, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV},
1337e6fb56fSmrg    {"Fujitsu/Siemens Amilo L7310",           VIA_PM800,   0x1734, 0x10AB, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1347e6fb56fSmrg    {"ASRock P4VM8",                          VIA_PM800,   0x1849, 0x3118, VIA_DEVICE_CRT},
1357e6fb56fSmrg    {"Chaintech MPM800-3",                    VIA_PM800,   0x270F, 0x7671, VIA_DEVICE_CRT},
1367e6fb56fSmrg    {"KamLAB KINO-LUKE-533-R20",              VIA_PM800,   0x3344, 0x1122, VIA_DEVICE_CRT},
1377e6fb56fSmrg
1387e6fb56fSmrg    /*** P4M800Pro, VN800, CN700 ***/
1397e6fb56fSmrg    {"Clevo/RoverBook Partner E419L",         VIA_VM800,   0x1019, 0x0F75, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1407e6fb56fSmrg    {"Haier A60-440256080BD",                 VIA_VM800,   0x1019, 0x0F79, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1417e6fb56fSmrg    {"PCChips P23G",                          VIA_VM800,   0x1019, 0x1623, VIA_DEVICE_CRT},
1427e6fb56fSmrg    {"ECS P4M800PRO-M",                       VIA_VM800,   0x1019, 0x2122, VIA_DEVICE_CRT},
14390b17f1bSmrg    {"ECS P4M800PRO-M2 (V2.0)",               VIA_VM800,   0x1019, 0x2123, VIA_DEVICE_CRT},
1447e6fb56fSmrg    {"ECS C7VCM",                             VIA_VM800,   0x1019, 0xAA2D, VIA_DEVICE_CRT},
1457e6fb56fSmrg    {"PCChips V21G",                          VIA_VM800,   0x1019, 0xAA51, VIA_DEVICE_CRT},
14690b17f1bSmrg    {"Hewlett Packard DX2020",                VIA_VM800,   0x103C, 0x3027, VIA_DEVICE_CRT},
1477e6fb56fSmrg    {"Asustek P5VDC-MX",                      VIA_VM800,   0x1043, 0x3344, VIA_DEVICE_CRT},
1487e6fb56fSmrg    {"Asustek P5VDC-TVM",                     VIA_VM800,   0x1043, 0x81CE, VIA_DEVICE_CRT},
1497e6fb56fSmrg    {"Foxconn P4M800P7MB-RS2H",               VIA_VM800,   0x105B, 0x0CF0, VIA_DEVICE_CRT},
1507e6fb56fSmrg    {"Gateway MX3210",                        VIA_VM800,   0x107B, 0x0216, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1517e6fb56fSmrg    {"VIA VT3344 (VM800) - EPIA EN",          VIA_VM800,   0x1106, 0x3344, VIA_DEVICE_CRT | VIA_DEVICE_TV},
1527e6fb56fSmrg    {"Gigabyte GA-8VM800M-775",               VIA_VM800,   0x1458, 0xD000, VIA_DEVICE_CRT},
1537e6fb56fSmrg    {"MSI PM8M-V",                            VIA_VM800,   0x1462, 0x7104, VIA_DEVICE_CRT},
1547e6fb56fSmrg    {"MSI Fuzzy CN700/CN700T/CN700G",         VIA_VM800,   0x1462, 0x7199, VIA_DEVICE_CRT | VIA_DEVICE_TV},
1557e6fb56fSmrg    {"MSI PM8M3-V",                           VIA_VM800,   0x1462, 0x7211, VIA_DEVICE_CRT},
1567e6fb56fSmrg    {"MSI PM8PM",                             VIA_VM800,   0x1462, 0x7222, VIA_DEVICE_CRT},
1577e6fb56fSmrg    {"Twinhead M6",                           VIA_VM800,   0x14FF, 0xA007, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1587e6fb56fSmrg    {"RoverBook Partner W500",                VIA_VM800,   0x1509, 0x4330, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
15990b17f1bSmrg    {"FIC PTM800Pro LF",                      VIA_VM800,   0x1509, 0x601A, VIA_DEVICE_CRT},
1607e6fb56fSmrg    {"Clevo/RoverBook Voyager V511L",         VIA_VM800,   0x1558, 0x0662, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1617e6fb56fSmrg    {"Clevo M5xxS",                           VIA_VM800,   0x1558, 0x5406, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1627e6fb56fSmrg    {"Biostar P4M80-M4 / P4VMA-M",            VIA_VM800,   0x1565, 0x1202, VIA_DEVICE_CRT},
1637e6fb56fSmrg    {"Biostar P4M800 Pro-M7",                 VIA_VM800,   0x1565, 0x1206, VIA_DEVICE_CRT},
1647e6fb56fSmrg    {"Packard Bell Lima (ASUS MBP5VDZ-NVM)",  VIA_VM800,   0x1631, 0xE018, VIA_DEVICE_CRT},
1657e6fb56fSmrg    {"Fujitsu/Siemens Amilo Pro V2030",       VIA_VM800,   0x1734, 0x109B, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1667e6fb56fSmrg    {"Fujitsu/Siemens Amilo Pro V2035",       VIA_VM800,   0x1734, 0x10AE, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1677e6fb56fSmrg    {"Fujitsu/Siemens Amilo Pro V2055",       VIA_VM800,   0x1734, 0x10CA, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1687e6fb56fSmrg    {"Fujitsu/Siemens Amilo L7320",           VIA_VM800,   0x1734, 0x10CD, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1697e6fb56fSmrg    {"ASRock P4VM800",                        VIA_VM800,   0x1849, 0x3344, VIA_DEVICE_CRT},
1707e6fb56fSmrg    {"Asustek P5V800-MX",                     VIA_VM800,   0x3344, 0x1122, VIA_DEVICE_CRT},
1717e6fb56fSmrg
1727e6fb56fSmrg    /*** K8M890 ***/
1737e6fb56fSmrg    {"IBM AnyPlace Kiosk 3xx",                VIA_K8M890,  0x1106, 0x3230, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1747e6fb56fSmrg    {"Asustek A8V-VM",                        VIA_K8M890,  0x1043, 0x81B5, VIA_DEVICE_CRT},
1757e6fb56fSmrg    {"Asustek M2V-MX SE",                     VIA_K8M890,  0x1043, 0x8297, VIA_DEVICE_CRT},
1767e6fb56fSmrg    {"Foxconn K8M890M2MA-RS2H",               VIA_K8M890,  0x105B, 0x0C84, VIA_DEVICE_CRT},
1777e6fb56fSmrg    {"Shuttle FX22V1",                        VIA_K8M890,  0x1297, 0x3080, VIA_DEVICE_CRT},
17890b17f1bSmrg    {"MSI K8M890M2-V",                        VIA_K8M890,  0x1462, 0x7139, VIA_DEVICE_CRT},
1797e6fb56fSmrg    {"MSI K9VGM-V",                           VIA_K8M890,  0x1462, 0x7253, VIA_DEVICE_CRT},
1807e6fb56fSmrg    {"Averatec 226x",                         VIA_K8M890,  0x14FF, 0xA002, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1817e6fb56fSmrg    {"Fujitsu/Siemens Amilo La 1703",         VIA_K8M890,  0x1734, 0x10D9, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1827e6fb56fSmrg
1837e6fb56fSmrg    /*** P4M900, VN896, CN896 ***/
1847e6fb56fSmrg    {"VIA Epia SN",                           VIA_P4M900,  0x0908, 0x1975, VIA_DEVICE_CRT},
1857e6fb56fSmrg    {"Hewlett Packard 2133 Mini-Note",        VIA_P4M900,  0x103C, 0x3030, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
18690b17f1bSmrg    {"Hewlett Packard Compaq dx2040",         VIA_P4M900,  0x103C, 0x3633, VIA_DEVICE_CRT},
1877e6fb56fSmrg    {"Asustek P5VD2-VM",                      VIA_P4M900,  0x1043, 0x81CE, VIA_DEVICE_CRT},
1887e6fb56fSmrg    {"Asustek P5VD2-VM SE",                   VIA_P4M900,  0x1043, 0x8252, VIA_DEVICE_CRT},
1897e6fb56fSmrg    {"Foxconn P4M9007MB-8RS2H",               VIA_P4M900,  0x105B, 0x0C87, VIA_DEVICE_CRT},
1907e6fb56fSmrg    {"Mitac 8515",                            VIA_P4M900,  0x1071, 0x8515, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1917e6fb56fSmrg    {"Medion Notebook MD96483",               VIA_P4M900,  0x1071, 0x8615, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1927e6fb56fSmrg    {"Mitac 8624",                            VIA_P4M900,  0x1071, 0x8624, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
19390b17f1bSmrg    {"VIA VB8001 Mini-ITX Board (P4M900)",    VIA_P4M900,  0x1106, 0x3371, VIA_DEVICE_CRT},
1947e6fb56fSmrg    {"Gigabyte GA-VM900M",                    VIA_P4M900,  0x1458, 0xD000, VIA_DEVICE_CRT},
1957e6fb56fSmrg    {"MSI VR321",                             VIA_P4M900,  0x1462, 0x3355, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
1967e6fb56fSmrg    {"MSI P4M900M / P4M900M2-F/L",            VIA_P4M900,  0x1462, 0x7255, VIA_DEVICE_CRT},
19790b17f1bSmrg    {"MSI PM9M-V",                            VIA_P4M900,  0x1462, 0x7364, VIA_DEVICE_CRT},
1987e6fb56fSmrg    {"MSI P4M900M3-L",                        VIA_P4M900,  0x1462, 0x7387, VIA_DEVICE_CRT},
1997e6fb56fSmrg    {"Twinhead H12V",                         VIA_P4M900,  0x14FF, 0xA00F, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
20090b17f1bSmrg    {"Twinhead K15V",                         VIA_P4M900,  0x14FF, 0xA012, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
20190b17f1bSmrg    {"Semp Informática Notebook IS 1462",     VIA_P4M900,  0x1509, 0x1D41, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2027e6fb56fSmrg    {"Everex NC1501/NC1503",                  VIA_P4M900,  0x1509, 0x1E30, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2037e6fb56fSmrg    {"Clevo M660SE",                          VIA_P4M900,  0x1558, 0x0664, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2047e6fb56fSmrg    {"Clevo M660SR",                          VIA_P4M900,  0x1558, 0x0669, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2057e6fb56fSmrg    {"Neo Endura 540SLe",                     VIA_P4M900,  0x1558, 0x5408, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2067e6fb56fSmrg    {"Clevo M54xSR",                          VIA_P4M900,  0x1558, 0x5409, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2077e6fb56fSmrg    {"Biostar P4M900M-M7 SE",                 VIA_P4M900,  0x1565, 0x1207, VIA_DEVICE_CRT},
20890b17f1bSmrg    {"Biostar Viotech 3100+",                 VIA_P4M900,  0x1565, 0x1209, VIA_DEVICE_CRT},
2097e6fb56fSmrg    {"Fujitsu/Siemens Amilo Pro V3515",       VIA_P4M900,  0x1734, 0x10CB, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2107e6fb56fSmrg    {"Fujitsu/Siemens Amilo Li1705",          VIA_P4M900,  0x1734, 0x10F7, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2117e6fb56fSmrg    {"ASRock P4VM900-SATA2",                  VIA_P4M900,  0x1849, 0x3371, VIA_DEVICE_CRT},
2127e6fb56fSmrg
2137e6fb56fSmrg    /*** CX700 ***/
2147e6fb56fSmrg    {"VIA VT8454B",                           VIA_CX700,   0x0908, 0x1975, VIA_DEVICE_CRT}, /* Evaluation board, reference possibly wrong */
2157e6fb56fSmrg    {"VIA VT3324 (CX700)",                    VIA_CX700,   0x1106, 0x3157, VIA_DEVICE_CRT},
2167e6fb56fSmrg    {"MSI Fuzzy CX700/CX700D",                VIA_CX700,   0x1462, 0x8020, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV},
2177e6fb56fSmrg    {"Samsung Q1B",                           VIA_CX700,   0x144D, 0xC02C, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2187e6fb56fSmrg    {"FIC CE260",                             VIA_CX700,   0x1509, 0x2D30, VIA_DEVICE_LCD},
2197e6fb56fSmrg    {"FIC CE261",                             VIA_CX700,   0x1509, 0x2F07, VIA_DEVICE_LCD},
2207e6fb56fSmrg    {"Gigabyte M704 / RoverPC A700GQ",        VIA_CX700,   0x161F, 0x2060, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2217e6fb56fSmrg    {"Packard Bell EasyNote XS",              VIA_CX700,   0x1631, 0xC201, VIA_DEVICE_LCD}, /* aka Everex Cloudbook CE1200V */
2227e6fb56fSmrg
2237e6fb56fSmrg    /*** P4M890, VN890 ***/
2247e6fb56fSmrg    {"PCChips P29G",                          VIA_P4M890,  0x1019, 0x1629, VIA_DEVICE_CRT},
2257e6fb56fSmrg    {"ECS P4M890T-M v2.0",                    VIA_P4M890,  0x1019, 0x2171, VIA_DEVICE_CRT},
2267e6fb56fSmrg    {"PCChips ????",                          VIA_P4M890,  0x1019, 0x2174, VIA_DEVICE_CRT},
2277e6fb56fSmrg    {"Asustek P5V-VM ULTRA",                  VIA_P4M890,  0x1043, 0x81B5, VIA_DEVICE_CRT},
2287e6fb56fSmrg    {"Asustek P5V-VM DH",                     VIA_P4M890,  0x1043, 0x81CE, VIA_DEVICE_CRT},
2297e6fb56fSmrg    {"Mitac 8615",                            VIA_P4M890,  0x1071, 0x8615, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2307e6fb56fSmrg    {"Mitac 8624 (Joybook R41E)",             VIA_P4M890,  0x1071, 0x8624, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2317e6fb56fSmrg    {"VIA VT3343 (P4M890)",                   VIA_P4M890,  0x1106, 0x3343, VIA_DEVICE_CRT},
2327e6fb56fSmrg    {"MSI P4M890M-L/IL (MS-7255)",            VIA_P4M890,  0x1462, 0x7255, VIA_DEVICE_CRT},
2337e6fb56fSmrg    {"Biostar P4M890-M7 TE",                  VIA_P4M890,  0x1565, 0x1207, VIA_DEVICE_CRT},
2347e6fb56fSmrg    {"ASRock P4VM890",                        VIA_P4M890,  0x1849, 0x3343, VIA_DEVICE_CRT},
2357e6fb56fSmrg
2367e6fb56fSmrg    /*** VX800 ***/
2377e6fb56fSmrg    {"VIA Epia M700",                         VIA_VX800,   0x1106, 0x1122, VIA_DEVICE_CRT},
23890b17f1bSmrg    {"Siragon ML-6200",                       VIA_VX800,   0x1106, 0x2211, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
23990b17f1bSmrg    {"Guillemot-Hercules ECafe EC900B",       VIA_VX800,   0x1106, 0x3349, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2407e6fb56fSmrg    {"VIA OpenBook",                          VIA_VX800,   0x1170, 0x0311, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, /* VIA OpenBook eNote VBE8910 */
2417e6fb56fSmrg    {"Samsung NC20",                          VIA_VX800,   0x144d, 0xc04e, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
24290b17f1bSmrg    {"FIC CE2A1",                             VIA_VX800,   0x1509, 0x3002, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2437e6fb56fSmrg    {"Quanta DreamBook Light IL1",            VIA_VX800,   0x152d, 0x0771, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
2447e6fb56fSmrg    {"Lenovo S12",                            VIA_VX800,   0x17aa, 0x388c, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
24590b17f1bSmrg    {"Fujitsu Futro S100",                    VIA_VX800,   0xA0A0, 0x0702, VIA_DEVICE_CRT},
2467e6fb56fSmrg
2477e6fb56fSmrg    /*** VX855 ***/
24890b17f1bSmrg    {"Dell Optiplex FX130",                   VIA_VX855,   0x1028, 0x0509, VIA_DEVICE_CRT},
2497e6fb56fSmrg    {"VIA VT8562C",                           VIA_VX855,   0x1106, 0x5122, VIA_DEVICE_CRT},
25090b17f1bSmrg    {"OLPC XO 1.5",                           VIA_VX855,   0x152D, 0x0833, VIA_DEVICE_LCD},
25190b17f1bSmrg
25290b17f1bSmrg    /*** VX900 ***/
25390b17f1bSmrg    {"Simmtronics SIMM-PC VX900i",            VIA_VX900,   0x1019, 0x3126, VIA_DEVICE_CRT},
25490b17f1bSmrg    {"Foxconn L740",                          VIA_VX900,   0x105B, 0x0CFD, VIA_DEVICE_LCD | VIA_DEVICE_CRT},
25590b17f1bSmrg    {"HP T5550 Thin Client",                  VIA_VX900,   0x1106, 0x7122, VIA_DEVICE_CRT},
25690b17f1bSmrg    {"Biostar Viotech 3200+",                 VIA_VX900,   0x1565, 0x120A, VIA_DEVICE_CRT},
25790b17f1bSmrg    {"ASRock PV530",                          VIA_VX900,   0x1849, 0x7122, VIA_DEVICE_CRT},
25890b17f1bSmrg    {"Fujitsu Futro A300",                    VIA_VX900,   0xA0A0, 0x080F, VIA_DEVICE_CRT},
2597e6fb56fSmrg
2607e6fb56fSmrg    /* keep this */
2617e6fb56fSmrg    {NULL,                                    VIA_UNKNOWN, 0x0000, 0x0000, VIA_DEVICE_NONE}
2627e6fb56fSmrg};
2637e6fb56fSmrg
26490b17f1bSmrgstatic void
2657e6fb56fSmrgViaDoubleCheckCLE266Revision(ScrnInfoPtr pScrn)
2667e6fb56fSmrg{
2677e6fb56fSmrg    vgaHWPtr hwp = VGAHWPTR(pScrn);
2687e6fb56fSmrg    VIAPtr pVia = VIAPTR(pScrn);
2697e6fb56fSmrg    /* Crtc 0x4F is only defined in CLE266Cx */
2707e6fb56fSmrg    CARD8 tmp = hwp->readCrtc(hwp, 0x4F);
27190b17f1bSmrg
2727e6fb56fSmrg    hwp->writeCrtc(hwp, 0x4F, 0x55);
2737e6fb56fSmrg    if (hwp->readCrtc(hwp, 0x4F) == 0x55) {
27490b17f1bSmrg        if (CLE266_REV_IS_AX(pVia->ChipRev))
27590b17f1bSmrg            xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "CLE266 Revision seems"
27690b17f1bSmrg                       " to be Cx, yet %d was detected previously.\n",
27790b17f1bSmrg                       pVia->ChipRev);
2787e6fb56fSmrg    } else {
27990b17f1bSmrg        if (CLE266_REV_IS_CX(pVia->ChipRev))
28090b17f1bSmrg            xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "CLE266 Revision seems"
28190b17f1bSmrg                       " to be Ax, yet %d was detected previously.\n",
28290b17f1bSmrg                       pVia->ChipRev);
2837e6fb56fSmrg    }
2847e6fb56fSmrg    hwp->writeCrtc(hwp, 0x4F, tmp);
2857e6fb56fSmrg}
2867e6fb56fSmrg
2877e6fb56fSmrgvoid
2887e6fb56fSmrgViaCheckCardId(ScrnInfoPtr pScrn)
2897e6fb56fSmrg{
2907e6fb56fSmrg    struct ViaCardIdStruct *Id;
2917e6fb56fSmrg    VIAPtr pVia = VIAPTR(pScrn);
29290b17f1bSmrg
2937e6fb56fSmrg    if ((SUBVENDOR_ID(pVia->PciInfo) == VENDOR_ID(pVia->PciInfo)) &&
29490b17f1bSmrg        (SUBSYS_ID(pVia->PciInfo) == DEVICE_ID(pVia->PciInfo)))
2957e6fb56fSmrg        xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
2967e6fb56fSmrg                   "Manufacturer plainly copied main PCI IDs to subsystem/card IDs.\n");
2977e6fb56fSmrg
2987e6fb56fSmrg    for (Id = ViaCardId; Id->String; Id++) {
29990b17f1bSmrg        if ((Id->Chip == pVia->Chipset) &&
30090b17f1bSmrg            (Id->Vendor == SUBVENDOR_ID(pVia->PciInfo)) &&
30190b17f1bSmrg            (Id->Device == SUBSYS_ID(pVia->PciInfo))) {
30290b17f1bSmrg            xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "Detected %s. Card-Ids (%4X|%4X)\n", Id->String, SUBVENDOR_ID(pVia->PciInfo), SUBSYS_ID(pVia->PciInfo));
30390b17f1bSmrg            pVia->ActiveDevice = Id->Outputs;
30490b17f1bSmrg            pVia->Id = Id;
30590b17f1bSmrg            return;
30690b17f1bSmrg        }
3077e6fb56fSmrg    }
30890b17f1bSmrg
30990b17f1bSmrg    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
31090b17f1bSmrg               "Unknown Card-Ids (%4X|%4X|%4X), Chipset: %s; please report to openchrome-users@lists.freedesktop.org\n",
3117e6fb56fSmrg               DEVICE_ID(pVia->PciInfo), SUBVENDOR_ID(pVia->PciInfo), SUBSYS_ID(pVia->PciInfo), pScrn->chipset);
3127e6fb56fSmrg    pVia->Id = NULL;
3137e6fb56fSmrg
31490b17f1bSmrg    if (pVia->Chipset == VIA_CLE266)
31590b17f1bSmrg        ViaDoubleCheckCLE266Revision(pScrn);
31690b17f1bSmrg}
317