Merge branch 'fbdev-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6
* 'fbdev-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6: sisfb: delete osdef.h sisfb: move the CONFIG warning to sis_main.c sisfb: replace SiS_SetMemory with memset_io sisfb: remove InPort/OutPort wrappers sisfb: use CONFIG_FB_SIS_301/315 instead of SIS301/315H sisfb: delete redudant #define SIS_LINUX_KERNEL sisfb: delete dead SIS_XORG_XF86 code sisfb: delete fallback code for pci_map_rom() sisfb: delete obsolete PCI ROM bug workaround fbdev: Update documentation index file. lxfb: Program panel v/h sync output polarity correctly fbcmap: integer overflow bug fbcmap: cleanup white space in fb_alloc_cmap() MAINTAINERS: Add fbdev patchwork entry, tidy up file patterns. fbdev: da8xx: punt duplicated FBIO_WAITFORVSYNC define fbdev: sh_mobile_lcdcfb: fix bug in reconfig()
This commit is contained in:
commit
e5fa506173
|
@ -4,33 +4,41 @@ please mail me.
|
||||||
Geert Uytterhoeven <geert@linux-m68k.org>
|
Geert Uytterhoeven <geert@linux-m68k.org>
|
||||||
|
|
||||||
00-INDEX
|
00-INDEX
|
||||||
- this file
|
- this file.
|
||||||
arkfb.txt
|
arkfb.txt
|
||||||
- info on the fbdev driver for ARK Logic chips.
|
- info on the fbdev driver for ARK Logic chips.
|
||||||
aty128fb.txt
|
aty128fb.txt
|
||||||
- info on the ATI Rage128 frame buffer driver.
|
- info on the ATI Rage128 frame buffer driver.
|
||||||
cirrusfb.txt
|
cirrusfb.txt
|
||||||
- info on the driver for Cirrus Logic chipsets.
|
- info on the driver for Cirrus Logic chipsets.
|
||||||
|
cmap_xfbdev.txt
|
||||||
|
- an introduction to fbdev's cmap structures.
|
||||||
deferred_io.txt
|
deferred_io.txt
|
||||||
- an introduction to deferred IO.
|
- an introduction to deferred IO.
|
||||||
|
efifb.txt
|
||||||
|
- info on the EFI platform driver for Intel based Apple computers.
|
||||||
|
ep93xx-fb.txt
|
||||||
|
- info on the driver for EP93xx LCD controller.
|
||||||
fbcon.txt
|
fbcon.txt
|
||||||
- intro to and usage guide for the framebuffer console (fbcon).
|
- intro to and usage guide for the framebuffer console (fbcon).
|
||||||
framebuffer.txt
|
framebuffer.txt
|
||||||
- introduction to frame buffer devices.
|
- introduction to frame buffer devices.
|
||||||
imacfb.txt
|
gxfb.txt
|
||||||
- info on the generic EFI platform driver for Intel based Macs.
|
- info on the framebuffer driver for AMD Geode GX2 based processors.
|
||||||
intel810.txt
|
intel810.txt
|
||||||
- documentation for the Intel 810/815 framebuffer driver.
|
- documentation for the Intel 810/815 framebuffer driver.
|
||||||
intelfb.txt
|
intelfb.txt
|
||||||
- docs for Intel 830M/845G/852GM/855GM/865G/915G/945G fb driver.
|
- docs for Intel 830M/845G/852GM/855GM/865G/915G/945G fb driver.
|
||||||
internals.txt
|
internals.txt
|
||||||
- quick overview of frame buffer device internals.
|
- quick overview of frame buffer device internals.
|
||||||
|
lxfb.txt
|
||||||
|
- info on the framebuffer driver for AMD Geode LX based processors.
|
||||||
matroxfb.txt
|
matroxfb.txt
|
||||||
- info on the Matrox framebuffer driver for Alpha, Intel and PPC.
|
- info on the Matrox framebuffer driver for Alpha, Intel and PPC.
|
||||||
|
metronomefb.txt
|
||||||
|
- info on the driver for the Metronome display controller.
|
||||||
modedb.txt
|
modedb.txt
|
||||||
- info on the video mode database.
|
- info on the video mode database.
|
||||||
matroxfb.txt
|
|
||||||
- info on the Matrox frame buffer driver.
|
|
||||||
pvr2fb.txt
|
pvr2fb.txt
|
||||||
- info on the PowerVR 2 frame buffer driver.
|
- info on the PowerVR 2 frame buffer driver.
|
||||||
pxafb.txt
|
pxafb.txt
|
||||||
|
@ -39,13 +47,23 @@ s3fb.txt
|
||||||
- info on the fbdev driver for S3 Trio/Virge chips.
|
- info on the fbdev driver for S3 Trio/Virge chips.
|
||||||
sa1100fb.txt
|
sa1100fb.txt
|
||||||
- information about the driver for the SA-1100 LCD controller.
|
- information about the driver for the SA-1100 LCD controller.
|
||||||
|
sh7760fb.txt
|
||||||
|
- info on the SH7760/SH7763 integrated LCDC Framebuffer driver.
|
||||||
sisfb.txt
|
sisfb.txt
|
||||||
- info on the framebuffer device driver for various SiS chips.
|
- info on the framebuffer device driver for various SiS chips.
|
||||||
sstfb.txt
|
sstfb.txt
|
||||||
- info on the frame buffer driver for 3dfx' Voodoo Graphics boards.
|
- info on the frame buffer driver for 3dfx' Voodoo Graphics boards.
|
||||||
tgafb.txt
|
tgafb.txt
|
||||||
- info on the TGA (DECChip 21030) frame buffer driver
|
- info on the TGA (DECChip 21030) frame buffer driver.
|
||||||
|
tridentfb.txt
|
||||||
|
info on the framebuffer driver for some Trident chip based cards.
|
||||||
|
uvesafb.txt
|
||||||
|
- info on the userspace VESA (VBE2+ compliant) frame buffer device.
|
||||||
vesafb.txt
|
vesafb.txt
|
||||||
- info on the VESA frame buffer device
|
- info on the VESA frame buffer device.
|
||||||
|
viafb.modes
|
||||||
|
- list of modes for VIA Integration Graphic Chip.
|
||||||
|
viafb.txt
|
||||||
|
- info on the VIA Integration Graphic Chip console framebuffer driver.
|
||||||
vt8623fb.txt
|
vt8623fb.txt
|
||||||
- info on the fb driver for the graphics core in VIA VT8623 chipsets.
|
- info on the fb driver for the graphics core in VIA VT8623 chipsets.
|
||||||
|
|
|
@ -2444,10 +2444,12 @@ F: drivers/net/wan/sdla.c
|
||||||
FRAMEBUFFER LAYER
|
FRAMEBUFFER LAYER
|
||||||
L: linux-fbdev@vger.kernel.org
|
L: linux-fbdev@vger.kernel.org
|
||||||
W: http://linux-fbdev.sourceforge.net/
|
W: http://linux-fbdev.sourceforge.net/
|
||||||
|
Q: http://patchwork.kernel.org/project/linux-fbdev/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6.git
|
||||||
S: Orphan
|
S: Orphan
|
||||||
F: Documentation/fb/
|
F: Documentation/fb/
|
||||||
F: drivers/video/fb*
|
F: drivers/video/
|
||||||
|
F: include/video/
|
||||||
F: include/linux/fb.h
|
F: include/linux/fb.h
|
||||||
|
|
||||||
FREESCALE DMA DRIVER
|
FREESCALE DMA DRIVER
|
||||||
|
|
|
@ -88,34 +88,48 @@ static const struct fb_cmap default_16_colors = {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp)
|
int fb_alloc_cmap_gfp(struct fb_cmap *cmap, int len, int transp, gfp_t flags)
|
||||||
{
|
{
|
||||||
int size = len*sizeof(u16);
|
int size = len * sizeof(u16);
|
||||||
|
int ret = -ENOMEM;
|
||||||
|
|
||||||
if (cmap->len != len) {
|
if (cmap->len != len) {
|
||||||
fb_dealloc_cmap(cmap);
|
fb_dealloc_cmap(cmap);
|
||||||
if (!len)
|
if (!len)
|
||||||
return 0;
|
return 0;
|
||||||
if (!(cmap->red = kmalloc(size, GFP_ATOMIC)))
|
|
||||||
goto fail;
|
cmap->red = kmalloc(size, flags);
|
||||||
if (!(cmap->green = kmalloc(size, GFP_ATOMIC)))
|
if (!cmap->red)
|
||||||
goto fail;
|
goto fail;
|
||||||
if (!(cmap->blue = kmalloc(size, GFP_ATOMIC)))
|
cmap->green = kmalloc(size, flags);
|
||||||
goto fail;
|
if (!cmap->green)
|
||||||
if (transp) {
|
goto fail;
|
||||||
if (!(cmap->transp = kmalloc(size, GFP_ATOMIC)))
|
cmap->blue = kmalloc(size, flags);
|
||||||
|
if (!cmap->blue)
|
||||||
|
goto fail;
|
||||||
|
if (transp) {
|
||||||
|
cmap->transp = kmalloc(size, flags);
|
||||||
|
if (!cmap->transp)
|
||||||
|
goto fail;
|
||||||
|
} else {
|
||||||
|
cmap->transp = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cmap->start = 0;
|
||||||
|
cmap->len = len;
|
||||||
|
ret = fb_copy_cmap(fb_default_cmap(len), cmap);
|
||||||
|
if (ret)
|
||||||
goto fail;
|
goto fail;
|
||||||
} else
|
return 0;
|
||||||
cmap->transp = NULL;
|
|
||||||
}
|
|
||||||
cmap->start = 0;
|
|
||||||
cmap->len = len;
|
|
||||||
fb_copy_cmap(fb_default_cmap(len), cmap);
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
fb_dealloc_cmap(cmap);
|
fb_dealloc_cmap(cmap);
|
||||||
return -ENOMEM;
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp)
|
||||||
|
{
|
||||||
|
return fb_alloc_cmap_gfp(cmap, len, transp, GFP_ATOMIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -250,8 +264,12 @@ int fb_set_user_cmap(struct fb_cmap_user *cmap, struct fb_info *info)
|
||||||
int rc, size = cmap->len * sizeof(u16);
|
int rc, size = cmap->len * sizeof(u16);
|
||||||
struct fb_cmap umap;
|
struct fb_cmap umap;
|
||||||
|
|
||||||
|
if (size < 0 || size < cmap->len)
|
||||||
|
return -E2BIG;
|
||||||
|
|
||||||
memset(&umap, 0, sizeof(struct fb_cmap));
|
memset(&umap, 0, sizeof(struct fb_cmap));
|
||||||
rc = fb_alloc_cmap(&umap, cmap->len, cmap->transp != NULL);
|
rc = fb_alloc_cmap_gfp(&umap, cmap->len, cmap->transp != NULL,
|
||||||
|
GFP_KERNEL);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
if (copy_from_user(umap.red, cmap->red, size) ||
|
if (copy_from_user(umap.red, cmap->red, size) ||
|
||||||
|
|
|
@ -276,10 +276,10 @@ static void lx_graphics_enable(struct fb_info *info)
|
||||||
write_fp(par, FP_PT1, 0);
|
write_fp(par, FP_PT1, 0);
|
||||||
temp = FP_PT2_SCRC;
|
temp = FP_PT2_SCRC;
|
||||||
|
|
||||||
if (info->var.sync & FB_SYNC_HOR_HIGH_ACT)
|
if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT))
|
||||||
temp |= FP_PT2_HSP;
|
temp |= FP_PT2_HSP;
|
||||||
|
|
||||||
if (info->var.sync & FB_SYNC_VERT_HIGH_ACT)
|
if (!(info->var.sync & FB_SYNC_VERT_HIGH_ACT))
|
||||||
temp |= FP_PT2_VSP;
|
temp |= FP_PT2_VSP;
|
||||||
|
|
||||||
write_fp(par, FP_PT2, temp);
|
write_fp(par, FP_PT2, temp);
|
||||||
|
|
|
@ -860,7 +860,7 @@ static void sh_mobile_fb_reconfig(struct fb_info *info)
|
||||||
/* Couldn't reconfigure, hopefully, can continue as before */
|
/* Couldn't reconfigure, hopefully, can continue as before */
|
||||||
return;
|
return;
|
||||||
|
|
||||||
info->fix.line_length = mode2.xres * (ch->cfg.bpp / 8);
|
info->fix.line_length = mode1.xres * (ch->cfg.bpp / 8);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* fb_set_var() calls the notifier change internally, only if
|
* fb_set_var() calls the notifier change internally, only if
|
||||||
|
@ -868,7 +868,7 @@ static void sh_mobile_fb_reconfig(struct fb_info *info)
|
||||||
* user event, we have to call the chain ourselves.
|
* user event, we have to call the chain ourselves.
|
||||||
*/
|
*/
|
||||||
event.info = info;
|
event.info = info;
|
||||||
event.data = &mode2;
|
event.data = &mode1;
|
||||||
fb_notifier_call_chain(evnt, &event);
|
fb_notifier_call_chain(evnt, &event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -53,21 +53,8 @@
|
||||||
#ifndef _INIT_H_
|
#ifndef _INIT_H_
|
||||||
#define _INIT_H_
|
#define _INIT_H_
|
||||||
|
|
||||||
#include "osdef.h"
|
|
||||||
#include "initdef.h"
|
#include "initdef.h"
|
||||||
|
|
||||||
#ifdef SIS_XORG_XF86
|
|
||||||
#include "sis.h"
|
|
||||||
#define SIS_NEED_inSISREG
|
|
||||||
#define SIS_NEED_inSISREGW
|
|
||||||
#define SIS_NEED_inSISREGL
|
|
||||||
#define SIS_NEED_outSISREG
|
|
||||||
#define SIS_NEED_outSISREGW
|
|
||||||
#define SIS_NEED_outSISREGL
|
|
||||||
#include "sis_regs.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIS_LINUX_KERNEL
|
|
||||||
#include "vgatypes.h"
|
#include "vgatypes.h"
|
||||||
#include "vstruct.h"
|
#include "vstruct.h"
|
||||||
#ifdef SIS_CP
|
#ifdef SIS_CP
|
||||||
|
@ -78,7 +65,6 @@
|
||||||
#include <linux/fb.h>
|
#include <linux/fb.h>
|
||||||
#include "sis.h"
|
#include "sis.h"
|
||||||
#include <video/sisfb.h>
|
#include <video/sisfb.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Mode numbers */
|
/* Mode numbers */
|
||||||
static const unsigned short ModeIndex_320x200[] = {0x59, 0x41, 0x00, 0x4f};
|
static const unsigned short ModeIndex_320x200[] = {0x59, 0x41, 0x00, 0x4f};
|
||||||
|
@ -286,7 +272,7 @@ static const struct SiS_ModeResInfo_S SiS_ModeResInfo[] =
|
||||||
{ 1280, 854, 8,16} /* 0x22 */
|
{ 1280, 854, 8,16} /* 0x22 */
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(SIS300) || defined(SIS315H)
|
#if defined(CONFIG_FB_SIS_300) || defined(CONFIG_FB_SIS_315)
|
||||||
static const struct SiS_StandTable_S SiS_StandTable[]=
|
static const struct SiS_StandTable_S SiS_StandTable[]=
|
||||||
{
|
{
|
||||||
/* 0x00: MD_0_200 */
|
/* 0x00: MD_0_200 */
|
||||||
|
@ -1521,10 +1507,6 @@ static const struct SiS_LVDSCRT1Data SiS_LVDSCRT1640x480_1_H[] =
|
||||||
};
|
};
|
||||||
|
|
||||||
bool SiSInitPtr(struct SiS_Private *SiS_Pr);
|
bool SiSInitPtr(struct SiS_Private *SiS_Pr);
|
||||||
#ifdef SIS_XORG_XF86
|
|
||||||
unsigned short SiS_GetModeID(int VGAEngine, unsigned int VBFlags, int HDisplay, int VDisplay,
|
|
||||||
int Depth, bool FSTN, int LCDwith, int LCDheight);
|
|
||||||
#endif
|
|
||||||
unsigned short SiS_GetModeID_LCD(int VGAEngine, unsigned int VBFlags, int HDisplay,
|
unsigned short SiS_GetModeID_LCD(int VGAEngine, unsigned int VBFlags, int HDisplay,
|
||||||
int VDisplay, int Depth, bool FSTN,
|
int VDisplay, int Depth, bool FSTN,
|
||||||
unsigned short CustomT, int LCDwith, int LCDheight,
|
unsigned short CustomT, int LCDwith, int LCDheight,
|
||||||
|
@ -1550,17 +1532,11 @@ void SiS_SetRegOR(SISIOADDRESS Port,unsigned short Index, unsigned short DataOR
|
||||||
void SiS_DisplayOn(struct SiS_Private *SiS_Pr);
|
void SiS_DisplayOn(struct SiS_Private *SiS_Pr);
|
||||||
void SiS_DisplayOff(struct SiS_Private *SiS_Pr);
|
void SiS_DisplayOff(struct SiS_Private *SiS_Pr);
|
||||||
void SiSRegInit(struct SiS_Private *SiS_Pr, SISIOADDRESS BaseAddr);
|
void SiSRegInit(struct SiS_Private *SiS_Pr, SISIOADDRESS BaseAddr);
|
||||||
#ifndef SIS_LINUX_KERNEL
|
|
||||||
void SiSSetLVDSetc(struct SiS_Private *SiS_Pr);
|
|
||||||
#endif
|
|
||||||
void SiS_SetEnableDstn(struct SiS_Private *SiS_Pr, int enable);
|
void SiS_SetEnableDstn(struct SiS_Private *SiS_Pr, int enable);
|
||||||
void SiS_SetEnableFstn(struct SiS_Private *SiS_Pr, int enable);
|
void SiS_SetEnableFstn(struct SiS_Private *SiS_Pr, int enable);
|
||||||
unsigned short SiS_GetModeFlag(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
|
unsigned short SiS_GetModeFlag(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
|
||||||
unsigned short ModeIdIndex);
|
unsigned short ModeIdIndex);
|
||||||
bool SiSDetermineROMLayout661(struct SiS_Private *SiS_Pr);
|
bool SiSDetermineROMLayout661(struct SiS_Private *SiS_Pr);
|
||||||
#ifndef SIS_LINUX_KERNEL
|
|
||||||
void SiS_GetVBType(struct SiS_Private *SiS_Pr);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool SiS_SearchModeID(struct SiS_Private *SiS_Pr, unsigned short *ModeNo,
|
bool SiS_SearchModeID(struct SiS_Private *SiS_Pr, unsigned short *ModeNo,
|
||||||
unsigned short *ModeIdIndex);
|
unsigned short *ModeIdIndex);
|
||||||
|
@ -1572,37 +1548,19 @@ unsigned short SiS_GetColorDepth(struct SiS_Private *SiS_Pr, unsigned short Mode
|
||||||
unsigned short ModeIdIndex);
|
unsigned short ModeIdIndex);
|
||||||
unsigned short SiS_GetOffset(struct SiS_Private *SiS_Pr,unsigned short ModeNo,
|
unsigned short SiS_GetOffset(struct SiS_Private *SiS_Pr,unsigned short ModeNo,
|
||||||
unsigned short ModeIdIndex, unsigned short RRTI);
|
unsigned short ModeIdIndex, unsigned short RRTI);
|
||||||
#ifdef SIS300
|
#ifdef CONFIG_FB_SIS_300
|
||||||
void SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *idx1,
|
void SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *idx1,
|
||||||
unsigned short *idx2);
|
unsigned short *idx2);
|
||||||
unsigned short SiS_GetFIFOThresholdB300(unsigned short idx1, unsigned short idx2);
|
unsigned short SiS_GetFIFOThresholdB300(unsigned short idx1, unsigned short idx2);
|
||||||
unsigned short SiS_GetLatencyFactor630(struct SiS_Private *SiS_Pr, unsigned short index);
|
unsigned short SiS_GetLatencyFactor630(struct SiS_Private *SiS_Pr, unsigned short index);
|
||||||
#endif
|
#endif
|
||||||
void SiS_LoadDAC(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
|
void SiS_LoadDAC(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
|
||||||
#ifdef SIS_XORG_XF86
|
|
||||||
bool SiSSetMode(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, unsigned short ModeNo,
|
|
||||||
bool dosetpitch);
|
|
||||||
bool SiSBIOSSetMode(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn,
|
|
||||||
DisplayModePtr mode, bool IsCustom);
|
|
||||||
bool SiSBIOSSetModeCRT2(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn,
|
|
||||||
DisplayModePtr mode, bool IsCustom);
|
|
||||||
bool SiSBIOSSetModeCRT1(struct SiS_Private *SiS_Pr, ScrnInfoPtr pScrn,
|
|
||||||
DisplayModePtr mode, bool IsCustom);
|
|
||||||
#endif
|
|
||||||
#ifdef SIS_LINUX_KERNEL
|
|
||||||
bool SiSSetMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo);
|
bool SiSSetMode(struct SiS_Private *SiS_Pr, unsigned short ModeNo);
|
||||||
#endif
|
|
||||||
void SiS_CalcCRRegisters(struct SiS_Private *SiS_Pr, int depth);
|
void SiS_CalcCRRegisters(struct SiS_Private *SiS_Pr, int depth);
|
||||||
void SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
|
void SiS_CalcLCDACRT1Timing(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
|
||||||
unsigned short ModeIdIndex);
|
unsigned short ModeIdIndex);
|
||||||
#ifdef SIS_XORG_XF86
|
|
||||||
void SiS_Generic_ConvertCRData(struct SiS_Private *SiS_Pr, unsigned char *crdata, int xres,
|
|
||||||
int yres, DisplayModePtr current);
|
|
||||||
#endif
|
|
||||||
#ifdef SIS_LINUX_KERNEL
|
|
||||||
void SiS_Generic_ConvertCRData(struct SiS_Private *SiS_Pr, unsigned char *crdata, int xres,
|
void SiS_Generic_ConvertCRData(struct SiS_Private *SiS_Pr, unsigned char *crdata, int xres,
|
||||||
int yres, struct fb_var_screeninfo *var, bool writeres);
|
int yres, struct fb_var_screeninfo *var, bool writeres);
|
||||||
#endif
|
|
||||||
|
|
||||||
/* From init301.c: */
|
/* From init301.c: */
|
||||||
extern void SiS_GetVBInfo(struct SiS_Private *SiS_Pr, unsigned short ModeNo,
|
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
|
||||||
extern bool SiS_IsVAMode(struct SiS_Private *);
|
extern bool SiS_IsVAMode(struct SiS_Private *);
|
||||||
extern bool SiS_IsDualEdge(struct SiS_Private *);
|
extern bool SiS_IsDualEdge(struct SiS_Private *);
|
||||||
|
|
||||||
#ifdef SIS_XORG_XF86
|
#ifdef CONFIG_FB_SIS_300
|
||||||
/* From other modules: */
|
|
||||||
extern unsigned short SiS_CheckBuildCustomMode(ScrnInfoPtr pScrn, DisplayModePtr mode,
|
|
||||||
unsigned int VBFlags);
|
|
||||||
extern unsigned char SiS_GetSetBIOSScratch(ScrnInfoPtr pScrn, unsigned short offset,
|
|
||||||
unsigned char value);
|
|
||||||
extern unsigned char SiS_GetSetModeID(ScrnInfoPtr pScrn, unsigned char id);
|
|
||||||
extern unsigned short SiS_GetModeNumber(ScrnInfoPtr pScrn, DisplayModePtr mode,
|
|
||||||
unsigned int VBFlags);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIS_LINUX_KERNEL
|
|
||||||
#ifdef SIS300
|
|
||||||
extern unsigned int sisfb_read_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg);
|
extern unsigned int sisfb_read_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg);
|
||||||
extern void sisfb_write_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg,
|
extern void sisfb_write_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg,
|
||||||
unsigned int val);
|
unsigned int val);
|
||||||
#endif
|
#endif
|
||||||
#ifdef SIS315H
|
#ifdef CONFIG_FB_SIS_315
|
||||||
extern void sisfb_write_nbridge_pci_byte(struct SiS_Private *SiS_Pr, int reg,
|
extern void sisfb_write_nbridge_pci_byte(struct SiS_Private *SiS_Pr, int reg,
|
||||||
unsigned char val);
|
unsigned char val);
|
||||||
extern unsigned int sisfb_read_mio_pci_word(struct SiS_Private *SiS_Pr, int reg);
|
extern unsigned int sisfb_read_mio_pci_word(struct SiS_Private *SiS_Pr, int reg);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -53,15 +53,8 @@
|
||||||
#ifndef _INIT301_H_
|
#ifndef _INIT301_H_
|
||||||
#define _INIT301_H_
|
#define _INIT301_H_
|
||||||
|
|
||||||
#include "osdef.h"
|
|
||||||
#include "initdef.h"
|
#include "initdef.h"
|
||||||
|
|
||||||
#ifdef SIS_XORG_XF86
|
|
||||||
#include "sis.h"
|
|
||||||
#include "sis_regs.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIS_LINUX_KERNEL
|
|
||||||
#include "vgatypes.h"
|
#include "vgatypes.h"
|
||||||
#include "vstruct.h"
|
#include "vstruct.h"
|
||||||
#ifdef SIS_CP
|
#ifdef SIS_CP
|
||||||
|
@ -72,7 +65,6 @@
|
||||||
#include <linux/fb.h>
|
#include <linux/fb.h>
|
||||||
#include "sis.h"
|
#include "sis.h"
|
||||||
#include <video/sisfb.h>
|
#include <video/sisfb.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
static const unsigned char SiS_YPbPrTable[3][64] = {
|
static const unsigned char SiS_YPbPrTable[3][64] = {
|
||||||
{
|
{
|
||||||
|
@ -237,7 +229,7 @@ static const unsigned char SiS_Part2CLVX_6[] = { /* 1080i */
|
||||||
0xFF,0xFF,
|
0xFF,0xFF,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef SIS315H
|
#ifdef CONFIG_FB_SIS_315
|
||||||
/* 661 et al LCD data structure (2.03.00) */
|
/* 661 et al LCD data structure (2.03.00) */
|
||||||
static const unsigned char SiS_LCDStruct661[] = {
|
static const unsigned char SiS_LCDStruct661[] = {
|
||||||
/* 1024x768 */
|
/* 1024x768 */
|
||||||
|
@ -279,7 +271,7 @@ static const unsigned char SiS_LCDStruct661[] = {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SIS300
|
#ifdef CONFIG_FB_SIS_300
|
||||||
static unsigned char SiS300_TrumpionData[14][80] = {
|
static unsigned char SiS300_TrumpionData[14][80] = {
|
||||||
{ 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
|
{ 0x02,0x0A,0x0A,0x01,0x04,0x01,0x00,0x03,0x0D,0x00,0x0D,0x10,0x7F,0x00,0x80,0x02,
|
||||||
0x20,0x03,0x0B,0x00,0x90,0x01,0xC1,0x01,0x60,0x0C,0x30,0x10,0x00,0x00,0x04,0x23,
|
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] = {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void SiS_UnLockCRT2(struct SiS_Private *SiS_Pr);
|
void SiS_UnLockCRT2(struct SiS_Private *SiS_Pr);
|
||||||
#ifndef SIS_LINUX_KERNEL
|
|
||||||
void SiS_LockCRT2(struct SiS_Private *SiS_Pr);
|
|
||||||
#endif
|
|
||||||
void SiS_EnableCRT2(struct SiS_Private *SiS_Pr);
|
void SiS_EnableCRT2(struct SiS_Private *SiS_Pr);
|
||||||
unsigned short SiS_GetRatePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
|
unsigned short SiS_GetRatePtr(struct SiS_Private *SiS_Pr, unsigned short ModeNo, unsigned short ModeIdIndex);
|
||||||
void SiS_WaitRetrace1(struct SiS_Private *SiS_Pr);
|
void SiS_WaitRetrace1(struct SiS_Private *SiS_Pr);
|
||||||
|
@ -375,9 +364,6 @@ unsigned short SiS_GetVCLK2Ptr(struct SiS_Private *SiS_Pr, unsigned short ModeNo
|
||||||
unsigned short RefreshRateTableIndex);
|
unsigned short RefreshRateTableIndex);
|
||||||
unsigned short SiS_GetResInfo(struct SiS_Private *SiS_Pr,unsigned short ModeNo,unsigned short ModeIdIndex);
|
unsigned short SiS_GetResInfo(struct SiS_Private *SiS_Pr,unsigned short ModeNo,unsigned short ModeIdIndex);
|
||||||
void SiS_DisableBridge(struct SiS_Private *SiS_Pr);
|
void SiS_DisableBridge(struct SiS_Private *SiS_Pr);
|
||||||
#ifndef SIS_LINUX_KERNEL
|
|
||||||
void SiS_EnableBridge(struct SiS_Private *SiS_Pr);
|
|
||||||
#endif
|
|
||||||
bool SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo);
|
bool SiS_SetCRT2Group(struct SiS_Private *SiS_Pr, unsigned short ModeNo);
|
||||||
void SiS_SiS30xBLOn(struct SiS_Private *SiS_Pr);
|
void SiS_SiS30xBLOn(struct SiS_Private *SiS_Pr);
|
||||||
void SiS_SiS30xBLOff(struct SiS_Private *SiS_Pr);
|
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
|
||||||
unsigned short SiS_GetCH700x(struct SiS_Private *SiS_Pr, unsigned short tempax);
|
unsigned short SiS_GetCH700x(struct SiS_Private *SiS_Pr, unsigned short tempax);
|
||||||
void SiS_SetCH701x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
|
void SiS_SetCH701x(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
|
||||||
unsigned short SiS_GetCH701x(struct SiS_Private *SiS_Pr, unsigned short tempax);
|
unsigned short SiS_GetCH701x(struct SiS_Private *SiS_Pr, unsigned short tempax);
|
||||||
#ifndef SIS_LINUX_KERNEL
|
|
||||||
void SiS_SetCH70xx(struct SiS_Private *SiS_Pr, unsigned short reg, unsigned char val);
|
|
||||||
unsigned short SiS_GetCH70xx(struct SiS_Private *SiS_Pr, unsigned short tempax);
|
|
||||||
#endif
|
|
||||||
void SiS_SetCH70xxANDOR(struct SiS_Private *SiS_Pr, unsigned short reg,
|
void SiS_SetCH70xxANDOR(struct SiS_Private *SiS_Pr, unsigned short reg,
|
||||||
unsigned char orval,unsigned short andval);
|
unsigned char orval,unsigned short andval);
|
||||||
#ifdef SIS315H
|
#ifdef CONFIG_FB_SIS_315
|
||||||
static void SiS_Chrontel701xOn(struct SiS_Private *SiS_Pr);
|
static void SiS_Chrontel701xOn(struct SiS_Private *SiS_Pr);
|
||||||
static void SiS_Chrontel701xOff(struct SiS_Private *SiS_Pr);
|
static void SiS_Chrontel701xOff(struct SiS_Private *SiS_Pr);
|
||||||
static void SiS_ChrontelInitTVVSync(struct SiS_Private *SiS_Pr);
|
static void SiS_ChrontelInitTVVSync(struct SiS_Private *SiS_Pr);
|
||||||
|
@ -401,7 +383,7 @@ void SiS_Chrontel701xBLOn(struct SiS_Private *SiS_Pr);
|
||||||
void SiS_Chrontel701xBLOff(struct SiS_Private *SiS_Pr);
|
void SiS_Chrontel701xBLOff(struct SiS_Private *SiS_Pr);
|
||||||
#endif /* 315 */
|
#endif /* 315 */
|
||||||
|
|
||||||
#ifdef SIS300
|
#ifdef CONFIG_FB_SIS_300
|
||||||
static bool SiS_SetTrumpionBlock(struct SiS_Private *SiS_Pr, unsigned char *dataptr);
|
static bool SiS_SetTrumpionBlock(struct SiS_Private *SiS_Pr, unsigned char *dataptr);
|
||||||
void SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo);
|
void SiS_SetChrontelGPIO(struct SiS_Private *SiS_Pr, unsigned short myvbinfo);
|
||||||
#endif
|
#endif
|
||||||
|
@ -412,21 +394,12 @@ unsigned short SiS_HandleDDC(struct SiS_Private *SiS_Pr, unsigned int VBFlags, i
|
||||||
unsigned short adaptnum, unsigned short DDCdatatype,
|
unsigned short adaptnum, unsigned short DDCdatatype,
|
||||||
unsigned char *buffer, unsigned int VBFlags2);
|
unsigned char *buffer, unsigned int VBFlags2);
|
||||||
|
|
||||||
#ifdef SIS_XORG_XF86
|
|
||||||
unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags,
|
|
||||||
int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype,
|
|
||||||
bool checkcr32, unsigned int VBFlags2);
|
|
||||||
unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr);
|
|
||||||
unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype,
|
|
||||||
unsigned char *buffer);
|
|
||||||
#else
|
|
||||||
static unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags,
|
static unsigned short SiS_InitDDCRegs(struct SiS_Private *SiS_Pr, unsigned int VBFlags,
|
||||||
int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype,
|
int VGAEngine, unsigned short adaptnum, unsigned short DDCdatatype,
|
||||||
bool checkcr32, unsigned int VBFlags2);
|
bool checkcr32, unsigned int VBFlags2);
|
||||||
static unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr);
|
static unsigned short SiS_ProbeDDC(struct SiS_Private *SiS_Pr);
|
||||||
static unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype,
|
static unsigned short SiS_ReadDDC(struct SiS_Private *SiS_Pr, unsigned short DDCdatatype,
|
||||||
unsigned char *buffer);
|
unsigned char *buffer);
|
||||||
#endif
|
|
||||||
static void SiS_SetSwitchDDC2(struct SiS_Private *SiS_Pr);
|
static void SiS_SetSwitchDDC2(struct SiS_Private *SiS_Pr);
|
||||||
static unsigned short SiS_SetStart(struct SiS_Private *SiS_Pr);
|
static unsigned short SiS_SetStart(struct SiS_Private *SiS_Pr);
|
||||||
static unsigned short SiS_SetStop(struct SiS_Private *SiS_Pr);
|
static unsigned short SiS_SetStop(struct SiS_Private *SiS_Pr);
|
||||||
|
@ -441,13 +414,13 @@ static unsigned short SiS_PrepareDDC(struct SiS_Private *SiS_Pr);
|
||||||
static void SiS_SendACK(struct SiS_Private *SiS_Pr, unsigned short yesno);
|
static void SiS_SendACK(struct SiS_Private *SiS_Pr, unsigned short yesno);
|
||||||
static unsigned short SiS_DoProbeDDC(struct SiS_Private *SiS_Pr);
|
static unsigned short SiS_DoProbeDDC(struct SiS_Private *SiS_Pr);
|
||||||
|
|
||||||
#ifdef SIS300
|
#ifdef CONFIG_FB_SIS_300
|
||||||
static void SiS_OEM300Setting(struct SiS_Private *SiS_Pr,
|
static void SiS_OEM300Setting(struct SiS_Private *SiS_Pr,
|
||||||
unsigned short ModeNo, unsigned short ModeIdIndex, unsigned short RefTabindex);
|
unsigned short ModeNo, unsigned short ModeIdIndex, unsigned short RefTabindex);
|
||||||
static void SetOEMLCDData2(struct SiS_Private *SiS_Pr,
|
static void SetOEMLCDData2(struct SiS_Private *SiS_Pr,
|
||||||
unsigned short ModeNo, unsigned short ModeIdIndex,unsigned short RefTableIndex);
|
unsigned short ModeNo, unsigned short ModeIdIndex,unsigned short RefTableIndex);
|
||||||
#endif
|
#endif
|
||||||
#ifdef SIS315H
|
#ifdef CONFIG_FB_SIS_315
|
||||||
static void SiS_OEM310Setting(struct SiS_Private *SiS_Pr,
|
static void SiS_OEM310Setting(struct SiS_Private *SiS_Pr,
|
||||||
unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI);
|
unsigned short ModeNo,unsigned short ModeIdIndex, unsigned short RRTI);
|
||||||
static void SiS_OEM661Setting(struct SiS_Private *SiS_Pr,
|
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
|
||||||
extern void SiS_CalcCRRegisters(struct SiS_Private *SiS_Pr, int depth);
|
extern void SiS_CalcCRRegisters(struct SiS_Private *SiS_Pr, int depth);
|
||||||
extern unsigned short SiS_GetRefCRTVCLK(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide);
|
extern unsigned short SiS_GetRefCRTVCLK(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide);
|
||||||
extern unsigned short SiS_GetRefCRT1CRTC(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide);
|
extern unsigned short SiS_GetRefCRT1CRTC(struct SiS_Private *SiS_Pr, unsigned short Index, int UseWide);
|
||||||
#ifdef SIS300
|
#ifdef CONFIG_FB_SIS_300
|
||||||
extern void SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *tempbx,
|
extern void SiS_GetFIFOThresholdIndex300(struct SiS_Private *SiS_Pr, unsigned short *tempbx,
|
||||||
unsigned short *tempcl);
|
unsigned short *tempcl);
|
||||||
extern unsigned short SiS_GetFIFOThresholdB300(unsigned short tempbx, unsigned short tempcl);
|
extern unsigned short SiS_GetFIFOThresholdB300(unsigned short tempbx, unsigned short tempcl);
|
||||||
extern unsigned short SiS_GetLatencyFactor630(struct SiS_Private *SiS_Pr, unsigned short index);
|
extern unsigned short SiS_GetLatencyFactor630(struct SiS_Private *SiS_Pr, unsigned short index);
|
||||||
#ifdef SIS_LINUX_KERNEL
|
|
||||||
extern unsigned int sisfb_read_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg);
|
extern unsigned int sisfb_read_nbridge_pci_dword(struct SiS_Private *SiS_Pr, int reg);
|
||||||
extern unsigned int sisfb_read_lpc_pci_dword(struct SiS_Private *SiS_Pr, int reg);
|
extern unsigned int sisfb_read_lpc_pci_dword(struct SiS_Private *SiS_Pr, int reg);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
* Author: Thomas Winischhofer <thomas@winischhofer.net>
|
* Author: Thomas Winischhofer <thomas@winischhofer.net>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osdef.h"
|
|
||||||
#include "initdef.h"
|
#include "initdef.h"
|
||||||
#include "vgatypes.h"
|
#include "vgatypes.h"
|
||||||
#include "vstruct.h"
|
#include "vstruct.h"
|
||||||
|
@ -59,7 +58,7 @@ sisfb_mode_rate_to_dclock(struct SiS_Private *SiS_Pr, unsigned char modeno,
|
||||||
|
|
||||||
if(rateindex > 0) rateindex--;
|
if(rateindex > 0) rateindex--;
|
||||||
|
|
||||||
#ifdef SIS315H
|
#ifdef CONFIG_FB_SIS_315
|
||||||
switch(ModeNo) {
|
switch(ModeNo) {
|
||||||
case 0x5a: ModeNo = 0x50; break;
|
case 0x5a: ModeNo = 0x50; break;
|
||||||
case 0x5b: ModeNo = 0x56;
|
case 0x5b: ModeNo = 0x56;
|
||||||
|
@ -103,7 +102,7 @@ sisfb_mode_rate_to_ddata(struct SiS_Private *SiS_Pr, unsigned char modeno,
|
||||||
|
|
||||||
if(rateindex > 0) rateindex--;
|
if(rateindex > 0) rateindex--;
|
||||||
|
|
||||||
#ifdef SIS315H
|
#ifdef CONFIG_FB_SIS_315
|
||||||
switch(ModeNo) {
|
switch(ModeNo) {
|
||||||
case 0x5a: ModeNo = 0x50; break;
|
case 0x5a: ModeNo = 0x50; break;
|
||||||
case 0x5b: ModeNo = 0x56;
|
case 0x5b: ModeNo = 0x56;
|
||||||
|
@ -187,7 +186,7 @@ sisfb_gettotalfrommode(struct SiS_Private *SiS_Pr, unsigned char modeno, int *ht
|
||||||
|
|
||||||
if(rateindex > 0) rateindex--;
|
if(rateindex > 0) rateindex--;
|
||||||
|
|
||||||
#ifdef SIS315H
|
#ifdef CONFIG_FB_SIS_315
|
||||||
switch(ModeNo) {
|
switch(ModeNo) {
|
||||||
case 0x5a: ModeNo = 0x50; break;
|
case 0x5a: ModeNo = 0x50; break;
|
||||||
case 0x5b: ModeNo = 0x56;
|
case 0x5b: ModeNo = 0x56;
|
||||||
|
|
|
@ -1,133 +0,0 @@
|
||||||
/* $XFree86$ */
|
|
||||||
/* $XdotOrg$ */
|
|
||||||
/*
|
|
||||||
* OS depending defines
|
|
||||||
*
|
|
||||||
* Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
|
|
||||||
*
|
|
||||||
* If distributed as part of the Linux kernel, the following license terms
|
|
||||||
* apply:
|
|
||||||
*
|
|
||||||
* * This program is free software; you can redistribute it and/or modify
|
|
||||||
* * it under the terms of the GNU General Public License as published by
|
|
||||||
* * the Free Software Foundation; either version 2 of the named License,
|
|
||||||
* * or any later version.
|
|
||||||
* *
|
|
||||||
* * This program is distributed in the hope that it will be useful,
|
|
||||||
* * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* * GNU General Public License for more details.
|
|
||||||
* *
|
|
||||||
* * You should have received a copy of the GNU General Public License
|
|
||||||
* * along with this program; if not, write to the Free Software
|
|
||||||
* * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
|
|
||||||
*
|
|
||||||
* Otherwise, the following license terms apply:
|
|
||||||
*
|
|
||||||
* * Redistribution and use in source and binary forms, with or without
|
|
||||||
* * modification, are permitted provided that the following conditions
|
|
||||||
* * are met:
|
|
||||||
* * 1) Redistributions of source code must retain the above copyright
|
|
||||||
* * notice, this list of conditions and the following disclaimer.
|
|
||||||
* * 2) Redistributions in binary form must reproduce the above copyright
|
|
||||||
* * notice, this list of conditions and the following disclaimer in the
|
|
||||||
* * documentation and/or other materials provided with the distribution.
|
|
||||||
* * 3) The name of the author may not be used to endorse or promote products
|
|
||||||
* * derived from this software without specific prior written permission.
|
|
||||||
* *
|
|
||||||
* * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
||||||
* * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
* * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
||||||
* * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
* * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
* * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
* * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
* * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* Author: Thomas Winischhofer <thomas@winischhofer.net>
|
|
||||||
* Silicon Integrated Systems, Inc. (used by permission)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _SIS_OSDEF_H_
|
|
||||||
#define _SIS_OSDEF_H_
|
|
||||||
|
|
||||||
/* The choices are: */
|
|
||||||
#define SIS_LINUX_KERNEL /* Linux kernel framebuffer */
|
|
||||||
#undef SIS_XORG_XF86 /* XFree86/X.org */
|
|
||||||
|
|
||||||
#ifdef OutPortByte
|
|
||||||
#undef OutPortByte
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef OutPortWord
|
|
||||||
#undef OutPortWord
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef OutPortLong
|
|
||||||
#undef OutPortLong
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef InPortByte
|
|
||||||
#undef InPortByte
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef InPortWord
|
|
||||||
#undef InPortWord
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef InPortLong
|
|
||||||
#undef InPortLong
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**********************************************************************/
|
|
||||||
/* LINUX KERNEL */
|
|
||||||
/**********************************************************************/
|
|
||||||
|
|
||||||
#ifdef SIS_LINUX_KERNEL
|
|
||||||
|
|
||||||
#ifdef CONFIG_FB_SIS_300
|
|
||||||
#define SIS300
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_FB_SIS_315
|
|
||||||
#define SIS315H
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(SIS300) && !defined(SIS315H)
|
|
||||||
#warning Neither CONFIG_FB_SIS_300 nor CONFIG_FB_SIS_315 is set
|
|
||||||
#warning sisfb will not work!
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define OutPortByte(p,v) outb((u8)(v),(SISIOADDRESS)(p))
|
|
||||||
#define OutPortWord(p,v) outw((u16)(v),(SISIOADDRESS)(p))
|
|
||||||
#define OutPortLong(p,v) outl((u32)(v),(SISIOADDRESS)(p))
|
|
||||||
#define InPortByte(p) inb((SISIOADDRESS)(p))
|
|
||||||
#define InPortWord(p) inw((SISIOADDRESS)(p))
|
|
||||||
#define InPortLong(p) inl((SISIOADDRESS)(p))
|
|
||||||
#define SiS_SetMemory(MemoryAddress,MemorySize,value) memset_io(MemoryAddress, value, MemorySize)
|
|
||||||
|
|
||||||
#endif /* LINUX_KERNEL */
|
|
||||||
|
|
||||||
/**********************************************************************/
|
|
||||||
/* XFree86/X.org */
|
|
||||||
/**********************************************************************/
|
|
||||||
|
|
||||||
#ifdef SIS_XORG_XF86
|
|
||||||
|
|
||||||
#define SIS300
|
|
||||||
#define SIS315H
|
|
||||||
|
|
||||||
#define OutPortByte(p,v) outSISREG((IOADDRESS)(p),(CARD8)(v))
|
|
||||||
#define OutPortWord(p,v) outSISREGW((IOADDRESS)(p),(CARD16)(v))
|
|
||||||
#define OutPortLong(p,v) outSISREGL((IOADDRESS)(p),(CARD32)(v))
|
|
||||||
#define InPortByte(p) inSISREG((IOADDRESS)(p))
|
|
||||||
#define InPortWord(p) inSISREGW((IOADDRESS)(p))
|
|
||||||
#define InPortLong(p) inSISREGL((IOADDRESS)(p))
|
|
||||||
#define SiS_SetMemory(MemoryAddress,MemorySize,value) memset(MemoryAddress, value, MemorySize)
|
|
||||||
|
|
||||||
#endif /* XF86 */
|
|
||||||
|
|
||||||
#endif /* _OSDEF_H_ */
|
|
|
@ -24,7 +24,6 @@
|
||||||
#ifndef _SIS_H_
|
#ifndef _SIS_H_
|
||||||
#define _SIS_H_
|
#define _SIS_H_
|
||||||
|
|
||||||
#include "osdef.h"
|
|
||||||
#include <video/sisfb.h>
|
#include <video/sisfb.h>
|
||||||
|
|
||||||
#include "vgatypes.h"
|
#include "vgatypes.h"
|
||||||
|
|
|
@ -60,6 +60,11 @@
|
||||||
#include "sis.h"
|
#include "sis.h"
|
||||||
#include "sis_main.h"
|
#include "sis_main.h"
|
||||||
|
|
||||||
|
#if !defined(CONFIG_FB_SIS_300) && !defined(CONFIG_FB_SIS_315)
|
||||||
|
#warning Neither CONFIG_FB_SIS_300 nor CONFIG_FB_SIS_315 is set
|
||||||
|
#warning sisfb will not work!
|
||||||
|
#endif
|
||||||
|
|
||||||
static void sisfb_handle_command(struct sis_video_info *ivideo,
|
static void sisfb_handle_command(struct sis_video_info *ivideo,
|
||||||
struct sisfb_cmd *sisfb_command);
|
struct sisfb_cmd *sisfb_command);
|
||||||
|
|
||||||
|
@ -4114,14 +4119,6 @@ sisfb_find_rom(struct pci_dev *pdev)
|
||||||
if(sisfb_check_rom(rom_base, ivideo)) {
|
if(sisfb_check_rom(rom_base, ivideo)) {
|
||||||
|
|
||||||
if((myrombase = vmalloc(65536))) {
|
if((myrombase = vmalloc(65536))) {
|
||||||
|
|
||||||
/* Work around bug in pci/rom.c: Folks forgot to check
|
|
||||||
* whether the size retrieved from the BIOS image eventually
|
|
||||||
* is larger than the mapped size
|
|
||||||
*/
|
|
||||||
if(pci_resource_len(pdev, PCI_ROM_RESOURCE) < romsize)
|
|
||||||
romsize = pci_resource_len(pdev, PCI_ROM_RESOURCE);
|
|
||||||
|
|
||||||
memcpy_fromio(myrombase, rom_base,
|
memcpy_fromio(myrombase, rom_base,
|
||||||
(romsize > 65536) ? 65536 : romsize);
|
(romsize > 65536) ? 65536 : romsize);
|
||||||
}
|
}
|
||||||
|
@ -4155,23 +4152,6 @@ sisfb_find_rom(struct pci_dev *pdev)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
pci_read_config_dword(pdev, PCI_ROM_ADDRESS, &temp);
|
|
||||||
pci_write_config_dword(pdev, PCI_ROM_ADDRESS,
|
|
||||||
(ivideo->video_base & PCI_ROM_ADDRESS_MASK) | PCI_ROM_ADDRESS_ENABLE);
|
|
||||||
|
|
||||||
rom_base = ioremap(ivideo->video_base, 65536);
|
|
||||||
if(rom_base) {
|
|
||||||
if(sisfb_check_rom(rom_base, ivideo)) {
|
|
||||||
if((myrombase = vmalloc(65536)))
|
|
||||||
memcpy_fromio(myrombase, rom_base, 65536);
|
|
||||||
}
|
|
||||||
iounmap(rom_base);
|
|
||||||
}
|
|
||||||
|
|
||||||
pci_write_config_dword(pdev, PCI_ROM_ADDRESS, temp);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return myrombase;
|
return myrombase;
|
||||||
|
|
|
@ -55,21 +55,10 @@
|
||||||
|
|
||||||
#define SISIOMEMTYPE
|
#define SISIOMEMTYPE
|
||||||
|
|
||||||
#ifdef SIS_LINUX_KERNEL
|
|
||||||
typedef unsigned long SISIOADDRESS;
|
typedef unsigned long SISIOADDRESS;
|
||||||
#include <linux/types.h> /* Need __iomem */
|
#include <linux/types.h> /* Need __iomem */
|
||||||
#undef SISIOMEMTYPE
|
#undef SISIOMEMTYPE
|
||||||
#define SISIOMEMTYPE __iomem
|
#define SISIOMEMTYPE __iomem
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIS_XORG_XF86
|
|
||||||
#if XF86_VERSION_CURRENT < XF86_VERSION_NUMERIC(4,2,0,0,0)
|
|
||||||
typedef unsigned long IOADDRESS;
|
|
||||||
typedef unsigned long SISIOADDRESS;
|
|
||||||
#else
|
|
||||||
typedef IOADDRESS SISIOADDRESS;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef enum _SIS_CHIP_TYPE {
|
typedef enum _SIS_CHIP_TYPE {
|
||||||
SIS_VGALegacy = 0,
|
SIS_VGALegacy = 0,
|
||||||
|
|
|
@ -233,24 +233,15 @@ struct SiS_Private
|
||||||
{
|
{
|
||||||
unsigned char ChipType;
|
unsigned char ChipType;
|
||||||
unsigned char ChipRevision;
|
unsigned char ChipRevision;
|
||||||
#ifdef SIS_XORG_XF86
|
|
||||||
PCITAG PciTag;
|
|
||||||
#endif
|
|
||||||
#ifdef SIS_LINUX_KERNEL
|
|
||||||
void *ivideo;
|
void *ivideo;
|
||||||
#endif
|
|
||||||
unsigned char *VirtualRomBase;
|
unsigned char *VirtualRomBase;
|
||||||
bool UseROM;
|
bool UseROM;
|
||||||
#ifdef SIS_LINUX_KERNEL
|
|
||||||
unsigned char SISIOMEMTYPE *VideoMemoryAddress;
|
unsigned char SISIOMEMTYPE *VideoMemoryAddress;
|
||||||
unsigned int VideoMemorySize;
|
unsigned int VideoMemorySize;
|
||||||
#endif
|
|
||||||
SISIOADDRESS IOAddress;
|
SISIOADDRESS IOAddress;
|
||||||
SISIOADDRESS IOAddress2; /* For dual chip XGI volari */
|
SISIOADDRESS IOAddress2; /* For dual chip XGI volari */
|
||||||
|
|
||||||
#ifdef SIS_LINUX_KERNEL
|
|
||||||
SISIOADDRESS RelIO;
|
SISIOADDRESS RelIO;
|
||||||
#endif
|
|
||||||
SISIOADDRESS SiS_P3c4;
|
SISIOADDRESS SiS_P3c4;
|
||||||
SISIOADDRESS SiS_P3d4;
|
SISIOADDRESS SiS_P3d4;
|
||||||
SISIOADDRESS SiS_P3c0;
|
SISIOADDRESS SiS_P3c0;
|
||||||
|
@ -280,9 +271,6 @@ struct SiS_Private
|
||||||
unsigned short SiS_IF_DEF_FSTN;
|
unsigned short SiS_IF_DEF_FSTN;
|
||||||
unsigned short SiS_SysFlags;
|
unsigned short SiS_SysFlags;
|
||||||
unsigned char SiS_VGAINFO;
|
unsigned char SiS_VGAINFO;
|
||||||
#ifdef SIS_XORG_XF86
|
|
||||||
unsigned short SiS_CP1, SiS_CP2, SiS_CP3, SiS_CP4;
|
|
||||||
#endif
|
|
||||||
bool SiS_UseROM;
|
bool SiS_UseROM;
|
||||||
bool SiS_ROMNew;
|
bool SiS_ROMNew;
|
||||||
bool SiS_XGIROM;
|
bool SiS_XGIROM;
|
||||||
|
|
|
@ -1122,6 +1122,7 @@ extern const struct fb_videomode *fb_find_best_display(const struct fb_monspecs
|
||||||
|
|
||||||
/* drivers/video/fbcmap.c */
|
/* drivers/video/fbcmap.c */
|
||||||
extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp);
|
extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp);
|
||||||
|
extern int fb_alloc_cmap_gfp(struct fb_cmap *cmap, int len, int transp, gfp_t flags);
|
||||||
extern void fb_dealloc_cmap(struct fb_cmap *cmap);
|
extern void fb_dealloc_cmap(struct fb_cmap *cmap);
|
||||||
extern int fb_copy_cmap(const struct fb_cmap *from, struct fb_cmap *to);
|
extern int fb_copy_cmap(const struct fb_cmap *from, struct fb_cmap *to);
|
||||||
extern int fb_cmap_to_user(const struct fb_cmap *from, struct fb_cmap_user *to);
|
extern int fb_cmap_to_user(const struct fb_cmap *from, struct fb_cmap_user *to);
|
||||||
|
|
|
@ -99,7 +99,6 @@ struct lcd_sync_arg {
|
||||||
#define FBIPUT_COLOR _IOW('F', 6, int)
|
#define FBIPUT_COLOR _IOW('F', 6, int)
|
||||||
#define FBIPUT_HSYNC _IOW('F', 9, int)
|
#define FBIPUT_HSYNC _IOW('F', 9, int)
|
||||||
#define FBIPUT_VSYNC _IOW('F', 10, int)
|
#define FBIPUT_VSYNC _IOW('F', 10, int)
|
||||||
#define FBIO_WAITFORVSYNC _IOW('F', 0x20, u_int32_t)
|
|
||||||
|
|
||||||
#endif /* ifndef DA8XX_FB_H */
|
#endif /* ifndef DA8XX_FB_H */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue