diff options
| -rw-r--r-- | Documentation/fb/00-INDEX | 32 | ||||
| -rw-r--r-- | MAINTAINERS | 4 | ||||
| -rw-r--r-- | drivers/video/fbcmap.c | 68 | ||||
| -rw-r--r-- | drivers/video/geode/lxfb_ops.c | 4 | ||||
| -rw-r--r-- | drivers/video/sh_mobile_lcdcfb.c | 4 | ||||
| -rw-r--r-- | drivers/video/sis/init.c | 685 | ||||
| -rw-r--r-- | drivers/video/sis/init.h | 63 | ||||
| -rw-r--r-- | drivers/video/sis/init301.c | 467 | ||||
| -rw-r--r-- | drivers/video/sis/init301.h | 43 | ||||
| -rw-r--r-- | drivers/video/sis/initextlfb.c | 7 | ||||
| -rw-r--r-- | drivers/video/sis/osdef.h | 133 | ||||
| -rw-r--r-- | drivers/video/sis/sis.h | 1 | ||||
| -rw-r--r-- | drivers/video/sis/sis_main.c | 30 | ||||
| -rw-r--r-- | drivers/video/sis/vgatypes.h | 11 | ||||
| -rw-r--r-- | drivers/video/sis/vstruct.h | 12 | ||||
| -rw-r--r-- | include/linux/fb.h | 1 | ||||
| -rw-r--r-- | include/video/da8xx-fb.h | 1 |
17 files changed, 285 insertions, 1281 deletions
diff --git a/Documentation/fb/00-INDEX b/Documentation/fb/00-INDEX index a618fd99c9f0..30a70542e823 100644 --- a/Documentation/fb/00-INDEX +++ b/Documentation/fb/00-INDEX | |||
| @@ -4,33 +4,41 @@ please mail me. | |||
| 4 | Geert Uytterhoeven <geert@linux-m68k.org> | 4 | Geert Uytterhoeven <geert@linux-m68k.org> |
| 5 | 5 | ||
| 6 | 00-INDEX | 6 | 00-INDEX |
| 7 | - this file | 7 | - this file. |
| 8 | arkfb.txt | 8 | arkfb.txt |
| 9 | - info on the fbdev driver for ARK Logic chips. | 9 | - info on the fbdev driver for ARK Logic chips. |
| 10 | aty128fb.txt | 10 | aty128fb.txt |
| 11 | - info on the ATI Rage128 frame buffer driver. | 11 | - info on the ATI Rage128 frame buffer driver. |
| 12 | cirrusfb.txt | 12 | cirrusfb.txt |
| 13 | - info on the driver for Cirrus Logic chipsets. | 13 | - info on the driver for Cirrus Logic chipsets. |
| 14 | cmap_xfbdev.txt | ||
| 15 | - an introduction to fbdev's cmap structures. | ||
| 14 | deferred_io.txt | 16 | deferred_io.txt |
| 15 | - an introduction to deferred IO. | 17 | - an introduction to deferred IO. |
| 18 | efifb.txt | ||
| 19 | - info on the EFI platform driver for Intel based Apple computers. | ||
| 20 | ep93xx-fb.txt | ||
| 21 | - info on the driver for EP93xx LCD controller. | ||
| 16 | fbcon.txt | 22 | fbcon.txt |
| 17 | - intro to and usage guide for the framebuffer console (fbcon). | 23 | - intro to and usage guide for the framebuffer console (fbcon). |
| 18 | framebuffer.txt | 24 | framebuffer.txt |
| 19 | - introduction to frame buffer devices. | 25 | - introduction to frame buffer devices. |
| 20 | imacfb.txt | 26 | gxfb.txt |
| 21 | - info on the generic EFI platform driver for Intel based Macs. | 27 | - info on the framebuffer driver for AMD Geode GX2 based processors. |
| 22 | intel810.txt | 28 | intel810.txt |
| 23 | - documentation for the Intel 810/815 framebuffer driver. | 29 | - documentation for the Intel 810/815 framebuffer driver. |
| 24 | intelfb.txt | 30 | intelfb.txt |
| 25 | - docs for Intel 830M/845G/852GM/855GM/865G/915G/945G fb driver. | 31 | - docs for Intel 830M/845G/852GM/855GM/865G/915G/945G fb driver. |
| 26 | internals.txt | 32 | internals.txt |
| 27 | - quick overview of frame buffer device internals. | 33 | - quick overview of frame buffer device internals. |
| 34 | lxfb.txt | ||
| 35 | - info on the framebuffer driver for AMD Geode LX based processors. | ||
| 28 | matroxfb.txt | 36 | matroxfb.txt |
| 29 | - info on the Matrox framebuffer driver for Alpha, Intel and PPC. | 37 | - info on the Matrox framebuffer driver for Alpha, Intel and PPC. |
| 38 | metronomefb.txt | ||
| 39 | - info on the driver for the Metronome display controller. | ||
| 30 | modedb.txt | 40 | modedb.txt |
| 31 | - info on the video mode database. | 41 | - info on the video mode database. |
| 32 | matroxfb.txt | ||
| 33 | - info on the Matrox frame buffer driver. | ||
| 34 | pvr2fb.txt | 42 | pvr2fb.txt |
| 35 | - info on the PowerVR 2 frame buffer driver. | 43 | - info on the PowerVR 2 frame buffer driver. |
| 36 | pxafb.txt | 44 | pxafb.txt |
| @@ -39,13 +47,23 @@ s3fb.txt | |||
| 39 | - info on the fbdev driver for S3 Trio/Virge chips. | 47 | - info on the fbdev driver for S3 Trio/Virge chips. |
| 40 | sa1100fb.txt | 48 | sa1100fb.txt |
| 41 | - information about the driver for the SA-1100 LCD controller. | 49 | - information about the driver for the SA-1100 LCD controller. |
| 50 | sh7760fb.txt | ||
| 51 | - info on the SH7760/SH7763 integrated LCDC Framebuffer driver. | ||
| 42 | sisfb.txt | 52 | sisfb.txt |
| 43 | - info on the framebuffer device driver for various SiS chips. | 53 | - info on the framebuffer device driver for various SiS chips. |
| 44 | sstfb.txt | 54 | sstfb.txt |
| 45 | - info on the frame buffer driver for 3dfx' Voodoo Graphics boards. | 55 | - info on the frame buffer driver for 3dfx' Voodoo Graphics boards. |
| 46 | tgafb.txt | 56 | tgafb.txt |
| 47 | - info on the TGA (DECChip 21030) frame buffer driver | 57 | - info on the TGA (DECChip 21030) frame buffer driver. |
| 58 | tridentfb.txt | ||
| 59 | info on the framebuffer driver for some Trident chip based cards. | ||
| 60 | uvesafb.txt | ||
| 61 | - info on the userspace VESA (VBE2+ compliant) frame buffer device. | ||
| 48 | vesafb.txt | 62 | vesafb.txt |
| 49 | - info on the VESA frame buffer device | 63 | - info on the VESA frame buffer device. |
| 64 | viafb.modes | ||
| 65 | - list of modes for VIA Integration Graphic Chip. | ||
| 66 | viafb.txt | ||
| 67 | - info on the VIA Integration Graphic Chip console framebuffer driver. | ||
| 50 | vt8623fb.txt | 68 | vt8623fb.txt |
| 51 | - info on the fb driver for the graphics core in VIA VT8623 chipsets. | 69 | - info on the fb driver for the graphics core in VIA VT8623 chipsets. |
diff --git a/MAINTAINERS b/MAINTAINERS index b49ba9a43bf8..98fc0450d7e1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -2444,10 +2444,12 @@ F: drivers/net/wan/sdla.c | |||
| 2444 | FRAMEBUFFER LAYER | 2444 | FRAMEBUFFER LAYER |
| 2445 | L: linux-fbdev@vger.kernel.org | 2445 | L: linux-fbdev@vger.kernel.org |
| 2446 | W: http://linux-fbdev.sourceforge.net/ | 2446 | W: http://linux-fbdev.sourceforge.net/ |
| 2447 | Q: http://patchwork.kernel.org/project/linux-fbdev/list/ | ||
| 2447 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6.git | 2448 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6.git |
| 2448 | S: Orphan | 2449 | S: Orphan |
| 2449 | F: Documentation/fb/ | 2450 | F: Documentation/fb/ |
| 2450 | F: drivers/video/fb* | 2451 | F: drivers/video/ |
| 2452 | F: include/video/ | ||
| 2451 | F: include/linux/fb.h | 2453 | F: include/linux/fb.h |
| 2452 | 2454 | ||
| 2453 | FREESCALE DMA DRIVER | 2455 | FREESCALE DMA DRIVER |
diff --git a/drivers/video/fbcmap.c b/drivers/video/fbcmap.c index f53b9f1d6aba..affdf3e32cf3 100644 --- a/drivers/video/fbcmap.c +++ b/drivers/video/fbcmap.c | |||
| @@ -88,34 +88,48 @@ static const struct fb_cmap default_16_colors = { | |||
| 88 | * | 88 | * |
| 89 | */ | 89 | */ |
| 90 | 90 | ||
| 91 | int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp) | 91 | int fb_alloc_cmap_gfp(struct fb_cmap *cmap, int len, int transp, gfp_t flags) |
| 92 | { | 92 | { |
| 93 | int size = len*sizeof(u16); | 93 | int size = len * sizeof(u16); |
| 94 | 94 | int ret = -ENOMEM; | |
| 95 | if (cmap->len != len) { | 95 | |
| 96 | fb_dealloc_cmap(cmap); | 96 | if (cmap->len != len) { |
| 97 | if (!len) | 97 | fb_dealloc_cmap(cmap); |
| 98 | return 0; | 98 | if (!len) |
| 99 | if (!(cmap->red = kmalloc(size, GFP_ATOMIC))) | 99 | return 0; |
| 100 | goto fail; | 100 | |
| 101 | if (!(cmap->green = kmalloc(size, GFP_ATOMIC))) | 101 | cmap->red = kmalloc(size, flags); |
| 102 | goto fail; | 102 | if (!cmap->red) |
| 103 | if (!(cmap->blue = kmalloc(size, GFP_ATOMIC))) | 103 | goto fail; |
| 104 | goto fail; | 104 | cmap->green = kmalloc(size, flags); |
| 105 | if (transp) { | 105 | if (!cmap->green) |
| 106 | if (!(cmap->transp = kmalloc(size, GFP_ATOMIC))) | 106 | goto fail; |
| 107 | cmap->blue = kmalloc(size, flags); | ||
| 108 | if (!cmap->blue) | ||
| 109 | goto fail; | ||
| 110 | if (transp) { | ||
| 111 | cmap->transp = kmalloc(size, flags); | ||
| 112 | if (!cmap->transp) | ||
| 113 | goto fail; | ||
| 114 | } else { | ||
| 115 | cmap->transp = NULL; | ||
| 116 | } | ||
| 117 | } | ||
| 118 | cmap->start = 0; | ||
| 119 | cmap->len = len; | ||
| 120 | ret = fb_copy_cmap(fb_default_cmap(len), cmap); | ||
| 121 | if (ret) | ||
| 107 | goto fail; | 122 | goto fail; |
| 108 | } else | 123 | return 0; |
| 109 | cmap->transp = NULL; | ||
| 110 | } | ||
| 111 | cmap->start = 0; | ||
| 112 | cmap->len = len; | ||
| 113 | fb_copy_cmap(fb_default_cmap(len), cmap); | ||
| 114 | return 0; | ||
| 115 | 124 | ||
| 116 | fail: | 125 | fail: |
| 117 | fb_dealloc_cmap(cmap); | 126 | fb_dealloc_cmap(cmap); |
| 118 | return -ENOMEM; | 127 | return ret; |
| 128 | } | ||
| 129 | |||
| 130 | int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp) | ||
| 131 | { | ||
| 132 | return fb_alloc_cmap_gfp(cmap, len, transp, GFP_ATOMIC); | ||
| 119 | } | 133 | } |
| 120 | 134 | ||
| 121 | /** | 135 | /** |
| @@ -250,8 +264,12 @@ int fb_set_user_cmap(struct fb_cmap_user *cmap, struct fb_info *info) | |||
| 250 | int rc, size = cmap->len * sizeof(u16); | 264 | int rc, size = cmap->len * sizeof(u16); |
| 251 | struct fb_cmap umap; | 265 | struct fb_cmap umap; |
| 252 | 266 | ||
| 267 | if (size < 0 || size < cmap->len) | ||
| 268 | return -E2BIG; | ||
| 269 | |||
| 253 | memset(&umap, 0, sizeof(struct fb_cmap)); | 270 | memset(&umap, 0, sizeof(struct fb_cmap)); |
| 254 | rc = fb_alloc_cmap(&umap, cmap->len, cmap->transp != NULL); | 271 | rc = fb_alloc_cmap_gfp(&umap, cmap->len, cmap->transp != NULL, |
| 272 | GFP_KERNEL); | ||
| 255 | if (rc) | 273 | if (rc) |
| 256 | return rc; | 274 | return rc; |
| 257 | if (copy_from_user(umap.red, cmap->red, size) || | 275 | if (copy_from_user(umap.red, cmap->red, size) || |
diff --git a/drivers/video/geode/lxfb_ops.c b/drivers/video/geode/lxfb_ops.c index bc35a95e59d4..85ec7f64c42a 100644 --- a/drivers/video/geode/lxfb_ops.c +++ b/drivers/video/geode/lxfb_ops.c | |||
| @@ -276,10 +276,10 @@ static void lx_graphics_enable(struct fb_info *info) | |||
| 276 | write_fp(par, FP_PT1, 0); | 276 | write_fp(par, FP_PT1, 0); |
| 277 | temp = FP_PT2_SCRC; | 277 | temp = FP_PT2_SCRC; |
| 278 | 278 | ||
| 279 | if (info->var.sync & FB_SYNC_HOR_HIGH_ACT) | 279 | if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT)) |
| 280 | temp |= FP_PT2_HSP; | 280 | temp |= FP_PT2_HSP; |
| 281 | 281 | ||
| 282 | if (info->var.sync & FB_SYNC_VERT_HIGH_ACT) | 282 | if (!(info->var.sync & FB_SYNC_VERT_HIGH_ACT)) |
| 283 | temp |= FP_PT2_VSP; | 283 | temp |= FP_PT2_VSP; |
| 284 | 284 | ||
| 285 | write_fp(par, FP_PT2, temp); | 285 | write_fp(par, FP_PT2, temp); |
diff --git a/drivers/video/sh_mobile_lcdcfb.c b/drivers/video/sh_mobile_lcdcfb.c index 9b1364723c65..b02d97a879d6 100644 --- a/drivers/video/sh_mobile_lcdcfb.c +++ b/drivers/video/sh_mobile_lcdcfb.c | |||
| @@ -860,7 +860,7 @@ static void sh_mobile_fb_reconfig(struct fb_info *info) | |||
| 860 | /* Couldn't reconfigure, hopefully, can continue as before */ | 860 | /* Couldn't reconfigure, hopefully, can continue as before */ |
| 861 | return; | 861 | return; |
| 862 | 862 | ||
| 863 | info->fix.line_length = mode2.xres * (ch->cfg.bpp / 8); | 863 | info->fix.line_length = mode1.xres * (ch->cfg.bpp / 8); |
| 864 | 864 | ||
| 865 | /* | 865 | /* |
| 866 | * fb_set_var() calls the notifier change internally, only if | 866 | * fb_set_var() calls the notifier change internally, only if |
| @@ -868,7 +868,7 @@ static void sh_mobile_fb_reconfig(struct fb_info *info) | |||
| 868 | * user event, we have to call the chain ourselves. | 868 | * user event, we have to call the chain ourselves. |
| 869 | */ | 869 | */ |
| 870 | event.info = info; | 870 | event.info = info; |
| 871 | event.data = &mode2; | 871 | event.data = &mode1; |
| 872 | fb_notifier_call_chain(evnt, &event); | 872 | fb_notifier_call_chain(evnt, &event); |
| 873 | } | 873 | } |
| 874 | 874 | ||
diff --git a/drivers/video/sis/init.c b/drivers/video/sis/init.c index c311ad3c3687..31137adc8fba 100644 --- a/drivers/video/sis/init.c +++ b/drivers/video/sis/init.c | |||
| @@ -62,11 +62,11 @@ | |||
| 62 | 62 | ||
| 63 | #include "init.h" | 63 | #include "init.h" |
| 64 | 64 | ||
| 65 | #ifdef SIS300 | 65 | #ifdef CONFIG_FB_SIS_300 |
| 66 | #include "300vtbl.h" | 66 | #include "300vtbl.h" |
| 67 | #endif | 67 | #endif |
| 68 | 68 | ||
| 69 | #ifdef SIS315H | 69 | #ifdef CONFIG_FB_SIS_315 |
| 70 | #include "310vtbl.h" | 70 | #include "310vtbl.h" |
| 71 | #endif | 71 | #endif |
| 72 | 72 | ||
| @@ -78,7 +78,7 @@ | |||
| 78 | /* POINTER INITIALIZATION */ | 78 | /* POINTER INITIALIZATION */ |
| 79 | /*********************************************/ | 79 | /*********************************************/ |
| 80 | 80 | ||
| 81 | #if defined(SIS300) || defined(SIS315H) | 81 | #if defined(CONFIG_FB_SIS_300) || defined(CONFIG_FB_SIS_315) |
| 82 | static void | 82 | static void |
| 83 | InitCommonPointer(struct SiS_Private *SiS_Pr) | 83 | InitCommonPointer(struct SiS_Private *SiS_Pr) |
| 84 | { | 84 | { |
| @@ -160,7 +160,7 @@ InitCommonPointer(struct SiS_Private *SiS_Pr) | |||
| 160 | } | 160 | } |
| 161 | #endif | 161 | #endif |
| 162 | 162 | ||
| 163 | #ifdef SIS300 | 163 | #ifdef CONFIG_FB_SIS_300 |
| 164 | static void | 164 | static void |
| 165 | InitTo300Pointer(struct SiS_Private *SiS_Pr) | 165 | InitTo300Pointer(struct SiS_Private *SiS_Pr) |
| 166 | { | 166 | { |
| @@ -237,7 +237,7 @@ InitTo300Pointer(struct SiS_Private *SiS_Pr) | |||
| 237 | } | 237 | } |
| 238 | #endif | 238 | #endif |
| 239 | 239 | ||
| 240 | #ifdef SIS315H | 240 | #ifdef CONFIG_FB_SIS_315 |
| 241 | static void | 241 | static void |
| 242 | InitTo310Pointer(struct SiS_Private *SiS_Pr) | 242 | InitTo310Pointer(struct SiS_Private *SiS_Pr) |
| 243 | { | 243 | { |
| @@ -321,13 +321,13 @@ bool | |||
| 321 | SiSInitPtr(struct SiS_Private *SiS_Pr) | 321 | SiSInitPtr(struct SiS_Private *SiS_Pr) |
| 322 | { | 322 | { |
| 323 | if(SiS_Pr->ChipType < SIS_315H) { | 323 | if(SiS_Pr->ChipType < SIS_315H) { |
| 324 | #ifdef SIS300 | 324 | #ifdef CONFIG_FB_SIS_300 |
| 325 | InitTo300Pointer(SiS_Pr); | 325 | InitTo300Pointer(SiS_Pr); |
| 326 | #else | 326 | #else |
| 327 | return false; | 327 | return false; |
| 328 | #endif | 328 | #endif |
| 329 | } else { | 329 | } else { |
| 330 | #ifdef SIS315H | 330 | #ifdef CONFIG_FB_SIS_315 |
| 331 | InitTo310Pointer(SiS_Pr); | 331 | InitTo310Pointer(SiS_Pr); |
| 332 | #else | 332 | #else |
| 333 | return false; | 333 | return false; |
| @@ -340,9 +340,7 @@ SiSInitPtr(struct SiS_Private *SiS_Pr) | |||
| 340 | /* HELPER: Get ModeID */ | 340 | /* HELPER: Get ModeID */ |
| 341 | /*********************************************/ | 341 | /*********************************************/ |
| 342 | 342 | ||
| 343 | #ifndef SIS_XORG_XF86 | ||
| 344 | static | 343 | static |
| 345 | #endif | ||
| 346 | unsigned short | 344 | unsigned short |
| 347 | SiS_GetModeID(int VGAEngine, unsigned int VBFlags, int HDisplay, int VDisplay, | 345 | SiS_GetModeID(int VGAEngine, unsigned int VBFlags, int HDisplay, int VDisplay, |
| 348 | int Depth, bool FSTN, int LCDwidth, int LCDheight) | 346 | int Depth, bool FSTN, int LCDwidth, int LCDheight) |
| @@ -884,51 +882,51 @@ SiS_GetModeID_VGA2(int VGAEngine, unsigned int VBFlags, int HDisplay, int VDispl | |||
| 884 | void | 882 | void |
| 885 | SiS_SetReg(SISIOADDRESS port, unsigned short index, unsigned short data) | 883 | SiS_SetReg(SISIOADDRESS port, unsigned short index, unsigned short data) |
| 886 | { | 884 | { |
| 887 | OutPortByte(port, index); | 885 | outb((u8)index, port); |
| 888 | OutPortByte(port + 1, data); | 886 | outb((u8)data, port + 1); |
| 889 | } | 887 | } |
| 890 | 888 | ||
| 891 | void | 889 | void |
| 892 | SiS_SetRegByte(SISIOADDRESS port, unsigned short data) | 890 | SiS_SetRegByte(SISIOADDRESS port, unsigned short data) |
| 893 | { | 891 | { |
| 894 | OutPortByte(port, data); | 892 | outb((u8)data, port); |
| 895 | } | 893 | } |
| 896 | 894 | ||
| 897 | void | 895 | void |
| 898 | SiS_SetRegShort(SISIOADDRESS port, unsigned short data) | 896 | SiS_SetRegShort(SISIOADDRESS port, unsigned short data) |
| 899 | { | 897 | { |
| 900 | OutPortWord(port, data); | 898 | outw((u16)data, port); |
| 901 | } | 899 | } |
| 902 | 900 | ||
| 903 | void | 901 | void |
| 904 | SiS_SetRegLong(SISIOADDRESS port, unsigned int data) | 902 | SiS_SetRegLong(SISIOADDRESS port, unsigned int data) |
| 905 | { | 903 | { |
| 906 | OutPortLong(port, data); | 904 | outl((u32)data, port); |
| 907 | } | 905 | } |
| 908 | 906 | ||
| 909 | unsigned char | 907 | unsigned char |
| 910 | SiS_GetReg(SISIOADDRESS port, unsigned short index) | 908 | SiS_GetReg(SISIOADDRESS port, unsigned short index) |
| 911 | { | 909 | { |
| 912 | OutPortByte(port, index); | 910 | outb((u8)index, port); |
| 913 | return(InPortByte(port + 1)); | 911 | return inb(port + 1); |
| 914 | } | 912 | } |
| 915 | 913 | ||
| 916 | unsigned char | 914 | unsigned char |
| 917 | SiS_GetRegByte(SISIOADDRESS port) | 915 | SiS_GetRegByte(SISIOADDRESS port) |
| 918 | { | 916 | { |
| 919 | return(InPortByte(port)); | 917 | return inb(port); |
| 920 | } | 918 | } |
| 921 | 919 | ||
| 922 | unsigned short | 920 | unsigned short |
| 923 | SiS_GetRegShort(SISIOADDRESS port) | 921 | SiS_GetRegShort(SISIOADDRESS port) |
| 924 | { | 922 | { |
| 925 | return(InPortWord(port)); | 923 | return inw(port); |
| 926 | } | 924 | } |
| 927 | 925 | ||
| 928 | unsigned int | 926 | unsigned int |
| 929 | SiS_GetRegLong(SISIOADDRESS port) | 927 | SiS_GetRegLong(SISIOADDRESS port) |
| 930 | { | 928 | { |
| 931 | return(InPortLong(port)); | 929 | return inl(port); |
| 932 | } | 930 | } |
| 933 | 931 | ||
| 934 | void | 932 | void |
| @@ -1089,7 +1087,7 @@ static void | |||
| 1089 | SiSInitPCIetc(struct SiS_Private *SiS_Pr) | 1087 | SiSInitPCIetc(struct SiS_Private *SiS_Pr) |
| 1090 | { | 1088 | { |
| 1091 | switch(SiS_Pr->ChipType) { | 1089 | switch(SiS_Pr->ChipType) { |
| 1092 | #ifdef SIS300 | 1090 | #ifdef CONFIG_FB_SIS_300 |
| 1093 | case SIS_300: | 1091 | case SIS_300: |
| 1094 | case SIS_540: | 1092 | case SIS_540: |
| 1095 | case SIS_630: | 1093 | case SIS_630: |
| @@ -1108,7 +1106,7 @@ SiSInitPCIetc(struct SiS_Private *SiS_Pr) | |||
| 1108 | SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x5A); | 1106 | SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x5A); |
| 1109 | break; | 1107 | break; |
| 1110 | #endif | 1108 | #endif |
| 1111 | #ifdef SIS315H | 1109 | #ifdef CONFIG_FB_SIS_315 |
| 1112 | case SIS_315H: | 1110 | case SIS_315H: |
| 1113 | case SIS_315: | 1111 | case SIS_315: |
| 1114 | case SIS_315PRO: | 1112 | case SIS_315PRO: |
| @@ -1152,9 +1150,7 @@ SiSInitPCIetc(struct SiS_Private *SiS_Pr) | |||
| 1152 | /* HELPER: SetLVDSetc */ | 1150 | /* HELPER: SetLVDSetc */ |
| 1153 | /*********************************************/ | 1151 | /*********************************************/ |
| 1154 | 1152 | ||
| 1155 | #ifdef SIS_LINUX_KERNEL | ||
| 1156 | static | 1153 | static |
| 1157 | #endif | ||
| 1158 | void | 1154 | void |
| 1159 | SiSSetLVDSetc(struct SiS_Private *SiS_Pr) | 1155 | SiSSetLVDSetc(struct SiS_Private *SiS_Pr) |
| 1160 | { | 1156 | { |
| @@ -1174,7 +1170,7 @@ SiSSetLVDSetc(struct SiS_Private *SiS_Pr) | |||
| 1174 | if((temp == 1) || (temp == 2)) return; | 1170 | if((temp == 1) || (temp == 2)) return; |
| 1175 | 1171 | ||
| 1176 | switch(SiS_Pr->ChipType) { | 1172 | switch(SiS_Pr->ChipType) { |
| 1177 | #ifdef SIS300 | 1173 | #ifdef CONFIG_FB_SIS_300 |
| 1178 | case SIS_540: | 1174 | case SIS_540: |
| 1179 | case SIS_630: | 1175 | case SIS_630: |
| 1180 | case SIS_730: | 1176 | case SIS_730: |
| @@ -1188,7 +1184,7 @@ SiSSetLVDSetc(struct SiS_Private *SiS_Pr) | |||
| 1188 | } | 1184 | } |
| 1189 | break; | 1185 | break; |
| 1190 | #endif | 1186 | #endif |
| 1191 | #ifdef SIS315H | 1187 | #ifdef CONFIG_FB_SIS_315 |
| 1192 | case SIS_550: | 1188 | case SIS_550: |
| 1193 | case SIS_650: | 1189 | case SIS_650: |
| 1194 | case SIS_740: | 1190 | case SIS_740: |
| @@ -1420,9 +1416,7 @@ SiS_ResetSegmentRegisters(struct SiS_Private *SiS_Pr) | |||
| 1420 | /* HELPER: GetVBType */ | 1416 | /* HELPER: GetVBType */ |
| 1421 | /*********************************************/ | 1417 | /*********************************************/ |
| 1422 | 1418 | ||
| 1423 | #ifdef SIS_LINUX_KERNEL | ||
| 1424 | static | 1419 | static |
| 1425 | #endif | ||
| 1426 | void | 1420 | void |
| 1427 | SiS_GetVBType(struct SiS_Private *SiS_Pr) | 1421 | SiS_GetVBType(struct SiS_Private *SiS_Pr) |
| 1428 | { | 1422 | { |
| @@ -1487,7 +1481,6 @@ SiS_GetVBType(struct SiS_Private *SiS_Pr) | |||
| 1487 | /* HELPER: Check RAM size */ | 1481 | /* HELPER: Check RAM size */ |
| 1488 | /*********************************************/ | 1482 | /*********************************************/ |
| 1489 | 1483 | ||
| 1490 | #ifdef SIS_LINUX_KERNEL | ||
| 1491 | static bool | 1484 | static bool |
| 1492 | SiS_CheckMemorySize(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | 1485 | SiS_CheckMemorySize(struct SiS_Private *SiS_Pr, unsigned short ModeNo, |
| 1493 | unsigned short ModeIdIndex) | 1486 | unsigned short ModeIdIndex) |
| @@ -1501,13 +1494,12 @@ SiS_CheckMemorySize(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 1501 | if(AdapterMemSize < memorysize) return false; | 1494 | if(AdapterMemSize < memorysize) return false; |
| 1502 | return true; | 1495 | return true; |
| 1503 | } | 1496 | } |
| 1504 | #endif | ||
| 1505 | 1497 | ||
| 1506 | /*********************************************/ | 1498 | /*********************************************/ |
| 1507 | /* HELPER: Get DRAM type */ | 1499 | /* HELPER: Get DRAM type */ |
| 1508 | /*********************************************/ | 1500 | /*********************************************/ |
| 1509 | 1501 | ||
| 1510 | #ifdef SIS315H | 1502 | #ifdef CONFIG_FB_SIS_315 |
| 1511 | static unsigned char | 1503 | static unsigned char |
| 1512 | SiS_Get310DRAMType(struct SiS_Private *SiS_Pr) | 1504 | SiS_Get310DRAMType(struct SiS_Private *SiS_Pr) |
| 1513 | { | 1505 | { |
| @@ -1574,7 +1566,6 @@ SiS_GetMCLK(struct SiS_Private *SiS_Pr) | |||
| 1574 | /* HELPER: ClearBuffer */ | 1566 | /* HELPER: ClearBuffer */ |
| 1575 | /*********************************************/ | 1567 | /*********************************************/ |
| 1576 | 1568 | ||
| 1577 | #ifdef SIS_LINUX_KERNEL | ||
| 1578 | static void | 1569 | static void |
| 1579 | SiS_ClearBuffer(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | 1570 | SiS_ClearBuffer(struct SiS_Private *SiS_Pr, unsigned short ModeNo) |
| 1580 | { | 1571 | { |
| @@ -1587,7 +1578,7 @@ SiS_ClearBuffer(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | |||
| 1587 | 1578 | ||
| 1588 | if(SiS_Pr->SiS_ModeType >= ModeEGA) { | 1579 | if(SiS_Pr->SiS_ModeType >= ModeEGA) { |
| 1589 | if(ModeNo > 0x13) { | 1580 | if(ModeNo > 0x13) { |
| 1590 | SiS_SetMemory(memaddr, memsize, 0); | 1581 | memset_io(memaddr, 0, memsize); |
| 1591 | } else { | 1582 | } else { |
| 1592 | pBuffer = (unsigned short SISIOMEMTYPE *)memaddr; | 1583 | pBuffer = (unsigned short SISIOMEMTYPE *)memaddr; |
| 1593 | for(i = 0; i < 0x4000; i++) writew(0x0000, &pBuffer[i]); | 1584 | for(i = 0; i < 0x4000; i++) writew(0x0000, &pBuffer[i]); |
| @@ -1596,10 +1587,9 @@ SiS_ClearBuffer(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | |||
| 1596 | pBuffer = (unsigned short SISIOMEMTYPE *)memaddr; | 1587 | pBuffer = (unsigned short SISIOMEMTYPE *)memaddr; |
| 1597 | for(i = 0; i < 0x4000; i++) writew(0x0720, &pBuffer[i]); | 1588 | for(i = 0; i < 0x4000; i++) writew(0x0720, &pBuffer[i]); |
| 1598 | } else { | 1589 | } else { |
| 1599 | SiS_SetMemory(memaddr, 0x8000, 0); | 1590 | memset_io(memaddr, 0, 0x8000); |
| 1600 | } | 1591 | } |
| 1601 | } | 1592 | } |
| 1602 | #endif | ||
| 1603 | 1593 | ||
| 1604 | /*********************************************/ | 1594 | /*********************************************/ |
| 1605 | /* HELPER: SearchModeID */ | 1595 | /* HELPER: SearchModeID */ |
| @@ -2132,7 +2122,7 @@ SiS_SetCRT1CRTC(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 2132 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x14,0x4F); | 2122 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x14,0x4F); |
| 2133 | } | 2123 | } |
| 2134 | 2124 | ||
| 2135 | #ifdef SIS315H | 2125 | #ifdef CONFIG_FB_SIS_315 |
| 2136 | if(SiS_Pr->ChipType == XGI_20) { | 2126 | if(SiS_Pr->ChipType == XGI_20) { |
| 2137 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x04,crt1data[4] - 1); | 2127 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x04,crt1data[4] - 1); |
| 2138 | if(!(temp = crt1data[5] & 0x1f)) { | 2128 | if(!(temp = crt1data[5] & 0x1f)) { |
| @@ -2215,7 +2205,7 @@ SiS_SetCRT1VCLK(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 2215 | SiS_SetReg(SiS_Pr->SiS_P3c4,0x2c,clkb); | 2205 | SiS_SetReg(SiS_Pr->SiS_P3c4,0x2c,clkb); |
| 2216 | 2206 | ||
| 2217 | if(SiS_Pr->ChipType >= SIS_315H) { | 2207 | if(SiS_Pr->ChipType >= SIS_315H) { |
| 2218 | #ifdef SIS315H | 2208 | #ifdef CONFIG_FB_SIS_315 |
| 2219 | SiS_SetReg(SiS_Pr->SiS_P3c4,0x2D,0x01); | 2209 | SiS_SetReg(SiS_Pr->SiS_P3c4,0x2D,0x01); |
| 2220 | if(SiS_Pr->ChipType == XGI_20) { | 2210 | if(SiS_Pr->ChipType == XGI_20) { |
| 2221 | unsigned short mf = SiS_GetModeFlag(SiS_Pr, ModeNo, ModeIdIndex); | 2211 | unsigned short mf = SiS_GetModeFlag(SiS_Pr, ModeNo, ModeIdIndex); |
| @@ -2236,7 +2226,7 @@ SiS_SetCRT1VCLK(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 2236 | /* FIFO */ | 2226 | /* FIFO */ |
| 2237 | /*********************************************/ | 2227 | /*********************************************/ |
| 2238 | 2228 | ||
| 2239 | #ifdef SIS300 | 2229 | #ifdef CONFIG_FB_SIS_300 |
| 2240 | void | 2230 | void |
| 2241 | SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *idx1, | 2231 | SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *idx1, |
| 2242 | unsigned short *idx2) | 2232 | unsigned short *idx2) |
| @@ -2506,11 +2496,7 @@ SiS_SetCRT1FIFO_630(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 2506 | SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x09,0x80,data); | 2496 | SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x09,0x80,data); |
| 2507 | 2497 | ||
| 2508 | /* Write foreground and background queue */ | 2498 | /* Write foreground and background queue */ |
| 2509 | #ifdef SIS_LINUX_KERNEL | ||
| 2510 | templ = sisfb_read_nbridge_pci_dword(SiS_Pr, 0x50); | 2499 | templ = sisfb_read_nbridge_pci_dword(SiS_Pr, 0x50); |
| 2511 | #else | ||
| 2512 | templ = pciReadLong(0x00000000, 0x50); | ||
| 2513 | #endif | ||
| 2514 | 2500 | ||
| 2515 | if(SiS_Pr->ChipType == SIS_730) { | 2501 | if(SiS_Pr->ChipType == SIS_730) { |
| 2516 | 2502 | ||
| @@ -2530,13 +2516,8 @@ SiS_SetCRT1FIFO_630(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 2530 | 2516 | ||
| 2531 | } | 2517 | } |
| 2532 | 2518 | ||
| 2533 | #ifdef SIS_LINUX_KERNEL | ||
| 2534 | sisfb_write_nbridge_pci_dword(SiS_Pr, 0x50, templ); | 2519 | sisfb_write_nbridge_pci_dword(SiS_Pr, 0x50, templ); |
| 2535 | templ = sisfb_read_nbridge_pci_dword(SiS_Pr, 0xA0); | 2520 | templ = sisfb_read_nbridge_pci_dword(SiS_Pr, 0xA0); |
| 2536 | #else | ||
| 2537 | pciWriteLong(0x00000000, 0x50, templ); | ||
| 2538 | templ = pciReadLong(0x00000000, 0xA0); | ||
| 2539 | #endif | ||
| 2540 | 2521 | ||
| 2541 | /* GUI grant timer (PCI config 0xA3) */ | 2522 | /* GUI grant timer (PCI config 0xA3) */ |
| 2542 | if(SiS_Pr->ChipType == SIS_730) { | 2523 | if(SiS_Pr->ChipType == SIS_730) { |
| @@ -2552,15 +2533,11 @@ SiS_SetCRT1FIFO_630(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 2552 | 2533 | ||
| 2553 | } | 2534 | } |
| 2554 | 2535 | ||
| 2555 | #ifdef SIS_LINUX_KERNEL | ||
| 2556 | sisfb_write_nbridge_pci_dword(SiS_Pr, 0xA0, templ); | 2536 | sisfb_write_nbridge_pci_dword(SiS_Pr, 0xA0, templ); |
| 2557 | #else | ||
| 2558 | pciWriteLong(0x00000000, 0xA0, templ); | ||
| 2559 | #endif | ||
| 2560 | } | 2537 | } |
| 2561 | #endif /* SIS300 */ | 2538 | #endif /* CONFIG_FB_SIS_300 */ |
| 2562 | 2539 | ||
| 2563 | #ifdef SIS315H | 2540 | #ifdef CONFIG_FB_SIS_315 |
| 2564 | static void | 2541 | static void |
| 2565 | SiS_SetCRT1FIFO_310(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) | 2542 | SiS_SetCRT1FIFO_310(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex) |
| 2566 | { | 2543 | { |
| @@ -2612,7 +2589,7 @@ SiS_SetVCLKState(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 2612 | } | 2589 | } |
| 2613 | 2590 | ||
| 2614 | if(SiS_Pr->ChipType < SIS_315H) { | 2591 | if(SiS_Pr->ChipType < SIS_315H) { |
| 2615 | #ifdef SIS300 | 2592 | #ifdef CONFIG_FB_SIS_300 |
| 2616 | if(VCLK > 150) data |= 0x80; | 2593 | if(VCLK > 150) data |= 0x80; |
| 2617 | SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x07,0x7B,data); | 2594 | SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x07,0x7B,data); |
| 2618 | 2595 | ||
| @@ -2621,7 +2598,7 @@ SiS_SetVCLKState(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 2621 | SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x32,0xF7,data); | 2598 | SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x32,0xF7,data); |
| 2622 | #endif | 2599 | #endif |
| 2623 | } else if(SiS_Pr->ChipType < XGI_20) { | 2600 | } else if(SiS_Pr->ChipType < XGI_20) { |
| 2624 | #ifdef SIS315H | 2601 | #ifdef CONFIG_FB_SIS_315 |
| 2625 | if(VCLK >= 166) data |= 0x0c; | 2602 | if(VCLK >= 166) data |= 0x0c; |
| 2626 | SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x32,0xf3,data); | 2603 | SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x32,0xf3,data); |
| 2627 | 2604 | ||
| @@ -2630,7 +2607,7 @@ SiS_SetVCLKState(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 2630 | } | 2607 | } |
| 2631 | #endif | 2608 | #endif |
| 2632 | } else { | 2609 | } else { |
| 2633 | #ifdef SIS315H | 2610 | #ifdef CONFIG_FB_SIS_315 |
| 2634 | if(VCLK >= 200) data |= 0x0c; | 2611 | if(VCLK >= 200) data |= 0x0c; |
| 2635 | if(SiS_Pr->ChipType == XGI_20) data &= ~0x04; | 2612 | if(SiS_Pr->ChipType == XGI_20) data &= ~0x04; |
| 2636 | SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x32,0xf3,data); | 2613 | SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x32,0xf3,data); |
| @@ -2675,7 +2652,7 @@ SiS_SetCRT1ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 2675 | unsigned short ModeIdIndex, unsigned short RRTI) | 2652 | unsigned short ModeIdIndex, unsigned short RRTI) |
| 2676 | { | 2653 | { |
| 2677 | unsigned short data, infoflag = 0, modeflag, resindex; | 2654 | unsigned short data, infoflag = 0, modeflag, resindex; |
| 2678 | #ifdef SIS315H | 2655 | #ifdef CONFIG_FB_SIS_315 |
| 2679 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; | 2656 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; |
| 2680 | unsigned short data2, data3; | 2657 | unsigned short data2, data3; |
| 2681 | #endif | 2658 | #endif |
| @@ -2736,7 +2713,7 @@ SiS_SetCRT1ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 2736 | SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x0F,0xB7,data); | 2713 | SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x0F,0xB7,data); |
| 2737 | } | 2714 | } |
| 2738 | 2715 | ||
| 2739 | #ifdef SIS315H | 2716 | #ifdef CONFIG_FB_SIS_315 |
| 2740 | if(SiS_Pr->ChipType >= SIS_315H) { | 2717 | if(SiS_Pr->ChipType >= SIS_315H) { |
| 2741 | SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x31,0xfb); | 2718 | SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x31,0xfb); |
| 2742 | } | 2719 | } |
| @@ -2826,7 +2803,7 @@ SiS_SetCRT1ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 2826 | 2803 | ||
| 2827 | SiS_SetVCLKState(SiS_Pr, ModeNo, RRTI, ModeIdIndex); | 2804 | SiS_SetVCLKState(SiS_Pr, ModeNo, RRTI, ModeIdIndex); |
| 2828 | 2805 | ||
| 2829 | #ifdef SIS315H | 2806 | #ifdef CONFIG_FB_SIS_315 |
| 2830 | if(((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->ChipType < SIS_661)) || | 2807 | if(((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->ChipType < SIS_661)) || |
| 2831 | (SiS_Pr->ChipType == XGI_40)) { | 2808 | (SiS_Pr->ChipType == XGI_40)) { |
| 2832 | if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x31) & 0x40) { | 2809 | if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x31) & 0x40) { |
| @@ -2845,7 +2822,7 @@ SiS_SetCRT1ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 2845 | #endif | 2822 | #endif |
| 2846 | } | 2823 | } |
| 2847 | 2824 | ||
| 2848 | #ifdef SIS315H | 2825 | #ifdef CONFIG_FB_SIS_315 |
| 2849 | static void | 2826 | static void |
| 2850 | SiS_SetupDualChip(struct SiS_Private *SiS_Pr) | 2827 | SiS_SetupDualChip(struct SiS_Private *SiS_Pr) |
| 2851 | { | 2828 | { |
| @@ -2999,11 +2976,6 @@ SiS_SetCRT1Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned sho | |||
| 2999 | SiS_Pr->SiS_SelectCRT2Rate = 0; | 2976 | SiS_Pr->SiS_SelectCRT2Rate = 0; |
| 3000 | SiS_Pr->SiS_SetFlag &= (~ProgrammingCRT2); | 2977 | SiS_Pr->SiS_SetFlag &= (~ProgrammingCRT2); |
| 3001 | 2978 | ||
| 3002 | #ifdef SIS_XORG_XF86 | ||
| 3003 | xf86DrvMsgVerb(0, X_PROBED, 4, "(init: VBType=0x%04x, VBInfo=0x%04x)\n", | ||
| 3004 | SiS_Pr->SiS_VBType, SiS_Pr->SiS_VBInfo); | ||
| 3005 | #endif | ||
| 3006 | |||
| 3007 | if(SiS_Pr->SiS_VBInfo & SetSimuScanMode) { | 2979 | if(SiS_Pr->SiS_VBInfo & SetSimuScanMode) { |
| 3008 | if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { | 2980 | if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) { |
| 3009 | SiS_Pr->SiS_SetFlag |= ProgrammingCRT2; | 2981 | SiS_Pr->SiS_SetFlag |= ProgrammingCRT2; |
| @@ -3028,7 +3000,7 @@ SiS_SetCRT1Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned sho | |||
| 3028 | } | 3000 | } |
| 3029 | 3001 | ||
| 3030 | switch(SiS_Pr->ChipType) { | 3002 | switch(SiS_Pr->ChipType) { |
| 3031 | #ifdef SIS300 | 3003 | #ifdef CONFIG_FB_SIS_300 |
| 3032 | case SIS_300: | 3004 | case SIS_300: |
| 3033 | SiS_SetCRT1FIFO_300(SiS_Pr, ModeNo, RefreshRateTableIndex); | 3005 | SiS_SetCRT1FIFO_300(SiS_Pr, ModeNo, RefreshRateTableIndex); |
| 3034 | break; | 3006 | break; |
| @@ -3039,7 +3011,7 @@ SiS_SetCRT1Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned sho | |||
| 3039 | break; | 3011 | break; |
| 3040 | #endif | 3012 | #endif |
| 3041 | default: | 3013 | default: |
| 3042 | #ifdef SIS315H | 3014 | #ifdef CONFIG_FB_SIS_315 |
| 3043 | if(SiS_Pr->ChipType == XGI_20) { | 3015 | if(SiS_Pr->ChipType == XGI_20) { |
| 3044 | unsigned char sr2b = 0, sr2c = 0; | 3016 | unsigned char sr2b = 0, sr2c = 0; |
| 3045 | switch(ModeNo) { | 3017 | switch(ModeNo) { |
| @@ -3062,7 +3034,7 @@ SiS_SetCRT1Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned sho | |||
| 3062 | 3034 | ||
| 3063 | SiS_SetCRT1ModeRegs(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); | 3035 | SiS_SetCRT1ModeRegs(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); |
| 3064 | 3036 | ||
| 3065 | #ifdef SIS315H | 3037 | #ifdef CONFIG_FB_SIS_315 |
| 3066 | if(SiS_Pr->ChipType == XGI_40) { | 3038 | if(SiS_Pr->ChipType == XGI_40) { |
| 3067 | SiS_SetupDualChip(SiS_Pr); | 3039 | SiS_SetupDualChip(SiS_Pr); |
| 3068 | } | 3040 | } |
| @@ -3070,11 +3042,9 @@ SiS_SetCRT1Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned sho | |||
| 3070 | 3042 | ||
| 3071 | SiS_LoadDAC(SiS_Pr, ModeNo, ModeIdIndex); | 3043 | SiS_LoadDAC(SiS_Pr, ModeNo, ModeIdIndex); |
| 3072 | 3044 | ||
| 3073 | #ifdef SIS_LINUX_KERNEL | ||
| 3074 | if(SiS_Pr->SiS_flag_clearbuffer) { | 3045 | if(SiS_Pr->SiS_flag_clearbuffer) { |
| 3075 | SiS_ClearBuffer(SiS_Pr, ModeNo); | 3046 | SiS_ClearBuffer(SiS_Pr, ModeNo); |
| 3076 | } | 3047 | } |
| 3077 | #endif | ||
| 3078 | 3048 | ||
| 3079 | if(!(SiS_Pr->SiS_VBInfo & (SetSimuScanMode | SwitchCRT2 | SetCRT2ToLCDA))) { | 3049 | if(!(SiS_Pr->SiS_VBInfo & (SetSimuScanMode | SwitchCRT2 | SetCRT2ToLCDA))) { |
| 3080 | SiS_WaitRetrace1(SiS_Pr); | 3050 | SiS_WaitRetrace1(SiS_Pr); |
| @@ -3104,7 +3074,7 @@ SiS_InitVB(struct SiS_Private *SiS_Pr) | |||
| 3104 | static void | 3074 | static void |
| 3105 | SiS_ResetVB(struct SiS_Private *SiS_Pr) | 3075 | SiS_ResetVB(struct SiS_Private *SiS_Pr) |
| 3106 | { | 3076 | { |
| 3107 | #ifdef SIS315H | 3077 | #ifdef CONFIG_FB_SIS_315 |
| 3108 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; | 3078 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; |
| 3109 | unsigned short temp; | 3079 | unsigned short temp; |
| 3110 | 3080 | ||
| @@ -3139,7 +3109,7 @@ SiS_StrangeStuff(struct SiS_Private *SiS_Pr) | |||
| 3139 | * which locks CRT2 in some way to CRT1 timing. Disable | 3109 | * which locks CRT2 in some way to CRT1 timing. Disable |
| 3140 | * this here. | 3110 | * this here. |
| 3141 | */ | 3111 | */ |
| 3142 | #ifdef SIS315H | 3112 | #ifdef CONFIG_FB_SIS_315 |
| 3143 | if((IS_SIS651) || (IS_SISM650) || | 3113 | if((IS_SIS651) || (IS_SISM650) || |
| 3144 | SiS_Pr->ChipType == SIS_340 || | 3114 | SiS_Pr->ChipType == SIS_340 || |
| 3145 | SiS_Pr->ChipType == XGI_40) { | 3115 | SiS_Pr->ChipType == XGI_40) { |
| @@ -3160,7 +3130,7 @@ SiS_StrangeStuff(struct SiS_Private *SiS_Pr) | |||
| 3160 | static void | 3130 | static void |
| 3161 | SiS_Handle760(struct SiS_Private *SiS_Pr) | 3131 | SiS_Handle760(struct SiS_Private *SiS_Pr) |
| 3162 | { | 3132 | { |
| 3163 | #ifdef SIS315H | 3133 | #ifdef CONFIG_FB_SIS_315 |
| 3164 | unsigned int somebase; | 3134 | unsigned int somebase; |
| 3165 | unsigned char temp1, temp2, temp3; | 3135 | unsigned char temp1, temp2, temp3; |
| 3166 | 3136 | ||
| @@ -3170,11 +3140,7 @@ SiS_Handle760(struct SiS_Private *SiS_Pr) | |||
| 3170 | (!(SiS_Pr->SiS_SysFlags & SF_760UMA)) ) | 3140 | (!(SiS_Pr->SiS_SysFlags & SF_760UMA)) ) |
| 3171 | return; | 3141 | return; |
| 3172 | 3142 | ||
| 3173 | #ifdef SIS_LINUX_KERNEL | ||
| 3174 | somebase = sisfb_read_mio_pci_word(SiS_Pr, 0x74); | 3143 | somebase = sisfb_read_mio_pci_word(SiS_Pr, 0x74); |
| 3175 | #else | ||
| 3176 | somebase = pciReadWord(0x00001000, 0x74); | ||
| 3177 | #endif | ||
| 3178 | somebase &= 0xffff; | 3144 | somebase &= 0xffff; |
| 3179 | 3145 | ||
| 3180 | if(somebase == 0) return; | 3146 | if(somebase == 0) return; |
| @@ -3190,105 +3156,34 @@ SiS_Handle760(struct SiS_Private *SiS_Pr) | |||
| 3190 | temp2 = 0x0b; | 3156 | temp2 = 0x0b; |
| 3191 | } | 3157 | } |
| 3192 | 3158 | ||
| 3193 | #ifdef SIS_LINUX_KERNEL | ||
| 3194 | sisfb_write_nbridge_pci_byte(SiS_Pr, 0x7e, temp1); | 3159 | sisfb_write_nbridge_pci_byte(SiS_Pr, 0x7e, temp1); |
| 3195 | sisfb_write_nbridge_pci_byte(SiS_Pr, 0x8d, temp2); | 3160 | sisfb_write_nbridge_pci_byte(SiS_Pr, 0x8d, temp2); |
| 3196 | #else | ||
| 3197 | pciWriteByte(0x00000000, 0x7e, temp1); | ||
| 3198 | pciWriteByte(0x00000000, 0x8d, temp2); | ||
| 3199 | #endif | ||
| 3200 | 3161 | ||
| 3201 | SiS_SetRegByte((somebase + 0x85), temp3); | 3162 | SiS_SetRegByte((somebase + 0x85), temp3); |
| 3202 | #endif | 3163 | #endif |
| 3203 | } | 3164 | } |
| 3204 | 3165 | ||
| 3205 | /*********************************************/ | 3166 | /*********************************************/ |
| 3206 | /* X.org/XFree86: SET SCREEN PITCH */ | ||
| 3207 | /*********************************************/ | ||
| 3208 | |||
| 3209 | #ifdef SIS_XORG_XF86 | ||
| 3210 | static void | ||
| 3211 | SiS_SetPitchCRT1(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn) | ||
| 3212 | { | ||
| 3213 | SISPtr pSiS = SISPTR(pScrn); | ||
| 3214 | unsigned short HDisplay = pSiS->scrnPitch >> 3; | ||
| 3215 | |||
| 3216 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x13,(HDisplay & 0xFF)); | ||
| 3217 | SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x0E,0xF0,(HDisplay >> 8)); | ||
| 3218 | } | ||
| 3219 | |||
| 3220 | static void | ||
| 3221 | SiS_SetPitchCRT2(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn) | ||
| 3222 | { | ||
| 3223 | SISPtr pSiS = SISPTR(pScrn); | ||
| 3224 | unsigned short HDisplay = pSiS->scrnPitch2 >> 3; | ||
| 3225 | |||
| 3226 | /* Unlock CRT2 */ | ||
| 3227 | if(pSiS->VGAEngine == SIS_315_VGA) | ||
| 3228 | SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2F, 0x01); | ||
| 3229 | else | ||
| 3230 | SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x24, 0x01); | ||
| 3231 | |||
| 3232 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x07,(HDisplay & 0xFF)); | ||
| 3233 | SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x09,0xF0,(HDisplay >> 8)); | ||
| 3234 | } | ||
| 3235 | |||
| 3236 | static void | ||
| 3237 | SiS_SetPitch(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn) | ||
| 3238 | { | ||
| 3239 | SISPtr pSiS = SISPTR(pScrn); | ||
| 3240 | bool isslavemode = false; | ||
| 3241 | |||
| 3242 | if( (pSiS->VBFlags2 & VB2_VIDEOBRIDGE) && | ||
| 3243 | ( ((pSiS->VGAEngine == SIS_300_VGA) && | ||
| 3244 | (SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0xa0) == 0x20) || | ||
| 3245 | ((pSiS->VGAEngine == SIS_315_VGA) && | ||
| 3246 | (SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x50) == 0x10) ) ) { | ||
| 3247 | isslavemode = true; | ||
| 3248 | } | ||
| 3249 | |||
| 3250 | /* We need to set pitch for CRT1 if bridge is in slave mode, too */ | ||
| 3251 | if((pSiS->VBFlags & DISPTYPE_DISP1) || (isslavemode)) { | ||
| 3252 | SiS_SetPitchCRT1(SiS_Pr, pScrn); | ||
| 3253 | } | ||
| 3254 | /* We must not set the pitch for CRT2 if bridge is in slave mode */ | ||
| 3255 | if((pSiS->VBFlags & DISPTYPE_DISP2) && (!isslavemode)) { | ||
| 3256 | SiS_SetPitchCRT2(SiS_Pr, pScrn); | ||
| 3257 | } | ||
| 3258 | } | ||
| 3259 | #endif | ||
| 3260 | |||
| 3261 | /*********************************************/ | ||
| 3262 | /* SiSSetMode() */ | 3167 | /* SiSSetMode() */ |
| 3263 | /*********************************************/ | 3168 | /*********************************************/ |
| 3264 | 3169 | ||
| 3265 | #ifdef SIS_XORG_XF86 | ||
| 3266 | /* We need pScrn for setting the pitch correctly */ | ||
| 3267 | bool | ||
| 3268 | SiSSetMode(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, unsigned short ModeNo, bool dosetpitch) | ||
| 3269 | #else | ||
| 3270 | bool | 3170 | bool |
| 3271 | SiSSetMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | 3171 | SiSSetMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo) |
| 3272 | #endif | ||
| 3273 | { | 3172 | { |
| 3274 | SISIOADDRESS BaseAddr = SiS_Pr->IOAddress; | 3173 | SISIOADDRESS BaseAddr = SiS_Pr->IOAddress; |
| 3275 | unsigned short RealModeNo, ModeIdIndex; | 3174 | unsigned short RealModeNo, ModeIdIndex; |
| 3276 | unsigned char backupreg = 0; | 3175 | unsigned char backupreg = 0; |
| 3277 | #ifdef SIS_LINUX_KERNEL | ||
| 3278 | unsigned short KeepLockReg; | 3176 | unsigned short KeepLockReg; |
| 3279 | 3177 | ||
| 3280 | SiS_Pr->UseCustomMode = false; | 3178 | SiS_Pr->UseCustomMode = false; |
| 3281 | SiS_Pr->CRT1UsesCustomMode = false; | 3179 | SiS_Pr->CRT1UsesCustomMode = false; |
| 3282 | #endif | ||
| 3283 | 3180 | ||
| 3284 | SiS_Pr->SiS_flag_clearbuffer = 0; | 3181 | SiS_Pr->SiS_flag_clearbuffer = 0; |
| 3285 | 3182 | ||
| 3286 | if(SiS_Pr->UseCustomMode) { | 3183 | if(SiS_Pr->UseCustomMode) { |
| 3287 | ModeNo = 0xfe; | 3184 | ModeNo = 0xfe; |
| 3288 | } else { | 3185 | } else { |
| 3289 | #ifdef SIS_LINUX_KERNEL | ||
| 3290 | if(!(ModeNo & 0x80)) SiS_Pr->SiS_flag_clearbuffer = 1; | 3186 | if(!(ModeNo & 0x80)) SiS_Pr->SiS_flag_clearbuffer = 1; |
| 3291 | #endif | ||
| 3292 | ModeNo &= 0x7f; | 3187 | ModeNo &= 0x7f; |
| 3293 | } | 3188 | } |
| 3294 | 3189 | ||
| @@ -3301,13 +3196,8 @@ SiSSetMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | |||
| 3301 | SiS_GetSysFlags(SiS_Pr); | 3196 | SiS_GetSysFlags(SiS_Pr); |
| 3302 | 3197 | ||
| 3303 | SiS_Pr->SiS_VGAINFO = 0x11; | 3198 | SiS_Pr->SiS_VGAINFO = 0x11; |
| 3304 | #if defined(SIS_XORG_XF86) && (defined(i386) || defined(__i386) || defined(__i386__) || defined(__AMD64__) || defined(__amd64__) || defined(__x86_64__)) | ||
| 3305 | if(pScrn) SiS_Pr->SiS_VGAINFO = SiS_GetSetBIOSScratch(pScrn, 0x489, 0xff); | ||
| 3306 | #endif | ||
| 3307 | 3199 | ||
| 3308 | #ifdef SIS_LINUX_KERNEL | ||
| 3309 | KeepLockReg = SiS_GetReg(SiS_Pr->SiS_P3c4,0x05); | 3200 | KeepLockReg = SiS_GetReg(SiS_Pr->SiS_P3c4,0x05); |
| 3310 | #endif | ||
| 3311 | SiS_SetReg(SiS_Pr->SiS_P3c4,0x05,0x86); | 3201 | SiS_SetReg(SiS_Pr->SiS_P3c4,0x05,0x86); |
| 3312 | 3202 | ||
| 3313 | SiSInitPCIetc(SiS_Pr); | 3203 | SiSInitPCIetc(SiS_Pr); |
| @@ -3344,12 +3234,10 @@ SiSSetMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | |||
| 3344 | SiS_GetLCDResInfo(SiS_Pr, ModeNo, ModeIdIndex); | 3234 | SiS_GetLCDResInfo(SiS_Pr, ModeNo, ModeIdIndex); |
| 3345 | SiS_SetLowModeTest(SiS_Pr, ModeNo); | 3235 | SiS_SetLowModeTest(SiS_Pr, ModeNo); |
| 3346 | 3236 | ||
| 3347 | #ifdef SIS_LINUX_KERNEL | ||
| 3348 | /* Check memory size (kernel framebuffer driver only) */ | 3237 | /* Check memory size (kernel framebuffer driver only) */ |
| 3349 | if(!SiS_CheckMemorySize(SiS_Pr, ModeNo, ModeIdIndex)) { | 3238 | if(!SiS_CheckMemorySize(SiS_Pr, ModeNo, ModeIdIndex)) { |
| 3350 | return false; | 3239 | return false; |
| 3351 | } | 3240 | } |
| 3352 | #endif | ||
| 3353 | 3241 | ||
| 3354 | SiS_OpenCRTC(SiS_Pr); | 3242 | SiS_OpenCRTC(SiS_Pr); |
| 3355 | 3243 | ||
| @@ -3384,7 +3272,7 @@ SiSSetMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | |||
| 3384 | SiS_DisplayOn(SiS_Pr); | 3272 | SiS_DisplayOn(SiS_Pr); |
| 3385 | SiS_SetRegByte(SiS_Pr->SiS_P3c6,0xFF); | 3273 | SiS_SetRegByte(SiS_Pr->SiS_P3c6,0xFF); |
| 3386 | 3274 | ||
| 3387 | #ifdef SIS315H | 3275 | #ifdef CONFIG_FB_SIS_315 |
| 3388 | if(SiS_Pr->ChipType >= SIS_315H) { | 3276 | if(SiS_Pr->ChipType >= SIS_315H) { |
| 3389 | if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { | 3277 | if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { |
| 3390 | if(!(SiS_IsDualEdge(SiS_Pr))) { | 3278 | if(!(SiS_IsDualEdge(SiS_Pr))) { |
| @@ -3396,7 +3284,7 @@ SiSSetMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | |||
| 3396 | 3284 | ||
| 3397 | if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { | 3285 | if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { |
| 3398 | if(SiS_Pr->ChipType >= SIS_315H) { | 3286 | if(SiS_Pr->ChipType >= SIS_315H) { |
| 3399 | #ifdef SIS315H | 3287 | #ifdef CONFIG_FB_SIS_315 |
| 3400 | if(!SiS_Pr->SiS_ROMNew) { | 3288 | if(!SiS_Pr->SiS_ROMNew) { |
| 3401 | if(SiS_IsVAMode(SiS_Pr)) { | 3289 | if(SiS_IsVAMode(SiS_Pr)) { |
| 3402 | SiS_SetRegOR(SiS_Pr->SiS_P3d4,0x35,0x01); | 3290 | SiS_SetRegOR(SiS_Pr->SiS_P3d4,0x35,0x01); |
| @@ -3424,424 +3312,16 @@ SiSSetMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | |||
| 3424 | } | 3312 | } |
| 3425 | } | 3313 | } |
| 3426 | 3314 | ||
| 3427 | #ifdef SIS_XORG_XF86 | ||
| 3428 | if(pScrn) { | ||
| 3429 | /* SetPitch: Adapt to virtual size & position */ | ||
| 3430 | if((ModeNo > 0x13) && (dosetpitch)) { | ||
| 3431 | SiS_SetPitch(SiS_Pr, pScrn); | ||
| 3432 | } | ||
| 3433 | |||
| 3434 | /* Backup/Set ModeNo in BIOS scratch area */ | ||
| 3435 | SiS_GetSetModeID(pScrn, ModeNo); | ||
| 3436 | } | ||
| 3437 | #endif | ||
| 3438 | |||
| 3439 | SiS_CloseCRTC(SiS_Pr); | 3315 | SiS_CloseCRTC(SiS_Pr); |
| 3440 | 3316 | ||
| 3441 | SiS_Handle760(SiS_Pr); | 3317 | SiS_Handle760(SiS_Pr); |
| 3442 | 3318 | ||
| 3443 | #ifdef SIS_LINUX_KERNEL | ||
| 3444 | /* We never lock registers in XF86 */ | 3319 | /* We never lock registers in XF86 */ |
| 3445 | if(KeepLockReg != 0xA1) SiS_SetReg(SiS_Pr->SiS_P3c4,0x05,0x00); | 3320 | if(KeepLockReg != 0xA1) SiS_SetReg(SiS_Pr->SiS_P3c4,0x05,0x00); |
| 3446 | #endif | ||
| 3447 | 3321 | ||
| 3448 | return true; | 3322 | return true; |
| 3449 | } | 3323 | } |
| 3450 | 3324 | ||
| 3451 | /*********************************************/ | ||
| 3452 | /* X.org/XFree86: SiSBIOSSetMode() */ | ||
| 3453 | /* for non-Dual-Head mode */ | ||
| 3454 | /*********************************************/ | ||
| 3455 | |||
| 3456 | #ifdef SIS_XORG_XF86 | ||
| 3457 | bool | ||
| 3458 | SiSBIOSSetMode(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, | ||
| 3459 | DisplayModePtr mode, bool IsCustom) | ||
| 3460 | { | ||
| 3461 | SISPtr pSiS = SISPTR(pScrn); | ||
| 3462 | unsigned short ModeNo = 0; | ||
| 3463 | |||
| 3464 | SiS_Pr->UseCustomMode = false; | ||
| 3465 | |||
| 3466 | if((IsCustom) && (SiS_CheckBuildCustomMode(pScrn, mode, pSiS->VBFlags))) { | ||
| 3467 | |||
| 3468 | xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3, "Setting custom mode %dx%d\n", | ||
| 3469 | SiS_Pr->CHDisplay, | ||
| 3470 | (mode->Flags & V_INTERLACE ? SiS_Pr->CVDisplay * 2 : | ||
| 3471 | (mode->Flags & V_DBLSCAN ? SiS_Pr->CVDisplay / 2 : | ||
| 3472 | SiS_Pr->CVDisplay))); | ||
| 3473 | |||
| 3474 | } else { | ||
| 3475 | |||
| 3476 | /* Don't need vbflags here; checks done earlier */ | ||
| 3477 | ModeNo = SiS_GetModeNumber(pScrn, mode, pSiS->VBFlags); | ||
| 3478 | if(!ModeNo) return false; | ||
| 3479 | |||
| 3480 | xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3, "Setting standard mode 0x%x\n", ModeNo); | ||
| 3481 | |||
| 3482 | } | ||
| 3483 | |||
| 3484 | return(SiSSetMode(SiS_Pr, pScrn, ModeNo, true)); | ||
| 3485 | } | ||
| 3486 | |||
| 3487 | /*********************************************/ | ||
| 3488 | /* X.org/XFree86: SiSBIOSSetModeCRT2() */ | ||
| 3489 | /* for Dual-Head modes */ | ||
| 3490 | /*********************************************/ | ||
| 3491 | |||
| 3492 | bool | ||
| 3493 | SiSBIOSSetModeCRT2(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, | ||
| 3494 | DisplayModePtr mode, bool IsCustom) | ||
| 3495 | { | ||
| 3496 | SISIOADDRESS BaseAddr = SiS_Pr->IOAddress; | ||
| 3497 | SISPtr pSiS = SISPTR(pScrn); | ||
| 3498 | #ifdef SISDUALHEAD | ||
| 3499 | SISEntPtr pSiSEnt = pSiS->entityPrivate; | ||
| 3500 | #endif | ||
| 3501 | unsigned short ModeIdIndex; | ||
| 3502 | unsigned short ModeNo = 0; | ||
| 3503 | unsigned char backupreg = 0; | ||
| 3504 | |||
| 3505 | SiS_Pr->UseCustomMode = false; | ||
| 3506 | |||
| 3507 | /* Remember: Custom modes for CRT2 are ONLY supported | ||
| 3508 | * -) on the 30x/B/C, and | ||
| 3509 | * -) if CRT2 is LCD or VGA, or CRT1 is LCDA | ||
| 3510 | */ | ||
| 3511 | |||
| 3512 | if((IsCustom) && (SiS_CheckBuildCustomMode(pScrn, mode, pSiS->VBFlags))) { | ||
| 3513 | |||
| 3514 | ModeNo = 0xfe; | ||
| 3515 | |||
| 3516 | } else { | ||
| 3517 | |||
| 3518 | ModeNo = SiS_GetModeNumber(pScrn, mode, pSiS->VBFlags); | ||
| 3519 | if(!ModeNo) return false; | ||
| 3520 | |||
| 3521 | } | ||
| 3522 | |||
| 3523 | SiSRegInit(SiS_Pr, BaseAddr); | ||
| 3524 | SiSInitPtr(SiS_Pr); | ||
| 3525 | SiS_GetSysFlags(SiS_Pr); | ||
| 3526 | #if defined(i386) || defined(__i386) || defined(__i386__) || defined(__AMD64__) || defined(__amd64__) || defined(__x86_64__) | ||
| 3527 | SiS_Pr->SiS_VGAINFO = SiS_GetSetBIOSScratch(pScrn, 0x489, 0xff); | ||
| 3528 | #else | ||
| 3529 | SiS_Pr->SiS_VGAINFO = 0x11; | ||
| 3530 | #endif | ||
| 3531 | |||
| 3532 | SiS_SetReg(SiS_Pr->SiS_P3c4,0x05,0x86); | ||
| 3533 | |||
| 3534 | SiSInitPCIetc(SiS_Pr); | ||
| 3535 | SiSSetLVDSetc(SiS_Pr); | ||
| 3536 | SiSDetermineROMUsage(SiS_Pr); | ||
| 3537 | |||
| 3538 | /* Save mode info so we can set it from within SetMode for CRT1 */ | ||
| 3539 | #ifdef SISDUALHEAD | ||
| 3540 | if(pSiS->DualHeadMode) { | ||
| 3541 | pSiSEnt->CRT2ModeNo = ModeNo; | ||
| 3542 | pSiSEnt->CRT2DMode = mode; | ||
| 3543 | pSiSEnt->CRT2IsCustom = IsCustom; | ||
| 3544 | pSiSEnt->CRT2CR30 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); | ||
| 3545 | pSiSEnt->CRT2CR31 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x31); | ||
| 3546 | pSiSEnt->CRT2CR35 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x35); | ||
| 3547 | pSiSEnt->CRT2CR38 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); | ||
| 3548 | #if 0 | ||
| 3549 | /* We can't set CRT2 mode before CRT1 mode is set - says who...? */ | ||
| 3550 | if(pSiSEnt->CRT1ModeNo == -1) { | ||
| 3551 | xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3, | ||
| 3552 | "Setting CRT2 mode delayed until after setting CRT1 mode\n"); | ||
| 3553 | return true; | ||
| 3554 | } | ||
| 3555 | #endif | ||
| 3556 | pSiSEnt->CRT2ModeSet = true; | ||
| 3557 | } | ||
| 3558 | #endif | ||
| 3559 | |||
| 3560 | if(SiS_Pr->UseCustomMode) { | ||
| 3561 | |||
| 3562 | unsigned short temptemp = SiS_Pr->CVDisplay; | ||
| 3563 | |||
| 3564 | if(SiS_Pr->CModeFlag & DoubleScanMode) temptemp >>= 1; | ||
| 3565 | else if(SiS_Pr->CInfoFlag & InterlaceMode) temptemp <<= 1; | ||
| 3566 | |||
| 3567 | xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3, | ||
| 3568 | "Setting custom mode %dx%d on CRT2\n", | ||
| 3569 | SiS_Pr->CHDisplay, temptemp); | ||
| 3570 | |||
| 3571 | } else { | ||
| 3572 | |||
| 3573 | xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3, | ||
| 3574 | "Setting standard mode 0x%x on CRT2\n", ModeNo); | ||
| 3575 | |||
| 3576 | } | ||
| 3577 | |||
| 3578 | SiS_UnLockCRT2(SiS_Pr); | ||
| 3579 | |||
| 3580 | if(!SiS_Pr->UseCustomMode) { | ||
| 3581 | if(!(SiS_SearchModeID(SiS_Pr, &ModeNo, &ModeIdIndex))) return false; | ||
| 3582 | } else { | ||
| 3583 | ModeIdIndex = 0; | ||
| 3584 | } | ||
| 3585 | |||
| 3586 | SiS_GetVBType(SiS_Pr); | ||
| 3587 | |||
| 3588 | SiS_InitVB(SiS_Pr); | ||
| 3589 | if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { | ||
| 3590 | if(SiS_Pr->ChipType >= SIS_315H) { | ||
| 3591 | SiS_ResetVB(SiS_Pr); | ||
| 3592 | SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x32,0x10); | ||
| 3593 | SiS_SetRegOR(SiS_Pr->SiS_Part2Port,0x00,0x0c); | ||
| 3594 | backupreg = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); | ||
| 3595 | } else { | ||
| 3596 | backupreg = SiS_GetReg(SiS_Pr->SiS_P3d4,0x35); | ||
| 3597 | } | ||
| 3598 | } | ||
| 3599 | |||
| 3600 | /* Get VB information (connectors, connected devices) */ | ||
| 3601 | if(!SiS_Pr->UseCustomMode) { | ||
| 3602 | SiS_GetVBInfo(SiS_Pr, ModeNo, ModeIdIndex, 1); | ||
| 3603 | } else { | ||
| 3604 | /* If this is a custom mode, we don't check the modeflag for CRT2Mode */ | ||
| 3605 | SiS_GetVBInfo(SiS_Pr, ModeNo, ModeIdIndex, 0); | ||
| 3606 | } | ||
| 3607 | SiS_SetYPbPr(SiS_Pr); | ||
| 3608 | SiS_SetTVMode(SiS_Pr, ModeNo, ModeIdIndex); | ||
| 3609 | SiS_GetLCDResInfo(SiS_Pr, ModeNo, ModeIdIndex); | ||
| 3610 | SiS_SetLowModeTest(SiS_Pr, ModeNo); | ||
| 3611 | |||
| 3612 | SiS_ResetSegmentRegisters(SiS_Pr); | ||
| 3613 | |||
| 3614 | /* Set mode on CRT2 */ | ||
| 3615 | if( (SiS_Pr->SiS_VBType & VB_SISVB) || | ||
| 3616 | (SiS_Pr->SiS_IF_DEF_LVDS == 1) || | ||
| 3617 | (SiS_Pr->SiS_IF_DEF_CH70xx != 0) || | ||
| 3618 | (SiS_Pr->SiS_IF_DEF_TRUMPION != 0) ) { | ||
| 3619 | SiS_SetCRT2Group(SiS_Pr, ModeNo); | ||
| 3620 | } | ||
| 3621 | |||
| 3622 | SiS_StrangeStuff(SiS_Pr); | ||
| 3623 | |||
| 3624 | SiS_DisplayOn(SiS_Pr); | ||
| 3625 | SiS_SetRegByte(SiS_Pr->SiS_P3c6,0xFF); | ||
| 3626 | |||
| 3627 | if(SiS_Pr->ChipType >= SIS_315H) { | ||
| 3628 | if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { | ||
| 3629 | if(!(SiS_IsDualEdge(SiS_Pr))) { | ||
| 3630 | SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x13,0xfb); | ||
| 3631 | } | ||
| 3632 | } | ||
| 3633 | } | ||
| 3634 | |||
| 3635 | if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { | ||
| 3636 | if(SiS_Pr->ChipType >= SIS_315H) { | ||
| 3637 | if(!SiS_Pr->SiS_ROMNew) { | ||
| 3638 | if(SiS_IsVAMode(SiS_Pr)) { | ||
| 3639 | SiS_SetRegOR(SiS_Pr->SiS_P3d4,0x35,0x01); | ||
| 3640 | } else { | ||
| 3641 | SiS_SetRegAND(SiS_Pr->SiS_P3d4,0x35,0xFE); | ||
| 3642 | } | ||
| 3643 | } | ||
| 3644 | |||
| 3645 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x38,backupreg); | ||
| 3646 | |||
| 3647 | if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x30) & SetCRT2ToLCD) { | ||
| 3648 | SiS_SetRegAND(SiS_Pr->SiS_P3d4,0x38,0xfc); | ||
| 3649 | } | ||
| 3650 | } else if((SiS_Pr->ChipType == SIS_630) || | ||
| 3651 | (SiS_Pr->ChipType == SIS_730)) { | ||
| 3652 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x35,backupreg); | ||
| 3653 | } | ||
| 3654 | } | ||
| 3655 | |||
| 3656 | /* SetPitch: Adapt to virtual size & position */ | ||
| 3657 | SiS_SetPitchCRT2(SiS_Pr, pScrn); | ||
| 3658 | |||
| 3659 | SiS_Handle760(SiS_Pr); | ||
| 3660 | |||
| 3661 | return true; | ||
| 3662 | } | ||
| 3663 | |||
| 3664 | /*********************************************/ | ||
| 3665 | /* X.org/XFree86: SiSBIOSSetModeCRT1() */ | ||
| 3666 | /* for Dual-Head modes */ | ||
| 3667 | /*********************************************/ | ||
| 3668 | |||
| 3669 | bool | ||
| 3670 | SiSBIOSSetModeCRT1(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, | ||
| 3671 | DisplayModePtr mode, bool IsCustom) | ||
| 3672 | { | ||
| 3673 | SISIOADDRESS BaseAddr = SiS_Pr->IOAddress; | ||
| 3674 | SISPtr pSiS = SISPTR(pScrn); | ||
| 3675 | unsigned short ModeIdIndex, ModeNo = 0; | ||
| 3676 | unsigned char backupreg = 0; | ||
| 3677 | #ifdef SISDUALHEAD | ||
| 3678 | SISEntPtr pSiSEnt = pSiS->entityPrivate; | ||
| 3679 | unsigned char backupcr30, backupcr31, backupcr38, backupcr35, backupp40d=0; | ||
| 3680 | bool backupcustom; | ||
| 3681 | #endif | ||
| 3682 | |||
| 3683 | SiS_Pr->UseCustomMode = false; | ||
| 3684 | |||
| 3685 | if((IsCustom) && (SiS_CheckBuildCustomMode(pScrn, mode, pSiS->VBFlags))) { | ||
| 3686 | |||
| 3687 | unsigned short temptemp = SiS_Pr->CVDisplay; | ||
| 3688 | |||
| 3689 | if(SiS_Pr->CModeFlag & DoubleScanMode) temptemp >>= 1; | ||
| 3690 | else if(SiS_Pr->CInfoFlag & InterlaceMode) temptemp <<= 1; | ||
| 3691 | |||
| 3692 | xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3, | ||
| 3693 | "Setting custom mode %dx%d on CRT1\n", | ||
| 3694 | SiS_Pr->CHDisplay, temptemp); | ||
| 3695 | ModeNo = 0xfe; | ||
| 3696 | |||
| 3697 | } else { | ||
| 3698 | |||
| 3699 | ModeNo = SiS_GetModeNumber(pScrn, mode, 0); /* don't give VBFlags */ | ||
| 3700 | if(!ModeNo) return false; | ||
| 3701 | |||
| 3702 | xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3, | ||
| 3703 | "Setting standard mode 0x%x on CRT1\n", ModeNo); | ||
| 3704 | } | ||
| 3705 | |||
| 3706 | SiSInitPtr(SiS_Pr); | ||
| 3707 | SiSRegInit(SiS_Pr, BaseAddr); | ||
| 3708 | SiS_GetSysFlags(SiS_Pr); | ||
| 3709 | #if defined(i386) || defined(__i386) || defined(__i386__) || defined(__AMD64__) || defined(__amd64__) || defined(__x86_64__) | ||
| 3710 | SiS_Pr->SiS_VGAINFO = SiS_GetSetBIOSScratch(pScrn, 0x489, 0xff); | ||
| 3711 | #else | ||
| 3712 | SiS_Pr->SiS_VGAINFO = 0x11; | ||
| 3713 | #endif | ||
| 3714 | |||
| 3715 | SiS_SetReg(SiS_Pr->SiS_P3c4,0x05,0x86); | ||
| 3716 | |||
| 3717 | SiSInitPCIetc(SiS_Pr); | ||
| 3718 | SiSSetLVDSetc(SiS_Pr); | ||
| 3719 | SiSDetermineROMUsage(SiS_Pr); | ||
| 3720 | |||
| 3721 | SiS_UnLockCRT2(SiS_Pr); | ||
| 3722 | |||
| 3723 | if(!SiS_Pr->UseCustomMode) { | ||
| 3724 | if(!(SiS_SearchModeID(SiS_Pr, &ModeNo, &ModeIdIndex))) return false; | ||
| 3725 | } else { | ||
| 3726 | ModeIdIndex = 0; | ||
| 3727 | } | ||
| 3728 | |||
| 3729 | /* Determine VBType */ | ||
| 3730 | SiS_GetVBType(SiS_Pr); | ||
| 3731 | |||
| 3732 | SiS_InitVB(SiS_Pr); | ||
| 3733 | if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { | ||
| 3734 | if(SiS_Pr->ChipType >= SIS_315H) { | ||
| 3735 | backupreg = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); | ||
| 3736 | } else { | ||
| 3737 | backupreg = SiS_GetReg(SiS_Pr->SiS_P3d4,0x35); | ||
| 3738 | } | ||
| 3739 | } | ||
| 3740 | |||
| 3741 | /* Get VB information (connectors, connected devices) */ | ||
| 3742 | /* (We don't care if the current mode is a CRT2 mode) */ | ||
| 3743 | SiS_GetVBInfo(SiS_Pr, ModeNo, ModeIdIndex, 0); | ||
| 3744 | SiS_SetYPbPr(SiS_Pr); | ||
| 3745 | SiS_SetTVMode(SiS_Pr, ModeNo, ModeIdIndex); | ||
| 3746 | SiS_GetLCDResInfo(SiS_Pr, ModeNo, ModeIdIndex); | ||
| 3747 | SiS_SetLowModeTest(SiS_Pr, ModeNo); | ||
| 3748 | |||
| 3749 | SiS_OpenCRTC(SiS_Pr); | ||
| 3750 | |||
| 3751 | /* Set mode on CRT1 */ | ||
| 3752 | SiS_SetCRT1Group(SiS_Pr, ModeNo, ModeIdIndex); | ||
| 3753 | if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { | ||
| 3754 | SiS_SetCRT2Group(SiS_Pr, ModeNo); | ||
| 3755 | } | ||
| 3756 | |||
| 3757 | /* SetPitch: Adapt to virtual size & position */ | ||
| 3758 | SiS_SetPitchCRT1(SiS_Pr, pScrn); | ||
| 3759 | |||
| 3760 | SiS_HandleCRT1(SiS_Pr); | ||
| 3761 | |||
| 3762 | SiS_StrangeStuff(SiS_Pr); | ||
| 3763 | |||
| 3764 | SiS_CloseCRTC(SiS_Pr); | ||
| 3765 | |||
| 3766 | #ifdef SISDUALHEAD | ||
| 3767 | if(pSiS->DualHeadMode) { | ||
| 3768 | pSiSEnt->CRT1ModeNo = ModeNo; | ||
| 3769 | pSiSEnt->CRT1DMode = mode; | ||
| 3770 | } | ||
| 3771 | #endif | ||
| 3772 | |||
| 3773 | if(SiS_Pr->UseCustomMode) { | ||
| 3774 | SiS_Pr->CRT1UsesCustomMode = true; | ||
| 3775 | SiS_Pr->CSRClock_CRT1 = SiS_Pr->CSRClock; | ||
| 3776 | SiS_Pr->CModeFlag_CRT1 = SiS_Pr->CModeFlag; | ||
| 3777 | } else { | ||
| 3778 | SiS_Pr->CRT1UsesCustomMode = false; | ||
| 3779 | } | ||
| 3780 | |||
| 3781 | /* Reset CRT2 if changing mode on CRT1 */ | ||
| 3782 | #ifdef SISDUALHEAD | ||
| 3783 | if(pSiS->DualHeadMode) { | ||
| 3784 | if(pSiSEnt->CRT2ModeNo != -1) { | ||
| 3785 | xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3, | ||
| 3786 | "(Re-)Setting mode for CRT2\n"); | ||
| 3787 | backupcustom = SiS_Pr->UseCustomMode; | ||
| 3788 | backupcr30 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x30); | ||
| 3789 | backupcr31 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x31); | ||
| 3790 | backupcr35 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x35); | ||
| 3791 | backupcr38 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x38); | ||
| 3792 | if(SiS_Pr->SiS_VBType & VB_SISVB) { | ||
| 3793 | /* Backup LUT-enable */ | ||
| 3794 | if(pSiSEnt->CRT2ModeSet) { | ||
| 3795 | backupp40d = SiS_GetReg(SiS_Pr->SiS_Part4Port,0x0d) & 0x08; | ||
| 3796 | } | ||
| 3797 | } | ||
| 3798 | if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { | ||
| 3799 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x30,pSiSEnt->CRT2CR30); | ||
| 3800 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x31,pSiSEnt->CRT2CR31); | ||
| 3801 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x35,pSiSEnt->CRT2CR35); | ||
| 3802 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x38,pSiSEnt->CRT2CR38); | ||
| 3803 | } | ||
| 3804 | |||
| 3805 | SiSBIOSSetModeCRT2(SiS_Pr, pSiSEnt->pScrn_1, | ||
| 3806 | pSiSEnt->CRT2DMode, pSiSEnt->CRT2IsCustom); | ||
| 3807 | |||
| 3808 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x30,backupcr30); | ||
| 3809 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x31,backupcr31); | ||
| 3810 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x35,backupcr35); | ||
| 3811 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x38,backupcr38); | ||
| 3812 | if(SiS_Pr->SiS_VBType & VB_SISVB) { | ||
| 3813 | SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x0d, ~0x08, backupp40d); | ||
| 3814 | } | ||
| 3815 | SiS_Pr->UseCustomMode = backupcustom; | ||
| 3816 | } | ||
| 3817 | } | ||
| 3818 | #endif | ||
| 3819 | |||
| 3820 | /* Warning: From here, the custom mode entries in SiS_Pr are | ||
| 3821 | * possibly overwritten | ||
| 3822 | */ | ||
| 3823 | |||
| 3824 | SiS_DisplayOn(SiS_Pr); | ||
| 3825 | SiS_SetRegByte(SiS_Pr->SiS_P3c6,0xFF); | ||
| 3826 | |||
| 3827 | if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { | ||
| 3828 | if(SiS_Pr->ChipType >= SIS_315H) { | ||
| 3829 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x38,backupreg); | ||
| 3830 | } else if((SiS_Pr->ChipType == SIS_630) || | ||
| 3831 | (SiS_Pr->ChipType == SIS_730)) { | ||
| 3832 | SiS_SetReg(SiS_Pr->SiS_P3d4,0x35,backupreg); | ||
| 3833 | } | ||
| 3834 | } | ||
| 3835 | |||
| 3836 | SiS_Handle760(SiS_Pr); | ||
| 3837 | |||
| 3838 | /* Backup/Set ModeNo in BIOS scratch area */ | ||
| 3839 | SiS_GetSetModeID(pScrn,ModeNo); | ||
| 3840 | |||
| 3841 | return true; | ||
| 3842 | } | ||
| 3843 | #endif /* Linux_XF86 */ | ||
| 3844 | |||
| 3845 | #ifndef GETBITSTR | 3325 | #ifndef GETBITSTR |
| 3846 | #define BITMASK(h,l) (((unsigned)(1U << ((h)-(l)+1))-1)<<(l)) | 3326 | #define BITMASK(h,l) (((unsigned)(1U << ((h)-(l)+1))-1)<<(l)) |
| 3847 | #define GENMASK(mask) BITMASK(1?mask,0?mask) | 3327 | #define GENMASK(mask) BITMASK(1?mask,0?mask) |
| @@ -3927,7 +3407,7 @@ SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 3927 | SiS_Pr->CVBlankStart = SiS_Pr->SiS_VGAVDE; | 3407 | SiS_Pr->CVBlankStart = SiS_Pr->SiS_VGAVDE; |
| 3928 | 3408 | ||
| 3929 | if(SiS_Pr->ChipType < SIS_315H) { | 3409 | if(SiS_Pr->ChipType < SIS_315H) { |
| 3930 | #ifdef SIS300 | 3410 | #ifdef CONFIG_FB_SIS_300 |
| 3931 | tempbx = SiS_Pr->SiS_VGAHT; | 3411 | tempbx = SiS_Pr->SiS_VGAHT; |
| 3932 | if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { | 3412 | if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { |
| 3933 | tempbx = SiS_Pr->PanelHT; | 3413 | tempbx = SiS_Pr->PanelHT; |
| @@ -3936,7 +3416,7 @@ SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 3936 | remaining = tempbx % 8; | 3416 | remaining = tempbx % 8; |
| 3937 | #endif | 3417 | #endif |
| 3938 | } else { | 3418 | } else { |
| 3939 | #ifdef SIS315H | 3419 | #ifdef CONFIG_FB_SIS_315 |
| 3940 | /* OK for LCDA, LVDS */ | 3420 | /* OK for LCDA, LVDS */ |
| 3941 | tempbx = SiS_Pr->PanelHT - SiS_Pr->PanelXRes; | 3421 | tempbx = SiS_Pr->PanelHT - SiS_Pr->PanelXRes; |
| 3942 | tempax = SiS_Pr->SiS_VGAHDE; /* not /2 ! */ | 3422 | tempax = SiS_Pr->SiS_VGAHDE; /* not /2 ! */ |
| @@ -3950,7 +3430,7 @@ SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 3950 | SiS_Pr->CHTotal = SiS_Pr->CHBlankEnd = tempbx; | 3430 | SiS_Pr->CHTotal = SiS_Pr->CHBlankEnd = tempbx; |
| 3951 | 3431 | ||
| 3952 | if(SiS_Pr->ChipType < SIS_315H) { | 3432 | if(SiS_Pr->ChipType < SIS_315H) { |
| 3953 | #ifdef SIS300 | 3433 | #ifdef CONFIG_FB_SIS_300 |
| 3954 | if(SiS_Pr->SiS_VGAHDE == SiS_Pr->PanelXRes) { | 3434 | if(SiS_Pr->SiS_VGAHDE == SiS_Pr->PanelXRes) { |
| 3955 | SiS_Pr->CHSyncStart = SiS_Pr->SiS_VGAHDE + ((SiS_Pr->PanelHRS + 1) & ~1); | 3435 | SiS_Pr->CHSyncStart = SiS_Pr->SiS_VGAHDE + ((SiS_Pr->PanelHRS + 1) & ~1); |
| 3956 | SiS_Pr->CHSyncEnd = SiS_Pr->CHSyncStart + SiS_Pr->PanelHRE; | 3436 | SiS_Pr->CHSyncEnd = SiS_Pr->CHSyncStart + SiS_Pr->PanelHRE; |
| @@ -3982,7 +3462,7 @@ SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 3982 | } | 3462 | } |
| 3983 | #endif | 3463 | #endif |
| 3984 | } else { | 3464 | } else { |
| 3985 | #ifdef SIS315H | 3465 | #ifdef CONFIG_FB_SIS_315 |
| 3986 | tempax = VGAHDE; | 3466 | tempax = VGAHDE; |
| 3987 | if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { | 3467 | if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { |
| 3988 | tempbx = SiS_Pr->PanelXRes; | 3468 | tempbx = SiS_Pr->PanelXRes; |
| @@ -4001,7 +3481,7 @@ SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 4001 | if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { | 3481 | if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { |
| 4002 | tempax = SiS_Pr->PanelYRes; | 3482 | tempax = SiS_Pr->PanelYRes; |
| 4003 | } else if(SiS_Pr->ChipType < SIS_315H) { | 3483 | } else if(SiS_Pr->ChipType < SIS_315H) { |
| 4004 | #ifdef SIS300 | 3484 | #ifdef CONFIG_FB_SIS_300 |
| 4005 | /* Stupid hack for 640x400/320x200 */ | 3485 | /* Stupid hack for 640x400/320x200 */ |
| 4006 | if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { | 3486 | if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) { |
| 4007 | if((tempax + tempbx) == 438) tempbx += 16; | 3487 | if((tempax + tempbx) == 438) tempbx += 16; |
| @@ -4054,36 +3534,12 @@ SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 4054 | if(modeflag & DoubleScanMode) tempax |= 0x80; | 3534 | if(modeflag & DoubleScanMode) tempax |= 0x80; |
| 4055 | SiS_SetRegANDOR(SiS_Pr->SiS_P3d4,0x09,0x5F,tempax); | 3535 | SiS_SetRegANDOR(SiS_Pr->SiS_P3d4,0x09,0x5F,tempax); |
| 4056 | 3536 | ||
| 4057 | #ifdef SIS_XORG_XF86 | ||
| 4058 | #ifdef TWDEBUG | ||
| 4059 | xf86DrvMsg(0, X_INFO, "%d %d %d %d %d %d %d %d (%d %d %d %d)\n", | ||
| 4060 | SiS_Pr->CHDisplay, SiS_Pr->CHSyncStart, SiS_Pr->CHSyncEnd, SiS_Pr->CHTotal, | ||
| 4061 | SiS_Pr->CVDisplay, SiS_Pr->CVSyncStart, SiS_Pr->CVSyncEnd, SiS_Pr->CVTotal, | ||
| 4062 | SiS_Pr->CHBlankStart, SiS_Pr->CHBlankEnd, SiS_Pr->CVBlankStart, SiS_Pr->CVBlankEnd); | ||
| 4063 | xf86DrvMsg(0, X_INFO, " {{0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,\n", | ||
| 4064 | SiS_Pr->CCRT1CRTC[0], SiS_Pr->CCRT1CRTC[1], | ||
| 4065 | SiS_Pr->CCRT1CRTC[2], SiS_Pr->CCRT1CRTC[3], | ||
| 4066 | SiS_Pr->CCRT1CRTC[4], SiS_Pr->CCRT1CRTC[5], | ||
| 4067 | SiS_Pr->CCRT1CRTC[6], SiS_Pr->CCRT1CRTC[7]); | ||
| 4068 | xf86DrvMsg(0, X_INFO, " 0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,\n", | ||
| 4069 | SiS_Pr->CCRT1CRTC[8], SiS_Pr->CCRT1CRTC[9], | ||
| 4070 | SiS_Pr->CCRT1CRTC[10], SiS_Pr->CCRT1CRTC[11], | ||
| 4071 | SiS_Pr->CCRT1CRTC[12], SiS_Pr->CCRT1CRTC[13], | ||
| 4072 | SiS_Pr->CCRT1CRTC[14], SiS_Pr->CCRT1CRTC[15]); | ||
| 4073 | xf86DrvMsg(0, X_INFO, " 0x%02x}},\n", SiS_Pr->CCRT1CRTC[16]); | ||
| 4074 | #endif | ||
| 4075 | #endif | ||
| 4076 | } | 3537 | } |
| 4077 | 3538 | ||
| 4078 | void | 3539 | void |
| 4079 | SiS_Generic_ConvertCRData(struct SiS_Private *SiS_Pr, unsigned char *crdata, | 3540 | SiS_Generic_ConvertCRData(struct SiS_Private *SiS_Pr, unsigned char *crdata, |
| 4080 | int xres, int yres, | 3541 | int xres, int yres, |
| 4081 | #ifdef SIS_XORG_XF86 | ||
| 4082 | DisplayModePtr current | ||
| 4083 | #endif | ||
| 4084 | #ifdef SIS_LINUX_KERNEL | ||
| 4085 | struct fb_var_screeninfo *var, bool writeres | 3542 | struct fb_var_screeninfo *var, bool writeres |
| 4086 | #endif | ||
| 4087 | ) | 3543 | ) |
| 4088 | { | 3544 | { |
| 4089 | unsigned short HRE, HBE, HRS, HBS, HDE, HT; | 3545 | unsigned short HRE, HBE, HRS, HBS, HDE, HT; |
| @@ -4127,25 +3583,10 @@ SiS_Generic_ConvertCRData(struct SiS_Private *SiS_Pr, unsigned char *crdata, | |||
| 4127 | 3583 | ||
| 4128 | D = B - F - C; | 3584 | D = B - F - C; |
| 4129 | 3585 | ||
| 4130 | #ifdef SIS_XORG_XF86 | ||
| 4131 | current->HDisplay = (E * 8); | ||
| 4132 | current->HSyncStart = (E * 8) + (F * 8); | ||
| 4133 | current->HSyncEnd = (E * 8) + (F * 8) + (C * 8); | ||
| 4134 | current->HTotal = (E * 8) + (F * 8) + (C * 8) + (D * 8); | ||
| 4135 | #ifdef TWDEBUG | ||
| 4136 | xf86DrvMsg(0, X_INFO, | ||
| 4137 | "H: A %d B %d C %d D %d E %d F %d HT %d HDE %d HRS %d HBS %d HBE %d HRE %d\n", | ||
| 4138 | A, B, C, D, E, F, HT, HDE, HRS, HBS, HBE, HRE); | ||
| 4139 | #else | ||
| 4140 | (void)VBS; (void)HBS; (void)A; | ||
| 4141 | #endif | ||
| 4142 | #endif | ||
| 4143 | #ifdef SIS_LINUX_KERNEL | ||
| 4144 | if(writeres) var->xres = xres = E * 8; | 3586 | if(writeres) var->xres = xres = E * 8; |
| 4145 | var->left_margin = D * 8; | 3587 | var->left_margin = D * 8; |
| 4146 | var->right_margin = F * 8; | 3588 | var->right_margin = F * 8; |
| 4147 | var->hsync_len = C * 8; | 3589 | var->hsync_len = C * 8; |
| 4148 | #endif | ||
| 4149 | 3590 | ||
| 4150 | /* Vertical */ | 3591 | /* Vertical */ |
| 4151 | sr_data = crdata[13]; | 3592 | sr_data = crdata[13]; |
| @@ -4192,30 +3633,10 @@ SiS_Generic_ConvertCRData(struct SiS_Private *SiS_Pr, unsigned char *crdata, | |||
| 4192 | 3633 | ||
| 4193 | D = B - F - C; | 3634 | D = B - F - C; |
| 4194 | 3635 | ||
| 4195 | #ifdef SIS_XORG_XF86 | ||
| 4196 | current->VDisplay = VDE + 1; | ||
| 4197 | current->VSyncStart = VRS + 1; | ||
| 4198 | current->VSyncEnd = ((VRS & ~0x1f) | VRE) + 1; | ||
| 4199 | if(VRE <= (VRS & 0x1f)) current->VSyncEnd += 32; | ||
| 4200 | current->VTotal = E + D + C + F; | ||
| 4201 | #if 0 | ||
| 4202 | current->VDisplay = E; | ||
| 4203 | current->VSyncStart = E + D; | ||
| 4204 | current->VSyncEnd = E + D + C; | ||
| 4205 | current->VTotal = E + D + C + F; | ||
| 4206 | #endif | ||
| 4207 | #ifdef TWDEBUG | ||
| 4208 | xf86DrvMsg(0, X_INFO, | ||
| 4209 | "V: A %d B %d C %d D %d E %d F %d VT %d VDE %d VRS %d VBS %d VBE %d VRE %d\n", | ||
| 4210 | A, B, C, D, E, F, VT, VDE, VRS, VBS, VBE, VRE); | ||
| 4211 | #endif | ||
| 4212 | #endif | ||
| 4213 | #ifdef SIS_LINUX_KERNEL | ||
| 4214 | if(writeres) var->yres = yres = E; | 3636 | if(writeres) var->yres = yres = E; |
| 4215 | var->upper_margin = D; | 3637 | var->upper_margin = D; |
| 4216 | var->lower_margin = F; | 3638 | var->lower_margin = F; |
| 4217 | var->vsync_len = C; | 3639 | var->vsync_len = C; |
| 4218 | #endif | ||
| 4219 | 3640 | ||
| 4220 | if((xres == 320) && ((yres == 200) || (yres == 240))) { | 3641 | if((xres == 320) && ((yres == 200) || (yres == 240))) { |
| 4221 | /* Terrible hack, but correct CRTC data for | 3642 | /* Terrible hack, but correct CRTC data for |
| @@ -4224,17 +3645,9 @@ SiS_Generic_ConvertCRData(struct SiS_Private *SiS_Pr, unsigned char *crdata, | |||
| 4224 | * a negative D. The CRT controller does not | 3645 | * a negative D. The CRT controller does not |
| 4225 | * seem to like correcting HRE to 50) | 3646 | * seem to like correcting HRE to 50) |
| 4226 | */ | 3647 | */ |
| 4227 | #ifdef SIS_XORG_XF86 | ||
| 4228 | current->HDisplay = 320; | ||
| 4229 | current->HSyncStart = 328; | ||
| 4230 | current->HSyncEnd = 376; | ||
| 4231 | current->HTotal = 400; | ||
| 4232 | #endif | ||
| 4233 | #ifdef SIS_LINUX_KERNEL | ||
| 4234 | var->left_margin = (400 - 376); | 3648 | var->left_margin = (400 - 376); |
| 4235 | var->right_margin = (328 - 320); | 3649 | var->right_margin = (328 - 320); |
| 4236 | var->hsync_len = (376 - 328); | 3650 | var->hsync_len = (376 - 328); |
| 4237 | #endif | ||
| 4238 | 3651 | ||
| 4239 | } | 3652 | } |
| 4240 | 3653 | ||
diff --git a/drivers/video/sis/init.h b/drivers/video/sis/init.h index b96005c39c67..ee8ed3c203da 100644 --- a/drivers/video/sis/init.h +++ b/drivers/video/sis/init.h | |||
| @@ -53,21 +53,8 @@ | |||
| 53 | #ifndef _INIT_H_ | 53 | #ifndef _INIT_H_ |
| 54 | #define _INIT_H_ | 54 | #define _INIT_H_ |
| 55 | 55 | ||
| 56 | #include "osdef.h" | ||
| 57 | #include "initdef.h" | 56 | #include "initdef.h" |
| 58 | 57 | ||
| 59 | #ifdef SIS_XORG_XF86 | ||
| 60 | #include "sis.h" | ||
| 61 | #define SIS_NEED_inSISREG | ||
| 62 | #define SIS_NEED_inSISREGW | ||
| 63 | #define SIS_NEED_inSISREGL | ||
| 64 | #define SIS_NEED_outSISREG | ||
| 65 | #define SIS_NEED_outSISREGW | ||
| 66 | #define SIS_NEED_outSISREGL | ||
| 67 | #include "sis_regs.h" | ||
| 68 | #endif | ||
| 69 | |||
| 70 | #ifdef SIS_LINUX_KERNEL | ||
| 71 | #include "vgatypes.h" | 58 | #include "vgatypes.h" |
| 72 | #include "vstruct.h" | 59 | #include "vstruct.h" |
| 73 | #ifdef SIS_CP | 60 | #ifdef SIS_CP |
| @@ -78,7 +65,6 @@ | |||
| 78 | #include <linux/fb.h> | 65 | #include <linux/fb.h> |
| 79 | #include "sis.h" | 66 | #include "sis.h" |
| 80 | #include <video/sisfb.h> | 67 | #include <video/sisfb.h> |
| 81 | #endif | ||
| 82 | 68 | ||
| 83 | /* Mode numbers */ | 69 | /* Mode numbers */ |
| 84 | static const unsigned short ModeIndex_320x200[] = {0x59, 0x41, 0x00, 0x4f}; | 70 | static const unsigned short ModeIndex_320x200[] = {0x59, 0x41, 0x00, 0x4f}; |
| @@ -286,7 +272,7 @@ static const struct SiS_ModeResInfo_S SiS_ModeResInfo[] = | |||
| 286 | { 1280, 854, 8,16} /* 0x22 */ | 272 | { 1280, 854, 8,16} /* 0x22 */ |
| 287 | }; | 273 | }; |
| 288 | 274 | ||
| 289 | #if defined(SIS300) || defined(SIS315H) | 275 | #if defined(CONFIG_FB_SIS_300) || defined(CONFIG_FB_SIS_315) |
| 290 | static const struct SiS_StandTable_S SiS_StandTable[]= | 276 | static const struct SiS_StandTable_S SiS_StandTable[]= |
| 291 | { | 277 | { |
| 292 | /* 0x00: MD_0_200 */ | 278 | /* 0x00: MD_0_200 */ |
| @@ -1521,10 +1507,6 @@ static const struct SiS_LVDSCRT1Data SiS_LVDSCRT1640x480_1_H[] = | |||
| 1521 | }; | 1507 | }; |
| 1522 | 1508 | ||
| 1523 | bool SiSInitPtr(struct SiS_Private *SiS_Pr); | 1509 | bool SiSInitPtr(struct SiS_Private *SiS_Pr); |
| 1524 | #ifdef SIS_XORG_XF86 | ||
| 1525 | unsigned short SiS_GetModeID(int VGAEngine, unsigned int VBFlags, int HDisplay, int VDisplay, | ||
| 1526 | int Depth, bool FSTN, int LCDwith, int LCDheight); | ||
| 1527 | #endif | ||
| 1528 | unsigned short SiS_GetModeID_LCD(int VGAEngine, unsigned int VBFlags, int HDisplay, | 1510 | unsigned short SiS_GetModeID_LCD(int VGAEngine, unsigned int VBFlags, int HDisplay, |
| 1529 | int VDisplay, int Depth, bool FSTN, | 1511 | int VDisplay, int Depth, bool FSTN, |
| 1530 | unsigned short CustomT, int LCDwith, int LCDheight, | 1512 | unsigned short CustomT, int LCDwith, int LCDheight, |
| @@ -1550,17 +1532,11 @@ void SiS_SetRegOR(SISIOADDRESS Port,unsigned short Index, unsigned short DataOR | |||
| 1550 | void SiS_DisplayOn(struct SiS_Private *SiS_Pr); | 1532 | void SiS_DisplayOn(struct SiS_Private *SiS_Pr); |
| 1551 | void SiS_DisplayOff(struct SiS_Private *SiS_Pr); | 1533 | void SiS_DisplayOff(struct SiS_Private *SiS_Pr); |
| 1552 | void SiSRegInit(struct SiS_Private *SiS_Pr, SISIOADDRESS BaseAddr); | 1534 | void SiSRegInit(struct SiS_Private *SiS_Pr, SISIOADDRESS BaseAddr); |
| 1553 | #ifndef SIS_LINUX_KERNEL | ||
| 1554 | void SiSSetLVDSetc(struct SiS_Private *SiS_Pr); | ||
| 1555 | #endif | ||
| 1556 | void SiS_SetEnableDstn(struct SiS_Private *SiS_Pr, int enable); | 1535 | void SiS_SetEnableDstn(struct SiS_Private *SiS_Pr, int enable); |
| 1557 | void SiS_SetEnableFstn(struct SiS_Private *SiS_Pr, int enable); | 1536 | void SiS_SetEnableFstn(struct SiS_Private *SiS_Pr, int enable); |
| 1558 | unsigned short SiS_GetModeFlag(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | 1537 | unsigned short SiS_GetModeFlag(struct SiS_Private *SiS_Pr, unsigned short ModeNo, |
| 1559 | unsigned short ModeIdIndex); | 1538 | unsigned short ModeIdIndex); |
| 1560 | bool SiSDetermineROMLayout661(struct SiS_Private *SiS_Pr); | 1539 | bool SiSDetermineROMLayout661(struct SiS_Private *SiS_Pr); |
| 1561 | #ifndef SIS_LINUX_KERNEL | ||
| 1562 | void SiS_GetVBType(struct SiS_Private *SiS_Pr); | ||
| 1563 | #endif | ||
| 1564 | 1540 | ||
| 1565 | bool SiS_SearchModeID(struct SiS_Private *SiS_Pr, unsigned short *ModeNo, | 1541 | bool SiS_SearchModeID(struct SiS_Private *SiS_Pr, unsigned short *ModeNo, |
| 1566 | unsigned short *ModeIdIndex); | 1542 | unsigned short *ModeIdIndex); |
| @@ -1572,37 +1548,19 @@ unsigned short SiS_GetColorDepth(struct SiS_Private *SiS_Pr, unsigned short Mode | |||
| 1572 | unsigned short ModeIdIndex); | 1548 | unsigned short ModeIdIndex); |
| 1573 | unsigned short SiS_GetOffset(struct SiS_Private *SiS_Pr,unsigned short ModeNo, | 1549 | unsigned short SiS_GetOffset(struct SiS_Private *SiS_Pr,unsigned short ModeNo, |
| 1574 | unsigned short ModeIdIndex, unsigned short RRTI); | 1550 | unsigned short ModeIdIndex, unsigned short RRTI); |
| 1575 | #ifdef SIS300 | 1551 | #ifdef CONFIG_FB_SIS_300 |
| 1576 | void SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *idx1, | 1552 | void SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *idx1, |
| 1577 | unsigned short *idx2); | 1553 | unsigned short *idx2); |
| 1578 | unsigned short SiS_GetFIFOThresholdB300(unsigned short idx1, unsigned short idx2); | 1554 | unsigned short SiS_GetFIFOThresholdB300(unsigned short idx1, unsigned short idx2); |
| 1579 | unsigned short SiS_GetLatencyFactor630(struct SiS_Private *SiS_Pr, unsigned short index); | 1555 | unsigned short SiS_GetLatencyFactor630(struct SiS_Private *SiS_Pr, unsigned short index); |
| 1580 | #endif | 1556 | #endif |
| 1581 | void SiS_LoadDAC(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex); | 1557 | void SiS_LoadDAC(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex); |
| 1582 | #ifdef SIS_XORG_XF86 | ||
| 1583 | bool SiSSetMode(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, unsigned short ModeNo, | ||
| 1584 | bool dosetpitch); | ||
| 1585 | bool SiSBIOSSetMode(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, | ||
| 1586 | DisplayModePtr mode, bool IsCustom); | ||
| 1587 | bool SiSBIOSSetModeCRT2(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, | ||
| 1588 | DisplayModePtr mode, bool IsCustom); | ||
| 1589 | bool SiSBIOSSetModeCRT1(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, | ||
| 1590 | DisplayModePtr mode, bool IsCustom); | ||
| 1591 | #endif | ||
| 1592 | #ifdef SIS_LINUX_KERNEL | ||
| 1593 | bool SiSSetMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo); | 1558 | bool SiSSetMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo); |
| 1594 | #endif | ||
| 1595 | void SiS_CalcCRRegisters(struct SiS_Private *SiS_Pr, int depth); | 1559 | void SiS_CalcCRRegisters(struct SiS_Private *SiS_Pr, int depth); |
| 1596 | void SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | 1560 | void SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo, |
| 1597 | unsigned short ModeIdIndex); | 1561 | unsigned short ModeIdIndex); |
| 1598 | #ifdef SIS_XORG_XF86 | ||
| 1599 | void SiS_Generic_ConvertCRData(struct SiS_Private *SiS_Pr, unsigned char *crdata, int xres, | ||
| 1600 | int yres, DisplayModePtr current); | ||
| 1601 | #endif | ||
| 1602 | #ifdef SIS_LINUX_KERNEL | ||
| 1603 | void SiS_Generic_ConvertCRData(struct SiS_Private *SiS_Pr, unsigned char *crdata, int xres, | 1562 | void SiS_Generic_ConvertCRData(struct SiS_Private *SiS_Pr, unsigned char *crdata, int xres, |
| 1604 | int yres, struct fb_var_screeninfo *var, bool writeres); | 1563 | int yres, struct fb_var_screeninfo *var, bool writeres); |
| 1605 | #endif | ||
| 1606 | 1564 | ||
| 1607 | /* From init301.c: */ | 1565 | /* From init301.c: */ |
| 1608 | extern void SiS_GetVBInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | 1566 | extern void SiS_GetVBInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, |
| @@ -1626,29 +1584,16 @@ extern unsigned short SiS_GetVCLK2Ptr(struct SiS_Private *SiS_Pr, unsigned short | |||
| 1626 | extern bool SiS_IsVAMode(struct SiS_Private *); | 1584 | extern bool SiS_IsVAMode(struct SiS_Private *); |
| 1627 | extern bool SiS_IsDualEdge(struct SiS_Private *); | 1585 | extern bool SiS_IsDualEdge(struct SiS_Private *); |
| 1628 | 1586 | ||
| 1629 | #ifdef SIS_XORG_XF86 | 1587 | #ifdef CONFIG_FB_SIS_300 |
| 1630 | /* From other modules: */ | ||
| 1631 | extern unsigned short SiS_CheckBuildCustomMode(ScrnInfoPtr pScrn, DisplayModePtr mode, | ||
| 1632 | unsigned int VBFlags); | ||
| 1633 | extern unsigned char SiS_GetSetBIOSScratch(ScrnInfoPtr pScrn, unsigned short offset, | ||
| 1634 | unsigned char value); | ||
| 1635 | extern unsigned char SiS_GetSetModeID(ScrnInfoPtr pScrn, unsigned char id); | ||
| 1636 | extern unsigned short SiS_GetModeNumber(ScrnInfoPtr pScrn, DisplayModePtr mode, | ||
| 1637 | unsigned int VBFlags); | ||
| 1638 | #endif | ||
| 1639 | |||
| 1640 | #ifdef SIS_LINUX_KERNEL | ||
| 1641 | #ifdef SIS300 | ||
| 1642 | extern unsigned int sisfb_read_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg); | 1588 | extern unsigned int sisfb_read_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg); |
| 1643 | extern void sisfb_write_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg, | 1589 | extern void sisfb_write_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg, |
| 1644 | unsigned int val); | 1590 | unsigned int val); |
| 1645 | #endif | 1591 | #endif |
| 1646 | #ifdef SIS315H | 1592 | #ifdef CONFIG_FB_SIS_315 |
| 1647 | extern void sisfb_write_nbridge_pci_byte(struct SiS_Private *SiS_Pr, int reg, | 1593 | extern void sisfb_write_nbridge_pci_byte(struct SiS_Private *SiS_Pr, int reg, |
| 1648 | unsigned char val); | 1594 | unsigned char val); |
| 1649 | extern unsigned int sisfb_read_mio_pci_word(struct SiS_Private *SiS_Pr, int reg); | 1595 | extern unsigned int sisfb_read_mio_pci_word(struct SiS_Private *SiS_Pr, int reg); |
| 1650 | #endif | 1596 | #endif |
| 1651 | #endif | ||
| 1652 | 1597 | ||
| 1653 | #endif | 1598 | #endif |
| 1654 | 1599 | ||
diff --git a/drivers/video/sis/init301.c b/drivers/video/sis/init301.c index da33d801c22e..9fa66fd4052a 100644 --- a/drivers/video/sis/init301.c +++ b/drivers/video/sis/init301.c | |||
| @@ -75,11 +75,11 @@ | |||
| 75 | 75 | ||
| 76 | #include "init301.h" | 76 | #include "init301.h" |
| 77 | 77 | ||
| 78 | #ifdef SIS300 | 78 | #ifdef CONFIG_FB_SIS_300 |
| 79 | #include "oem300.h" | 79 | #include "oem300.h" |
| 80 | #endif | 80 | #endif |
| 81 | 81 | ||
| 82 | #ifdef SIS315H | 82 | #ifdef CONFIG_FB_SIS_315 |
| 83 | #include "oem310.h" | 83 | #include "oem310.h" |
| 84 | #endif | 84 | #endif |
| 85 | 85 | ||
| @@ -87,9 +87,7 @@ | |||
| 87 | #define SiS_I2CDELAYSHORT 150 | 87 | #define SiS_I2CDELAYSHORT 150 |
| 88 | 88 | ||
| 89 | static unsigned short SiS_GetBIOSLCDResInfo(struct SiS_Private *SiS_Pr); | 89 | static unsigned short SiS_GetBIOSLCDResInfo(struct SiS_Private *SiS_Pr); |
| 90 | #ifdef SIS_LINUX_KERNEL | ||
| 91 | static void SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val); | 90 | static void SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val); |
| 92 | #endif | ||
| 93 | 91 | ||
| 94 | /*********************************************/ | 92 | /*********************************************/ |
| 95 | /* HELPER: Lock/Unlock CRT2 */ | 93 | /* HELPER: Lock/Unlock CRT2 */ |
| @@ -106,9 +104,7 @@ SiS_UnLockCRT2(struct SiS_Private *SiS_Pr) | |||
| 106 | SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x24,0x01); | 104 | SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x24,0x01); |
| 107 | } | 105 | } |
| 108 | 106 | ||
| 109 | #ifdef SIS_LINUX_KERNEL | ||
| 110 | static | 107 | static |
| 111 | #endif | ||
| 112 | void | 108 | void |
| 113 | SiS_LockCRT2(struct SiS_Private *SiS_Pr) | 109 | SiS_LockCRT2(struct SiS_Private *SiS_Pr) |
| 114 | { | 110 | { |
| @@ -138,7 +134,7 @@ SiS_SetRegSR11ANDOR(struct SiS_Private *SiS_Pr, unsigned short DataAND, unsigned | |||
| 138 | /* HELPER: Get Pointer to LCD structure */ | 134 | /* HELPER: Get Pointer to LCD structure */ |
| 139 | /*********************************************/ | 135 | /*********************************************/ |
| 140 | 136 | ||
| 141 | #ifdef SIS315H | 137 | #ifdef CONFIG_FB_SIS_315 |
| 142 | static unsigned char * | 138 | static unsigned char * |
| 143 | GetLCDStructPtr661(struct SiS_Private *SiS_Pr) | 139 | GetLCDStructPtr661(struct SiS_Private *SiS_Pr) |
| 144 | { | 140 | { |
| @@ -404,7 +400,7 @@ SiS_SaveCRT2Info(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | |||
| 404 | /* HELPER: GET SOME DATA FROM BIOS ROM */ | 400 | /* HELPER: GET SOME DATA FROM BIOS ROM */ |
| 405 | /*********************************************/ | 401 | /*********************************************/ |
| 406 | 402 | ||
| 407 | #ifdef SIS300 | 403 | #ifdef CONFIG_FB_SIS_300 |
| 408 | static bool | 404 | static bool |
| 409 | SiS_CR36BIOSWord23b(struct SiS_Private *SiS_Pr) | 405 | SiS_CR36BIOSWord23b(struct SiS_Private *SiS_Pr) |
| 410 | { | 406 | { |
| @@ -449,7 +445,7 @@ SiS_DDC2Delay(struct SiS_Private *SiS_Pr, unsigned int delaytime) | |||
| 449 | SiS_GetReg(SiS_Pr->SiS_P3c4, 0x05); | 445 | SiS_GetReg(SiS_Pr->SiS_P3c4, 0x05); |
| 450 | } | 446 | } |
| 451 | 447 | ||
| 452 | #if defined(SIS300) || defined(SIS315H) | 448 | #if defined(CONFIG_FB_SIS_300) || defined(CONFIG_FB_SIS_315) |
| 453 | static void | 449 | static void |
| 454 | SiS_GenericDelay(struct SiS_Private *SiS_Pr, unsigned short delay) | 450 | SiS_GenericDelay(struct SiS_Private *SiS_Pr, unsigned short delay) |
| 455 | { | 451 | { |
| @@ -457,7 +453,7 @@ SiS_GenericDelay(struct SiS_Private *SiS_Pr, unsigned short delay) | |||
| 457 | } | 453 | } |
| 458 | #endif | 454 | #endif |
| 459 | 455 | ||
| 460 | #ifdef SIS315H | 456 | #ifdef CONFIG_FB_SIS_315 |
| 461 | static void | 457 | static void |
| 462 | SiS_LongDelay(struct SiS_Private *SiS_Pr, unsigned short delay) | 458 | SiS_LongDelay(struct SiS_Private *SiS_Pr, unsigned short delay) |
| 463 | { | 459 | { |
| @@ -467,7 +463,7 @@ SiS_LongDelay(struct SiS_Private *SiS_Pr, unsigned short delay) | |||
| 467 | } | 463 | } |
| 468 | #endif | 464 | #endif |
| 469 | 465 | ||
| 470 | #if defined(SIS300) || defined(SIS315H) | 466 | #if defined(CONFIG_FB_SIS_300) || defined(CONFIG_FB_SIS_315) |
| 471 | static void | 467 | static void |
| 472 | SiS_ShortDelay(struct SiS_Private *SiS_Pr, unsigned short delay) | 468 | SiS_ShortDelay(struct SiS_Private *SiS_Pr, unsigned short delay) |
| 473 | { | 469 | { |
| @@ -480,14 +476,14 @@ SiS_ShortDelay(struct SiS_Private *SiS_Pr, unsigned short delay) | |||
| 480 | static void | 476 | static void |
| 481 | SiS_PanelDelay(struct SiS_Private *SiS_Pr, unsigned short DelayTime) | 477 | SiS_PanelDelay(struct SiS_Private *SiS_Pr, unsigned short DelayTime) |
| 482 | { | 478 | { |
| 483 | #if defined(SIS300) || defined(SIS315H) | 479 | #if defined(CONFIG_FB_SIS_300) || defined(CONFIG_FB_SIS_315) |
| 484 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; | 480 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; |
| 485 | unsigned short PanelID, DelayIndex, Delay=0; | 481 | unsigned short PanelID, DelayIndex, Delay=0; |
| 486 | #endif | 482 | #endif |
| 487 | 483 | ||
| 488 | if(SiS_Pr->ChipType < SIS_315H) { | 484 | if(SiS_Pr->ChipType < SIS_315H) { |
| 489 | 485 | ||
| 490 | #ifdef SIS300 | 486 | #ifdef CONFIG_FB_SIS_300 |
| 491 | 487 | ||
| 492 | PanelID = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36); | 488 | PanelID = SiS_GetReg(SiS_Pr->SiS_P3d4,0x36); |
| 493 | if(SiS_Pr->SiS_VBType & VB_SISVB) { | 489 | if(SiS_Pr->SiS_VBType & VB_SISVB) { |
| @@ -513,11 +509,11 @@ SiS_PanelDelay(struct SiS_Private *SiS_Pr, unsigned short DelayTime) | |||
| 513 | } | 509 | } |
| 514 | SiS_ShortDelay(SiS_Pr, Delay); | 510 | SiS_ShortDelay(SiS_Pr, Delay); |
| 515 | 511 | ||
| 516 | #endif /* SIS300 */ | 512 | #endif /* CONFIG_FB_SIS_300 */ |
| 517 | 513 | ||
| 518 | } else { | 514 | } else { |
| 519 | 515 | ||
| 520 | #ifdef SIS315H | 516 | #ifdef CONFIG_FB_SIS_315 |
| 521 | 517 | ||
| 522 | if((SiS_Pr->ChipType >= SIS_661) || | 518 | if((SiS_Pr->ChipType >= SIS_661) || |
| 523 | (SiS_Pr->ChipType <= SIS_315PRO) || | 519 | (SiS_Pr->ChipType <= SIS_315PRO) || |
| @@ -579,12 +575,12 @@ SiS_PanelDelay(struct SiS_Private *SiS_Pr, unsigned short DelayTime) | |||
| 579 | 575 | ||
| 580 | } | 576 | } |
| 581 | 577 | ||
| 582 | #endif /* SIS315H */ | 578 | #endif /* CONFIG_FB_SIS_315 */ |
| 583 | 579 | ||
| 584 | } | 580 | } |
| 585 | } | 581 | } |
| 586 | 582 | ||
| 587 | #ifdef SIS315H | 583 | #ifdef CONFIG_FB_SIS_315 |
| 588 | static void | 584 | static void |
| 589 | SiS_PanelDelayLoop(struct SiS_Private *SiS_Pr, unsigned short DelayTime, unsigned short DelayLoop) | 585 | SiS_PanelDelayLoop(struct SiS_Private *SiS_Pr, unsigned short DelayTime, unsigned short DelayLoop) |
| 590 | { | 586 | { |
| @@ -613,7 +609,7 @@ SiS_WaitRetrace1(struct SiS_Private *SiS_Pr) | |||
| 613 | while((!(SiS_GetRegByte(SiS_Pr->SiS_P3da) & 0x08)) && --watchdog); | 609 | while((!(SiS_GetRegByte(SiS_Pr->SiS_P3da) & 0x08)) && --watchdog); |
| 614 | } | 610 | } |
| 615 | 611 | ||
| 616 | #if defined(SIS300) || defined(SIS315H) | 612 | #if defined(CONFIG_FB_SIS_300) || defined(CONFIG_FB_SIS_315) |
| 617 | static void | 613 | static void |
| 618 | SiS_WaitRetrace2(struct SiS_Private *SiS_Pr, unsigned short reg) | 614 | SiS_WaitRetrace2(struct SiS_Private *SiS_Pr, unsigned short reg) |
| 619 | { | 615 | { |
| @@ -630,7 +626,7 @@ static void | |||
| 630 | SiS_WaitVBRetrace(struct SiS_Private *SiS_Pr) | 626 | SiS_WaitVBRetrace(struct SiS_Private *SiS_Pr) |
| 631 | { | 627 | { |
| 632 | if(SiS_Pr->ChipType < SIS_315H) { | 628 | if(SiS_Pr->ChipType < SIS_315H) { |
| 633 | #ifdef SIS300 | 629 | #ifdef CONFIG_FB_SIS_300 |
| 634 | if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { | 630 | if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { |
| 635 | if(!(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x20)) return; | 631 | if(!(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x20)) return; |
| 636 | } | 632 | } |
| @@ -641,7 +637,7 @@ SiS_WaitVBRetrace(struct SiS_Private *SiS_Pr) | |||
| 641 | } | 637 | } |
| 642 | #endif | 638 | #endif |
| 643 | } else { | 639 | } else { |
| 644 | #ifdef SIS315H | 640 | #ifdef CONFIG_FB_SIS_315 |
| 645 | if(!(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x40)) { | 641 | if(!(SiS_GetReg(SiS_Pr->SiS_Part1Port,0x00) & 0x40)) { |
| 646 | SiS_WaitRetrace1(SiS_Pr); | 642 | SiS_WaitRetrace1(SiS_Pr); |
| 647 | } else { | 643 | } else { |
| @@ -686,7 +682,7 @@ SiS_VBLongWait(struct SiS_Private *SiS_Pr) | |||
| 686 | /* HELPER: MISC */ | 682 | /* HELPER: MISC */ |
| 687 | /*********************************************/ | 683 | /*********************************************/ |
| 688 | 684 | ||
| 689 | #ifdef SIS300 | 685 | #ifdef CONFIG_FB_SIS_300 |
| 690 | static bool | 686 | static bool |
| 691 | SiS_Is301B(struct SiS_Private *SiS_Pr) | 687 | SiS_Is301B(struct SiS_Private *SiS_Pr) |
| 692 | { | 688 | { |
| @@ -708,7 +704,7 @@ SiS_CRT2IsLCD(struct SiS_Private *SiS_Pr) | |||
| 708 | bool | 704 | bool |
| 709 | SiS_IsDualEdge(struct SiS_Private *SiS_Pr) | 705 | SiS_IsDualEdge(struct SiS_Private *SiS_Pr) |
| 710 | { | 706 | { |
| 711 | #ifdef SIS315H | 707 | #ifdef CONFIG_FB_SIS_315 |
| 712 | if(SiS_Pr->ChipType >= SIS_315H) { | 708 | if(SiS_Pr->ChipType >= SIS_315H) { |
| 713 | if((SiS_Pr->ChipType != SIS_650) || (SiS_GetReg(SiS_Pr->SiS_P3d4,0x5f) & 0xf0)) { | 709 | if((SiS_Pr->ChipType != SIS_650) || (SiS_GetReg(SiS_Pr->SiS_P3d4,0x5f) & 0xf0)) { |
| 714 | if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x38) & EnableDualEdge) return true; | 710 | if(SiS_GetReg(SiS_Pr->SiS_P3d4,0x38) & EnableDualEdge) return true; |
| @@ -721,7 +717,7 @@ SiS_IsDualEdge(struct SiS_Private *SiS_Pr) | |||
| 721 | bool | 717 | bool |
| 722 | SiS_IsVAMode(struct SiS_Private *SiS_Pr) | 718 | SiS_IsVAMode(struct SiS_Private *SiS_Pr) |
| 723 | { | 719 | { |
| 724 | #ifdef SIS315H | 720 | #ifdef CONFIG_FB_SIS_315 |
| 725 | unsigned short flag; | 721 | unsigned short flag; |
| 726 | 722 | ||
| 727 | if(SiS_Pr->ChipType >= SIS_315H) { | 723 | if(SiS_Pr->ChipType >= SIS_315H) { |
| @@ -732,7 +728,7 @@ SiS_IsVAMode(struct SiS_Private *SiS_Pr) | |||
| 732 | return false; | 728 | return false; |
| 733 | } | 729 | } |
| 734 | 730 | ||
| 735 | #ifdef SIS315H | 731 | #ifdef CONFIG_FB_SIS_315 |
| 736 | static bool | 732 | static bool |
| 737 | SiS_IsVAorLCD(struct SiS_Private *SiS_Pr) | 733 | SiS_IsVAorLCD(struct SiS_Private *SiS_Pr) |
| 738 | { | 734 | { |
| @@ -745,7 +741,7 @@ SiS_IsVAorLCD(struct SiS_Private *SiS_Pr) | |||
| 745 | static bool | 741 | static bool |
| 746 | SiS_IsDualLink(struct SiS_Private *SiS_Pr) | 742 | SiS_IsDualLink(struct SiS_Private *SiS_Pr) |
| 747 | { | 743 | { |
| 748 | #ifdef SIS315H | 744 | #ifdef CONFIG_FB_SIS_315 |
| 749 | if(SiS_Pr->ChipType >= SIS_315H) { | 745 | if(SiS_Pr->ChipType >= SIS_315H) { |
| 750 | if((SiS_CRT2IsLCD(SiS_Pr)) || | 746 | if((SiS_CRT2IsLCD(SiS_Pr)) || |
| 751 | (SiS_IsVAMode(SiS_Pr))) { | 747 | (SiS_IsVAMode(SiS_Pr))) { |
| @@ -756,7 +752,7 @@ SiS_IsDualLink(struct SiS_Private *SiS_Pr) | |||
| 756 | return false; | 752 | return false; |
| 757 | } | 753 | } |
| 758 | 754 | ||
| 759 | #ifdef SIS315H | 755 | #ifdef CONFIG_FB_SIS_315 |
| 760 | static bool | 756 | static bool |
| 761 | SiS_TVEnabled(struct SiS_Private *SiS_Pr) | 757 | SiS_TVEnabled(struct SiS_Private *SiS_Pr) |
| 762 | { | 758 | { |
| @@ -768,7 +764,7 @@ SiS_TVEnabled(struct SiS_Private *SiS_Pr) | |||
| 768 | } | 764 | } |
| 769 | #endif | 765 | #endif |
| 770 | 766 | ||
| 771 | #ifdef SIS315H | 767 | #ifdef CONFIG_FB_SIS_315 |
| 772 | static bool | 768 | static bool |
| 773 | SiS_LCDAEnabled(struct SiS_Private *SiS_Pr) | 769 | SiS_LCDAEnabled(struct SiS_Private *SiS_Pr) |
| 774 | { | 770 | { |
| @@ -777,7 +773,7 @@ SiS_LCDAEnabled(struct SiS_Private *SiS_Pr) | |||
| 777 | } | 773 | } |
| 778 | #endif | 774 | #endif |
| 779 | 775 | ||
| 780 | #ifdef SIS315H | 776 | #ifdef CONFIG_FB_SIS_315 |
| 781 | static bool | 777 | static bool |
| 782 | SiS_WeHaveBacklightCtrl(struct SiS_Private *SiS_Pr) | 778 | SiS_WeHaveBacklightCtrl(struct SiS_Private *SiS_Pr) |
| 783 | { | 779 | { |
| @@ -788,7 +784,7 @@ SiS_WeHaveBacklightCtrl(struct SiS_Private *SiS_Pr) | |||
| 788 | } | 784 | } |
| 789 | #endif | 785 | #endif |
| 790 | 786 | ||
| 791 | #ifdef SIS315H | 787 | #ifdef CONFIG_FB_SIS_315 |
| 792 | static bool | 788 | static bool |
| 793 | SiS_IsNotM650orLater(struct SiS_Private *SiS_Pr) | 789 | SiS_IsNotM650orLater(struct SiS_Private *SiS_Pr) |
| 794 | { | 790 | { |
| @@ -804,7 +800,7 @@ SiS_IsNotM650orLater(struct SiS_Private *SiS_Pr) | |||
| 804 | } | 800 | } |
| 805 | #endif | 801 | #endif |
| 806 | 802 | ||
| 807 | #ifdef SIS315H | 803 | #ifdef CONFIG_FB_SIS_315 |
| 808 | static bool | 804 | static bool |
| 809 | SiS_IsYPbPr(struct SiS_Private *SiS_Pr) | 805 | SiS_IsYPbPr(struct SiS_Private *SiS_Pr) |
| 810 | { | 806 | { |
| @@ -816,7 +812,7 @@ SiS_IsYPbPr(struct SiS_Private *SiS_Pr) | |||
| 816 | } | 812 | } |
| 817 | #endif | 813 | #endif |
| 818 | 814 | ||
| 819 | #ifdef SIS315H | 815 | #ifdef CONFIG_FB_SIS_315 |
| 820 | static bool | 816 | static bool |
| 821 | SiS_IsChScart(struct SiS_Private *SiS_Pr) | 817 | SiS_IsChScart(struct SiS_Private *SiS_Pr) |
| 822 | { | 818 | { |
| @@ -828,7 +824,7 @@ SiS_IsChScart(struct SiS_Private *SiS_Pr) | |||
| 828 | } | 824 | } |
| 829 | #endif | 825 | #endif |
| 830 | 826 | ||
| 831 | #ifdef SIS315H | 827 | #ifdef CONFIG_FB_SIS_315 |
| 832 | static bool | 828 | static bool |
| 833 | SiS_IsTVOrYPbPrOrScart(struct SiS_Private *SiS_Pr) | 829 | SiS_IsTVOrYPbPrOrScart(struct SiS_Private *SiS_Pr) |
| 834 | { | 830 | { |
| @@ -848,7 +844,7 @@ SiS_IsTVOrYPbPrOrScart(struct SiS_Private *SiS_Pr) | |||
| 848 | } | 844 | } |
| 849 | #endif | 845 | #endif |
| 850 | 846 | ||
| 851 | #ifdef SIS315H | 847 | #ifdef CONFIG_FB_SIS_315 |
| 852 | static bool | 848 | static bool |
| 853 | SiS_IsLCDOrLCDA(struct SiS_Private *SiS_Pr) | 849 | SiS_IsLCDOrLCDA(struct SiS_Private *SiS_Pr) |
| 854 | { | 850 | { |
| @@ -914,7 +910,7 @@ SiS_BridgeInSlavemode(struct SiS_Private *SiS_Pr) | |||
| 914 | /*********************************************/ | 910 | /*********************************************/ |
| 915 | 911 | ||
| 916 | /* Setup general purpose IO for Chrontel communication */ | 912 | /* Setup general purpose IO for Chrontel communication */ |
| 917 | #ifdef SIS300 | 913 | #ifdef CONFIG_FB_SIS_300 |
| 918 | void | 914 | void |
| 919 | SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo) | 915 | SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo) |
| 920 | { | 916 | { |
| @@ -923,11 +919,7 @@ SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo) | |||
| 923 | 919 | ||
| 924 | if(!(SiS_Pr->SiS_ChSW)) return; | 920 | if(!(SiS_Pr->SiS_ChSW)) return; |
| 925 | 921 | ||
| 926 | #ifdef SIS_LINUX_KERNEL | ||
| 927 | acpibase = sisfb_read_lpc_pci_dword(SiS_Pr, 0x74); | 922 | acpibase = sisfb_read_lpc_pci_dword(SiS_Pr, 0x74); |
| 928 | #else | ||
| 929 | acpibase = pciReadLong(0x00000800, 0x74); | ||
| 930 | #endif | ||
| 931 | acpibase &= 0xFFFF; | 923 | acpibase &= 0xFFFF; |
| 932 | if(!acpibase) return; | 924 | if(!acpibase) return; |
| 933 | temp = SiS_GetRegShort((acpibase + 0x3c)); /* ACPI register 0x3c: GP Event 1 I/O mode select */ | 925 | temp = SiS_GetRegShort((acpibase + 0x3c)); /* ACPI register 0x3c: GP Event 1 I/O mode select */ |
| @@ -969,7 +961,7 @@ SiS_GetVBInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 969 | tempax &= (DriverMode | LoadDACFlag | SetNotSimuMode | SetPALTV); | 961 | tempax &= (DriverMode | LoadDACFlag | SetNotSimuMode | SetPALTV); |
| 970 | tempbx |= tempax; | 962 | tempbx |= tempax; |
| 971 | 963 | ||
| 972 | #ifdef SIS315H | 964 | #ifdef CONFIG_FB_SIS_315 |
| 973 | if(SiS_Pr->ChipType >= SIS_315H) { | 965 | if(SiS_Pr->ChipType >= SIS_315H) { |
| 974 | if(SiS_Pr->SiS_VBType & VB_SISLCDA) { | 966 | if(SiS_Pr->SiS_VBType & VB_SISLCDA) { |
| 975 | if(ModeNo == 0x03) { | 967 | if(ModeNo == 0x03) { |
| @@ -1019,7 +1011,7 @@ SiS_GetVBInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 1019 | } | 1011 | } |
| 1020 | } | 1012 | } |
| 1021 | 1013 | ||
| 1022 | #endif /* SIS315H */ | 1014 | #endif /* CONFIG_FB_SIS_315 */ |
| 1023 | 1015 | ||
| 1024 | if(!(SiS_Pr->SiS_VBType & VB_SISVGA2)) { | 1016 | if(!(SiS_Pr->SiS_VBType & VB_SISVGA2)) { |
| 1025 | tempbx &= ~(SetCRT2ToRAMDAC); | 1017 | tempbx &= ~(SetCRT2ToRAMDAC); |
| @@ -1154,24 +1146,16 @@ SiS_GetVBInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, | |||
| 1154 | 1146 | ||
| 1155 | SiS_Pr->SiS_VBInfo = tempbx; | 1147 | SiS_Pr->SiS_VBInfo = tempbx; |
| 1156 | 1148 | ||
| 1157 | #ifdef SIS300 | 1149 | #ifdef CONFIG_FB_SIS_300 |
| 1158 | if(SiS_Pr->ChipType == SIS_630) { | 1150 | if(SiS_Pr->ChipType == SIS_630) { |
| 1159 | SiS_SetChrontelGPIO(SiS_Pr, SiS_Pr->SiS_VBInfo); | 1151 | SiS_SetChrontelGPIO(SiS_Pr, SiS_Pr->SiS_VBInfo); |
| 1160 | } | 1152 | } |
| 1161 | #endif | 1153 | #endif |
| 1162 | 1154 | ||
| 1163 | #ifdef SIS_LINUX_KERNEL | ||
| 1164 | #if 0 | 1155 | #if 0 |
| 1165 | printk(KERN_DEBUG "sisfb: (init301: VBInfo= 0x%04x, SetFlag=0x%04x)\n", | 1156 | printk(KERN_DEBUG "sisfb: (init301: VBInfo= 0x%04x, SetFlag=0x%04x)\n", |
| 1166 | SiS_Pr->SiS_VBInfo, SiS_Pr->SiS_SetFlag); | 1157 | SiS_Pr->SiS_VBInfo, SiS_Pr->SiS_SetFlag); |
| 1167 | #endif | 1158 | #endif |
| 1168 | #endif | ||
| 1169 | #ifdef SIS_XORG_XF86 | ||
| 1170 | #ifdef TWDEBUG | ||
| 1171 | xf86DrvMsg(0, X_PROBED, "(init301: VBInfo=0x%04x, SetFlag=0x%04x)\n", | ||
| 1172 | SiS_Pr->SiS_VBInfo, SiS_Pr->SiS_SetFlag); | ||
| 1173 | #endif | ||
| 1174 | #endif | ||
| 1175 | } | 1159 | } |
| 1176 | 1160 | ||
| 1177 | /*********************************************/ | 1161 | /*********************************************/ |
| @@ -1415,12 +1399,6 @@ SiS_SetTVMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 1415 | } | 1399 | } |
| 1416 | 1400 | ||
| 1417 | SiS_Pr->SiS_VBInfo &= ~SetPALTV; | 1401 | SiS_Pr->SiS_VBInfo &= ~SetPALTV; |
| 1418 | |||
| 1419 | #ifdef SIS_XORG_XF86 | ||
| 1420 | #ifdef TWDEBUG | ||
| 1421 | xf86DrvMsg(0, X_INFO, "(init301: TVMode %x, VBInfo %x)\n", SiS_Pr->SiS_TVMode, SiS_Pr->SiS_VBInfo); | ||
| 1422 | #endif | ||
| 1423 | #endif | ||
| 1424 | } | 1402 | } |
| 1425 | 1403 | ||
| 1426 | /*********************************************/ | 1404 | /*********************************************/ |
| @@ -1443,22 +1421,10 @@ SiS_GetBIOSLCDResInfo(struct SiS_Private *SiS_Pr) | |||
| 1443 | static void | 1421 | static void |
| 1444 | SiS_GetLCDInfoBIOS(struct SiS_Private *SiS_Pr) | 1422 | SiS_GetLCDInfoBIOS(struct SiS_Private *SiS_Pr) |
| 1445 | { | 1423 | { |
| 1446 | #ifdef SIS315H | 1424 | #ifdef CONFIG_FB_SIS_315 |
| 1447 | unsigned char *ROMAddr; | 1425 | unsigned char *ROMAddr; |
| 1448 | unsigned short temp; | 1426 | unsigned short temp; |
| 1449 | 1427 | ||
| 1450 | #ifdef SIS_XORG_XF86 | ||
| 1451 | #ifdef TWDEBUG | ||
| 1452 | xf86DrvMsg(0, X_INFO, "Paneldata driver: [%d %d] [H %d %d] [V %d %d] [C %d 0x%02x 0x%02x]\n", | ||
| 1453 | SiS_Pr->PanelHT, SiS_Pr->PanelVT, | ||
| 1454 | SiS_Pr->PanelHRS, SiS_Pr->PanelHRE, | ||
| 1455 | SiS_Pr->PanelVRS, SiS_Pr->PanelVRE, | ||
| 1456 | SiS_Pr->SiS_VBVCLKData[SiS_Pr->PanelVCLKIdx315].CLOCK, | ||
| 1457 | SiS_Pr->SiS_VBVCLKData[SiS_Pr->PanelVCLKIdx315].Part4_A, | ||
| 1458 | SiS_Pr->SiS_VBVCLKData[SiS_Pr->PanelVCLKIdx315].Part4_B); | ||
| 1459 | #endif | ||
| 1460 | #endif | ||
| 1461 | |||
| 1462 | if((ROMAddr = GetLCDStructPtr661(SiS_Pr))) { | 1428 | if((ROMAddr = GetLCDStructPtr661(SiS_Pr))) { |
| 1463 | if((temp = SISGETROMW(6)) != SiS_Pr->PanelHT) { | 1429 | if((temp = SISGETROMW(6)) != SiS_Pr->PanelHT) { |
| 1464 | SiS_Pr->SiS_NeedRomModeData = true; | 1430 | SiS_Pr->SiS_NeedRomModeData = true; |
| @@ -1480,18 +1446,6 @@ SiS_GetLCDInfoBIOS(struct SiS_Private *SiS_Pr) | |||
| 1480 | SiS_Pr->SiS_VCLKData[VCLK_CUSTOM_315].SR2C = | 1446 | SiS_Pr->SiS_VCLKData[VCLK_CUSTOM_315].SR2C = |
| 1481 | SiS_Pr->SiS_VBVCLKData[VCLK_CUSTOM_315].Part4_B = ROMAddr[20]; | 1447 | SiS_Pr->SiS_VBVCLKData[VCLK_CUSTOM_315].Part4_B = ROMAddr[20]; |
| 1482 | 1448 | ||
| 1483 | #ifdef SIS_XORG_XF86 | ||
| 1484 | #ifdef TWDEBUG | ||
| 1485 | xf86DrvMsg(0, X_INFO, "Paneldata BIOS: [%d %d] [H %d %d] [V %d %d] [C %d 0x%02x 0x%02x]\n", | ||
| 1486 | SiS_Pr->PanelHT, SiS_Pr->PanelVT, | ||
| 1487 | SiS_Pr->PanelHRS, SiS_Pr->PanelHRE, | ||
| 1488 | SiS_Pr->PanelVRS, SiS_Pr->PanelVRE, | ||
| 1489 | SiS_Pr->SiS_VBVCLKData[SiS_Pr->PanelVCLKIdx315].CLOCK, | ||
| 1490 | SiS_Pr->SiS_VBVCLKData[SiS_Pr->PanelVCLKIdx315].Part4_A, | ||
| 1491 | SiS_Pr->SiS_VBVCLKData[SiS_Pr->PanelVCLKIdx315].Part4_B); | ||
| 1492 | #endif | ||
| 1493 | #endif | ||
| 1494 | |||
| 1495 | } | 1449 | } |
| 1496 | #endif | 1450 | #endif |
| 1497 | } | 1451 | } |
| @@ -1517,13 +1471,13 @@ SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned sh | |||
| 1517 | { | 1471 | { |
| 1518 | unsigned short temp,modeflag,resinfo=0,modexres=0,modeyres=0; | 1472 | unsigned short temp,modeflag,resinfo=0,modexres=0,modeyres=0; |
| 1519 | bool panelcanscale = false; | 1473 | bool panelcanscale = false; |
| 1520 | #ifdef SIS300 | 1474 | #ifdef CONFIG_FB_SIS_300 |
| 1521 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; | 1475 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; |
| 1522 | static const unsigned char SiS300SeriesLCDRes[] = | 1476 | static const unsigned char SiS300SeriesLCDRes[] = |
| 1523 | { 0, 1, 2, 3, 7, 4, 5, 8, | 1477 | { 0, 1, 2, 3, 7, 4, 5, 8, |
| 1524 | 0, 0, 10, 0, 0, 0, 0, 15 }; | 1478 | 0, 0, 10, 0, 0, 0, 0, 15 }; |
| 1525 | #endif | 1479 | #endif |
| 1526 | #ifdef SIS315H | 1480 | #ifdef CONFIG_FB_SIS_315 |
| 1527 | unsigned char *myptr = NULL; | 1481 | unsigned char *myptr = NULL; |
| 1528 | #endif | 1482 | #endif |
| 1529 | 1483 | ||
| @@ -1562,7 +1516,7 @@ SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned sh | |||
| 1562 | SiS_Pr->SiS_LCDTypeInfo = (temp & 0x0F) - 1; | 1516 | SiS_Pr->SiS_LCDTypeInfo = (temp & 0x0F) - 1; |
| 1563 | } | 1517 | } |
| 1564 | temp &= 0x0f; | 1518 | temp &= 0x0f; |
| 1565 | #ifdef SIS300 | 1519 | #ifdef CONFIG_FB_SIS_300 |
| 1566 | if(SiS_Pr->ChipType < SIS_315H) { | 1520 | if(SiS_Pr->ChipType < SIS_315H) { |
| 1567 | /* Very old BIOSes only know 7 sizes (NetVista 2179, 1.01g) */ | 1521 | /* Very old BIOSes only know 7 sizes (NetVista 2179, 1.01g) */ |
| 1568 | if(SiS_Pr->SiS_VBType & VB_SIS301) { | 1522 | if(SiS_Pr->SiS_VBType & VB_SIS301) { |
| @@ -1574,7 +1528,7 @@ SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned sh | |||
| 1574 | #endif | 1528 | #endif |
| 1575 | 1529 | ||
| 1576 | /* Translate to our internal types */ | 1530 | /* Translate to our internal types */ |
| 1577 | #ifdef SIS315H | 1531 | #ifdef CONFIG_FB_SIS_315 |
| 1578 | if(SiS_Pr->ChipType == SIS_550) { | 1532 | if(SiS_Pr->ChipType == SIS_550) { |
| 1579 | if (temp == Panel310_1152x768) temp = Panel_320x240_2; /* Verified working */ | 1533 | if (temp == Panel310_1152x768) temp = Panel_320x240_2; /* Verified working */ |
| 1580 | else if(temp == Panel310_320x240_2) temp = Panel_320x240_2; | 1534 | else if(temp == Panel310_320x240_2) temp = Panel_320x240_2; |
| @@ -1597,7 +1551,7 @@ SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned sh | |||
| 1597 | 1551 | ||
| 1598 | SiS_Pr->SiS_LCDResInfo = temp; | 1552 | SiS_Pr->SiS_LCDResInfo = temp; |
| 1599 | 1553 | ||
| 1600 | #ifdef SIS300 | 1554 | #ifdef CONFIG_FB_SIS_300 |
| 1601 | if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { | 1555 | if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { |
| 1602 | if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) { | 1556 | if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) { |
| 1603 | SiS_Pr->SiS_LCDResInfo = Panel_Barco1366; | 1557 | SiS_Pr->SiS_LCDResInfo = Panel_Barco1366; |
| @@ -1639,7 +1593,7 @@ SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned sh | |||
| 1639 | else if(SiS_Pr->UsePanelScaler == 1) SiS_Pr->SiS_LCDInfo |= DontExpandLCD; | 1593 | else if(SiS_Pr->UsePanelScaler == 1) SiS_Pr->SiS_LCDInfo |= DontExpandLCD; |
| 1640 | 1594 | ||
| 1641 | /* Dual link, Pass 1:1 BIOS default, etc. */ | 1595 | /* Dual link, Pass 1:1 BIOS default, etc. */ |
| 1642 | #ifdef SIS315H | 1596 | #ifdef CONFIG_FB_SIS_315 |
| 1643 | if(SiS_Pr->ChipType >= SIS_661) { | 1597 | if(SiS_Pr->ChipType >= SIS_661) { |
| 1644 | if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { | 1598 | if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { |
| 1645 | if(temp & 0x08) SiS_Pr->SiS_LCDInfo |= LCDPass11; | 1599 | if(temp & 0x08) SiS_Pr->SiS_LCDInfo |= LCDPass11; |
| @@ -2076,7 +2030,7 @@ SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned sh | |||
| 2076 | } | 2030 | } |
| 2077 | } | 2031 | } |
| 2078 | 2032 | ||
| 2079 | #ifdef SIS300 | 2033 | #ifdef CONFIG_FB_SIS_300 |
| 2080 | if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { | 2034 | if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { |
| 2081 | if(SiS_Pr->SiS_CustomT == CUT_PANEL848 || SiS_Pr->SiS_CustomT == CUT_PANEL856) { | 2035 | if(SiS_Pr->SiS_CustomT == CUT_PANEL848 || SiS_Pr->SiS_CustomT == CUT_PANEL856) { |
| 2082 | SiS_Pr->SiS_LCDInfo = 0x80 | 0x40 | 0x20; /* neg h/v sync, RGB24(D0 = 0) */ | 2036 | SiS_Pr->SiS_LCDInfo = 0x80 | 0x40 | 0x20; /* neg h/v sync, RGB24(D0 = 0) */ |
| @@ -2186,17 +2140,10 @@ SiS_GetLCDResInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned sh | |||
| 2186 | SiS_Pr->SiS_SetFlag |= LCDVESATiming; | 2140 | SiS_Pr->SiS_SetFlag |= LCDVESATiming; |
| 2187 | } | 2141 | } |
| 2188 | 2142 | ||
| 2189 | #ifdef SIS_LINUX_KERNEL | ||
| 2190 | #if 0 | 2143 | #if 0 |
| 2191 | printk(KERN_DEBUG "sisfb: (LCDInfo=0x%04x LCDResInfo=0x%02x LCDTypeInfo=0x%02x)\n", | 2144 | printk(KERN_DEBUG "sisfb: (LCDInfo=0x%04x LCDResInfo=0x%02x LCDTypeInfo=0x%02x)\n", |
| 2192 | SiS_Pr->SiS_LCDInfo, SiS_Pr->SiS_LCDResInfo, SiS_Pr->SiS_LCDTypeInfo); | 2145 | SiS_Pr->SiS_LCDInfo, SiS_Pr->SiS_LCDResInfo, SiS_Pr->SiS_LCDTypeInfo); |
| 2193 | #endif | 2146 | #endif |
| 2194 | #endif | ||
| 2195 | #ifdef SIS_XORG_XF86 | ||
| 2196 | xf86DrvMsgVerb(0, X_PROBED, 4, | ||
| 2197 | "(init301: LCDInfo=0x%04x LCDResInfo=0x%02x LCDTypeInfo=0x%02x SetFlag=0x%04x)\n", | ||
| 2198 | SiS_Pr->SiS_LCDInfo, SiS_Pr->SiS_LCDResInfo, SiS_Pr->SiS_LCDTypeInfo, SiS_Pr->SiS_SetFlag); | ||
| 2199 | #endif | ||
| 2200 | } | 2147 | } |
| 2201 | 2148 | ||
| 2202 | /*********************************************/ | 2149 | /*********************************************/ |
| @@ -2359,7 +2306,7 @@ SiS_GetVCLK2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned shor | |||
| 2359 | VCLKIndex = SiS_Pr->PanelVCLKIdx315; | 2306 | VCLKIndex = SiS_Pr->PanelVCLKIdx315; |
| 2360 | } | 2307 | } |
| 2361 | 2308 | ||
| 2362 | #ifdef SIS300 | 2309 | #ifdef CONFIG_FB_SIS_300 |
| 2363 | /* Special Timing: Barco iQ Pro R series */ | 2310 | /* Special Timing: Barco iQ Pro R series */ |
| 2364 | if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) VCLKIndex = 0x44; | 2311 | if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) VCLKIndex = 0x44; |
| 2365 | 2312 | ||
| @@ -2410,12 +2357,6 @@ SiS_GetVCLK2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned shor | |||
| 2410 | 2357 | ||
| 2411 | } | 2358 | } |
| 2412 | 2359 | ||
| 2413 | #ifdef SIS_XORG_XF86 | ||
| 2414 | #ifdef TWDEBUG | ||
| 2415 | xf86DrvMsg(0, X_INFO, "VCLKIndex %d (0x%x)\n", VCLKIndex, VCLKIndex); | ||
| 2416 | #endif | ||
| 2417 | #endif | ||
| 2418 | |||
| 2419 | return VCLKIndex; | 2360 | return VCLKIndex; |
| 2420 | } | 2361 | } |
| 2421 | 2362 | ||
| @@ -2428,10 +2369,10 @@ SiS_SetCRT2ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned | |||
| 2428 | { | 2369 | { |
| 2429 | unsigned short i, j, modeflag, tempah=0; | 2370 | unsigned short i, j, modeflag, tempah=0; |
| 2430 | short tempcl; | 2371 | short tempcl; |
| 2431 | #if defined(SIS300) || defined(SIS315H) | 2372 | #if defined(CONFIG_FB_SIS_300) || defined(CONFIG_FB_SIS_315) |
| 2432 | unsigned short tempbl; | 2373 | unsigned short tempbl; |
| 2433 | #endif | 2374 | #endif |
| 2434 | #ifdef SIS315H | 2375 | #ifdef CONFIG_FB_SIS_315 |
| 2435 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; | 2376 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; |
| 2436 | unsigned short tempah2, tempbl2; | 2377 | unsigned short tempah2, tempbl2; |
| 2437 | #endif | 2378 | #endif |
| @@ -2454,7 +2395,7 @@ SiS_SetCRT2ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned | |||
| 2454 | 2395 | ||
| 2455 | if(SiS_Pr->ChipType < SIS_315H) { | 2396 | if(SiS_Pr->ChipType < SIS_315H) { |
| 2456 | 2397 | ||
| 2457 | #ifdef SIS300 /* ---- 300 series ---- */ | 2398 | #ifdef CONFIG_FB_SIS_300 /* ---- 300 series ---- */ |
| 2458 | 2399 | ||
| 2459 | /* For 301BDH: (with LCD via LVDS) */ | 2400 | /* For 301BDH: (with LCD via LVDS) */ |
| 2460 | if(SiS_Pr->SiS_VBType & VB_NoLCD) { | 2401 | if(SiS_Pr->SiS_VBType & VB_NoLCD) { |
| @@ -2477,11 +2418,11 @@ SiS_SetCRT2ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned | |||
| 2477 | 2418 | ||
| 2478 | if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) tempah ^= 0xA0; | 2419 | if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) tempah ^= 0xA0; |
| 2479 | 2420 | ||
| 2480 | #endif /* SIS300 */ | 2421 | #endif /* CONFIG_FB_SIS_300 */ |
| 2481 | 2422 | ||
| 2482 | } else { | 2423 | } else { |
| 2483 | 2424 | ||
| 2484 | #ifdef SIS315H /* ------- 315/330 series ------ */ | 2425 | #ifdef CONFIG_FB_SIS_315 /* ------- 315/330 series ------ */ |
| 2485 | 2426 | ||
| 2486 | if(ModeNo > 0x13) { | 2427 | if(ModeNo > 0x13) { |
| 2487 | tempcl -= ModeVGA; | 2428 | tempcl -= ModeVGA; |
| @@ -2494,7 +2435,7 @@ SiS_SetCRT2ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned | |||
| 2494 | 2435 | ||
| 2495 | if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) tempah ^= 0x50; | 2436 | if(SiS_Pr->SiS_VBInfo & SetInSlaveMode) tempah ^= 0x50; |
| 2496 | 2437 | ||
| 2497 | #endif /* SIS315H */ | 2438 | #endif /* CONFIG_FB_SIS_315 */ |
| 2498 | 2439 | ||
| 2499 | } | 2440 | } |
| 2500 | 2441 | ||
| @@ -2503,7 +2444,7 @@ SiS_SetCRT2ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned | |||
| 2503 | if(SiS_Pr->ChipType < SIS_315H) { | 2444 | if(SiS_Pr->ChipType < SIS_315H) { |
| 2504 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,tempah); | 2445 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,tempah); |
| 2505 | } else { | 2446 | } else { |
| 2506 | #ifdef SIS315H | 2447 | #ifdef CONFIG_FB_SIS_315 |
| 2507 | if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { | 2448 | if(SiS_Pr->SiS_IF_DEF_LVDS == 1) { |
| 2508 | SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x00,0xa0,tempah); | 2449 | SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x00,0xa0,tempah); |
| 2509 | } else if(SiS_Pr->SiS_VBType & VB_SISVB) { | 2450 | } else if(SiS_Pr->SiS_VBType & VB_SISVB) { |
| @@ -2584,7 +2525,7 @@ SiS_SetCRT2ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned | |||
| 2584 | 2525 | ||
| 2585 | if(SiS_Pr->ChipType >= SIS_315H) { | 2526 | if(SiS_Pr->ChipType >= SIS_315H) { |
| 2586 | 2527 | ||
| 2587 | #ifdef SIS315H | 2528 | #ifdef CONFIG_FB_SIS_315 |
| 2588 | /* LVDS can only be slave in 8bpp modes */ | 2529 | /* LVDS can only be slave in 8bpp modes */ |
| 2589 | tempah = 0x80; | 2530 | tempah = 0x80; |
| 2590 | if((modeflag & CRT2Mode) && (SiS_Pr->SiS_ModeType > ModeVGA)) { | 2531 | if((modeflag & CRT2Mode) && (SiS_Pr->SiS_ModeType > ModeVGA)) { |
| @@ -2604,7 +2545,7 @@ SiS_SetCRT2ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned | |||
| 2604 | 2545 | ||
| 2605 | } else { | 2546 | } else { |
| 2606 | 2547 | ||
| 2607 | #ifdef SIS300 | 2548 | #ifdef CONFIG_FB_SIS_300 |
| 2608 | tempah = 0; | 2549 | tempah = 0; |
| 2609 | if( (!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) && (SiS_Pr->SiS_ModeType > ModeVGA) ) { | 2550 | if( (!(SiS_Pr->SiS_VBInfo & SetInSlaveMode)) && (SiS_Pr->SiS_ModeType > ModeVGA) ) { |
| 2610 | tempah |= 0x02; | 2551 | tempah |= 0x02; |
| @@ -2626,7 +2567,7 @@ SiS_SetCRT2ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned | |||
| 2626 | 2567 | ||
| 2627 | if(SiS_Pr->ChipType >= SIS_315H) { | 2568 | if(SiS_Pr->ChipType >= SIS_315H) { |
| 2628 | 2569 | ||
| 2629 | #ifdef SIS315H | 2570 | #ifdef CONFIG_FB_SIS_315 |
| 2630 | /* unsigned char bridgerev = SiS_GetReg(SiS_Pr->SiS_Part4Port,0x01); */ | 2571 | /* unsigned char bridgerev = SiS_GetReg(SiS_Pr->SiS_Part4Port,0x01); */ |
| 2631 | 2572 | ||
| 2632 | /* The following is nearly unpreditable and varies from machine | 2573 | /* The following is nearly unpreditable and varies from machine |
| @@ -2718,11 +2659,11 @@ SiS_SetCRT2ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned | |||
| 2718 | SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x23,tempbl,tempah); | 2659 | SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x23,tempbl,tempah); |
| 2719 | } | 2660 | } |
| 2720 | 2661 | ||
| 2721 | #endif /* SIS315H */ | 2662 | #endif /* CONFIG_FB_SIS_315 */ |
| 2722 | 2663 | ||
| 2723 | } else if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { | 2664 | } else if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { |
| 2724 | 2665 | ||
| 2725 | #ifdef SIS300 | 2666 | #ifdef CONFIG_FB_SIS_300 |
| 2726 | SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x21,0x3f); | 2667 | SiS_SetRegAND(SiS_Pr->SiS_Part4Port,0x21,0x3f); |
| 2727 | 2668 | ||
| 2728 | if((SiS_Pr->SiS_VBInfo & DisableCRT2Display) || | 2669 | if((SiS_Pr->SiS_VBInfo & DisableCRT2Display) || |
| @@ -2745,7 +2686,7 @@ SiS_SetCRT2ModeRegs(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned | |||
| 2745 | 2686 | ||
| 2746 | } else { /* LVDS */ | 2687 | } else { /* LVDS */ |
| 2747 | 2688 | ||
| 2748 | #ifdef SIS315H | 2689 | #ifdef CONFIG_FB_SIS_315 |
| 2749 | if(SiS_Pr->ChipType >= SIS_315H) { | 2690 | if(SiS_Pr->ChipType >= SIS_315H) { |
| 2750 | 2691 | ||
| 2751 | if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { | 2692 | if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { |
| @@ -2931,7 +2872,7 @@ SiS_GetCRT2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 2931 | } | 2872 | } |
| 2932 | } | 2873 | } |
| 2933 | 2874 | ||
| 2934 | #ifdef SIS315H | 2875 | #ifdef CONFIG_FB_SIS_315 |
| 2935 | if(SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) { | 2876 | if(SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) { |
| 2936 | if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) { | 2877 | if(SiS_Pr->SiS_LCDResInfo == Panel_1280x1024) { |
| 2937 | if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { | 2878 | if(!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) { |
| @@ -3036,7 +2977,7 @@ SiS_GetCRT2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 3036 | case Panel_1280x1024: tempbx = 24; break; | 2977 | case Panel_1280x1024: tempbx = 24; break; |
| 3037 | case Panel_1400x1050: tempbx = 26; break; | 2978 | case Panel_1400x1050: tempbx = 26; break; |
| 3038 | case Panel_1600x1200: tempbx = 28; break; | 2979 | case Panel_1600x1200: tempbx = 28; break; |
| 3039 | #ifdef SIS300 | 2980 | #ifdef CONFIG_FB_SIS_300 |
| 3040 | case Panel_Barco1366: tempbx = 80; break; | 2981 | case Panel_Barco1366: tempbx = 80; break; |
| 3041 | #endif | 2982 | #endif |
| 3042 | } | 2983 | } |
| @@ -3053,7 +2994,7 @@ SiS_GetCRT2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 3053 | 2994 | ||
| 3054 | if(SiS_Pr->SiS_LCDInfo & LCDPass11) tempbx = 30; | 2995 | if(SiS_Pr->SiS_LCDInfo & LCDPass11) tempbx = 30; |
| 3055 | 2996 | ||
| 3056 | #ifdef SIS300 | 2997 | #ifdef CONFIG_FB_SIS_300 |
| 3057 | if(SiS_Pr->SiS_CustomT == CUT_BARCO1024) { | 2998 | if(SiS_Pr->SiS_CustomT == CUT_BARCO1024) { |
| 3058 | tempbx = 82; | 2999 | tempbx = 82; |
| 3059 | if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx++; | 3000 | if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) tempbx++; |
| @@ -3189,7 +3130,7 @@ SiS_GetCRT2DataLVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned | |||
| 3189 | 3130 | ||
| 3190 | if((SiS_Pr->SiS_VBType & VB_SISVB) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { | 3131 | if((SiS_Pr->SiS_VBType & VB_SISVB) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { |
| 3191 | 3132 | ||
| 3192 | #ifdef SIS315H | 3133 | #ifdef CONFIG_FB_SIS_315 |
| 3193 | SiS_CalcPanelLinkTiming(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); | 3134 | SiS_CalcPanelLinkTiming(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); |
| 3194 | SiS_CalcLCDACRT1Timing(SiS_Pr, ModeNo, ModeIdIndex); | 3135 | SiS_CalcLCDACRT1Timing(SiS_Pr, ModeNo, ModeIdIndex); |
| 3195 | #endif | 3136 | #endif |
| @@ -3214,7 +3155,7 @@ SiS_GetCRT2DataLVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned | |||
| 3214 | case 16: LVDSData = SiS_Pr->SiS_LVDS800x600Data_1; break; | 3155 | case 16: LVDSData = SiS_Pr->SiS_LVDS800x600Data_1; break; |
| 3215 | case 18: LVDSData = SiS_Pr->SiS_LVDS1024x600Data_1; break; | 3156 | case 18: LVDSData = SiS_Pr->SiS_LVDS1024x600Data_1; break; |
| 3216 | case 20: LVDSData = SiS_Pr->SiS_LVDS1024x768Data_1; break; | 3157 | case 20: LVDSData = SiS_Pr->SiS_LVDS1024x768Data_1; break; |
| 3217 | #ifdef SIS300 | 3158 | #ifdef CONFIG_FB_SIS_300 |
| 3218 | case 80: LVDSData = SiS_Pr->SiS_LVDSBARCO1366Data_1; break; | 3159 | case 80: LVDSData = SiS_Pr->SiS_LVDSBARCO1366Data_1; break; |
| 3219 | case 81: LVDSData = SiS_Pr->SiS_LVDSBARCO1366Data_2; break; | 3160 | case 81: LVDSData = SiS_Pr->SiS_LVDSBARCO1366Data_2; break; |
| 3220 | case 82: LVDSData = SiS_Pr->SiS_LVDSBARCO1024Data_1; break; | 3161 | case 82: LVDSData = SiS_Pr->SiS_LVDSBARCO1024Data_1; break; |
| @@ -3248,7 +3189,7 @@ SiS_GetCRT2DataLVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned | |||
| 3248 | (SiS_Pr->SiS_SetFlag & SetDOSMode) ) { | 3189 | (SiS_Pr->SiS_SetFlag & SetDOSMode) ) { |
| 3249 | SiS_Pr->SiS_HDE = SiS_Pr->PanelXRes; | 3190 | SiS_Pr->SiS_HDE = SiS_Pr->PanelXRes; |
| 3250 | SiS_Pr->SiS_VDE = SiS_Pr->PanelYRes; | 3191 | SiS_Pr->SiS_VDE = SiS_Pr->PanelYRes; |
| 3251 | #ifdef SIS300 | 3192 | #ifdef CONFIG_FB_SIS_300 |
| 3252 | if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) { | 3193 | if(SiS_Pr->SiS_CustomT == CUT_BARCO1366) { |
| 3253 | if(ResIndex < 0x08) { | 3194 | if(ResIndex < 0x08) { |
| 3254 | SiS_Pr->SiS_HDE = 1280; | 3195 | SiS_Pr->SiS_HDE = 1280; |
| @@ -3270,7 +3211,7 @@ SiS_GetCRT2Data301(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 3270 | unsigned short resinfo, CRT2Index, ResIndex; | 3211 | unsigned short resinfo, CRT2Index, ResIndex; |
| 3271 | const struct SiS_LCDData *LCDPtr = NULL; | 3212 | const struct SiS_LCDData *LCDPtr = NULL; |
| 3272 | const struct SiS_TVData *TVPtr = NULL; | 3213 | const struct SiS_TVData *TVPtr = NULL; |
| 3273 | #ifdef SIS315H | 3214 | #ifdef CONFIG_FB_SIS_315 |
| 3274 | short resinfo661; | 3215 | short resinfo661; |
| 3275 | #endif | 3216 | #endif |
| 3276 | 3217 | ||
| @@ -3283,7 +3224,7 @@ SiS_GetCRT2Data301(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 3283 | } else { | 3224 | } else { |
| 3284 | modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; | 3225 | modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; |
| 3285 | resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; | 3226 | resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; |
| 3286 | #ifdef SIS315H | 3227 | #ifdef CONFIG_FB_SIS_315 |
| 3287 | resinfo661 = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].ROMMODEIDX661; | 3228 | resinfo661 = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].ROMMODEIDX661; |
| 3288 | if( (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && | 3229 | if( (SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) && |
| 3289 | (SiS_Pr->SiS_SetFlag & LCDVESATiming) && | 3230 | (SiS_Pr->SiS_SetFlag & LCDVESATiming) && |
| @@ -3460,7 +3401,7 @@ SiS_GetCRT2Data301(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 3460 | 3401 | ||
| 3461 | } else if( (!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) && (romptr) && (ROMAddr) ) { | 3402 | } else if( (!(SiS_Pr->SiS_LCDInfo & DontExpandLCD)) && (romptr) && (ROMAddr) ) { |
| 3462 | 3403 | ||
| 3463 | #ifdef SIS315H | 3404 | #ifdef CONFIG_FB_SIS_315 |
| 3464 | SiS_Pr->SiS_RVBHCMAX = ROMAddr[romptr]; | 3405 | SiS_Pr->SiS_RVBHCMAX = ROMAddr[romptr]; |
| 3465 | SiS_Pr->SiS_RVBHCFACT = ROMAddr[romptr+1]; | 3406 | SiS_Pr->SiS_RVBHCFACT = ROMAddr[romptr+1]; |
| 3466 | SiS_Pr->SiS_VGAHT = ROMAddr[romptr+2] | ((ROMAddr[romptr+3] & 0x0f) << 8); | 3407 | SiS_Pr->SiS_VGAHT = ROMAddr[romptr+2] | ((ROMAddr[romptr+3] & 0x0f) << 8); |
| @@ -3520,19 +3461,13 @@ SiS_GetCRT2Data301(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 3520 | case Panel_1680x1050 : | 3461 | case Panel_1680x1050 : |
| 3521 | case Panel_1680x1050 + 32: LCDPtr = SiS_Pr->SiS_LCD1680x1050Data; break; | 3462 | case Panel_1680x1050 + 32: LCDPtr = SiS_Pr->SiS_LCD1680x1050Data; break; |
| 3522 | case 100 : LCDPtr = SiS_Pr->SiS_NoScaleData; break; | 3463 | case 100 : LCDPtr = SiS_Pr->SiS_NoScaleData; break; |
| 3523 | #ifdef SIS315H | 3464 | #ifdef CONFIG_FB_SIS_315 |
| 3524 | case 200 : LCDPtr = SiS310_ExtCompaq1280x1024Data; break; | 3465 | case 200 : LCDPtr = SiS310_ExtCompaq1280x1024Data; break; |
| 3525 | case 201 : LCDPtr = SiS_Pr->SiS_St2LCD1280x1024Data; break; | 3466 | case 201 : LCDPtr = SiS_Pr->SiS_St2LCD1280x1024Data; break; |
| 3526 | #endif | 3467 | #endif |
| 3527 | default : LCDPtr = SiS_Pr->SiS_ExtLCD1024x768Data; break; | 3468 | default : LCDPtr = SiS_Pr->SiS_ExtLCD1024x768Data; break; |
| 3528 | } | 3469 | } |
| 3529 | 3470 | ||
| 3530 | #ifdef SIS_XORG_XF86 | ||
| 3531 | #ifdef TWDEBUG | ||
| 3532 | xf86DrvMsg(0, X_INFO, "GetCRT2Data: Index %d ResIndex %d\n", CRT2Index, ResIndex); | ||
| 3533 | #endif | ||
| 3534 | #endif | ||
| 3535 | |||
| 3536 | SiS_Pr->SiS_RVBHCMAX = (LCDPtr+ResIndex)->RVBHCMAX; | 3471 | SiS_Pr->SiS_RVBHCMAX = (LCDPtr+ResIndex)->RVBHCMAX; |
| 3537 | SiS_Pr->SiS_RVBHCFACT = (LCDPtr+ResIndex)->RVBHCFACT; | 3472 | SiS_Pr->SiS_RVBHCFACT = (LCDPtr+ResIndex)->RVBHCFACT; |
| 3538 | SiS_Pr->SiS_VGAHT = (LCDPtr+ResIndex)->VGAHT; | 3473 | SiS_Pr->SiS_VGAHT = (LCDPtr+ResIndex)->VGAHT; |
| @@ -3624,7 +3559,7 @@ SiS_GetLVDSDesPtr(struct SiS_Private *SiS_Pr) | |||
| 3624 | { | 3559 | { |
| 3625 | const struct SiS_LVDSDes *PanelDesPtr = NULL; | 3560 | const struct SiS_LVDSDes *PanelDesPtr = NULL; |
| 3626 | 3561 | ||
| 3627 | #ifdef SIS300 | 3562 | #ifdef CONFIG_FB_SIS_300 |
| 3628 | if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { | 3563 | if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCD) { |
| 3629 | 3564 | ||
| 3630 | if(SiS_Pr->ChipType < SIS_315H) { | 3565 | if(SiS_Pr->ChipType < SIS_315H) { |
| @@ -3696,7 +3631,7 @@ SiS_GetLVDSDesData(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 3696 | 3631 | ||
| 3697 | if((SiS_Pr->SiS_VBType & VB_SIS30xBLV) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { | 3632 | if((SiS_Pr->SiS_VBType & VB_SIS30xBLV) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { |
| 3698 | 3633 | ||
| 3699 | #ifdef SIS315H | 3634 | #ifdef CONFIG_FB_SIS_315 |
| 3700 | if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { | 3635 | if(SiS_Pr->SiS_LCDInfo & DontExpandLCD) { |
| 3701 | /* non-pass 1:1 only, see above */ | 3636 | /* non-pass 1:1 only, see above */ |
| 3702 | if(SiS_Pr->SiS_VGAHDE != SiS_Pr->PanelXRes) { | 3637 | if(SiS_Pr->SiS_VGAHDE != SiS_Pr->PanelXRes) { |
| @@ -3771,7 +3706,7 @@ SiS_GetLVDSDesData(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 3771 | } else { | 3706 | } else { |
| 3772 | 3707 | ||
| 3773 | if(SiS_Pr->ChipType < SIS_315H) { | 3708 | if(SiS_Pr->ChipType < SIS_315H) { |
| 3774 | #ifdef SIS300 | 3709 | #ifdef CONFIG_FB_SIS_300 |
| 3775 | switch(SiS_Pr->SiS_LCDResInfo) { | 3710 | switch(SiS_Pr->SiS_LCDResInfo) { |
| 3776 | case Panel_800x600: | 3711 | case Panel_800x600: |
| 3777 | if(SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) { | 3712 | if(SiS_Pr->SiS_VGAVDE == SiS_Pr->PanelYRes) { |
| @@ -3816,7 +3751,7 @@ SiS_GetLVDSDesData(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 3816 | } | 3751 | } |
| 3817 | #endif | 3752 | #endif |
| 3818 | } else { | 3753 | } else { |
| 3819 | #ifdef SIS315H | 3754 | #ifdef CONFIG_FB_SIS_315 |
| 3820 | switch(SiS_Pr->SiS_LCDResInfo) { | 3755 | switch(SiS_Pr->SiS_LCDResInfo) { |
| 3821 | case Panel_1024x768: | 3756 | case Panel_1024x768: |
| 3822 | case Panel_1280x1024: | 3757 | case Panel_1280x1024: |
| @@ -3844,7 +3779,7 @@ SiS_GetLVDSDesData(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 3844 | if(SiS_Pr->ChipType < SIS_315H) { | 3779 | if(SiS_Pr->ChipType < SIS_315H) { |
| 3845 | if(!(modeflag & HalfDCLK)) SiS_Pr->SiS_LCDHDES = 320; | 3780 | if(!(modeflag & HalfDCLK)) SiS_Pr->SiS_LCDHDES = 320; |
| 3846 | } else { | 3781 | } else { |
| 3847 | #ifdef SIS315H | 3782 | #ifdef CONFIG_FB_SIS_315 |
| 3848 | if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) SiS_Pr->SiS_LCDHDES = 480; | 3783 | if(SiS_Pr->SiS_LCDResInfo == Panel_1024x768) SiS_Pr->SiS_LCDHDES = 480; |
| 3849 | if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) SiS_Pr->SiS_LCDHDES = 804; | 3784 | if(SiS_Pr->SiS_LCDResInfo == Panel_1400x1050) SiS_Pr->SiS_LCDHDES = 804; |
| 3850 | if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) SiS_Pr->SiS_LCDHDES = 704; | 3785 | if(SiS_Pr->SiS_LCDResInfo == Panel_1600x1200) SiS_Pr->SiS_LCDHDES = 704; |
| @@ -3866,7 +3801,7 @@ SiS_GetLVDSDesData(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 3866 | /* DISABLE VIDEO BRIDGE */ | 3801 | /* DISABLE VIDEO BRIDGE */ |
| 3867 | /*********************************************/ | 3802 | /*********************************************/ |
| 3868 | 3803 | ||
| 3869 | #ifdef SIS315H | 3804 | #ifdef CONFIG_FB_SIS_315 |
| 3870 | static int | 3805 | static int |
| 3871 | SiS_HandlePWD(struct SiS_Private *SiS_Pr) | 3806 | SiS_HandlePWD(struct SiS_Private *SiS_Pr) |
| 3872 | { | 3807 | { |
| @@ -3891,11 +3826,6 @@ SiS_HandlePWD(struct SiS_Private *SiS_Pr) | |||
| 3891 | ret = 1; | 3826 | ret = 1; |
| 3892 | } | 3827 | } |
| 3893 | SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x27,0x7f,temp); | 3828 | SiS_SetRegANDOR(SiS_Pr->SiS_Part4Port,0x27,0x7f,temp); |
| 3894 | #ifdef SIS_XORG_XF86 | ||
| 3895 | #ifdef TWDEBUG | ||
| 3896 | xf86DrvMsg(0, 0, "Setting PWD %x\n", temp); | ||
| 3897 | #endif | ||
| 3898 | #endif | ||
| 3899 | } | 3829 | } |
| 3900 | #endif | 3830 | #endif |
| 3901 | return ret; | 3831 | return ret; |
| @@ -3909,7 +3839,7 @@ SiS_HandlePWD(struct SiS_Private *SiS_Pr) | |||
| 3909 | void | 3839 | void |
| 3910 | SiS_DisableBridge(struct SiS_Private *SiS_Pr) | 3840 | SiS_DisableBridge(struct SiS_Private *SiS_Pr) |
| 3911 | { | 3841 | { |
| 3912 | #ifdef SIS315H | 3842 | #ifdef CONFIG_FB_SIS_315 |
| 3913 | unsigned short tempah, pushax=0, modenum; | 3843 | unsigned short tempah, pushax=0, modenum; |
| 3914 | #endif | 3844 | #endif |
| 3915 | unsigned short temp=0; | 3845 | unsigned short temp=0; |
| @@ -3920,7 +3850,7 @@ SiS_DisableBridge(struct SiS_Private *SiS_Pr) | |||
| 3920 | 3850 | ||
| 3921 | if(SiS_Pr->ChipType < SIS_315H) { | 3851 | if(SiS_Pr->ChipType < SIS_315H) { |
| 3922 | 3852 | ||
| 3923 | #ifdef SIS300 /* 300 series */ | 3853 | #ifdef CONFIG_FB_SIS_300 /* 300 series */ |
| 3924 | 3854 | ||
| 3925 | if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { | 3855 | if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { |
| 3926 | if(SiS_Pr->SiS_VBType & VB_SISLVDS) { | 3856 | if(SiS_Pr->SiS_VBType & VB_SISLVDS) { |
| @@ -3953,11 +3883,11 @@ SiS_DisableBridge(struct SiS_Private *SiS_Pr) | |||
| 3953 | } | 3883 | } |
| 3954 | } | 3884 | } |
| 3955 | 3885 | ||
| 3956 | #endif /* SIS300 */ | 3886 | #endif /* CONFIG_FB_SIS_300 */ |
| 3957 | 3887 | ||
| 3958 | } else { | 3888 | } else { |
| 3959 | 3889 | ||
| 3960 | #ifdef SIS315H /* 315 series */ | 3890 | #ifdef CONFIG_FB_SIS_315 /* 315 series */ |
| 3961 | 3891 | ||
| 3962 | int didpwd = 0; | 3892 | int didpwd = 0; |
| 3963 | bool custom1 = (SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) || | 3893 | bool custom1 = (SiS_Pr->SiS_CustomT == CUT_COMPAQ1280) || |
| @@ -4081,14 +4011,14 @@ SiS_DisableBridge(struct SiS_Private *SiS_Pr) | |||
| 4081 | 4011 | ||
| 4082 | } | 4012 | } |
| 4083 | 4013 | ||
| 4084 | #endif /* SIS315H */ | 4014 | #endif /* CONFIG_FB_SIS_315 */ |
| 4085 | 4015 | ||
| 4086 | } | 4016 | } |
| 4087 | 4017 | ||
| 4088 | } else { /* ============ For 301 ================ */ | 4018 | } else { /* ============ For 301 ================ */ |
| 4089 | 4019 | ||
| 4090 | if(SiS_Pr->ChipType < SIS_315H) { | 4020 | if(SiS_Pr->ChipType < SIS_315H) { |
| 4091 | #ifdef SIS300 | 4021 | #ifdef CONFIG_FB_SIS_300 |
| 4092 | if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { | 4022 | if(!(SiS_CR36BIOSWord23b(SiS_Pr))) { |
| 4093 | SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x08); | 4023 | SiS_SetRegSR11ANDOR(SiS_Pr,0xF7,0x08); |
| 4094 | SiS_PanelDelay(SiS_Pr, 3); | 4024 | SiS_PanelDelay(SiS_Pr, 3); |
| @@ -4111,7 +4041,7 @@ SiS_DisableBridge(struct SiS_Private *SiS_Pr) | |||
| 4111 | SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); | 4041 | SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x1E,0x20); |
| 4112 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,temp); | 4042 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x00,temp); |
| 4113 | } else { | 4043 | } else { |
| 4114 | #ifdef SIS300 | 4044 | #ifdef CONFIG_FB_SIS_300 |
| 4115 | SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x1E,0xDF); /* disable CRT2 */ | 4045 | SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x1E,0xDF); /* disable CRT2 */ |
| 4116 | if( (!(SiS_CRT2IsLCD(SiS_Pr))) || | 4046 | if( (!(SiS_CRT2IsLCD(SiS_Pr))) || |
| 4117 | (!(SiS_CR36BIOSWord23d(SiS_Pr))) ) { | 4047 | (!(SiS_CR36BIOSWord23d(SiS_Pr))) ) { |
| @@ -4127,7 +4057,7 @@ SiS_DisableBridge(struct SiS_Private *SiS_Pr) | |||
| 4127 | 4057 | ||
| 4128 | if(SiS_Pr->ChipType < SIS_315H) { | 4058 | if(SiS_Pr->ChipType < SIS_315H) { |
| 4129 | 4059 | ||
| 4130 | #ifdef SIS300 /* 300 series */ | 4060 | #ifdef CONFIG_FB_SIS_300 /* 300 series */ |
| 4131 | 4061 | ||
| 4132 | if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { | 4062 | if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { |
| 4133 | SiS_SetCH700x(SiS_Pr,0x0E,0x09); | 4063 | SiS_SetCH700x(SiS_Pr,0x0E,0x09); |
| @@ -4171,11 +4101,11 @@ SiS_DisableBridge(struct SiS_Private *SiS_Pr) | |||
| 4171 | SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x04); | 4101 | SiS_SetRegSR11ANDOR(SiS_Pr,0xFB,0x04); |
| 4172 | } | 4102 | } |
| 4173 | 4103 | ||
| 4174 | #endif /* SIS300 */ | 4104 | #endif /* CONFIG_FB_SIS_300 */ |
| 4175 | 4105 | ||
| 4176 | } else { | 4106 | } else { |
| 4177 | 4107 | ||
| 4178 | #ifdef SIS315H /* 315 series */ | 4108 | #ifdef CONFIG_FB_SIS_315 /* 315 series */ |
| 4179 | 4109 | ||
| 4180 | if(!(SiS_IsNotM650orLater(SiS_Pr))) { | 4110 | if(!(SiS_IsNotM650orLater(SiS_Pr))) { |
| 4181 | /*if(SiS_Pr->ChipType < SIS_340) { */ /* XGI needs this */ | 4111 | /*if(SiS_Pr->ChipType < SIS_340) { */ /* XGI needs this */ |
| @@ -4288,7 +4218,7 @@ SiS_DisableBridge(struct SiS_Private *SiS_Pr) | |||
| 4288 | } | 4218 | } |
| 4289 | } | 4219 | } |
| 4290 | 4220 | ||
| 4291 | #endif /* SIS315H */ | 4221 | #endif /* CONFIG_FB_SIS_315 */ |
| 4292 | 4222 | ||
| 4293 | } /* 315 series */ | 4223 | } /* 315 series */ |
| 4294 | 4224 | ||
| @@ -4304,14 +4234,12 @@ SiS_DisableBridge(struct SiS_Private *SiS_Pr) | |||
| 4304 | * from outside the context of a mode switch! | 4234 | * from outside the context of a mode switch! |
| 4305 | * MUST call getVBType before calling this | 4235 | * MUST call getVBType before calling this |
| 4306 | */ | 4236 | */ |
| 4307 | #ifdef SIS_LINUX_KERNEL | ||
| 4308 | static | 4237 | static |
| 4309 | #endif | ||
| 4310 | void | 4238 | void |
| 4311 | SiS_EnableBridge(struct SiS_Private *SiS_Pr) | 4239 | SiS_EnableBridge(struct SiS_Private *SiS_Pr) |
| 4312 | { | 4240 | { |
| 4313 | unsigned short temp=0, tempah; | 4241 | unsigned short temp=0, tempah; |
| 4314 | #ifdef SIS315H | 4242 | #ifdef CONFIG_FB_SIS_315 |
| 4315 | unsigned short temp1, pushax=0; | 4243 | unsigned short temp1, pushax=0; |
| 4316 | bool delaylong = false; | 4244 | bool delaylong = false; |
| 4317 | #endif | 4245 | #endif |
| @@ -4322,7 +4250,7 @@ SiS_EnableBridge(struct SiS_Private *SiS_Pr) | |||
| 4322 | 4250 | ||
| 4323 | if(SiS_Pr->ChipType < SIS_315H) { | 4251 | if(SiS_Pr->ChipType < SIS_315H) { |
| 4324 | 4252 | ||
| 4325 | #ifdef SIS300 /* 300 series */ | 4253 | #ifdef CONFIG_FB_SIS_300 /* 300 series */ |
| 4326 | 4254 | ||
| 4327 | if(SiS_CRT2IsLCD(SiS_Pr)) { | 4255 | if(SiS_CRT2IsLCD(SiS_Pr)) { |
| 4328 | if(SiS_Pr->SiS_VBType & VB_SISLVDS) { | 4256 | if(SiS_Pr->SiS_VBType & VB_SISLVDS) { |
| @@ -4385,11 +4313,11 @@ SiS_EnableBridge(struct SiS_Private *SiS_Pr) | |||
| 4385 | } | 4313 | } |
| 4386 | 4314 | ||
| 4387 | 4315 | ||
| 4388 | #endif /* SIS300 */ | 4316 | #endif /* CONFIG_FB_SIS_300 */ |
| 4389 | 4317 | ||
| 4390 | } else { | 4318 | } else { |
| 4391 | 4319 | ||
| 4392 | #ifdef SIS315H /* 315 series */ | 4320 | #ifdef CONFIG_FB_SIS_315 /* 315 series */ |
| 4393 | 4321 | ||
| 4394 | #ifdef SET_EMI | 4322 | #ifdef SET_EMI |
| 4395 | unsigned char r30=0, r31=0, r32=0, r33=0, cr36=0; | 4323 | unsigned char r30=0, r31=0, r32=0, r33=0, cr36=0; |
| @@ -4688,7 +4616,7 @@ SiS_EnableBridge(struct SiS_Private *SiS_Pr) | |||
| 4688 | SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x00,0x7f); | 4616 | SiS_SetRegAND(SiS_Pr->SiS_Part1Port,0x00,0x7f); |
| 4689 | } | 4617 | } |
| 4690 | 4618 | ||
| 4691 | #endif /* SIS315H */ | 4619 | #endif /* CONFIG_FB_SIS_315 */ |
| 4692 | 4620 | ||
| 4693 | } | 4621 | } |
| 4694 | 4622 | ||
| @@ -4739,7 +4667,7 @@ SiS_EnableBridge(struct SiS_Private *SiS_Pr) | |||
| 4739 | 4667 | ||
| 4740 | if(SiS_Pr->ChipType < SIS_315H) { | 4668 | if(SiS_Pr->ChipType < SIS_315H) { |
| 4741 | 4669 | ||
| 4742 | #ifdef SIS300 /* 300 series */ | 4670 | #ifdef CONFIG_FB_SIS_300 /* 300 series */ |
| 4743 | 4671 | ||
| 4744 | if(SiS_CRT2IsLCD(SiS_Pr)) { | 4672 | if(SiS_CRT2IsLCD(SiS_Pr)) { |
| 4745 | if(SiS_Pr->ChipType == SIS_730) { | 4673 | if(SiS_Pr->ChipType == SIS_730) { |
| @@ -4783,11 +4711,11 @@ SiS_EnableBridge(struct SiS_Private *SiS_Pr) | |||
| 4783 | } | 4711 | } |
| 4784 | } | 4712 | } |
| 4785 | 4713 | ||
| 4786 | #endif /* SIS300 */ | 4714 | #endif /* CONFIG_FB_SIS_300 */ |
| 4787 | 4715 | ||
| 4788 | } else { | 4716 | } else { |
| 4789 | 4717 | ||
| 4790 | #ifdef SIS315H /* 315 series */ | 4718 | #ifdef CONFIG_FB_SIS_315 /* 315 series */ |
| 4791 | 4719 | ||
| 4792 | if(!(SiS_IsNotM650orLater(SiS_Pr))) { | 4720 | if(!(SiS_IsNotM650orLater(SiS_Pr))) { |
| 4793 | /*if(SiS_Pr->ChipType < SIS_340) {*/ /* XGI needs this */ | 4721 | /*if(SiS_Pr->ChipType < SIS_340) {*/ /* XGI needs this */ |
| @@ -4881,7 +4809,7 @@ SiS_EnableBridge(struct SiS_Private *SiS_Pr) | |||
| 4881 | } | 4809 | } |
| 4882 | } | 4810 | } |
| 4883 | 4811 | ||
| 4884 | #endif /* SIS315H */ | 4812 | #endif /* CONFIG_FB_SIS_315 */ |
| 4885 | 4813 | ||
| 4886 | } /* 310 series */ | 4814 | } /* 310 series */ |
| 4887 | 4815 | ||
| @@ -4971,7 +4899,7 @@ SiS_SetCRT2Sync(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned shor | |||
| 4971 | 4899 | ||
| 4972 | if(SiS_Pr->ChipType < SIS_315H) { | 4900 | if(SiS_Pr->ChipType < SIS_315H) { |
| 4973 | 4901 | ||
| 4974 | #ifdef SIS300 /* ---- 300 series --- */ | 4902 | #ifdef CONFIG_FB_SIS_300 /* ---- 300 series --- */ |
| 4975 | 4903 | ||
| 4976 | if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { /* 630 - 301B(-DH) */ | 4904 | if(SiS_Pr->SiS_VBType & VB_SIS30xBLV) { /* 630 - 301B(-DH) */ |
| 4977 | 4905 | ||
| @@ -5000,11 +4928,11 @@ SiS_SetCRT2Sync(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned shor | |||
| 5000 | 4928 | ||
| 5001 | } | 4929 | } |
| 5002 | 4930 | ||
| 5003 | #endif /* SIS300 */ | 4931 | #endif /* CONFIG_FB_SIS_300 */ |
| 5004 | 4932 | ||
| 5005 | } else { | 4933 | } else { |
| 5006 | 4934 | ||
| 5007 | #ifdef SIS315H /* ------- 315 series ------ */ | 4935 | #ifdef CONFIG_FB_SIS_315 /* ------- 315 series ------ */ |
| 5008 | 4936 | ||
| 5009 | if(SiS_Pr->SiS_VBType & VB_SISLVDS) { /* 315 - LVDS */ | 4937 | if(SiS_Pr->SiS_VBType & VB_SISLVDS) { /* 315 - LVDS */ |
| 5010 | 4938 | ||
| @@ -5076,13 +5004,13 @@ SiS_SetCRT2Sync(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned shor | |||
| 5076 | } | 5004 | } |
| 5077 | 5005 | ||
| 5078 | } | 5006 | } |
| 5079 | #endif /* SIS315H */ | 5007 | #endif /* CONFIG_FB_SIS_315 */ |
| 5080 | } | 5008 | } |
| 5081 | } | 5009 | } |
| 5082 | } | 5010 | } |
| 5083 | 5011 | ||
| 5084 | /* Set CRT2 FIFO on 300/540/630/730 */ | 5012 | /* Set CRT2 FIFO on 300/540/630/730 */ |
| 5085 | #ifdef SIS300 | 5013 | #ifdef CONFIG_FB_SIS_300 |
| 5086 | static void | 5014 | static void |
| 5087 | SiS_SetCRT2FIFO_300(struct SiS_Private *SiS_Pr,unsigned short ModeNo) | 5015 | SiS_SetCRT2FIFO_300(struct SiS_Private *SiS_Pr,unsigned short ModeNo) |
| 5088 | { | 5016 | { |
| @@ -5154,13 +5082,8 @@ SiS_SetCRT2FIFO_300(struct SiS_Private *SiS_Pr,unsigned short ModeNo) | |||
| 5154 | 5082 | ||
| 5155 | } else { | 5083 | } else { |
| 5156 | 5084 | ||
| 5157 | #ifdef SIS_LINUX_KERNEL | ||
| 5158 | pci50 = sisfb_read_nbridge_pci_dword(SiS_Pr, 0x50); | 5085 | pci50 = sisfb_read_nbridge_pci_dword(SiS_Pr, 0x50); |
| 5159 | pciA0 = sisfb_read_nbridge_pci_dword(SiS_Pr, 0xa0); | 5086 | pciA0 = sisfb_read_nbridge_pci_dword(SiS_Pr, 0xa0); |
| 5160 | #else | ||
| 5161 | pci50 = pciReadLong(0x00000000, 0x50); | ||
| 5162 | pciA0 = pciReadLong(0x00000000, 0xA0); | ||
| 5163 | #endif | ||
| 5164 | 5087 | ||
| 5165 | if(SiS_Pr->ChipType == SIS_730) { | 5088 | if(SiS_Pr->ChipType == SIS_730) { |
| 5166 | 5089 | ||
| @@ -5262,7 +5185,7 @@ SiS_SetCRT2FIFO_300(struct SiS_Private *SiS_Pr,unsigned short ModeNo) | |||
| 5262 | #endif | 5185 | #endif |
| 5263 | 5186 | ||
| 5264 | /* Set CRT2 FIFO on 315/330 series */ | 5187 | /* Set CRT2 FIFO on 315/330 series */ |
| 5265 | #ifdef SIS315H | 5188 | #ifdef CONFIG_FB_SIS_315 |
| 5266 | static void | 5189 | static void |
| 5267 | SiS_SetCRT2FIFO_310(struct SiS_Private *SiS_Pr) | 5190 | SiS_SetCRT2FIFO_310(struct SiS_Private *SiS_Pr) |
| 5268 | { | 5191 | { |
| @@ -5420,27 +5343,6 @@ SiS_SetGroup1_301(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned sho | |||
| 5420 | 5343 | ||
| 5421 | temp = SiS_GetRegByte((SiS_Pr->SiS_P3ca+0x02)); | 5344 | temp = SiS_GetRegByte((SiS_Pr->SiS_P3ca+0x02)); |
| 5422 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,temp); /* ? */ | 5345 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1b,temp); /* ? */ |
| 5423 | |||
| 5424 | #ifdef SIS_XORG_XF86 | ||
| 5425 | #ifdef TWDEBUG | ||
| 5426 | xf86DrvMsg(0, X_INFO, "%d %d %d %d %d %d %d %d (%d %d %d %d)\n", | ||
| 5427 | SiS_Pr->CHDisplay, SiS_Pr->CHSyncStart, SiS_Pr->CHSyncEnd, SiS_Pr->CHTotal, | ||
| 5428 | SiS_Pr->CVDisplay, SiS_Pr->CVSyncStart, SiS_Pr->CVSyncEnd, SiS_Pr->CVTotal, | ||
| 5429 | SiS_Pr->CHBlankStart, SiS_Pr->CHBlankEnd, SiS_Pr->CVBlankStart, SiS_Pr->CVBlankEnd); | ||
| 5430 | |||
| 5431 | xf86DrvMsg(0, X_INFO, " {{0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,\n", | ||
| 5432 | SiS_Pr->CCRT1CRTC[0], SiS_Pr->CCRT1CRTC[1], | ||
| 5433 | SiS_Pr->CCRT1CRTC[2], SiS_Pr->CCRT1CRTC[3], | ||
| 5434 | SiS_Pr->CCRT1CRTC[4], SiS_Pr->CCRT1CRTC[5], | ||
| 5435 | SiS_Pr->CCRT1CRTC[6], SiS_Pr->CCRT1CRTC[7]); | ||
| 5436 | xf86DrvMsg(0, X_INFO, " 0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,\n", | ||
| 5437 | SiS_Pr->CCRT1CRTC[8], SiS_Pr->CCRT1CRTC[9], | ||
| 5438 | SiS_Pr->CCRT1CRTC[10], SiS_Pr->CCRT1CRTC[11], | ||
| 5439 | SiS_Pr->CCRT1CRTC[12], SiS_Pr->CCRT1CRTC[13], | ||
| 5440 | SiS_Pr->CCRT1CRTC[14], SiS_Pr->CCRT1CRTC[15]); | ||
| 5441 | xf86DrvMsg(0, X_INFO, " 0x%02x}},\n", SiS_Pr->CCRT1CRTC[16]); | ||
| 5442 | #endif | ||
| 5443 | #endif | ||
| 5444 | } | 5346 | } |
| 5445 | 5347 | ||
| 5446 | /* Setup panel link | 5348 | /* Setup panel link |
| @@ -5455,17 +5357,17 @@ SiS_SetGroup1_LVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 5455 | unsigned short push2, tempax, tempbx, tempcx, temp; | 5357 | unsigned short push2, tempax, tempbx, tempcx, temp; |
| 5456 | unsigned int tempeax = 0, tempebx, tempecx, tempvcfact = 0; | 5358 | unsigned int tempeax = 0, tempebx, tempecx, tempvcfact = 0; |
| 5457 | bool islvds = false, issis = false, chkdclkfirst = false; | 5359 | bool islvds = false, issis = false, chkdclkfirst = false; |
| 5458 | #ifdef SIS300 | 5360 | #ifdef CONFIG_FB_SIS_300 |
| 5459 | unsigned short crt2crtc = 0; | 5361 | unsigned short crt2crtc = 0; |
| 5460 | #endif | 5362 | #endif |
| 5461 | #ifdef SIS315H | 5363 | #ifdef CONFIG_FB_SIS_315 |
| 5462 | unsigned short pushcx; | 5364 | unsigned short pushcx; |
| 5463 | #endif | 5365 | #endif |
| 5464 | 5366 | ||
| 5465 | if(ModeNo <= 0x13) { | 5367 | if(ModeNo <= 0x13) { |
| 5466 | modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; | 5368 | modeflag = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ModeFlag; |
| 5467 | resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; | 5369 | resinfo = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_ResInfo; |
| 5468 | #ifdef SIS300 | 5370 | #ifdef CONFIG_FB_SIS_300 |
| 5469 | crt2crtc = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; | 5371 | crt2crtc = SiS_Pr->SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC; |
| 5470 | #endif | 5372 | #endif |
| 5471 | } else if(SiS_Pr->UseCustomMode) { | 5373 | } else if(SiS_Pr->UseCustomMode) { |
| @@ -5473,7 +5375,7 @@ SiS_SetGroup1_LVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 5473 | } else { | 5375 | } else { |
| 5474 | modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; | 5376 | modeflag = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_ModeFlag; |
| 5475 | resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; | 5377 | resinfo = SiS_Pr->SiS_EModeIDTable[ModeIdIndex].Ext_RESINFO; |
| 5476 | #ifdef SIS300 | 5378 | #ifdef CONFIG_FB_SIS_300 |
| 5477 | crt2crtc = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; | 5379 | crt2crtc = SiS_Pr->SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC; |
| 5478 | #endif | 5380 | #endif |
| 5479 | } | 5381 | } |
| @@ -5494,7 +5396,7 @@ SiS_SetGroup1_LVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 5494 | } | 5396 | } |
| 5495 | } | 5397 | } |
| 5496 | 5398 | ||
| 5497 | #ifdef SIS315H | 5399 | #ifdef CONFIG_FB_SIS_315 |
| 5498 | if((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { | 5400 | if((SiS_Pr->ChipType >= SIS_315H) && (SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA)) { |
| 5499 | if(IS_SIS330) { | 5401 | if(IS_SIS330) { |
| 5500 | SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2D,0x10); | 5402 | SiS_SetRegOR(SiS_Pr->SiS_Part1Port,0x2D,0x10); |
| @@ -5744,7 +5646,7 @@ SiS_SetGroup1_LVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 5744 | 5646 | ||
| 5745 | if(SiS_Pr->ChipType < SIS_315H) { | 5647 | if(SiS_Pr->ChipType < SIS_315H) { |
| 5746 | 5648 | ||
| 5747 | #ifdef SIS300 /* 300 series */ | 5649 | #ifdef CONFIG_FB_SIS_300 /* 300 series */ |
| 5748 | tempeax = SiS_Pr->SiS_VGAVDE << 6; | 5650 | tempeax = SiS_Pr->SiS_VGAVDE << 6; |
| 5749 | temp = (tempeax % (unsigned int)SiS_Pr->SiS_VDE); | 5651 | temp = (tempeax % (unsigned int)SiS_Pr->SiS_VDE); |
| 5750 | tempeax = tempeax / (unsigned int)SiS_Pr->SiS_VDE; | 5652 | tempeax = tempeax / (unsigned int)SiS_Pr->SiS_VDE; |
| @@ -5755,11 +5657,11 @@ SiS_SetGroup1_LVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 5755 | temp = (unsigned short)(tempeax & 0x00FF); | 5657 | temp = (unsigned short)(tempeax & 0x00FF); |
| 5756 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1E,temp); /* BPLVCFACT */ | 5658 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x1E,temp); /* BPLVCFACT */ |
| 5757 | tempvcfact = temp; | 5659 | tempvcfact = temp; |
| 5758 | #endif /* SIS300 */ | 5660 | #endif /* CONFIG_FB_SIS_300 */ |
| 5759 | 5661 | ||
| 5760 | } else { | 5662 | } else { |
| 5761 | 5663 | ||
| 5762 | #ifdef SIS315H /* 315 series */ | 5664 | #ifdef CONFIG_FB_SIS_315 /* 315 series */ |
| 5763 | tempeax = SiS_Pr->SiS_VGAVDE << 18; | 5665 | tempeax = SiS_Pr->SiS_VGAVDE << 18; |
| 5764 | tempebx = SiS_Pr->SiS_VDE; | 5666 | tempebx = SiS_Pr->SiS_VDE; |
| 5765 | temp = (tempeax % tempebx); | 5667 | temp = (tempeax % tempebx); |
| @@ -5845,7 +5747,7 @@ SiS_SetGroup1_LVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 5845 | temp = (unsigned short)(tempecx & 0x00FF); | 5747 | temp = (unsigned short)(tempecx & 0x00FF); |
| 5846 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x23,temp); | 5748 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x23,temp); |
| 5847 | 5749 | ||
| 5848 | #ifdef SIS315H | 5750 | #ifdef CONFIG_FB_SIS_315 |
| 5849 | if(SiS_Pr->ChipType >= SIS_315H) { | 5751 | if(SiS_Pr->ChipType >= SIS_315H) { |
| 5850 | if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { | 5752 | if(SiS_Pr->SiS_VBInfo & SetCRT2ToLCDA) { |
| 5851 | if((islvds) || (SiS_Pr->SiS_VBInfo & VB_SISLVDS)) { | 5753 | if((islvds) || (SiS_Pr->SiS_VBInfo & VB_SISLVDS)) { |
| @@ -5863,7 +5765,7 @@ SiS_SetGroup1_LVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 5863 | } | 5765 | } |
| 5864 | #endif | 5766 | #endif |
| 5865 | 5767 | ||
| 5866 | #ifdef SIS300 | 5768 | #ifdef CONFIG_FB_SIS_300 |
| 5867 | if(SiS_Pr->SiS_IF_DEF_TRUMPION) { | 5769 | if(SiS_Pr->SiS_IF_DEF_TRUMPION) { |
| 5868 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; | 5770 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; |
| 5869 | unsigned char *trumpdata; | 5771 | unsigned char *trumpdata; |
| @@ -5899,7 +5801,7 @@ SiS_SetGroup1_LVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 5899 | } | 5801 | } |
| 5900 | #endif | 5802 | #endif |
| 5901 | 5803 | ||
| 5902 | #ifdef SIS315H | 5804 | #ifdef CONFIG_FB_SIS_315 |
| 5903 | if(SiS_Pr->SiS_IF_DEF_FSTN || SiS_Pr->SiS_IF_DEF_DSTN) { | 5805 | if(SiS_Pr->SiS_IF_DEF_FSTN || SiS_Pr->SiS_IF_DEF_DSTN) { |
| 5904 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x25,0x00); | 5806 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x25,0x00); |
| 5905 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x26,0x00); | 5807 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x26,0x00); |
| @@ -5999,7 +5901,7 @@ SiS_SetGroup1_LVDS(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned s | |||
| 5999 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x45,0x0a); | 5901 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x45,0x0a); |
| 6000 | } | 5902 | } |
| 6001 | } | 5903 | } |
| 6002 | #endif /* SIS315H */ | 5904 | #endif /* CONFIG_FB_SIS_315 */ |
| 6003 | } | 5905 | } |
| 6004 | 5906 | ||
| 6005 | /* Set Part 1 */ | 5907 | /* Set Part 1 */ |
| @@ -6007,12 +5909,12 @@ static void | |||
| 6007 | SiS_SetGroup1(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, | 5909 | SiS_SetGroup1(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex, |
| 6008 | unsigned short RefreshRateTableIndex) | 5910 | unsigned short RefreshRateTableIndex) |
| 6009 | { | 5911 | { |
| 6010 | #if defined(SIS300) || defined(SIS315H) | 5912 | #if defined(CONFIG_FB_SIS_300) || defined(CONFIG_FB_SIS_315) |
| 6011 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; | 5913 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; |
| 6012 | #endif | 5914 | #endif |
| 6013 | unsigned short temp=0, tempax=0, tempbx=0, tempcx=0, bridgeadd=0; | 5915 | unsigned short temp=0, tempax=0, tempbx=0, tempcx=0, bridgeadd=0; |
| 6014 | unsigned short pushbx=0, CRT1Index=0, modeflag, resinfo=0; | 5916 | unsigned short pushbx=0, CRT1Index=0, modeflag, resinfo=0; |
| 6015 | #ifdef SIS315H | 5917 | #ifdef CONFIG_FB_SIS_315 |
| 6016 | unsigned short tempbl=0; | 5918 | unsigned short tempbl=0; |
| 6017 | #endif | 5919 | #endif |
| 6018 | 5920 | ||
| @@ -6038,11 +5940,11 @@ SiS_SetGroup1(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 6038 | (SiS_Pr->SiS_VBInfo & SetInSlaveMode)) ) { | 5940 | (SiS_Pr->SiS_VBInfo & SetInSlaveMode)) ) { |
| 6039 | 5941 | ||
| 6040 | if(SiS_Pr->ChipType < SIS_315H ) { | 5942 | if(SiS_Pr->ChipType < SIS_315H ) { |
| 6041 | #ifdef SIS300 | 5943 | #ifdef CONFIG_FB_SIS_300 |
| 6042 | SiS_SetCRT2FIFO_300(SiS_Pr, ModeNo); | 5944 | SiS_SetCRT2FIFO_300(SiS_Pr, ModeNo); |
| 6043 | #endif | 5945 | #endif |
| 6044 | } else { | 5946 | } else { |
| 6045 | #ifdef SIS315H | 5947 | #ifdef CONFIG_FB_SIS_315 |
| 6046 | SiS_SetCRT2FIFO_310(SiS_Pr); | 5948 | SiS_SetCRT2FIFO_310(SiS_Pr); |
| 6047 | #endif | 5949 | #endif |
| 6048 | } | 5950 | } |
| @@ -6051,7 +5953,7 @@ SiS_SetGroup1(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 6051 | 5953 | ||
| 6052 | if(SiS_Pr->ChipType < SIS_315H ) { | 5954 | if(SiS_Pr->ChipType < SIS_315H ) { |
| 6053 | 5955 | ||
| 6054 | #ifdef SIS300 /* ------------- 300 series --------------*/ | 5956 | #ifdef CONFIG_FB_SIS_300 /* ------------- 300 series --------------*/ |
| 6055 | 5957 | ||
| 6056 | temp = (SiS_Pr->SiS_VGAHT - 1) & 0x0FF; /* BTVGA2HT 0x08,0x09 */ | 5958 | temp = (SiS_Pr->SiS_VGAHT - 1) & 0x0FF; /* BTVGA2HT 0x08,0x09 */ |
| 6057 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x08,temp); /* CRT2 Horizontal Total */ | 5959 | SiS_SetReg(SiS_Pr->SiS_Part1Port,0x08,temp); /* CRT2 Horizontal Total */ |
| @@ -6070,11 +5972,11 @@ SiS_SetGroup1(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 6070 | 5972 | ||
| 6071 | bridgeadd = 12; | 5973 | bridgeadd = 12; |
| 6072 | 5974 | ||
| 6073 | #endif /* SIS300 */ | 5975 | #endif /* CONFIG_FB_SIS_300 */ |
| 6074 | 5976 | ||
| 6075 | } else { | 5977 | } else { |
| 6076 | 5978 | ||
| 6077 | #ifdef SIS315H /* ------------------- 315/330 series --------------- */ | 5979 | #ifdef CONFIG_FB_SIS_315 /* ------------------- 315/330 series --------------- */ |
| 6078 | 5980 | ||
| 6079 | tempcx = SiS_Pr->SiS_VGAHT; /* BTVGA2HT 0x08,0x09 */ | 5981 | tempcx = SiS_Pr->SiS_VGAHT; /* BTVGA2HT 0x08,0x09 */ |
| 6080 | if(modeflag & HalfDCLK) { | 5982 | if(modeflag & HalfDCLK) { |
| @@ -6125,7 +6027,7 @@ SiS_SetGroup1(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 6125 | } | 6027 | } |
| 6126 | } | 6028 | } |
| 6127 | 6029 | ||
| 6128 | #endif /* SIS315H */ | 6030 | #endif /* CONFIG_FB_SIS_315 */ |
| 6129 | 6031 | ||
| 6130 | } /* 315/330 series */ | 6032 | } /* 315/330 series */ |
| 6131 | 6033 | ||
| @@ -6256,7 +6158,7 @@ SiS_SetGroup1(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 6256 | 6158 | ||
| 6257 | if(SiS_Pr->ChipType < SIS_315H) { | 6159 | if(SiS_Pr->ChipType < SIS_315H) { |
| 6258 | 6160 | ||
| 6259 | #ifdef SIS300 /* ---------- 300 series -------------- */ | 6161 | #ifdef CONFIG_FB_SIS_300 /* ---------- 300 series -------------- */ |
| 6260 | 6162 | ||
| 6261 | if(SiS_Pr->SiS_VBType & VB_SISVB) { | 6163 | if(SiS_Pr->SiS_VBType & VB_SISVB) { |
| 6262 | temp = 0x20; | 6164 | temp = 0x20; |
| @@ -6310,11 +6212,11 @@ SiS_SetGroup1(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 6310 | 6212 | ||
| 6311 | SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,~0x3C,temp); /* Panel Link Delay Compensation; (Software Command Reset; Power Saving) */ | 6213 | SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x13,~0x3C,temp); /* Panel Link Delay Compensation; (Software Command Reset; Power Saving) */ |
| 6312 | 6214 | ||
| 6313 | #endif /* SIS300 */ | 6215 | #endif /* CONFIG_FB_SIS_300 */ |
| 6314 | 6216 | ||
| 6315 | } else { | 6217 | } else { |
| 6316 | 6218 | ||
| 6317 | #ifdef SIS315H /* --------------- 315/330 series ---------------*/ | 6219 | #ifdef CONFIG_FB_SIS_315 /* --------------- 315/330 series ---------------*/ |
| 6318 | 6220 | ||
| 6319 | if(SiS_Pr->ChipType < SIS_661) { | 6221 | if(SiS_Pr->ChipType < SIS_661) { |
| 6320 | 6222 | ||
| @@ -6349,7 +6251,7 @@ SiS_SetGroup1(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 6349 | if(modeflag & HalfDCLK) tempax |= 0x40; | 6251 | if(modeflag & HalfDCLK) tempax |= 0x40; |
| 6350 | SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2C,0x3f,tempax); | 6252 | SiS_SetRegANDOR(SiS_Pr->SiS_Part1Port,0x2C,0x3f,tempax); |
| 6351 | 6253 | ||
| 6352 | #endif /* SIS315H */ | 6254 | #endif /* CONFIG_FB_SIS_315 */ |
| 6353 | 6255 | ||
| 6354 | } | 6256 | } |
| 6355 | 6257 | ||
| @@ -6381,7 +6283,7 @@ SiS_SetGroup1(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 6381 | /* SET PART 2 REGISTER GROUP */ | 6283 | /* SET PART 2 REGISTER GROUP */ |
| 6382 | /*********************************************/ | 6284 | /*********************************************/ |
| 6383 | 6285 | ||
| 6384 | #ifdef SIS315H | 6286 | #ifdef CONFIG_FB_SIS_315 |
| 6385 | static unsigned char * | 6287 | static unsigned char * |
| 6386 | SiS_GetGroup2CLVXPtr(struct SiS_Private *SiS_Pr, int tabletype) | 6288 | SiS_GetGroup2CLVXPtr(struct SiS_Private *SiS_Pr, int tabletype) |
| 6387 | { | 6289 | { |
| @@ -6478,7 +6380,7 @@ SiS_GetCRT2Part2Ptr(struct SiS_Private *SiS_Pr,unsigned short ModeNo,unsigned sh | |||
| 6478 | } | 6380 | } |
| 6479 | #endif | 6381 | #endif |
| 6480 | 6382 | ||
| 6481 | #ifdef SIS300 | 6383 | #ifdef CONFIG_FB_SIS_300 |
| 6482 | static void | 6384 | static void |
| 6483 | SiS_Group2LCDSpecial(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short crt2crtc) | 6385 | SiS_Group2LCDSpecial(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short crt2crtc) |
| 6484 | { | 6386 | { |
| @@ -6690,7 +6592,7 @@ SiS_SetGroup2(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 6690 | unsigned int longtemp, PhaseIndex; | 6592 | unsigned int longtemp, PhaseIndex; |
| 6691 | bool newtvphase; | 6593 | bool newtvphase; |
| 6692 | const unsigned char *TimingPoint; | 6594 | const unsigned char *TimingPoint; |
| 6693 | #ifdef SIS315H | 6595 | #ifdef CONFIG_FB_SIS_315 |
| 6694 | unsigned short resindex, CRT2Index; | 6596 | unsigned short resindex, CRT2Index; |
| 6695 | const struct SiS_Part2PortTbl *CRT2Part2Ptr = NULL; | 6597 | const struct SiS_Part2PortTbl *CRT2Part2Ptr = NULL; |
| 6696 | 6598 | ||
| @@ -7069,7 +6971,7 @@ SiS_SetGroup2(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 7069 | SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x17,0xFB); | 6971 | SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x17,0xFB); |
| 7070 | SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x18,0xDF); | 6972 | SiS_SetRegAND(SiS_Pr->SiS_Part2Port,0x18,0xDF); |
| 7071 | 6973 | ||
| 7072 | #ifdef SIS315H | 6974 | #ifdef CONFIG_FB_SIS_315 |
| 7073 | if(SiS_GetCRT2Part2Ptr(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex, | 6975 | if(SiS_GetCRT2Part2Ptr(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex, |
| 7074 | &CRT2Index, &resindex)) { | 6976 | &CRT2Index, &resindex)) { |
| 7075 | switch(CRT2Index) { | 6977 | switch(CRT2Index) { |
| @@ -7130,12 +7032,6 @@ SiS_SetGroup2(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 7130 | 7032 | ||
| 7131 | /* Non-expanding: lcdvdes = tempcx = VT-1; lcdvdee = tempbx = VDE-1 */ | 7033 | /* Non-expanding: lcdvdes = tempcx = VT-1; lcdvdee = tempbx = VDE-1 */ |
| 7132 | 7034 | ||
| 7133 | #ifdef SIS_XORG_XF86 | ||
| 7134 | #ifdef TWDEBUG | ||
| 7135 | xf86DrvMsg(0, X_INFO, "lcdvdes 0x%x lcdvdee 0x%x\n", tempcx, tempbx); | ||
| 7136 | #endif | ||
| 7137 | #endif | ||
| 7138 | |||
| 7139 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x05,tempcx); /* lcdvdes */ | 7035 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x05,tempcx); /* lcdvdes */ |
| 7140 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x06,tempbx); /* lcdvdee */ | 7036 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x06,tempbx); /* lcdvdee */ |
| 7141 | 7037 | ||
| @@ -7184,12 +7080,6 @@ SiS_SetGroup2(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 7184 | tempbx = SiS_Pr->CVSyncStart; | 7080 | tempbx = SiS_Pr->CVSyncStart; |
| 7185 | } | 7081 | } |
| 7186 | 7082 | ||
| 7187 | #ifdef SIS_XORG_XF86 | ||
| 7188 | #ifdef TWDEBUG | ||
| 7189 | xf86DrvMsg(0, X_INFO, "lcdvrs 0x%x\n", tempbx); | ||
| 7190 | #endif | ||
| 7191 | #endif | ||
| 7192 | |||
| 7193 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x04,tempbx); /* lcdvrs */ | 7083 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x04,tempbx); /* lcdvrs */ |
| 7194 | 7084 | ||
| 7195 | temp = (tempbx >> 4) & 0xF0; | 7085 | temp = (tempbx >> 4) & 0xF0; |
| @@ -7201,15 +7091,9 @@ SiS_SetGroup2(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 7201 | temp |= (SiS_Pr->CVSyncEnd & 0x0f); | 7091 | temp |= (SiS_Pr->CVSyncEnd & 0x0f); |
| 7202 | } | 7092 | } |
| 7203 | 7093 | ||
| 7204 | #ifdef SIS_XORG_XF86 | ||
| 7205 | #ifdef TWDEBUG | ||
| 7206 | xf86DrvMsg(0, X_INFO, "lcdvre[3:0] 0x%x\n", (temp & 0x0f)); | ||
| 7207 | #endif | ||
| 7208 | #endif | ||
| 7209 | |||
| 7210 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,temp); | 7094 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x01,temp); |
| 7211 | 7095 | ||
| 7212 | #ifdef SIS300 | 7096 | #ifdef CONFIG_FB_SIS_300 |
| 7213 | SiS_Group2LCDSpecial(SiS_Pr, ModeNo, crt2crtc); | 7097 | SiS_Group2LCDSpecial(SiS_Pr, ModeNo, crt2crtc); |
| 7214 | #endif | 7098 | #endif |
| 7215 | 7099 | ||
| @@ -7245,12 +7129,6 @@ SiS_SetGroup2(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 7245 | tempax >>= 1; | 7129 | tempax >>= 1; |
| 7246 | } | 7130 | } |
| 7247 | 7131 | ||
| 7248 | #ifdef SIS_XORG_XF86 | ||
| 7249 | #ifdef TWDEBUG | ||
| 7250 | xf86DrvMsg(0, X_INFO, "lcdhdee 0x%x\n", tempbx); | ||
| 7251 | #endif | ||
| 7252 | #endif | ||
| 7253 | |||
| 7254 | tempbx += bridgeoffset; | 7132 | tempbx += bridgeoffset; |
| 7255 | 7133 | ||
| 7256 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x23,tempbx); /* lcdhdee */ | 7134 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x23,tempbx); /* lcdhdee */ |
| @@ -7276,12 +7154,6 @@ SiS_SetGroup2(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 7276 | tempbx += bridgeoffset; | 7154 | tempbx += bridgeoffset; |
| 7277 | } | 7155 | } |
| 7278 | 7156 | ||
| 7279 | #ifdef SIS_XORG_XF86 | ||
| 7280 | #ifdef TWDEBUG | ||
| 7281 | xf86DrvMsg(0, X_INFO, "lcdhrs 0x%x\n", tempbx); | ||
| 7282 | #endif | ||
| 7283 | #endif | ||
| 7284 | |||
| 7285 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x1C,tempbx); /* lcdhrs */ | 7157 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x1C,tempbx); /* lcdhrs */ |
| 7286 | SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1D,0x0F,((tempbx >> 4) & 0xf0)); | 7158 | SiS_SetRegANDOR(SiS_Pr->SiS_Part2Port,0x1D,0x0F,((tempbx >> 4) & 0xf0)); |
| 7287 | 7159 | ||
| @@ -7300,20 +7172,14 @@ SiS_SetGroup2(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 7300 | tempbx += bridgeoffset; | 7172 | tempbx += bridgeoffset; |
| 7301 | } | 7173 | } |
| 7302 | 7174 | ||
| 7303 | #ifdef SIS_XORG_XF86 | ||
| 7304 | #ifdef TWDEBUG | ||
| 7305 | xf86DrvMsg(0, X_INFO, "lcdhre 0x%x\n", tempbx); | ||
| 7306 | #endif | ||
| 7307 | #endif | ||
| 7308 | |||
| 7309 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x21,tempbx); /* lcdhre */ | 7175 | SiS_SetReg(SiS_Pr->SiS_Part2Port,0x21,tempbx); /* lcdhre */ |
| 7310 | 7176 | ||
| 7311 | SiS_SetGroup2_Tail(SiS_Pr, ModeNo); | 7177 | SiS_SetGroup2_Tail(SiS_Pr, ModeNo); |
| 7312 | 7178 | ||
| 7313 | #ifdef SIS300 | 7179 | #ifdef CONFIG_FB_SIS_300 |
| 7314 | SiS_Set300Part2Regs(SiS_Pr, ModeIdIndex, RefreshRateTableIndex, ModeNo); | 7180 | SiS_Set300Part2Regs(SiS_Pr, ModeIdIndex, RefreshRateTableIndex, ModeNo); |
| 7315 | #endif | 7181 | #endif |
| 7316 | #ifdef SIS315H | 7182 | #ifdef CONFIG_FB_SIS_315 |
| 7317 | } /* CRT2-LCD from table */ | 7183 | } /* CRT2-LCD from table */ |
| 7318 | #endif | 7184 | #endif |
| 7319 | } | 7185 | } |
| @@ -7382,7 +7248,7 @@ SiS_SetGroup3(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 7382 | /* SET PART 4 REGISTER GROUP */ | 7248 | /* SET PART 4 REGISTER GROUP */ |
| 7383 | /*********************************************/ | 7249 | /*********************************************/ |
| 7384 | 7250 | ||
| 7385 | #ifdef SIS315H | 7251 | #ifdef CONFIG_FB_SIS_315 |
| 7386 | #if 0 | 7252 | #if 0 |
| 7387 | static void | 7253 | static void |
| 7388 | SiS_ShiftXPos(struct SiS_Private *SiS_Pr, int shift) | 7254 | SiS_ShiftXPos(struct SiS_Private *SiS_Pr, int shift) |
| @@ -8011,7 +7877,7 @@ SiS_SetCHTVReg(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 8011 | 7877 | ||
| 8012 | if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { | 7878 | if(SiS_Pr->SiS_IF_DEF_CH70xx == 1) { |
| 8013 | 7879 | ||
| 8014 | #ifdef SIS300 | 7880 | #ifdef CONFIG_FB_SIS_300 |
| 8015 | 7881 | ||
| 8016 | /* Chrontel 7005 - I assume that it does not come with a 315 series chip */ | 7882 | /* Chrontel 7005 - I assume that it does not come with a 315 series chip */ |
| 8017 | 7883 | ||
| @@ -8124,7 +7990,7 @@ SiS_SetCHTVReg(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 8124 | 7990 | ||
| 8125 | /* Chrontel 7019 - assumed that it does not come with a 300 series chip */ | 7991 | /* Chrontel 7019 - assumed that it does not come with a 300 series chip */ |
| 8126 | 7992 | ||
| 8127 | #ifdef SIS315H | 7993 | #ifdef CONFIG_FB_SIS_315 |
| 8128 | 7994 | ||
| 8129 | unsigned short temp; | 7995 | unsigned short temp; |
| 8130 | 7996 | ||
| @@ -8175,7 +8041,7 @@ SiS_SetCHTVReg(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short | |||
| 8175 | 8041 | ||
| 8176 | } | 8042 | } |
| 8177 | 8043 | ||
| 8178 | #ifdef SIS315H /* ----------- 315 series only ---------- */ | 8044 | #ifdef CONFIG_FB_SIS_315 /* ----------- 315 series only ---------- */ |
| 8179 | 8045 | ||
| 8180 | void | 8046 | void |
| 8181 | SiS_Chrontel701xBLOn(struct SiS_Private *SiS_Pr) | 8047 | SiS_Chrontel701xBLOn(struct SiS_Private *SiS_Pr) |
| @@ -8657,7 +8523,7 @@ SiS_ChrontelDoSomething1(struct SiS_Private *SiS_Pr) | |||
| 8657 | bool | 8523 | bool |
| 8658 | SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | 8524 | SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo) |
| 8659 | { | 8525 | { |
| 8660 | #ifdef SIS300 | 8526 | #ifdef CONFIG_FB_SIS_300 |
| 8661 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; | 8527 | unsigned char *ROMAddr = SiS_Pr->VirtualRomBase; |
| 8662 | #endif | 8528 | #endif |
| 8663 | unsigned short ModeIdIndex, RefreshRateTableIndex; | 8529 | unsigned short ModeIdIndex, RefreshRateTableIndex; |
| @@ -8703,16 +8569,6 @@ SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | |||
| 8703 | SiS_GetLVDSDesData(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); | 8569 | SiS_GetLVDSDesData(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); |
| 8704 | } | 8570 | } |
| 8705 | 8571 | ||
| 8706 | #ifdef SIS_XORG_XF86 | ||
| 8707 | #ifdef TWDEBUG | ||
| 8708 | xf86DrvMsg(0, X_INFO, "(init301: LCDHDES 0x%03x LCDVDES 0x%03x)\n", SiS_Pr->SiS_LCDHDES, SiS_Pr->SiS_LCDVDES); | ||
| 8709 | xf86DrvMsg(0, X_INFO, "(init301: HDE 0x%03x VDE 0x%03x)\n", SiS_Pr->SiS_HDE, SiS_Pr->SiS_VDE); | ||
| 8710 | xf86DrvMsg(0, X_INFO, "(init301: VGAHDE 0x%03x VGAVDE 0x%03x)\n", SiS_Pr->SiS_VGAHDE, SiS_Pr->SiS_VGAVDE); | ||
| 8711 | xf86DrvMsg(0, X_INFO, "(init301: HT 0x%03x VT 0x%03x)\n", SiS_Pr->SiS_HT, SiS_Pr->SiS_VT); | ||
| 8712 | xf86DrvMsg(0, X_INFO, "(init301: VGAHT 0x%03x VGAVT 0x%03x)\n", SiS_Pr->SiS_VGAHT, SiS_Pr->SiS_VGAVT); | ||
| 8713 | #endif | ||
| 8714 | #endif | ||
| 8715 | |||
| 8716 | if(SiS_Pr->SiS_SetFlag & LowModeTests) { | 8572 | if(SiS_Pr->SiS_SetFlag & LowModeTests) { |
| 8717 | SiS_SetGroup1(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); | 8573 | SiS_SetGroup1(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); |
| 8718 | } | 8574 | } |
| @@ -8722,12 +8578,12 @@ SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | |||
| 8722 | if(SiS_Pr->SiS_SetFlag & LowModeTests) { | 8578 | if(SiS_Pr->SiS_SetFlag & LowModeTests) { |
| 8723 | 8579 | ||
| 8724 | SiS_SetGroup2(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); | 8580 | SiS_SetGroup2(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); |
| 8725 | #ifdef SIS315H | 8581 | #ifdef CONFIG_FB_SIS_315 |
| 8726 | SiS_SetGroup2_C_ELV(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); | 8582 | SiS_SetGroup2_C_ELV(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); |
| 8727 | #endif | 8583 | #endif |
| 8728 | SiS_SetGroup3(SiS_Pr, ModeNo, ModeIdIndex); | 8584 | SiS_SetGroup3(SiS_Pr, ModeNo, ModeIdIndex); |
| 8729 | SiS_SetGroup4(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); | 8585 | SiS_SetGroup4(SiS_Pr, ModeNo, ModeIdIndex, RefreshRateTableIndex); |
| 8730 | #ifdef SIS315H | 8586 | #ifdef CONFIG_FB_SIS_315 |
| 8731 | SiS_SetGroup4_C_ELV(SiS_Pr, ModeNo, ModeIdIndex); | 8587 | SiS_SetGroup4_C_ELV(SiS_Pr, ModeNo, ModeIdIndex); |
| 8732 | #endif | 8588 | #endif |
| 8733 | SiS_SetGroup5(SiS_Pr, ModeNo, ModeIdIndex); | 8589 | SiS_SetGroup5(SiS_Pr, ModeNo, ModeIdIndex); |
| @@ -8758,7 +8614,7 @@ SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | |||
| 8758 | if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { | 8614 | if(SiS_Pr->SiS_IF_DEF_CH70xx != 0) { |
| 8759 | if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { | 8615 | if(SiS_Pr->SiS_VBInfo & (SetCRT2ToLCD | SetCRT2ToLCDA)) { |
| 8760 | if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { | 8616 | if(SiS_Pr->SiS_IF_DEF_CH70xx == 2) { |
| 8761 | #ifdef SIS315H | 8617 | #ifdef CONFIG_FB_SIS_315 |
| 8762 | SiS_SetCH701xForLCD(SiS_Pr); | 8618 | SiS_SetCH701xForLCD(SiS_Pr); |
| 8763 | #endif | 8619 | #endif |
| 8764 | } | 8620 | } |
| @@ -8771,7 +8627,7 @@ SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | |||
| 8771 | 8627 | ||
| 8772 | } | 8628 | } |
| 8773 | 8629 | ||
| 8774 | #ifdef SIS300 | 8630 | #ifdef CONFIG_FB_SIS_300 |
| 8775 | if(SiS_Pr->ChipType < SIS_315H) { | 8631 | if(SiS_Pr->ChipType < SIS_315H) { |
| 8776 | if(SiS_Pr->SiS_SetFlag & LowModeTests) { | 8632 | if(SiS_Pr->SiS_SetFlag & LowModeTests) { |
| 8777 | if(SiS_Pr->SiS_UseOEM) { | 8633 | if(SiS_Pr->SiS_UseOEM) { |
| @@ -8794,7 +8650,7 @@ SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo) | |||
| 8794 | } | 8650 | } |
| 8795 | #endif | 8651 | #endif |
| 8796 | 8652 | ||
| 8797 | #ifdef SIS315H | 8653 | #ifdef CONFIG_FB_SIS_315 |
| 8798 | if(SiS_Pr->ChipType >= SIS_315H) { | 8654 | if(SiS_Pr->ChipType >= SIS_315H) { |
| 8799 | if(SiS_Pr->SiS_SetFlag & LowModeTests) { | 8655 | if(SiS_Pr->SiS_SetFlag & LowModeTests) { |
| 8800 | if(SiS_Pr->ChipType < SIS_661) { | 8656 | if(SiS_Pr->ChipType < SIS_661) { |
| @@ -8873,7 +8729,7 @@ SiS_SetupDDCN(struct SiS_Private *SiS_Pr) | |||
| 8873 | } | 8729 | } |
| 8874 | } | 8730 | } |
| 8875 | 8731 | ||
| 8876 | #ifdef SIS300 | 8732 | #ifdef CONFIG_FB_SIS_300 |
| 8877 | static unsigned char * | 8733 | static unsigned char * |
| 8878 | SiS_SetTrumpBlockLoop(struct SiS_Private *SiS_Pr, unsigned char *dataptr) | 8734 | SiS_SetTrumpBlockLoop(struct SiS_Private *SiS_Pr, unsigned char *dataptr) |
| 8879 | { | 8735 | { |
| @@ -8923,11 +8779,6 @@ SiS_SetTrumpionBlock(struct SiS_Private *SiS_Pr, unsigned char *dataptr) | |||
| 8923 | dataptr = SiS_SetTrumpBlockLoop(SiS_Pr, dataptr); | 8779 | dataptr = SiS_SetTrumpBlockLoop(SiS_Pr, dataptr); |
| 8924 | if(!dataptr) return false; | 8780 | if(!dataptr) return false; |
| 8925 | } | 8781 | } |
| 8926 | #ifdef SIS_XORG_XF86 | ||
| 8927 | #ifdef TWDEBUG | ||
| 8928 | xf86DrvMsg(0, X_INFO, "Trumpion block success\n"); | ||
| 8929 | #endif | ||
| 8930 | #endif | ||
| 8931 | return true; | 8782 | return true; |
| 8932 | } | 8783 | } |
| 8933 | #endif | 8784 | #endif |
| @@ -9002,9 +8853,7 @@ SiS_SetCH701x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val) | |||
| 9002 | SiS_SetChReg(SiS_Pr, reg, val, 0); | 8853 | SiS_SetChReg(SiS_Pr, reg, val, 0); |
| 9003 | } | 8854 | } |
| 9004 | 8855 | ||
| 9005 | #ifdef SIS_LINUX_KERNEL | ||
| 9006 | static | 8856 | static |
| 9007 | #endif | ||
| 9008 | void | 8857 | void |
| 9009 | SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val) | 8858 | SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val) |
| 9010 | { | 8859 | { |
| @@ -9091,9 +8940,7 @@ SiS_GetCH701x(struct SiS_Private *SiS_Pr, unsigned short tempbx) | |||
| 9091 | 8940 | ||
| 9092 | /* Read from Chrontel 70xx */ | 8941 | /* Read from Chrontel 70xx */ |
| 9093 | /* Parameter is [Register no (S7-S0)] */ | 8942 | /* Parameter is [Register no (S7-S0)] */ |
| 9094 | #ifdef SIS_LINUX_KERNEL | ||
| 9095 | static | 8943 | static |
| 9096 | #endif | ||
| 9097 | unsigned short | 8944 | unsigned short |
| 9098 | SiS_GetCH70xx(struct SiS_Private *SiS_Pr, unsigned short tempbx) | 8945 | SiS_GetCH70xx(struct SiS_Private *SiS_Pr, unsigned short tempbx) |
| 9099 | { | 8946 | { |
| @@ -9114,9 +8961,7 @@ SiS_SetCH70xxANDOR(struct SiS_Private *SiS_Pr, unsigned short reg, | |||
| 9114 | } | 8961 | } |
| 9115 | 8962 | ||
| 9116 | /* Our own DDC functions */ | 8963 | /* Our own DDC functions */ |
| 9117 | #ifndef SIS_XORG_XF86 | ||
| 9118 | static | 8964 | static |
| 9119 | #endif | ||
| 9120 | unsigned short | 8965 | unsigned short |
| 9121 | SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags, int VGAEngine, | 8966 | SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags, int VGAEngine, |
| 9122 | unsigned short adaptnum, unsigned short DDCdatatype, bool checkcr32, | 8967 | unsigned short adaptnum, unsigned short DDCdatatype, bool checkcr32, |
| @@ -9224,12 +9069,6 @@ SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags, int VGAEngine, | |||
| 9224 | 9069 | ||
| 9225 | SiS_SetupDDCN(SiS_Pr); | 9070 | SiS_SetupDDCN(SiS_Pr); |
| 9226 | 9071 | ||
| 9227 | #ifdef SIS_XORG_XF86 | ||
| 9228 | #ifdef TWDEBUG | ||
| 9229 | xf86DrvMsg(0, X_INFO, "DDC Port %x Index %x Shift %d\n", | ||
| 9230 | SiS_Pr->SiS_DDC_Port, SiS_Pr->SiS_DDC_Index, temp); | ||
| 9231 | #endif | ||
| 9232 | #endif | ||
| 9233 | return 0; | 9072 | return 0; |
| 9234 | } | 9073 | } |
| 9235 | 9074 | ||
| @@ -9292,11 +9131,6 @@ SiS_DoProbeDDC(struct SiS_Private *SiS_Pr) | |||
| 9292 | SiS_SetSwitchDDC2(SiS_Pr); | 9131 | SiS_SetSwitchDDC2(SiS_Pr); |
| 9293 | if(SiS_PrepareDDC(SiS_Pr)) { | 9132 | if(SiS_PrepareDDC(SiS_Pr)) { |
| 9294 | SiS_SetStop(SiS_Pr); | 9133 | SiS_SetStop(SiS_Pr); |
| 9295 | #ifdef SIS_XORG_XF86 | ||
| 9296 | #ifdef TWDEBUG | ||
| 9297 | xf86DrvMsg(0, X_INFO, "Probe: Prepare failed\n"); | ||
| 9298 | #endif | ||
| 9299 | #endif | ||
| 9300 | return 0xFFFF; | 9134 | return 0xFFFF; |
| 9301 | } | 9135 | } |
| 9302 | mask = 0xf0; | 9136 | mask = 0xf0; |
| @@ -9310,11 +9144,6 @@ SiS_DoProbeDDC(struct SiS_Private *SiS_Pr) | |||
| 9310 | } else { | 9144 | } else { |
| 9311 | failed = true; | 9145 | failed = true; |
| 9312 | ret = 0xFFFF; | 9146 | ret = 0xFFFF; |
| 9313 | #ifdef SIS_XORG_XF86 | ||
| 9314 | #ifdef TWDEBUG | ||
| 9315 | xf86DrvMsg(0, X_INFO, "Probe: Read 1 failed\n"); | ||
| 9316 | #endif | ||
| 9317 | #endif | ||
| 9318 | } | 9147 | } |
| 9319 | } | 9148 | } |
| 9320 | if(!failed) { | 9149 | if(!failed) { |
| @@ -9324,11 +9153,6 @@ SiS_DoProbeDDC(struct SiS_Private *SiS_Pr) | |||
| 9324 | if(temp == value) ret = 0; | 9153 | if(temp == value) ret = 0; |
| 9325 | else { | 9154 | else { |
| 9326 | ret = 0xFFFF; | 9155 | ret = 0xFFFF; |
| 9327 | #ifdef SIS_XORG_XF86 | ||
| 9328 | #ifdef TWDEBUG | ||
| 9329 | xf86DrvMsg(0, X_INFO, "Probe: Read 2 failed\n"); | ||
| 9330 | #endif | ||
| 9331 | #endif | ||
| 9332 | if(SiS_Pr->SiS_DDC_DeviceAddr == 0xa0) { | 9156 | if(SiS_Pr->SiS_DDC_DeviceAddr == 0xa0) { |
| 9333 | if(temp == 0x30) ret = 0; | 9157 | if(temp == 0x30) ret = 0; |
| 9334 | } | 9158 | } |
| @@ -9338,9 +9162,7 @@ SiS_DoProbeDDC(struct SiS_Private *SiS_Pr) | |||
| 9338 | return ret; | 9162 | return ret; |
| 9339 | } | 9163 | } |
| 9340 | 9164 | ||
| 9341 | #ifndef SIS_XORG_XF86 | ||
| 9342 | static | 9165 | static |
| 9343 | #endif | ||
| 9344 | unsigned short | 9166 | unsigned short |
| 9345 | SiS_ProbeDDC(struct SiS_Private *SiS_Pr) | 9167 | SiS_ProbeDDC(struct SiS_Private *SiS_Pr) |
| 9346 | { | 9168 | { |
| @@ -9357,9 +9179,7 @@ SiS_ProbeDDC(struct SiS_Private *SiS_Pr) | |||
| 9357 | return flag; | 9179 | return flag; |
| 9358 | } | 9180 | } |
| 9359 | 9181 | ||
| 9360 | #ifndef SIS_XORG_XF86 | ||
| 9361 | static | 9182 | static |
| 9362 | #endif | ||
| 9363 | unsigned short | 9183 | unsigned short |
| 9364 | SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype, unsigned char *buffer) | 9184 | SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype, unsigned char *buffer) |
| 9365 | { | 9185 | { |
| @@ -9606,11 +9426,6 @@ SiS_SetSCLKHigh(struct SiS_Private *SiS_Pr) | |||
| 9606 | temp = SiS_GetReg(SiS_Pr->SiS_DDC_Port,SiS_Pr->SiS_DDC_Index); | 9426 | temp = SiS_GetReg(SiS_Pr->SiS_DDC_Port,SiS_Pr->SiS_DDC_Index); |
| 9607 | } while((!(temp & SiS_Pr->SiS_DDC_Clk)) && --watchdog); | 9427 | } while((!(temp & SiS_Pr->SiS_DDC_Clk)) && --watchdog); |
| 9608 | if (!watchdog) { | 9428 | if (!watchdog) { |
| 9609 | #ifdef SIS_XORG_XF86 | ||
| 9610 | #ifdef TWDEBUG | ||
| 9611 | xf86DrvMsg(0, X_INFO, "SetClkHigh failed\n"); | ||
| 9612 | #endif | ||
| 9613 | #endif | ||
| 9614 | return 0xFFFF; | 9429 | return 0xFFFF; |
| 9615 | } | 9430 | } |
| 9616 | SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT); | 9431 | SiS_DDC2Delay(SiS_Pr,SiS_I2CDELAYSHORT); |
| @@ -9641,7 +9456,7 @@ SiS_CheckACK(struct SiS_Private *SiS_Pr) | |||
| 9641 | 9456 | ||
| 9642 | /* =============== SiS 315/330 O.E.M. ================= */ | 9457 | /* =============== SiS 315/330 O.E.M. ================= */ |
| 9643 | 9458 | ||
| 9644 | #ifdef SIS315H | 9459 | #ifdef CONFIG_FB_SIS_315 |
| 9645 | 9460 | ||
| 9646 | static unsigned short | 9461 | static unsigned short |
| 9647 | GetRAMDACromptr(struct SiS_Private *SiS_Pr) | 9462 | GetRAMDACromptr(struct SiS_Private *SiS_Pr) |
| @@ -10829,7 +10644,7 @@ SiS_FinalizeLCD(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned shor | |||
| 10829 | 10644 | ||
| 10830 | /* ================= SiS 300 O.E.M. ================== */ | 10645 | /* ================= SiS 300 O.E.M. ================== */ |
| 10831 | 10646 | ||
| 10832 | #ifdef SIS300 | 10647 | #ifdef CONFIG_FB_SIS_300 |
| 10833 | 10648 | ||
| 10834 | static void | 10649 | static void |
| 10835 | SetOEMLCDData2(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex, | 10650 | SetOEMLCDData2(struct SiS_Private *SiS_Pr, unsigned short ModeNo,unsigned short ModeIdIndex, |
diff --git a/drivers/video/sis/init301.h b/drivers/video/sis/init301.h index 51d99222375d..e1fd31d0fddf 100644 --- a/drivers/video/sis/init301.h +++ b/drivers/video/sis/init301.h | |||
| @@ -53,15 +53,8 @@ | |||
| 53 | #ifndef _INIT301_H_ | 53 | #ifndef _INIT301_H_ |
| 54 | #define _INIT301_H_ | 54 | #define _INIT301_H_ |
| 55 | 55 | ||
| 56 | #include "osdef.h" | ||
| 57 | #include "initdef.h" | 56 | #include "initdef.h" |
| 58 | 57 | ||
| 59 | #ifdef SIS_XORG_XF86 | ||
| 60 | #include "sis.h" | ||
| 61 | #include "sis_regs.h" | ||
| 62 | #endif | ||
| 63 | |||
| 64 | #ifdef SIS_LINUX_KERNEL | ||
| 65 | #include "vgatypes.h" | 58 | #include "vgatypes.h" |
| 66 | #include "vstruct.h" | 59 | #include "vstruct.h" |
| 67 | #ifdef SIS_CP | 60 | #ifdef SIS_CP |
| @@ -72,7 +65,6 @@ | |||
| 72 | #include <linux/fb.h> | 65 | #include <linux/fb.h> |
| 73 | #include "sis.h" | 66 | #include "sis.h" |
| 74 | #include <video/sisfb.h> | 67 | #include <video/sisfb.h> |
| 75 | #endif | ||
| 76 | 68 | ||
| 77 | static const unsigned char SiS_YPbPrTable[3][64] = { | 69 | static const unsigned char SiS_YPbPrTable[3][64] = { |
| 78 | { | 70 | { |
| @@ -237,7 +229,7 @@ static const unsigned char SiS_Part2CLVX_6[] = { /* 1080i */ | |||
| 237 | 0xFF,0xFF, | 229 | 0xFF,0xFF, |
| 238 | }; | 230 | }; |
| 239 | 231 | ||
| 240 | #ifdef SIS315H | 232 | #ifdef CONFIG_FB_SIS_315 |
| 241 | /* 661 et al LCD data structure (2.03.00) */ | 233 | /* 661 et al LCD data structure (2.03.00) */ |
| 242 | static const unsigned char SiS_LCDStruct661[] = { | 234 | static const unsigned char SiS_LCDStruct661[] = { |
| 243 | /* 1024x768 */ | 235 | /* 1024x768 */ |
| @@ -279,7 +271,7 @@ static const unsigned char SiS_LCDStruct661[] = { | |||
| 279 | }; | 271 | }; |
| 280 | #endif | 272 | #endif |
| 281 | 273 | ||
| 282 | #ifdef SIS300 | 274 | #ifdef CONFIG_FB_SIS_300 |
| 283 | static unsigned char SiS300_TrumpionData[14][80] = { | 275 | static unsigned char SiS300_TrumpionData[14][80] = { |
| 284 | { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02, | 276 | { 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02, |
| 285 | 0x20,0x03,0x0B,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x10,0x00,0x00,0x04,0x23, | 277 | 0x20,0x03,0x0B,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x10,0x00,0x00,0x04,0x23, |
| @@ -356,9 +348,6 @@ static unsigned char SiS300_TrumpionData[14][80] = { | |||
| 356 | #endif | 348 | #endif |
| 357 | 349 | ||
| 358 | void SiS_UnLockCRT2(struct SiS_Private *SiS_Pr); | 350 | void SiS_UnLockCRT2(struct SiS_Private *SiS_Pr); |
| 359 | #ifndef SIS_LINUX_KERNEL | ||
| 360 | void SiS_LockCRT2(struct SiS_Private *SiS_Pr); | ||
| 361 | #endif | ||
| 362 | void SiS_EnableCRT2(struct SiS_Private *SiS_Pr); | 351 | void SiS_EnableCRT2(struct SiS_Private *SiS_Pr); |
| 363 | unsigned short SiS_GetRatePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex); | 352 | unsigned short SiS_GetRatePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex); |
| 364 | void SiS_WaitRetrace1(struct SiS_Private *SiS_Pr); | 353 | void SiS_WaitRetrace1(struct SiS_Private *SiS_Pr); |
| @@ -375,9 +364,6 @@ unsigned short SiS_GetVCLK2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo | |||
| 375 | unsigned short RefreshRateTableIndex); | 364 | unsigned short RefreshRateTableIndex); |
| 376 | unsigned short SiS_GetResInfo(struct SiS_Private *SiS_Pr,unsigned short ModeNo,unsigned short ModeIdIndex); | 365 | unsigned short SiS_GetResInfo(struct SiS_Private *SiS_Pr,unsigned short ModeNo,unsigned short ModeIdIndex); |
| 377 | void SiS_DisableBridge(struct SiS_Private *SiS_Pr); | 366 | void SiS_DisableBridge(struct SiS_Private *SiS_Pr); |
| 378 | #ifndef SIS_LINUX_KERNEL | ||
| 379 | void SiS_EnableBridge(struct SiS_Private *SiS_Pr); | ||
| 380 | #endif | ||
| 381 | bool SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo); | 367 | bool SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo); |
| 382 | void SiS_SiS30xBLOn(struct SiS_Private *SiS_Pr); | 368 | void SiS_SiS30xBLOn(struct SiS_Private *SiS_Pr); |
| 383 | void SiS_SiS30xBLOff(struct SiS_Private *SiS_Pr); | 369 | void SiS_SiS30xBLOff(struct SiS_Private *SiS_Pr); |
| @@ -386,13 +372,9 @@ void SiS_SetCH700x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned cha | |||
| 386 | unsigned short SiS_GetCH700x(struct SiS_Private *SiS_Pr, unsigned short tempax); | 372 | unsigned short SiS_GetCH700x(struct SiS_Private *SiS_Pr, unsigned short tempax); |
| 387 | void SiS_SetCH701x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val); | 373 | void SiS_SetCH701x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val); |
| 388 | unsigned short SiS_GetCH701x(struct SiS_Private *SiS_Pr, unsigned short tempax); | 374 | unsigned short SiS_GetCH701x(struct SiS_Private *SiS_Pr, unsigned short tempax); |
| 389 | #ifndef SIS_LINUX_KERNEL | ||
| 390 | void SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val); | ||
| 391 | unsigned short SiS_GetCH70xx(struct SiS_Private *SiS_Pr, unsigned short tempax); | ||
| 392 | #endif | ||
| 393 | void SiS_SetCH70xxANDOR(struct SiS_Private *SiS_Pr, unsigned short reg, | 375 | void SiS_SetCH70xxANDOR(struct SiS_Private *SiS_Pr, unsigned short reg, |
| 394 | unsigned char orval,unsigned short andval); | 376 | unsigned char orval,unsigned short andval); |
| 395 | #ifdef SIS315H | 377 | #ifdef CONFIG_FB_SIS_315 |
| 396 | static void SiS_Chrontel701xOn(struct SiS_Private *SiS_Pr); | 378 | static void SiS_Chrontel701xOn(struct SiS_Private *SiS_Pr); |
| 397 | static void SiS_Chrontel701xOff(struct SiS_Private *SiS_Pr); | 379 | static void SiS_Chrontel701xOff(struct SiS_Private *SiS_Pr); |
| 398 | static void SiS_ChrontelInitTVVSync(struct SiS_Private *SiS_Pr); | 380 | static void SiS_ChrontelInitTVVSync(struct SiS_Private *SiS_Pr); |
| @@ -401,7 +383,7 @@ void SiS_Chrontel701xBLOn(struct SiS_Private *SiS_Pr); | |||
| 401 | void SiS_Chrontel701xBLOff(struct SiS_Private *SiS_Pr); | 383 | void SiS_Chrontel701xBLOff(struct SiS_Private *SiS_Pr); |
| 402 | #endif /* 315 */ | 384 | #endif /* 315 */ |
| 403 | 385 | ||
| 404 | #ifdef SIS300 | 386 | #ifdef CONFIG_FB_SIS_300 |
| 405 | static bool SiS_SetTrumpionBlock(struct SiS_Private *SiS_Pr, unsigned char *dataptr); | 387 | static bool SiS_SetTrumpionBlock(struct SiS_Private *SiS_Pr, unsigned char *dataptr); |
| 406 | void SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo); | 388 | void SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo); |
| 407 | #endif | 389 | #endif |
| @@ -412,21 +394,12 @@ unsigned short SiS_HandleDDC(struct SiS_Private *SiS_Pr, unsigned int VBFlags, i | |||
| 412 | unsigned short adaptnum, unsigned short DDCdatatype, | 394 | unsigned short adaptnum, unsigned short DDCdatatype, |
| 413 | unsigned char *buffer, unsigned int VBFlags2); | 395 | unsigned char *buffer, unsigned int VBFlags2); |
| 414 | 396 | ||
| 415 | #ifdef SIS_XORG_XF86 | ||
| 416 | unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags, | ||
| 417 | int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype, | ||
| 418 | bool checkcr32, unsigned int VBFlags2); | ||
| 419 | unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr); | ||
| 420 | unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype, | ||
| 421 | unsigned char *buffer); | ||
| 422 | #else | ||
| 423 | static unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags, | 397 | static unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags, |
| 424 | int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype, | 398 | int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype, |
| 425 | bool checkcr32, unsigned int VBFlags2); | 399 | bool checkcr32, unsigned int VBFlags2); |
| 426 | static unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr); | 400 | static unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr); |
| 427 | static unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype, | 401 | static unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype, |
| 428 | unsigned char *buffer); | 402 | unsigned char *buffer); |
| 429 | #endif | ||
| 430 | static void SiS_SetSwitchDDC2(struct SiS_Private *SiS_Pr); | 403 | static void SiS_SetSwitchDDC2(struct SiS_Private *SiS_Pr); |
| 431 | static unsigned short SiS_SetStart(struct SiS_Private *SiS_Pr); | 404 | static unsigned short SiS_SetStart(struct SiS_Private *SiS_Pr); |
| 432 | static unsigned short SiS_SetStop(struct SiS_Private *SiS_Pr); | 405 | static unsigned short SiS_SetStop(struct SiS_Private *SiS_Pr); |
| @@ -441,13 +414,13 @@ static unsigned short SiS_PrepareDDC(struct SiS_Private *SiS_Pr); | |||
| 441 | static void SiS_SendACK(struct SiS_Private *SiS_Pr, unsigned short yesno); | 414 | static void SiS_SendACK(struct SiS_Private *SiS_Pr, unsigned short yesno); |
| 442 | static unsigned short SiS_DoProbeDDC(struct SiS_Private *SiS_Pr); | 415 | static unsigned short SiS_DoProbeDDC(struct SiS_Private *SiS_Pr); |
| 443 | 416 | ||
| 444 | #ifdef SIS300 | 417 | #ifdef CONFIG_FB_SIS_300 |
| 445 | static void SiS_OEM300Setting(struct SiS_Private *SiS_Pr, | 418 | static void SiS_OEM300Setting(struct SiS_Private *SiS_Pr, |
| 446 | unsigned short ModeNo, unsigned short ModeIdIndex, unsigned short RefTabindex); | 419 | unsigned short ModeNo, unsigned short ModeIdIndex, unsigned short RefTabindex); |
| 447 | static void SetOEMLCDData2(struct SiS_Private *SiS_Pr, | 420 | static void SetOEMLCDData2(struct SiS_Private *SiS_Pr, |
| 448 | unsigned short ModeNo, unsigned short ModeIdIndex,unsigned short RefTableIndex); | 421 | unsigned short ModeNo, unsigned short ModeIdIndex,unsigned short RefTableIndex); |
| 449 | #endif | 422 | #endif |
| 450 | #ifdef SIS315H | 423 | #ifdef CONFIG_FB_SIS_315 |
| 451 | static void SiS_OEM310Setting(struct SiS_Private *SiS_Pr, | 424 | static void SiS_OEM310Setting(struct SiS_Private *SiS_Pr, |
| 452 | unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI); | 425 | unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI); |
| 453 | static void SiS_OEM661Setting(struct SiS_Private *SiS_Pr, | 426 | static void SiS_OEM661Setting(struct SiS_Private *SiS_Pr, |
| @@ -482,15 +455,13 @@ extern void SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short M | |||
| 482 | extern void SiS_CalcCRRegisters(struct SiS_Private *SiS_Pr, int depth); | 455 | extern void SiS_CalcCRRegisters(struct SiS_Private *SiS_Pr, int depth); |
| 483 | extern unsigned short SiS_GetRefCRTVCLK(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide); | 456 | extern unsigned short SiS_GetRefCRTVCLK(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide); |
| 484 | extern unsigned short SiS_GetRefCRT1CRTC(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide); | 457 | extern unsigned short SiS_GetRefCRT1CRTC(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide); |
| 485 | #ifdef SIS300 | 458 | #ifdef CONFIG_FB_SIS_300 |
| 486 | extern void SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *tempbx, | 459 | extern void SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *tempbx, |
| 487 | unsigned short *tempcl); | 460 | unsigned short *tempcl); |
| 488 | extern unsigned short SiS_GetFIFOThresholdB300(unsigned short tempbx, unsigned short tempcl); | 461 | extern unsigned short SiS_GetFIFOThresholdB300(unsigned short tempbx, unsigned short tempcl); |
| 489 | extern unsigned short SiS_GetLatencyFactor630(struct SiS_Private *SiS_Pr, unsigned short index); | 462 | extern unsigned short SiS_GetLatencyFactor630(struct SiS_Private *SiS_Pr, unsigned short index); |
| 490 | #ifdef SIS_LINUX_KERNEL | ||
| 491 | extern unsigned int sisfb_read_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg); | 463 | extern unsigned int sisfb_read_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg); |
| 492 | extern unsigned int sisfb_read_lpc_pci_dword(struct SiS_Private *SiS_Pr, int reg); | 464 | extern unsigned int sisfb_read_lpc_pci_dword(struct SiS_Private *SiS_Pr, int reg); |
| 493 | #endif | 465 | #endif |
| 494 | #endif | ||
| 495 | 466 | ||
| 496 | #endif | 467 | #endif |
diff --git a/drivers/video/sis/initextlfb.c b/drivers/video/sis/initextlfb.c index 99c04a4855d1..9dec64da4015 100644 --- a/drivers/video/sis/initextlfb.c +++ b/drivers/video/sis/initextlfb.c | |||
| @@ -25,7 +25,6 @@ | |||
| 25 | * Author: Thomas Winischhofer <thomas@winischhofer.net> | 25 | * Author: Thomas Winischhofer <thomas@winischhofer.net> |
| 26 | */ | 26 | */ |
| 27 | 27 | ||
| 28 | #include "osdef.h" | ||
| 29 | #include "initdef.h" | 28 | #include "initdef.h" |
| 30 | #include "vgatypes.h" | 29 | #include "vgatypes.h" |
| 31 | #include "vstruct.h" | 30 | #include "vstruct.h" |
| @@ -59,7 +58,7 @@ sisfb_mode_rate_to_dclock(struct SiS_Private *SiS_Pr, unsigned char modeno, | |||
| 59 | 58 | ||
| 60 | if(rateindex > 0) rateindex--; | 59 | if(rateindex > 0) rateindex--; |
| 61 | 60 | ||
| 62 | #ifdef SIS315H | 61 | #ifdef CONFIG_FB_SIS_315 |
| 63 | switch(ModeNo) { | 62 | switch(ModeNo) { |
| 64 | case 0x5a: ModeNo = 0x50; break; | 63 | case 0x5a: ModeNo = 0x50; break; |
| 65 | case 0x5b: ModeNo = 0x56; | 64 | case 0x5b: ModeNo = 0x56; |
| @@ -103,7 +102,7 @@ sisfb_mode_rate_to_ddata(struct SiS_Private *SiS_Pr, unsigned char modeno, | |||
| 103 | 102 | ||
| 104 | if(rateindex > 0) rateindex--; | 103 | if(rateindex > 0) rateindex--; |
| 105 | 104 | ||
| 106 | #ifdef SIS315H | 105 | #ifdef CONFIG_FB_SIS_315 |
| 107 | switch(ModeNo) { | 106 | switch(ModeNo) { |
| 108 | case 0x5a: ModeNo = 0x50; break; | 107 | case 0x5a: ModeNo = 0x50; break; |
| 109 | case 0x5b: ModeNo = 0x56; | 108 | case 0x5b: ModeNo = 0x56; |
| @@ -187,7 +186,7 @@ sisfb_gettotalfrommode(struct SiS_Private *SiS_Pr, unsigned char modeno, int *ht | |||
| 187 | 186 | ||
| 188 | if(rateindex > 0) rateindex--; | 187 | if(rateindex > 0) rateindex--; |
| 189 | 188 | ||
| 190 | #ifdef SIS315H | 189 | #ifdef CONFIG_FB_SIS_315 |
| 191 | switch(ModeNo) { | 190 | switch(ModeNo) { |
| 192 | case 0x5a: ModeNo = 0x50; break; | 191 | case 0x5a: ModeNo = 0x50; break; |
| 193 | case 0x5b: ModeNo = 0x56; | 192 | case 0x5b: ModeNo = 0x56; |
diff --git a/drivers/video/sis/osdef.h b/drivers/video/sis/osdef.h deleted file mode 100644 index 6ff8f988a1a7..000000000000 --- a/drivers/video/sis/osdef.h +++ /dev/null | |||
| @@ -1,133 +0,0 @@ | |||
| 1 | /* $XFree86$ */ | ||
| 2 | /* $XdotOrg$ */ | ||
| 3 | /* | ||
| 4 | * OS depending defines | ||
| 5 | * | ||
| 6 | * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria | ||
| 7 | * | ||
| 8 | * If distributed as part of the Linux kernel, the following license terms | ||
| 9 | * apply: | ||
| 10 | * | ||
| 11 | * * This program is free software; you can redistribute it and/or modify | ||
| 12 | * * it under the terms of the GNU General Public License as published by | ||
| 13 | * * the Free Software Foundation; either version 2 of the named License, | ||
| 14 | * * or any later version. | ||
| 15 | * * | ||
| 16 | * * This program is distributed in the hope that it will be useful, | ||
| 17 | * * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 18 | * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 19 | * * GNU General Public License for more details. | ||
| 20 | * * | ||
| 21 | * * You should have received a copy of the GNU General Public License | ||
| 22 | * * along with this program; if not, write to the Free Software | ||
| 23 | * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA | ||
| 24 | * | ||
| 25 | * Otherwise, the following license terms apply: | ||
| 26 | * | ||
| 27 | * * Redistribution and use in source and binary forms, with or without | ||
| 28 | * * modification, are permitted provided that the following conditions | ||
| 29 | * * are met: | ||
| 30 | * * 1) Redistributions of source code must retain the above copyright | ||
| 31 | * * notice, this list of conditions and the following disclaimer. | ||
| 32 | * * 2) Redistributions in binary form must reproduce the above copyright | ||
| 33 | * * notice, this list of conditions and the following disclaimer in the | ||
| 34 | * * documentation and/or other materials provided with the distribution. | ||
| 35 | * * 3) The name of the author may not be used to endorse or promote products | ||
| 36 | * * derived from this software without specific prior written permission. | ||
| 37 | * * | ||
| 38 | * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | ||
| 39 | * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
| 40 | * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||
| 41 | * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
| 42 | * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 43 | * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
| 44 | * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
| 45 | * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| 46 | * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
| 47 | * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| 48 | * | ||
| 49 | * Author: Thomas Winischhofer <thomas@winischhofer.net> | ||
| 50 | * Silicon Integrated Systems, Inc. (used by permission) | ||
| 51 | * | ||
| 52 | */ | ||
| 53 | |||
| 54 | #ifndef _SIS_OSDEF_H_ | ||
| 55 | #define _SIS_OSDEF_H_ | ||
| 56 | |||
| 57 | /* The choices are: */ | ||
| 58 | #define SIS_LINUX_KERNEL /* Linux kernel framebuffer */ | ||
| 59 | #undef SIS_XORG_XF86 /* XFree86/X.org */ | ||
| 60 | |||
| 61 | #ifdef OutPortByte | ||
| 62 | #undef OutPortByte | ||
| 63 | #endif | ||
| 64 | |||
| 65 | #ifdef OutPortWord | ||
| 66 | #undef OutPortWord | ||
| 67 | #endif | ||
| 68 | |||
| 69 | #ifdef OutPortLong | ||
| 70 | #undef OutPortLong | ||
| 71 | #endif | ||
| 72 | |||
| 73 | #ifdef InPortByte | ||
| 74 | #undef InPortByte | ||
| 75 | #endif | ||
| 76 | |||
| 77 | #ifdef InPortWord | ||
| 78 | #undef InPortWord | ||
| 79 | #endif | ||
| 80 | |||
| 81 | #ifdef InPortLong | ||
| 82 | #undef InPortLong | ||
| 83 | #endif | ||
| 84 | |||
| 85 | /**********************************************************************/ | ||
| 86 | /* LINUX KERNEL */ | ||
| 87 | /**********************************************************************/ | ||
| 88 | |||
| 89 | #ifdef SIS_LINUX_KERNEL | ||
| 90 | |||
| 91 | #ifdef CONFIG_FB_SIS_300 | ||
| 92 | #define SIS300 | ||
| 93 | #endif | ||
| 94 | |||
| 95 | #ifdef CONFIG_FB_SIS_315 | ||
| 96 | #define SIS315H | ||
| 97 | #endif | ||
| 98 | |||
| 99 | #if !defined(SIS300) && !defined(SIS315H) | ||
| 100 | #warning Neither CONFIG_FB_SIS_300 nor CONFIG_FB_SIS_315 is set | ||
| 101 | #warning sisfb will not work! | ||
| 102 | #endif | ||
| 103 | |||
| 104 | #define OutPortByte(p,v) outb((u8)(v),(SISIOADDRESS)(p)) | ||
| 105 | #define OutPortWord(p,v) outw((u16)(v),(SISIOADDRESS)(p)) | ||
| 106 | #define OutPortLong(p,v) outl((u32)(v),(SISIOADDRESS)(p)) | ||
| 107 | #define InPortByte(p) inb((SISIOADDRESS)(p)) | ||
| 108 | #define InPortWord(p) inw((SISIOADDRESS)(p)) | ||
| 109 | #define InPortLong(p) inl((SISIOADDRESS)(p)) | ||
| 110 | #define SiS_SetMemory(MemoryAddress,MemorySize,value) memset_io(MemoryAddress, value, MemorySize) | ||
| 111 | |||
| 112 | #endif /* LINUX_KERNEL */ | ||
| 113 | |||
| 114 | /**********************************************************************/ | ||
| 115 | /* XFree86/X.org */ | ||
| 116 | /**********************************************************************/ | ||
| 117 | |||
| 118 | #ifdef SIS_XORG_XF86 | ||
| 119 | |||
| 120 | #define SIS300 | ||
| 121 | #define SIS315H | ||
| 122 | |||
| 123 | #define OutPortByte(p,v) outSISREG((IOADDRESS)(p),(CARD8)(v)) | ||
| 124 | #define OutPortWord(p,v) outSISREGW((IOADDRESS)(p),(CARD16)(v)) | ||
| 125 | #define OutPortLong(p,v) outSISREGL((IOADDRESS)(p),(CARD32)(v)) | ||
| 126 | #define InPortByte(p) inSISREG((IOADDRESS)(p)) | ||
| 127 | #define InPortWord(p) inSISREGW((IOADDRESS)(p)) | ||
| 128 | #define InPortLong(p) inSISREGL((IOADDRESS)(p)) | ||
| 129 | #define SiS_SetMemory(MemoryAddress,MemorySize,value) memset(MemoryAddress, value, MemorySize) | ||
| 130 | |||
| 131 | #endif /* XF86 */ | ||
| 132 | |||
| 133 | #endif /* _OSDEF_H_ */ | ||
diff --git a/drivers/video/sis/sis.h b/drivers/video/sis/sis.h index 7c5710e3fb56..80d89d37c414 100644 --- a/drivers/video/sis/sis.h +++ b/drivers/video/sis/sis.h | |||
| @@ -24,7 +24,6 @@ | |||
| 24 | #ifndef _SIS_H_ | 24 | #ifndef _SIS_H_ |
| 25 | #define _SIS_H_ | 25 | #define _SIS_H_ |
| 26 | 26 | ||
| 27 | #include "osdef.h" | ||
| 28 | #include <video/sisfb.h> | 27 | #include <video/sisfb.h> |
| 29 | 28 | ||
| 30 | #include "vgatypes.h" | 29 | #include "vgatypes.h" |
diff --git a/drivers/video/sis/sis_main.c b/drivers/video/sis/sis_main.c index 3dde12b0ab06..7e3370f115b6 100644 --- a/drivers/video/sis/sis_main.c +++ b/drivers/video/sis/sis_main.c | |||
| @@ -60,6 +60,11 @@ | |||
| 60 | #include "sis.h" | 60 | #include "sis.h" |
| 61 | #include "sis_main.h" | 61 | #include "sis_main.h" |
| 62 | 62 | ||
| 63 | #if !defined(CONFIG_FB_SIS_300) && !defined(CONFIG_FB_SIS_315) | ||
| 64 | #warning Neither CONFIG_FB_SIS_300 nor CONFIG_FB_SIS_315 is set | ||
| 65 | #warning sisfb will not work! | ||
| 66 | #endif | ||
| 67 | |||
| 63 | static void sisfb_handle_command(struct sis_video_info *ivideo, | 68 | static void sisfb_handle_command(struct sis_video_info *ivideo, |
| 64 | struct sisfb_cmd *sisfb_command); | 69 | struct sisfb_cmd *sisfb_command); |
| 65 | 70 | ||
| @@ -4114,14 +4119,6 @@ sisfb_find_rom(struct pci_dev *pdev) | |||
| 4114 | if(sisfb_check_rom(rom_base, ivideo)) { | 4119 | if(sisfb_check_rom(rom_base, ivideo)) { |
| 4115 | 4120 | ||
| 4116 | if((myrombase = vmalloc(65536))) { | 4121 | if((myrombase = vmalloc(65536))) { |
| 4117 | |||
| 4118 | /* Work around bug in pci/rom.c: Folks forgot to check | ||
| 4119 | * whether the size retrieved from the BIOS image eventually | ||
| 4120 | * is larger than the mapped size | ||
| 4121 | */ | ||
| 4122 | if(pci_resource_len(pdev, PCI_ROM_RESOURCE) < romsize) | ||
| 4123 | romsize = pci_resource_len(pdev, PCI_ROM_RESOURCE); | ||
| 4124 | |||
| 4125 | memcpy_fromio(myrombase, rom_base, | 4122 | memcpy_fromio(myrombase, rom_base, |
| 4126 | (romsize > 65536) ? 65536 : romsize); | 4123 | (romsize > 65536) ? 65536 : romsize); |
| 4127 | } | 4124 | } |
| @@ -4155,23 +4152,6 @@ sisfb_find_rom(struct pci_dev *pdev) | |||
| 4155 | 4152 | ||
| 4156 | } | 4153 | } |
| 4157 | 4154 | ||
| 4158 | #else | ||
| 4159 | |||
| 4160 | pci_read_config_dword(pdev, PCI_ROM_ADDRESS, &temp); | ||
| 4161 | pci_write_config_dword(pdev, PCI_ROM_ADDRESS, | ||
| 4162 | (ivideo->video_base & PCI_ROM_ADDRESS_MASK) | PCI_ROM_ADDRESS_ENABLE); | ||
| 4163 | |||
| 4164 | rom_base = ioremap(ivideo->video_base, 65536); | ||
| 4165 | if(rom_base) { | ||
| 4166 | if(sisfb_check_rom(rom_base, ivideo)) { | ||
| 4167 | if((myrombase = vmalloc(65536))) | ||
| 4168 | memcpy_fromio(myrombase, rom_base, 65536); | ||
| 4169 | } | ||
| 4170 | iounmap(rom_base); | ||
| 4171 | } | ||
| 4172 | |||
| 4173 | pci_write_config_dword(pdev, PCI_ROM_ADDRESS, temp); | ||
| 4174 | |||
| 4175 | #endif | 4155 | #endif |
| 4176 | 4156 | ||
| 4177 | return myrombase; | 4157 | return myrombase; |
diff --git a/drivers/video/sis/vgatypes.h b/drivers/video/sis/vgatypes.h index 81a22eaabfde..12c0dfaf2518 100644 --- a/drivers/video/sis/vgatypes.h +++ b/drivers/video/sis/vgatypes.h | |||
| @@ -55,21 +55,10 @@ | |||
| 55 | 55 | ||
| 56 | #define SISIOMEMTYPE | 56 | #define SISIOMEMTYPE |
| 57 | 57 | ||
| 58 | #ifdef SIS_LINUX_KERNEL | ||
| 59 | typedef unsigned long SISIOADDRESS; | 58 | typedef unsigned long SISIOADDRESS; |
| 60 | #include <linux/types.h> /* Need __iomem */ | 59 | #include <linux/types.h> /* Need __iomem */ |
| 61 | #undef SISIOMEMTYPE | 60 | #undef SISIOMEMTYPE |
| 62 | #define SISIOMEMTYPE __iomem | 61 | #define SISIOMEMTYPE __iomem |
| 63 | #endif | ||
| 64 | |||
| 65 | #ifdef SIS_XORG_XF86 | ||
| 66 | #if XF86_VERSION_CURRENT < XF86_VERSION_NUMERIC(4,2,0,0,0) | ||
| 67 | typedef unsigned long IOADDRESS; | ||
| 68 | typedef unsigned long SISIOADDRESS; | ||
| 69 | #else | ||
| 70 | typedef IOADDRESS SISIOADDRESS; | ||
| 71 | #endif | ||
| 72 | #endif | ||
| 73 | 62 | ||
| 74 | typedef enum _SIS_CHIP_TYPE { | 63 | typedef enum _SIS_CHIP_TYPE { |
| 75 | SIS_VGALegacy = 0, | 64 | SIS_VGALegacy = 0, |
diff --git a/drivers/video/sis/vstruct.h b/drivers/video/sis/vstruct.h index bef4aae388d0..ea94d214dcff 100644 --- a/drivers/video/sis/vstruct.h +++ b/drivers/video/sis/vstruct.h | |||
| @@ -233,24 +233,15 @@ struct SiS_Private | |||
| 233 | { | 233 | { |
| 234 | unsigned char ChipType; | 234 | unsigned char ChipType; |
| 235 | unsigned char ChipRevision; | 235 | unsigned char ChipRevision; |
| 236 | #ifdef SIS_XORG_XF86 | ||
| 237 | PCITAG PciTag; | ||
| 238 | #endif | ||
| 239 | #ifdef SIS_LINUX_KERNEL | ||
| 240 | void *ivideo; | 236 | void *ivideo; |
| 241 | #endif | ||
| 242 | unsigned char *VirtualRomBase; | 237 | unsigned char *VirtualRomBase; |
| 243 | bool UseROM; | 238 | bool UseROM; |
| 244 | #ifdef SIS_LINUX_KERNEL | ||
| 245 | unsigned char SISIOMEMTYPE *VideoMemoryAddress; | 239 | unsigned char SISIOMEMTYPE *VideoMemoryAddress; |
| 246 | unsigned int VideoMemorySize; | 240 | unsigned int VideoMemorySize; |
| 247 | #endif | ||
| 248 | SISIOADDRESS IOAddress; | 241 | SISIOADDRESS IOAddress; |
| 249 | SISIOADDRESS IOAddress2; /* For dual chip XGI volari */ | 242 | SISIOADDRESS IOAddress2; /* For dual chip XGI volari */ |
| 250 | 243 | ||
| 251 | #ifdef SIS_LINUX_KERNEL | ||
| 252 | SISIOADDRESS RelIO; | 244 | SISIOADDRESS RelIO; |
| 253 | #endif | ||
| 254 | SISIOADDRESS SiS_P3c4; | 245 | SISIOADDRESS SiS_P3c4; |
| 255 | SISIOADDRESS SiS_P3d4; | 246 | SISIOADDRESS SiS_P3d4; |
| 256 | SISIOADDRESS SiS_P3c0; | 247 | SISIOADDRESS SiS_P3c0; |
| @@ -280,9 +271,6 @@ struct SiS_Private | |||
| 280 | unsigned short SiS_IF_DEF_FSTN; | 271 | unsigned short SiS_IF_DEF_FSTN; |
| 281 | unsigned short SiS_SysFlags; | 272 | unsigned short SiS_SysFlags; |
| 282 | unsigned char SiS_VGAINFO; | 273 | unsigned char SiS_VGAINFO; |
| 283 | #ifdef SIS_XORG_XF86 | ||
| 284 | unsigned short SiS_CP1, SiS_CP2, SiS_CP3, SiS_CP4; | ||
| 285 | #endif | ||
| 286 | bool SiS_UseROM; | 274 | bool SiS_UseROM; |
| 287 | bool SiS_ROMNew; | 275 | bool SiS_ROMNew; |
| 288 | bool SiS_XGIROM; | 276 | bool SiS_XGIROM; |
diff --git a/include/linux/fb.h b/include/linux/fb.h index 7fca3dc4e475..d1631d37e9e0 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h | |||
| @@ -1122,6 +1122,7 @@ extern const struct fb_videomode *fb_find_best_display(const struct fb_monspecs | |||
| 1122 | 1122 | ||
| 1123 | /* drivers/video/fbcmap.c */ | 1123 | /* drivers/video/fbcmap.c */ |
| 1124 | extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp); | 1124 | extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp); |
| 1125 | extern int fb_alloc_cmap_gfp(struct fb_cmap *cmap, int len, int transp, gfp_t flags); | ||
| 1125 | extern void fb_dealloc_cmap(struct fb_cmap *cmap); | 1126 | extern void fb_dealloc_cmap(struct fb_cmap *cmap); |
| 1126 | extern int fb_copy_cmap(const struct fb_cmap *from, struct fb_cmap *to); | 1127 | extern int fb_copy_cmap(const struct fb_cmap *from, struct fb_cmap *to); |
| 1127 | extern int fb_cmap_to_user(const struct fb_cmap *from, struct fb_cmap_user *to); | 1128 | extern int fb_cmap_to_user(const struct fb_cmap *from, struct fb_cmap_user *to); |
diff --git a/include/video/da8xx-fb.h b/include/video/da8xx-fb.h index 6316cdabf73f..89d43b3d4cb9 100644 --- a/include/video/da8xx-fb.h +++ b/include/video/da8xx-fb.h | |||
| @@ -99,7 +99,6 @@ struct lcd_sync_arg { | |||
| 99 | #define FBIPUT_COLOR _IOW('F', 6, int) | 99 | #define FBIPUT_COLOR _IOW('F', 6, int) |
| 100 | #define FBIPUT_HSYNC _IOW('F', 9, int) | 100 | #define FBIPUT_HSYNC _IOW('F', 9, int) |
| 101 | #define FBIPUT_VSYNC _IOW('F', 10, int) | 101 | #define FBIPUT_VSYNC _IOW('F', 10, int) |
| 102 | #define FBIO_WAITFORVSYNC _IOW('F', 0x20, u_int32_t) | ||
| 103 | 102 | ||
| 104 | #endif /* ifndef DA8XX_FB_H */ | 103 | #endif /* ifndef DA8XX_FB_H */ |
| 105 | 104 | ||
