X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fvideo%2Fsis%2Finit.h;h=7e36b7ac1470570b4fc43e9b4168bd36b0a98e94;hb=f7f1b0f1e2fbadeab12d24236000e778aa9b1ead;hp=05d1881a642e4da22243555493dca66cf50d7394;hpb=9bf4aaab3e101692164d49b7ca357651eb691cb6;p=linux-2.6.git diff --git a/drivers/video/sis/init.h b/drivers/video/sis/init.h index 05d1881a6..7e36b7ac1 100644 --- a/drivers/video/sis/init.h +++ b/drivers/video/sis/init.h @@ -35,7 +35,7 @@ * * 3) The name of the author may not be used to endorse or promote products * * derived from this software without specific prior written permission. * * - * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESSED OR + * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, @@ -54,21 +54,16 @@ #define _INIT_ #include "osdef.h" - #include "initdef.h" -#include "vgatypes.h" -#include "vstruct.h" #ifdef LINUX_XF86 -#include "xf86.h" -#include "xf86Pci.h" -#include "xf86PciInfo.h" -#include "xf86_OSproc.h" #include "sis.h" #include "sis_regs.h" #endif #ifdef LINUX_KERNEL +#include "vgatypes.h" +#include "vstruct.h" #ifdef SIS_CP #undef SIS_CP #endif @@ -85,43 +80,44 @@ #endif /* Mode numbers */ -const USHORT ModeIndex_320x200[] = {0x59, 0x41, 0x00, 0x4f}; -const USHORT ModeIndex_320x240[] = {0x50, 0x56, 0x00, 0x53}; -const USHORT ModeIndex_320x240_FSTN[] = {0x5a, 0x5b, 0x00, 0x00}; /* FSTN */ -const USHORT ModeIndex_400x300[] = {0x51, 0x57, 0x00, 0x54}; -const USHORT ModeIndex_512x384[] = {0x52, 0x58, 0x00, 0x5c}; -const USHORT ModeIndex_640x400[] = {0x2f, 0x5d, 0x00, 0x5e}; -const USHORT ModeIndex_640x480[] = {0x2e, 0x44, 0x00, 0x62}; -const USHORT ModeIndex_720x480[] = {0x31, 0x33, 0x00, 0x35}; -const USHORT ModeIndex_720x576[] = {0x32, 0x34, 0x00, 0x36}; -const USHORT ModeIndex_768x576[] = {0x5f, 0x60, 0x00, 0x61}; -const USHORT ModeIndex_800x480[] = {0x70, 0x7a, 0x00, 0x76}; -const USHORT ModeIndex_800x600[] = {0x30, 0x47, 0x00, 0x63}; -const USHORT ModeIndex_848x480[] = {0x39, 0x3b, 0x00, 0x3e}; -const USHORT ModeIndex_856x480[] = {0x3f, 0x42, 0x00, 0x45}; -const USHORT ModeIndex_960x540[] = {0x1d, 0x1e, 0x00, 0x1f}; /* 315 series only */ -const USHORT ModeIndex_1024x768[] = {0x38, 0x4a, 0x00, 0x64}; -const USHORT ModeIndex_1024x576[] = {0x71, 0x74, 0x00, 0x77}; -const USHORT ModeIndex_1024x600[] = {0x20, 0x21, 0x00, 0x22}; /* 300 series only */ -const USHORT ModeIndex_1280x1024[] = {0x3a, 0x4d, 0x00, 0x65}; -const USHORT ModeIndex_1280x960[] = {0x7c, 0x7d, 0x00, 0x7e}; -const USHORT ModeIndex_1152x768[] = {0x23, 0x24, 0x00, 0x25}; /* 300 series only */ -const USHORT ModeIndex_1152x864[] = {0x29, 0x2a, 0x00, 0x2b}; -const USHORT ModeIndex_300_1280x768[] = {0x55, 0x5a, 0x00, 0x5b}; -const USHORT ModeIndex_310_1280x768[] = {0x23, 0x24, 0x00, 0x25}; -const USHORT ModeIndex_1280x720[] = {0x79, 0x75, 0x00, 0x78}; -const USHORT ModeIndex_1280x800[] = {0x14, 0x15, 0x00, 0x16}; -const USHORT ModeIndex_1360x768[] = {0x48, 0x4b, 0x00, 0x4e}; -const USHORT ModeIndex_300_1360x1024[]= {0x67, 0x6f, 0x00, 0x72}; /* 300 series, BARCO only */ -const USHORT ModeIndex_1400x1050[] = {0x26, 0x27, 0x00, 0x28}; /* 315 series only */ -const USHORT ModeIndex_1680x1050[] = {0x17, 0x18, 0x00, 0x19}; /* 315 series only */ -const USHORT ModeIndex_1600x1200[] = {0x3c, 0x3d, 0x00, 0x66}; -const USHORT ModeIndex_1920x1080[] = {0x2c, 0x2d, 0x00, 0x73}; /* 315 series only */ -const USHORT ModeIndex_1920x1440[] = {0x68, 0x69, 0x00, 0x6b}; -const USHORT ModeIndex_300_2048x1536[]= {0x6c, 0x6d, 0x00, 0x00}; -const USHORT ModeIndex_310_2048x1536[]= {0x6c, 0x6d, 0x00, 0x6e}; - -const USHORT SiS_DRAMType[17][5]={ +static const USHORT ModeIndex_320x200[] = {0x59, 0x41, 0x00, 0x4f}; +static const USHORT ModeIndex_320x240[] = {0x50, 0x56, 0x00, 0x53}; +static const USHORT ModeIndex_320x240_FSTN[] = {0x5a, 0x5b, 0x00, 0x00}; /* FSTN */ +static const USHORT ModeIndex_400x300[] = {0x51, 0x57, 0x00, 0x54}; +static const USHORT ModeIndex_512x384[] = {0x52, 0x58, 0x00, 0x5c}; +static const USHORT ModeIndex_640x400[] = {0x2f, 0x5d, 0x00, 0x5e}; +static const USHORT ModeIndex_640x480[] = {0x2e, 0x44, 0x00, 0x62}; +static const USHORT ModeIndex_720x480[] = {0x31, 0x33, 0x00, 0x35}; +static const USHORT ModeIndex_720x576[] = {0x32, 0x34, 0x00, 0x36}; +static const USHORT ModeIndex_768x576[] = {0x5f, 0x60, 0x00, 0x61}; +static const USHORT ModeIndex_800x480[] = {0x70, 0x7a, 0x00, 0x76}; +static const USHORT ModeIndex_800x600[] = {0x30, 0x47, 0x00, 0x63}; +static const USHORT ModeIndex_848x480[] = {0x39, 0x3b, 0x00, 0x3e}; +static const USHORT ModeIndex_856x480[] = {0x3f, 0x42, 0x00, 0x45}; +static const USHORT ModeIndex_960x540[] = {0x1d, 0x1e, 0x00, 0x1f}; /* 315 series only */ +static const USHORT ModeIndex_960x600[] = {0x20, 0x21, 0x00, 0x22}; /* 315 series only */ +static const USHORT ModeIndex_1024x768[] = {0x38, 0x4a, 0x00, 0x64}; +static const USHORT ModeIndex_1024x576[] = {0x71, 0x74, 0x00, 0x77}; +static const USHORT ModeIndex_1024x600[] = {0x20, 0x21, 0x00, 0x22}; /* 300 series only */ +static const USHORT ModeIndex_1280x1024[] = {0x3a, 0x4d, 0x00, 0x65}; +static const USHORT ModeIndex_1280x960[] = {0x7c, 0x7d, 0x00, 0x7e}; +static const USHORT ModeIndex_1152x768[] = {0x23, 0x24, 0x00, 0x25}; /* 300 series only */ +static const USHORT ModeIndex_1152x864[] = {0x29, 0x2a, 0x00, 0x2b}; +static const USHORT ModeIndex_300_1280x768[] = {0x55, 0x5a, 0x00, 0x5b}; +static const USHORT ModeIndex_310_1280x768[] = {0x23, 0x24, 0x00, 0x25}; +static const USHORT ModeIndex_1280x720[] = {0x79, 0x75, 0x00, 0x78}; +static const USHORT ModeIndex_1280x800[] = {0x14, 0x15, 0x00, 0x16}; +static const USHORT ModeIndex_1360x768[] = {0x48, 0x4b, 0x00, 0x4e}; +static const USHORT ModeIndex_300_1360x1024[]= {0x67, 0x6f, 0x00, 0x72}; /* 300 series, BARCO only */ +static const USHORT ModeIndex_1400x1050[] = {0x26, 0x27, 0x00, 0x28}; /* 315 series only */ +static const USHORT ModeIndex_1680x1050[] = {0x17, 0x18, 0x00, 0x19}; /* 315 series only */ +static const USHORT ModeIndex_1600x1200[] = {0x3c, 0x3d, 0x00, 0x66}; +static const USHORT ModeIndex_1920x1080[] = {0x2c, 0x2d, 0x00, 0x73}; /* 315 series only */ +static const USHORT ModeIndex_1920x1440[] = {0x68, 0x69, 0x00, 0x6b}; +static const USHORT ModeIndex_300_2048x1536[]= {0x6c, 0x6d, 0x00, 0x00}; +static const USHORT ModeIndex_310_2048x1536[]= {0x6c, 0x6d, 0x00, 0x6e}; + +static const USHORT SiS_DRAMType[17][5]={ {0x0C,0x0A,0x02,0x40,0x39}, {0x0D,0x0A,0x01,0x40,0x48}, {0x0C,0x09,0x02,0x20,0x35}, @@ -141,7 +137,7 @@ const USHORT SiS_DRAMType[17][5]={ {0x09,0x08,0x01,0x01,0x00} }; -const USHORT SiS_SDRDRAM_TYPE[13][5] = +static const USHORT SiS_SDRDRAM_TYPE[13][5] = { { 2,12, 9,64,0x35}, { 1,13, 9,64,0x44}, @@ -158,7 +154,7 @@ const USHORT SiS_SDRDRAM_TYPE[13][5] = { 1, 9, 8, 2,0x00} }; -const USHORT SiS_DDRDRAM_TYPE[4][5] = +static const USHORT SiS_DDRDRAM_TYPE[4][5] = { { 2,12, 9,64,0x35}, { 2,12, 8,32,0x31}, @@ -166,7 +162,7 @@ const USHORT SiS_DDRDRAM_TYPE[4][5] = { 2, 9, 8, 4,0x01} }; -const USHORT SiS_MDA_DAC[] = +static const USHORT SiS_MDA_DAC[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, @@ -178,7 +174,7 @@ const USHORT SiS_MDA_DAC[] = 0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F }; -const USHORT SiS_CGA_DAC[] = +static const USHORT SiS_CGA_DAC[] = { 0x00,0x10,0x04,0x14,0x01,0x11,0x09,0x15, 0x00,0x10,0x04,0x14,0x01,0x11,0x09,0x15, @@ -190,7 +186,7 @@ const USHORT SiS_CGA_DAC[] = 0x2A,0x3A,0x2E,0x3E,0x2B,0x3B,0x2F,0x3F }; -const USHORT SiS_EGA_DAC[] = +static const USHORT SiS_EGA_DAC[] = { 0x00,0x10,0x04,0x14,0x01,0x11,0x05,0x15, 0x20,0x30,0x24,0x34,0x21,0x31,0x25,0x35, @@ -202,7 +198,7 @@ const USHORT SiS_EGA_DAC[] = 0x2A,0x3A,0x2E,0x3E,0x2B,0x3B,0x2F,0x3F }; -const USHORT SiS_VGA_DAC[] = +static const USHORT SiS_VGA_DAC[] = { 0x00,0x10,0x04,0x14,0x01,0x11,0x09,0x15, 0x2A,0x3A,0x2E,0x3E,0x2B,0x3B,0x2F,0x3F, @@ -259,11 +255,12 @@ static const SiS_ModeResInfoStruct SiS_ModeResInfo[] = { 1680,1050, 8,16}, /* 0x1d */ { 1280, 800, 8,16}, /* 0x1e */ { 1920,1080, 8,16}, /* 0x1f */ - { 960, 540, 8,16} /* 0x20 */ + { 960, 540, 8,16}, /* 0x20 */ + { 960, 600, 8,16} /* 0x21 */ }; #if defined(SIS300) || defined(SIS315H) -static SiS_StandTableStruct SiS_StandTable[]= +static const SiS_StandTableStruct SiS_StandTable[]= { /* 0x00: MD_0_200 */ { @@ -907,7 +904,8 @@ static const SiS_TVDataStruct SiS_ExtHiTVData[] = { 5, 4, 0x627,0x464,0x670,0x3c0,0x128, 0, 0, 0x00,0x00,0x00,0x00}, /* 1280x1024 */ { 4, 1, 0x41a,0x233,0x60c,0x3c0,0x143,128, 0, 0x00,0x00,0x00,0x00}, /* 800x480 */ { 5, 2, 0x578,0x293,0x670,0x3c0,0x032, 0, 0, 0x00,0x00,0x00,0x00}, /* 1024x576 */ - { 8, 5, 0x6d6,0x323,0x670,0x3c0,0x128, 0, 0, 0x00,0x00,0x00,0x00} /* 1280x720 */ + { 8, 5, 0x6d6,0x323,0x670,0x3c0,0x128, 0, 0, 0x00,0x00,0x00,0x00}, /* 1280x720 */ + { 137, 32, 0x3d4,0x233,0x663,0x3bf,0x143, 0, 0, 0x00,0x00,0x00,0x00} /* 960x600 */ }; static const SiS_TVDataStruct SiS_St525pData[] = @@ -930,67 +928,41 @@ static const SiS_TVDataStruct SiS_St750pData[] = static const SiS_TVDataStruct SiS_Ext750pData[] = { -#if 1 { 143, 65, 0x35a,0x1bb,0x4f6,0x1b8,0x0ab, 0, 0x0ab, 0x00,0x00,0x00,0x00}, { 88, 35, 0x35a,0x189,0x4f6,0x1b8,0x0ab, 0, 0x0ab, 0x00,0x00,0x00,0x00}, { 18, 5, 0x339,0x1ae,0x500,0x2d0,0x05c, 0, 0x05c, 0x00,0x00,0x00,0x00}, { 143, 70, 0x39c,0x189,0x4f6,0x1b8,0x05c, 0, 0x05c, 0x00,0x00,0x00,0x00}, { 99, 32, 0x320,0x1fe,0x500,0x2d0, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 640x480 */ { 5, 4, 0x5d8,0x29e,0x500,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 800x600 */ -#if 0 - { 2, 1, 0x35a,0x1f7,0x4f6,0x1e0, 0,128, 0, 0x00,0x00,0x00,0x00}, /* 720x480 */ -#endif { 99, 32, 0x320,0x1fe,0x500,0x2d0, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 720x480 test WORKS */ { 68, 64, 0x55f,0x346,0x500,0x2a8,0x27e, 0, 0, 0x00,0x00,0x00,0x00}, /* 1024x768 */ { 5, 2, 0x3a7,0x226,0x500,0x2a8, 0,128, 0, 0x00,0x00,0x00,0x00}, /* 720x576 */ { 25, 24, 0x5d8,0x2f3,0x460,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00} /* 1280x720 WORKS */ -#endif -#if 0 - { 3, 1, 0x3a7,0x1d6,0x500,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, - { 24, 7, 0x3a7,0x1a4,0x500,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, - { 3, 1, 0x3a7,0x1d6,0x500,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, - { 24, 7, 0x3a7,0x1a4,0x500,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, - { 99, 32, 0x320,0x1fe,0x500,0x2d0, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 640x480 */ - { 5, 4, 0x5d8,0x29e,0x500,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 800x600 */ - { 2, 1, 0x35a,0x1f7,0x4f6,0x1e0, 0,128, 0, 0x00,0x00,0x00,0x00}, /* 720x480 */ - { 68, 64, 0x55f,0x346,0x500,0x2a8,0x27e, 0, 0, 0x00,0x00,0x00,0x00}, /* 1024x768 */ - { 25, 24, 0x5d8,0x2f3,0x460,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00} /* 1280x720 */ -#endif -#if 0 - { 136, 35, 0x339,0x181,0x460,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* TEST (0.93) BAD */ - { 17, 6, 0x339,0x203,0x460,0x2a8, 50, 0, 50, 0x00,0x00,0x00,0x00}, - { 136, 35, 0x339,0x181,0x460,0x2a8, 50, 0, 50, 0x00,0x00,0x00,0x00}, - { 17, 6, 0x339,0x203,0x460,0x2a8, 50, 0, 50, 0x00,0x00,0x00,0x00}, - { 85, 46, 0x3f4,0x27b,0x460,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 640x480 */ - { 17, 16, 0x55f,0x323,0x460,0x2a8,0x2b6, 0, 0, 0x00,0x00,0x00,0x00}, /* 800x600 */ - { 136, 35, 0x339,0x181,0x460,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 720x480 */ - { 187, 74, 0x39d,0x203,0x460,0x2a8, 50, 0, 0, 0x00,0x00,0x00,0x00}, /* 1024x768 */ - { 25, 24, 0x5d8,0x2f3,0x460,0x2a8, 50, 0, 50, 0x00,0x00,0x00,0x00} /* 1280x720 */ -#endif }; -static const SiS_LCDDataStruct SiS_LCD1280x720Data[] = +static const SiS_LCDDataStruct SiS_LCD1280x720Data[] = /* 2.03.00 */ { - { 14, 5, 864, 432, 1344, 806 }, /* 640x400 */ - { 16, 5, 864, 378, 1344, 806 }, - { 14, 5, 864, 432, 1344, 806 }, - { 16, 5, 864, 378, 1344, 806 }, - { 24, 11, 924, 523, 1344, 806 }, /* 640x480 */ - { 7, 5, 1152, 664, 1344, 806 }, /* 800x600 */ - { 0, 0, 0, 0, 0, 0 }, + { 44, 15, 864, 430, 1408, 806 }, /* 640x400 */ + { 128, 35, 792, 385, 1408, 806 }, + { 44, 15, 864, 430, 1408, 806 }, + { 128, 35, 792, 385, 1408, 806 }, + { 22, 9, 864, 516, 1408, 806 }, /* 640x480 */ + { 8, 5, 1056, 655, 1408, 806 }, /* 800x600 */ + { 0, 0, 0, 0, 0, 0 }, /* 1024x768 */ + { 0, 0, 0, 0, 0, 0 }, /* 1280x1024 */ { 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0 }, - { 1, 1, 1344, 806, 1344, 806 } /* 1280x720 */ + { 1, 1, 1408, 806, 1408, 806 } /* 1280x720 */ }; /* About 1280x768: For TMDS, Panel_1280x768 will only be set if * the panel is a Fujitsu 7911 (VL-17WDX8) (with clock 81, 1688x802) * Other TMDS panels of this resolution will be treated as custom. - * For LVDS, we know two types. Data follows: + * For LVDS, we know another type (_2). + * (Note: 1280x768_3 is now special for SiS301/NetVista */ -static const SiS_LCDDataStruct SiS_StLCD1280x768_2Data[] = +static const SiS_LCDDataStruct SiS_StLCD1280x768_2Data[] = /* 2.03.00 */ { { 64, 21, 858, 434, 1408, 806 }, /* 640x400 */ { 32, 9, 858, 372, 1408, 806 }, @@ -1000,22 +972,27 @@ static const SiS_LCDDataStruct SiS_StLCD1280x768_2Data[] = { 64, 51, 1364, 663, 1408, 806 }, /* 800x600 */ { 88, 81, 1296, 806, 1408, 806 }, /* 1024x768 */ { 0, 0, 0, 0, 0, 0 }, - { 1, 1, 1408, 806, 1408, 806 } /* 1280x768 */ + { 1, 1, 1408, 806, 1408, 806 }, /* 1280x768 */ + { 0, 0, 0, 0, 0, 0 }, + { 16, 15, 1600, 750, 1600, 806 } /* 1280x720 - from Ext */ }; -static const SiS_LCDDataStruct SiS_ExtLCD1280x768_2Data[] = +static const SiS_LCDDataStruct SiS_ExtLCD1280x768_2Data[] = /* 2.03.00 */ { - { 64, 25, 1056, 422, 1408, 806 }, /*, 664 */ - { 128, 39, 884, 396, 1408, 806 }, /*, 640 */ - { 64, 25, 1056, 422, 1408, 806 }, /*, 664 */ - { 128, 39, 884, 396, 1408, 806 }, /*, 640 */ - { 32, 15, 1056, 513, 1408, 806 }, /*, 664 */ - { 176, 125, 1280, 640, 1408, 806 }, /*, 768 */ - { 88, 81, 1296, 806, 1408, 806 }, + { 16, 5, 960, 410, 1600, 806 }, /* 640x400 */ + { 64, 21, 1152, 364, 1600, 806 }, + { 16, 5, 960, 410, 1600, 806 }, + { 64, 21, 1152, 364, 1600, 806 }, + { 32, 13, 1040, 493, 1600, 806 }, /* 640x480 */ + { 16, 9, 1152, 618, 1600, 806 }, /* 800x600 */ + { 25, 21, 1344, 796, 1600, 806 }, /* 1024x768 */ + { 0, 0, 0, 0, 0, 0 }, + { 1, 1, 1600, 806, 1600, 806 }, /* 1280x768 */ { 0, 0, 0, 0, 0, 0 }, - { 1, 1, 1408, 806, 1408, 806 } + { 16, 15, 1600, 750, 1600, 806 } /* 1280x720 */ }; +#if 0 /* Not used; _3 now reserved for NetVista (SiS301) */ static const SiS_LCDDataStruct SiS_LCD1280x768_3Data[] = { { 64, 25, 1056, 422, 1664, 798 }, /* 640x400 */ @@ -1026,20 +1003,40 @@ static const SiS_LCDDataStruct SiS_LCD1280x768_3Data[] = { 176, 125, 1280, 640, 1408, 806 }, /* ,768 */ /* 800x600 */ { 64, 61, 1342, 806, 1408, 806 }, /* 1024x768 */ { 0, 0, 0, 0, 0, 0 }, - { 1, 1, 1408, 806, 1408, 806 } /* 1280x768 */ + { 1, 1, 1408, 806, 1408, 806 }, /* 1280x768 */ + { 0, 0, 0, 0, 0, 0 }, + { 16, 15, 1600, 750, 1600, 806 } /* 1280x720 from above */ }; +#endif -static const SiS_LCDDataStruct SiS_LCD1280x800Data[] = +static const SiS_LCDDataStruct SiS_LCD1280x800Data[] = /* 0.93.12a (TMDS) */ { - { 128, 51, 1122, 412, 1408, 816 }, /* 640x400 */ + { 128, 51, 1122, 412, 1408, 816 }, /* 640x400 */ { 128, 49, 1232, 361, 1408, 816 }, { 128, 51, 1122, 412, 1408, 816 }, { 128, 49, 1232, 361, 1408, 816 }, - { 8, 3, 880, 491, 1408, 816 }, /* 640x480 */ - { 11, 6, 1024, 612, 1408, 816 }, /* 800x600 */ - { 22, 21, 1400, 784, 1408, 816 }, /* 1024x768 */ - { 0, 0, 0, 0, 0, 0 }, - { 1, 1, 1408, 816, 1408, 816 } /* 1280x800 */ + { 8, 3, 880, 491, 1408, 816 }, /* 640x480 */ + { 11, 6, 1024, 612, 1408, 816 }, /* 800x600 */ + { 22, 21, 1400, 784, 1408, 816 }, /* 1024x768 */ + { 0, 0, 0, 0, 0, 0 }, /* 1280x1024 */ + { 1, 1, 1408, 816, 1408, 816 }, /* 1280x800 */ + { 0, 0, 0, 0, 0, 0 }, /* 1280x768 (patch index) */ + { 0, 0, 0, 0, 0, 0 } /* 1280x720 */ +}; + +static const SiS_LCDDataStruct SiS_LCD1280x800_2Data[] = /* 2.03.00 (LVDS) */ +{ + { 97, 42, 1344, 409, 1552, 812 }, /* 640x400 */ + { 97, 35, 1280, 358, 1552, 812 }, + { 97, 42, 1344, 409, 1552, 812 }, + { 97, 35, 1280, 358, 1552, 812 }, + { 97, 39, 1040, 488, 1552, 812 }, /* 640x480 */ + { 194, 105, 1120, 608, 1552, 812 }, /* 800x600 */ + { 97, 84, 1400, 780, 1552, 812 }, /* 1024x768 */ + { 0, 0, 0, 0, 0, 0 }, /* 1280x1024 */ + { 1, 1, 1552, 812, 1552, 812 }, /* 1280x800 */ + { 97, 96, 1600, 780, 1552, 812 }, /* 1280x768 - patch index */ + { 97, 90, 1600, 730, 1552, 812 } /* 1280x720 */ }; static const SiS_LCDDataStruct SiS_LCD1280x960Data[] = @@ -1097,9 +1094,9 @@ static const SiS_LCDDataStruct SiS_LCD1680x1050Data[] = { 95, 64, 1750, 784, 1900, 1066 }, /* 6 1024x768 */ { 95, 94, 1900, 1055, 1900, 1066 }, /* 7 1280x1024 */ { 41, 31, 1900, 806, 1900, 1066 }, /* 8 1280x768 */ - { 95, 69, 1800, 817, 1900, 1066 }, /* 9 1280x800 patch */ + { 95, 69, 1800, 817, 1900, 1066 }, /* 9 1280x800 patch index */ { 13, 9, 1900, 739, 1900, 1066 }, /* 10 1280x720 */ - { 95, 94, 1880, 1066, 1900, 1066 }, /* 11 1400x1050 patch */ + { 95, 94, 1880, 1066, 1900, 1066 }, /* 11 1400x1050 patch index */ { 1, 1, 1900, 1066, 1900, 1066 } /* 12 1680x1050 */ }; @@ -1148,12 +1145,12 @@ static const SiS_LCDDataStruct SiS_NoScaleData[] = { 1, 1,1800,1000,1800,1000 }, /* 0x0a: 1280x960 */ { 1, 1,1688,1066,1688,1066 }, /* 0x0b: 1400x1050 */ { 1, 1,1650, 750,1650, 750 }, /* 0x0c: 1280x720 (TMDS, projector) */ - { 1, 1,1656, 841,1656, 841 }, /* 0x0d: 1280x800 (was: 1408, 816) */ + { 1, 1,1552, 812,1552, 812 }, /* 0x0d: 1280x800_2 (LVDS) (was: 1408,816/ 1656,841) */ { 1, 1,1900,1066,1900,1066 }, /* 0x0e: 1680x1050 (LVDS) */ - { 1, 1,1408, 806,1408, 806 }, /* 0x0f: 1280x768_2 */ - { 1, 1,1664, 798,1664, 798 }, /* 0x10: 1280x768_3 */ - { 1, 1,1688, 802,1688, 802 }, /* 0x11: 1280x768: Std, TMDS only */ - { 1, 1,1344, 806,1344, 806 }, /* 0x12: 1280x720 (LVDS) */ + { 1, 1,1660, 806,1660, 806 }, /* 0x0f: 1280x768_2 (LVDS) */ + { 1, 1,1664, 798,1664, 798 }, /* 0x10: 1280x768_3 (NetVista SiS 301) - TODO */ + { 1, 1,1688, 802,1688, 802 }, /* 0x11: 1280x768 (TMDS Fujitsu) */ + { 1, 1,1408, 806,1408, 806 }, /* 0x12: 1280x720 (LVDS) */ { 1, 1, 896, 497, 896, 497 }, /* 0x13: 720x480 */ { 1, 1, 912, 597, 912, 597 }, /* 0x14: 720x576 */ { 1, 1, 912, 597, 912, 597 }, /* 0x15: 768x576 */ @@ -1163,10 +1160,11 @@ static const SiS_LCDDataStruct SiS_NoScaleData[] = { 1, 1,1328, 739,1328, 739 }, /* 0x19: 1024x576 */ { 1, 1,1680, 892,1680, 892 }, /* 0x1a: 1152x864 */ { 1, 1,1808, 808,1808, 808 }, /* 0x1b: 1360x768 */ - { 1, 1,1104, 563,1104, 563 } /* 0x1c: 960x540 */ + { 1, 1,1104, 563,1104, 563 }, /* 0x1c: 960x540 */ + { 1, 1,1120, 618,1120, 618 }, /* 0x1d: 960x600 */ + { 1, 1,1408, 816,1408, 816 } /* 0x1f: 1280x800 (TMDS special) */ }; - /**************************************************************/ /* LVDS ----------------------------------------------------- */ /**************************************************************/ @@ -1207,7 +1205,6 @@ static const SiS_LVDSDataStruct SiS_LVDS640x480Data_2[]= { 800, 525, 800, 525} /* pseudo */ }; - static const SiS_LVDSDataStruct SiS_LVDS800x600Data_1[]= { { 848, 433,1060, 629}, @@ -1221,12 +1218,6 @@ static const SiS_LVDSDataStruct SiS_LVDS800x600Data_1[]= static const SiS_LVDSDataStruct SiS_LVDS800x600Data_2[]= { - {1056, 628,1056, 628}, - {1056, 628,1056, 628}, - {1056, 628,1056, 628}, - {1056, 628,1056, 628}, - {1056, 628,1056, 628}, - {1056, 628,1056, 628}, {1056, 628,1056, 628} }; @@ -1243,13 +1234,7 @@ static const SiS_LVDSDataStruct SiS_LVDS1024x768Data_1[]= static const SiS_LVDSDataStruct SiS_LVDS1024x768Data_2[]= { - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, + {1344, 806,1344, 806} }; static const SiS_LVDSDataStruct SiS_LVDS1280x1024Data_1[]= @@ -1266,13 +1251,6 @@ static const SiS_LVDSDataStruct SiS_LVDS1280x1024Data_1[]= static const SiS_LVDSDataStruct SiS_LVDS1280x1024Data_2[]= { - {1688,1066,1688,1066}, - {1688,1066,1688,1066}, - {1688,1066,1688,1066}, - {1688,1066,1688,1066}, - {1688,1066,1688,1066}, - {1688,1066,1688,1066}, - {1688,1066,1688,1066}, {1688,1066,1688,1066} }; @@ -1291,15 +1269,7 @@ static const SiS_LVDSDataStruct SiS_LVDS1400x1050Data_1[]= static const SiS_LVDSDataStruct SiS_LVDS1400x1050Data_2[]= { - {1688,1066, 1688,1066}, - {1688,1066, 1688,1066}, - {1688,1066, 1688,1066}, - {1688,1066, 1688,1066}, - {1688,1066, 1688,1066}, - {1688,1066, 1688,1066}, - {1688,1066, 1688,1066}, - {1688,1066, 1688,1066}, - {1688,1066, 1688,1066}, + {1688,1066, 1688,1066} }; static const SiS_LVDSDataStruct SiS_LVDS1600x1200Data_1[]= @@ -1314,32 +1284,11 @@ static const SiS_LVDSDataStruct SiS_LVDS1600x1200Data_1[]= {1728,1144, 2048,1320}, {1848,1170, 2048,1320}, {2048,1320, 2048,1320} -#if 0 - {1088, 450, 2048,1250}, - {1088, 400, 2048,1250}, - {1088, 450, 2048,1250}, - {1088, 400, 2048,1250}, - {1088, 530, 2048,1250}, - {1248, 650, 2048,1250}, - {1472, 818, 2048,1250}, - {1728,1066, 2048,1250}, - {1848,1066, 2048,1250}, - {2048,1250, 2048,1250} -#endif }; static const SiS_LVDSDataStruct SiS_LVDS1600x1200Data_2[]= { - {2048,1320, 2048,1320}, - {2048,1320, 2048,1320}, - {2048,1320, 2048,1320}, - {2048,1320, 2048,1320}, - {2048,1320, 2048,1320}, - {2048,1320, 2048,1320}, - {2048,1320, 2048,1320}, - {2048,1320, 2048,1320}, - {2048,1320, 2048,1320}, - {2048,1320, 2048,1320} + {2048,1320, 2048,1320} }; static const SiS_LVDSDataStruct SiS_LVDS1280x960Data_1[]= @@ -1357,15 +1306,7 @@ static const SiS_LVDSDataStruct SiS_LVDS1280x960Data_1[]= static const SiS_LVDSDataStruct SiS_LVDS1280x960Data_2[]= { - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - { 800, 449,1280, 801}, - { 800, 525,1280, 813} + {1344, 806,1344, 806} }; static const SiS_LVDSDataStruct SiS_LVDS1280x768Data_1[]= @@ -1383,14 +1324,6 @@ static const SiS_LVDSDataStruct SiS_LVDS1280x768Data_1[]= static const SiS_LVDSDataStruct SiS_LVDS1280x768Data_2[]= { - {1408, 806, 1408, 806}, - {1408, 806, 1408, 806}, - {1408, 806, 1408, 806}, - {1408, 806, 1408, 806}, - {1408, 806, 1408, 806}, - {1408, 806, 1408, 806}, - {1408, 806, 1408, 806}, - {1408, 806, 1408, 806}, {1408, 806, 1408, 806} }; @@ -1407,12 +1340,6 @@ static const SiS_LVDSDataStruct SiS_LVDS1024x600Data_1[] = static const SiS_LVDSDataStruct SiS_LVDS1024x600Data_2[] = { - {1344, 800,1344, 800}, - {1344, 800,1344, 800}, - {1344, 800,1344, 800}, - {1344, 800,1344, 800}, - {1344, 800,1344, 800}, - {1344, 800,1344, 800}, {1344, 800,1344, 800} }; @@ -1429,12 +1356,6 @@ static const SiS_LVDSDataStruct SiS_LVDS1152x768Data_1[] = static const SiS_LVDSDataStruct SiS_LVDS1152x768Data_2[] = { - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, {1344, 806,1344, 806} }; @@ -1445,12 +1366,11 @@ static const SiS_LVDSDataStruct SiS_LVDSXXXxXXXData_1[]= { 800, 449, 800, 449}, { 900, 449, 900, 449}, { 900, 449, 900, 449}, - { 800, 525, 800, 525}, /* 640x480 */ - {1056, 628, 1056, 628}, /* 800x600 */ - {1344, 806, 1344, 806}, /* 1024x768 */ - {1688,1066, 1688,1066}, /* 1280x1024 */ /* INSERTED ! */ - {1688, 806, 1688, 806}, /* 1280x768 */ - /* No other panels ! */ + { 800, 525, 800, 525}, /* 640x480 */ + {1056, 628, 1056, 628}, /* 800x600 */ + {1344, 806, 1344, 806}, /* 1024x768 */ + {1688,1066, 1688,1066}, /* 1280x1024 */ /* INSERTED */ + {1688, 806, 1688, 806}, /* 1280x768 */ }; /* Custom data for Barco iQ R series */ @@ -1496,13 +1416,7 @@ static const SiS_LVDSDataStruct SiS_LVDSBARCO1024Data_1[]= /* Custom data for Barco iQ G series */ static const SiS_LVDSDataStruct SiS_LVDSBARCO1024Data_2[]= { - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, - {1344, 806,1344, 806}, + {1344, 806,1344, 806} }; /* Custom data for 848x480 parallel panel */ @@ -1589,10 +1503,10 @@ static const SiS_LVDSDesStruct SiS_CHTVONTSCDesData[]= static const SiS_LVDSDesStruct SiS_CHTVUPALDesData[]= { - {256, 0}, - {256, 0}, - {256, 0}, - {256, 0}, + {256, 0}, + {256, 0}, + {256, 0}, + {256, 0}, { 0, 0}, { 0, 0}, { 0, 0} @@ -1600,10 +1514,10 @@ static const SiS_LVDSDesStruct SiS_CHTVUPALDesData[]= static const SiS_LVDSDesStruct SiS_CHTVOPALDesData[]= { - {256, 0}, - {256, 0}, - {256, 0}, - {256, 0}, + {256, 0}, + {256, 0}, + {256, 0}, + {256, 0}, { 0, 0}, { 0, 0}, { 0, 0} @@ -2105,6 +2019,8 @@ static const SiS_LVDSCRT1DataStruct SiS_LVDSCRT11280x768_2_H[] = /* COMMON --------------------------------------------------- */ /**************************************************************/ +#ifdef LINUX_XF86 + #define SIS_PL_HSYNCP 0x01 #define SIS_PL_HSYNCN 0x02 #define SIS_PL_VSYNCP 0x04 @@ -2127,6 +2043,8 @@ typedef struct _SiS_PlasmaTables USHORT product[5]; const char *DDCnames[5]; const char *plasmaname; + USHORT maxx,maxy; + USHORT prefx, prefy; UCHAR modenum; UCHAR plasmamodes[20]; /* | 0x80 = DVI-capable, | 0x40 = analog */ } SiS_PlasmaTables; @@ -2237,14 +2155,51 @@ static const SiS_PlasmaModes SiS_PlasmaMode[] = { 848, 1068, 20, 40, /* differs from DDC data, better centered */ 480, 516, 3, 5, /* won't work assumingly, because data is % 8 */ SIS_PL_HSYNCN | SIS_PL_VSYNCN }, + { "1280x720", /* 21: WIDE720(60) (aka "750p") (Panasonic) */ + 74300, + 1280, 1650,110, 40, + 720, 750, 5, 5, + SIS_PL_HSYNCP | SIS_PL_VSYNCP }, + { "1280x768", /* 22: 1280x768@56.5 (Panasonic) */ + 76200, /* (According to manual not supported for HDMI; but works) */ + 1280, 1680, 16, 24, + 768, 802, 2, 5, + SIS_PL_HSYNCP | SIS_PL_VSYNCP }, + { "1280x720@50", /* 23: WIDE720(50) (aka "750p") (Panasonic) */ + 74300, /* Panasonic states 45.0kHz. Not possible. This one works (with some overscan) */ + 1280, 1980,400, 80, + 720, 750, 1, 2, + SIS_PL_HSYNCP | SIS_PL_VSYNCP }, + { "720x480", /* 24: 720x480 (aka "525p" and "480p") (Panasonic) */ + 27000, + 720, 856, 40, 32, + 480, 525, 1, 3, + SIS_PL_HSYNCP | SIS_PL_VSYNCP }, + { "720x576", /* 25: 720x576 (aka "625p"and "576p") (Panasonic) */ + 27500, + 720, 864, 16, 64, + 576, 625, 5, 6, + SIS_PL_HSYNCP | SIS_PL_VSYNCP }, + { "1280x720@50", /* 26: WIDE720(50) (aka "750p") (Generic) */ + 74300, + 1280, 1980,400, 80, + 720, 750, 5, 5, + SIS_PL_HSYNCP | SIS_PL_VSYNCP }, }; +/* +27.00 720 755 791 858 480 480 484 525 +27.50 720 732 795 864 576 581 587 625 +*/ + static const SiS_PlasmaTables SiS_PlasmaTable[] = { #if 0 /* Product IDs missing */ { 0x38a3, 4, { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, { "", "", "", "", "" }, "NEC PlasmaSync 42VP4/42VP4D/42VP4G/42VP4DG", + 0, 0, + 0, 0, 11, /* All DVI, except 0, 7, 13 */ { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 7|0x40, 9|0xc0,10|0xc0,11|0xc0,13|0x40,14|0xc0, 17|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } @@ -2255,6 +2210,8 @@ static const SiS_PlasmaTables SiS_PlasmaTable[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, { "", "", "", "", "" }, "NEC PlasmaSync 42PD1/50PD1/50PD2", + 0, 0, + 0, 0, 5, /* DVI entirely unknown */ { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 9|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } @@ -2263,6 +2220,8 @@ static const SiS_PlasmaTables SiS_PlasmaTable[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, { "", "", "", "", "" }, "NEC PlasmaSync 42PD3", + 0, 0, + 0, 0, 10, /* DVI entirely unknown */ { 0|0x40, 1|0xc0, 2|0xc0, 3|0xc0, 4|0xc0, 5|0xc0, 6|0xc0, 7|0x40, 8|0xc0, 9|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } @@ -2271,6 +2230,8 @@ static const SiS_PlasmaTables SiS_PlasmaTable[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, { "", "", "", "", "" }, "NEC PlasmaSync 42VM3/61XM1", + 0, 0, + 0, 0, 11, /* DVI entirely unknown */ { 0|0x40, 1|0xc0, 2|0xc0, 3|0xc0, 4|0xc0, 5|0xc0, 6|0xc0, 8|0xc0, 9|0xc0,11|0xc0, 17|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } @@ -2279,6 +2240,8 @@ static const SiS_PlasmaTables SiS_PlasmaTable[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, { "", "", "", "", "" }, "NEC PlasmaSync 42MP1/42MP2", + 0, 0, + 0, 0, 6, /* DVI entirely unknown */ { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 9|0xc0,11|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } @@ -2287,6 +2250,8 @@ static const SiS_PlasmaTables SiS_PlasmaTable[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, { "", "", "", "", "" }, "NEC PlasmaSync 50MP1", + 0, 0, + 0, 0, 10, /* DVI entirely unknown */ { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 7|0x40, 9|0xc0,10|0xc0,11|0xc0,13|0x40,14|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } @@ -2296,6 +2261,8 @@ static const SiS_PlasmaTables SiS_PlasmaTable[] = { { 0xa482, 0xa483, 0x0000, 0x0000, 0x0000 }, { "PX-42VM", "", "", "", "" }, "NEC PlasmaSync 42MP3/42MP4/50MP2/61MP1", + 0, 0, + 0, 0, 11, /* All DVI except 0, 7, 13, 17 */ { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 7|0x40, 9|0xc0,10|0xc0,11|0xc0,13|0x40,14|0xc0, 17|0x40, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } @@ -2305,6 +2272,8 @@ static const SiS_PlasmaTables SiS_PlasmaTable[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, { "", "", "", "", "" }, "NEC PlasmaSync 3300W", + 0, 0, + 0, 0, 3, { 0|0x40, 1|0xc0,18|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } @@ -2321,6 +2290,8 @@ static const SiS_PlasmaTables SiS_PlasmaTable[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, { "", "", "", "", "" }, "NEC PlasmaSync 4210W", + 0, 0, + 0, 0, 6, /* DVI entirely unknown */ { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 9|0xc0,11|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } @@ -2329,6 +2300,8 @@ static const SiS_PlasmaTables SiS_PlasmaTable[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, { "", "", "", "", "" }, "NEC PlasmaSync 5000W", + 0, 0, + 0, 0, 7, /* DVI entirely unknown */ { 0|0x40, 1|0xc0, 2|0xc0, 4|0xc0, 7|0x40, 9|0xc0,11|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } @@ -2338,6 +2311,8 @@ static const SiS_PlasmaTables SiS_PlasmaTable[] = { { 0x000c, 0x000b, 0x0000, 0x0000, 0x0000 }, { "", "", "", "", "" }, "Pioneer 503CMX/PDA-5002", + 0, 0, + 0, 0, 6, /* DVI unknown */ { 1|0xc0, 2|0xc0, 9|0xc0,11|0xc0,12|0xc0,15|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } @@ -2346,6 +2321,8 @@ static const SiS_PlasmaTables SiS_PlasmaTable[] = { { 0xa00e, 0x0000, 0x0000, 0x0000, 0x0000 }, { "", "", "", "", "" }, "Panasonic TH-42", + 0, 0, + 0, 0, 5, /* No DVI output */ { 1|0x40, 2|0x40, 4|0x40, 9|0x40,15|0x40, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } @@ -2354,15 +2331,50 @@ static const SiS_PlasmaTables SiS_PlasmaTable[] = { { 0xa005, 0x0000, 0x0000, 0x0000, 0x0000 }, { "TH-42PW*4", "", "", "", "" }, "Panasonic TH-42PW5", + 0, 0, + 0, 0, 1, /* No special modes otherwise; no DVI. */ {20|0x40,19|0x40, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } }, + { 0x4c2e, 1, + { 0x9b05, 0x0000, 0x0000, 0x0000, 0x0000 }, + { "PLV-Z2", "", "", "", "" }, + "Sanyo PLV-Z2 (non HDCP-mode)", /* HDCP mode would be id 9b06, but not needed */ + 1280, 768, /* as it then advertises correct size */ + 1280, 720, + 1, /* 1280x720, no special modes otherwise */ + {21|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } + }, + { 0x34a9, 1, + { 0xd034, 0x0000, 0x0000, 0x0000, 0x0000 }, + { "AE500U (DVI-D)", "", "", "", "" }, + "Panasonic AE500U", + 1280, 768, + 1280, 720, + 1, /* 1280x720, no special modes otherwise */ + {21|0xc0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } + }, + { 0x34a9, 1, + { 0xd043, 0x0000, 0x0000, 0x0000, 0x0000 }, + { "AE700U (HDMI)", "", "", "", "" }, + "Panasonic AE700U", + 1360, 768, + 1280, 720, + 6, /* 1280x720/60, 1280x720/50, 1280x768@56(digital/analog), 720x480, 720x576 */ + {21|0xc0,23|0xc0,22|0x80,13|0x40,24|0x80,25|0x80, 0 , 0 , 0 , 0 , + 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 } + }, { 0x0000 } }; +#endif +#ifdef LINUX_XF86 USHORT SiS_GetModeID(int VGAEngine, ULONG VBFlags, int HDisplay, int VDisplay, int Depth, BOOLEAN FSTN, int LCDwith, int LCDheight); +#endif USHORT SiS_GetModeID_LCD(int VGAEngine, ULONG VBFlags, int HDisplay, int VDisplay, int Depth, BOOLEAN FSTN, USHORT CustomT, int LCDwith, int LCDheight); USHORT SiS_GetModeID_TV(int VGAEngine, ULONG VBFlags, int HDisplay, int VDisplay, int Depth); @@ -2376,25 +2388,23 @@ UCHAR SiS_GetReg(SISIOADDRESS port, USHORT index); UCHAR SiS_GetRegByte(SISIOADDRESS port); USHORT SiS_GetRegShort(SISIOADDRESS port); ULONG SiS_GetRegLong(SISIOADDRESS port); -void SiS_SetRegANDOR(SISIOADDRESS Port,USHORT Index,USHORT DataAND,USHORT DataOR); -void SiS_SetRegAND(SISIOADDRESS Port,USHORT Index,USHORT DataAND); -void SiS_SetRegOR(SISIOADDRESS Port,USHORT Index,USHORT DataOR); +void SiS_SetRegANDOR(SISIOADDRESS Port, USHORT Index, USHORT DataAND, USHORT DataOR); +void SiS_SetRegAND(SISIOADDRESS Port,USHORT Index, USHORT DataAND); +void SiS_SetRegOR(SISIOADDRESS Port,USHORT Index, USHORT DataOR); void SiS_DisplayOn(SiS_Private *SiS_Pr); void SiS_DisplayOff(SiS_Private *SiS_Pr); void SiSRegInit(SiS_Private *SiS_Pr, SISIOADDRESS BaseAddr); -void SiSSetLVDSetc(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); BOOLEAN SiSDetermineROMLayout661(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); void SiS_SetEnableDstn(SiS_Private *SiS_Pr, int enable); void SiS_SetEnableFstn(SiS_Private *SiS_Pr, int enable); -void SiS_GetVBType(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); -USHORT SiS_GetMCLK(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); BOOLEAN SiS_SearchModeID(SiS_Private *SiS_Pr, USHORT *ModeNo, USHORT *ModeIdIndex); UCHAR SiS_GetModePtr(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex); USHORT SiS_GetColorDepth(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex); -USHORT SiS_GetOffset(SiS_Private *SiS_Pr,USHORT ModeNo,USHORT ModeIdIndex, - USHORT RefreshRateTableIndex,PSIS_HW_INFO HwInfo); +USHORT SiS_GetOffset(SiS_Private *SiS_Pr,USHORT ModeNo, USHORT ModeIdIndex, + USHORT RefreshRateTableIndex, PSIS_HW_INFO HwInfo); void SiS_LoadDAC(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, USHORT ModeNo, USHORT ModeIdIndex); -void SiS_CalcLCDACRT1Timing(SiS_Private *SiS_Pr,USHORT ModeNo,USHORT ModeIdIndex); +void SiS_CalcLCDACRT1Timing(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex); + #ifdef LINUX_XF86 BOOLEAN SiSSetMode(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo,ScrnInfoPtr pScrn,USHORT ModeNo, BOOLEAN dosetpitch); BOOLEAN SiSBIOSSetMode(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, ScrnInfoPtr pScrn, @@ -2404,51 +2414,55 @@ BOOLEAN SiSBIOSSetModeCRT2(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, ScrnInfoPtr BOOLEAN SiSBIOSSetModeCRT1(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, ScrnInfoPtr pScrn, DisplayModePtr mode, BOOLEAN IsCustom); int SiSTranslateToVESA(ScrnInfoPtr pScrn, int modenumber); +int SiSTranslateToOldMode(int modenumber); BOOLEAN SiS_GetPanelID(SiS_Private *SiS_Pr, PSIS_HW_INFO); USHORT SiS_CheckBuildCustomMode(ScrnInfoPtr pScrn, DisplayModePtr mode, int VBFlags); DisplayModePtr SiSBuildBuiltInModeList(ScrnInfoPtr pScrn, BOOLEAN includelcdmodes, BOOLEAN isfordvi); +int SiS_FindPanelFromDB(SISPtr pSiS, USHORT panelvendor, USHORT panelproduct, int *maxx, int *maxy, int *prefx, int *prefy); +void SiS_MakeClockRegs(ScrnInfoPtr pScrn, int clock, UCHAR *p2b, UCHAR *p2c); #else BOOLEAN SiSSetMode(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo,USHORT ModeNo); #endif + #ifdef LINUX_KERNEL -int sisfb_mode_rate_to_dclock(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, - unsigned char modeno, unsigned char rateindex); -int sisfb_mode_rate_to_ddata(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, - unsigned char modeno, unsigned char rateindex, - struct fb_var_screeninfo *var); +int sisfb_mode_rate_to_dclock(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, + UCHAR modeno, UCHAR rateindex); +int sisfb_mode_rate_to_ddata(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, + UCHAR modeno, UCHAR rateindex, + struct fb_var_screeninfo *var); BOOLEAN sisfb_gettotalfrommode(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo, - unsigned char modeno, int *htotal, int *vtotal, unsigned char rateindex); + UCHAR modeno, int *htotal, int *vtotal, UCHAR rateindex); #endif -extern void SiS_GetVBInfo(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, - PSIS_HW_INFO HwInfo, int chkcrt2mode); -extern void SiS_GetLCDResInfo(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, - PSIS_HW_INFO HwInfo); -extern void SiS_SetYPbPr(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); -extern void SiS_SetTVMode(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, PSIS_HW_INFO HwInfo); -extern void SiS_UnLockCRT2(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); -extern void SiS_LockCRT2(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); -extern void SiS_DisableBridge(SiS_Private *, PSIS_HW_INFO); -extern BOOLEAN SiS_SetCRT2Group(SiS_Private *, PSIS_HW_INFO, USHORT); -extern USHORT SiS_GetRatePtr(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, - PSIS_HW_INFO HwInfo); -extern void SiS_WaitRetrace1(SiS_Private *SiS_Pr); -extern USHORT SiS_GetResInfo(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex); -extern USHORT SiS_GetCH700x(SiS_Private *SiS_Pr, USHORT tempax); -extern USHORT SiS_GetVCLK2Ptr(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, - USHORT RefreshRateTableIndex, PSIS_HW_INFO HwInfo); -extern BOOLEAN SiS_IsVAMode(SiS_Private *, PSIS_HW_INFO); -extern BOOLEAN SiS_IsDualEdge(SiS_Private *, PSIS_HW_INFO); +/* init301.c: */ +extern void SiS_GetVBInfo(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, + PSIS_HW_INFO HwInfo, int chkcrt2mode); +extern void SiS_GetLCDResInfo(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, + PSIS_HW_INFO HwInfo); +extern void SiS_SetYPbPr(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); +extern void SiS_SetTVMode(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, PSIS_HW_INFO HwInfo); +extern void SiS_UnLockCRT2(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo); +extern void SiS_DisableBridge(SiS_Private *, PSIS_HW_INFO); +extern BOOLEAN SiS_SetCRT2Group(SiS_Private *, PSIS_HW_INFO, USHORT); +extern USHORT SiS_GetRatePtr(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, + PSIS_HW_INFO HwInfo); +extern void SiS_WaitRetrace1(SiS_Private *SiS_Pr); +extern USHORT SiS_GetResInfo(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex); +extern USHORT SiS_GetCH700x(SiS_Private *SiS_Pr, USHORT tempax); +extern USHORT SiS_GetVCLK2Ptr(SiS_Private *SiS_Pr, USHORT ModeNo, USHORT ModeIdIndex, + USHORT RefreshRateTableIndex, PSIS_HW_INFO HwInfo); +extern BOOLEAN SiS_IsVAMode(SiS_Private *, PSIS_HW_INFO); +extern BOOLEAN SiS_IsDualEdge(SiS_Private *, PSIS_HW_INFO); #ifdef LINUX_XF86 +/* From other sis driver modules: */ extern int SiS_compute_vclk(int Clock, int *out_n, int *out_dn, int *out_div, - int *out_sbit, int *out_scale); + int *out_sbit, int *out_scale); extern void SiSCalcClock(ScrnInfoPtr pScrn, int clock, int max_VLD, unsigned int *vclk); -extern unsigned char SiS_GetSetBIOSScratch(ScrnInfoPtr pScrn, USHORT offset, unsigned char value); -extern unsigned char SiS_GetSetModeID(ScrnInfoPtr pScrn, unsigned char id); -extern USHORT SiS_CalcModeIndex(ScrnInfoPtr pScrn, DisplayModePtr mode, unsigned long VBFlags, - BOOLEAN hcm); +extern UCHAR SiS_GetSetBIOSScratch(ScrnInfoPtr pScrn, USHORT offset, UCHAR value); +extern UCHAR SiS_GetSetModeID(ScrnInfoPtr pScrn, UCHAR id); +extern USHORT SiS_GetModeNumber(ScrnInfoPtr pScrn, DisplayModePtr mode, ULONG VBFlags); #endif #endif