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:
Linus Torvalds 2010-11-25 06:58:56 +09:00
commit e5fa506173
17 changed files with 284 additions and 1280 deletions

View File

@ -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.

View File

@ -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

View File

@ -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) ||

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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_ */

View File

@ -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"

View File

@ -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;

View File

@ -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,

View File

@ -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;

View File

@ -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);

View File

@ -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 */