2005-04-16 15:20:36 -07:00
/* $XFree86$ */
/* $XdotOrg$ */
/*
* Data and prototypes for init301 . c
*
2005-09-09 13:04:45 -07:00
* Copyright ( C ) 2001 - 2005 by Thomas Winischhofer , Vienna , Austria
2005-04-16 15:20:36 -07:00
*
* 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 >
*
*/
2005-09-09 13:04:45 -07:00
# ifndef _INIT301_H_
# define _INIT301_H_
2005-04-16 15:20:36 -07:00
# include "initdef.h"
# include "vgatypes.h"
# include "vstruct.h"
# ifdef SIS_CP
# undef SIS_CP
# endif
# include <linux/types.h>
2005-09-09 13:04:45 -07:00
# include <asm/io.h>
# include <linux/fb.h>
# include "sis.h"
2005-04-16 15:20:36 -07:00
# include <video/sisfb.h>
2005-09-09 13:04:45 -07:00
void SiS_UnLockCRT2 ( 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 ) ;
void SiS_WaitRetrace1 ( struct SiS_Private * SiS_Pr ) ;
2007-02-12 00:55:06 -08:00
bool SiS_IsDualEdge ( struct SiS_Private * SiS_Pr ) ;
bool SiS_IsVAMode ( struct SiS_Private * SiS_Pr ) ;
2005-09-09 13:04:45 -07:00
void SiS_GetVBInfo ( struct SiS_Private * SiS_Pr , unsigned short ModeNo ,
unsigned short ModeIdIndex , int checkcrt2mode ) ;
void SiS_SetYPbPr ( struct SiS_Private * SiS_Pr ) ;
void SiS_SetTVMode ( struct SiS_Private * SiS_Pr , unsigned short ModeNo ,
unsigned short ModeIdIndex ) ;
void SiS_GetLCDResInfo ( struct SiS_Private * SiS_Pr , unsigned short ModeNo ,
unsigned short ModeIdIndex ) ;
unsigned short SiS_GetVCLK2Ptr ( struct SiS_Private * SiS_Pr , unsigned short ModeNo , unsigned short ModeIdIndex ,
unsigned short RefreshRateTableIndex ) ;
unsigned short SiS_GetResInfo ( struct SiS_Private * SiS_Pr , unsigned short ModeNo , unsigned short ModeIdIndex ) ;
void SiS_DisableBridge ( struct SiS_Private * SiS_Pr ) ;
2007-02-12 00:55:06 -08:00
bool SiS_SetCRT2Group ( struct SiS_Private * SiS_Pr , unsigned short ModeNo ) ;
2005-09-09 13:04:45 -07:00
void SiS_SiS30xBLOn ( struct SiS_Private * SiS_Pr ) ;
void SiS_SiS30xBLOff ( struct SiS_Private * SiS_Pr ) ;
2005-04-16 15:20:36 -07:00
2005-09-09 13:04:45 -07:00
void SiS_SetCH700x ( struct SiS_Private * SiS_Pr , unsigned short reg , unsigned char val ) ;
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 ) ;
unsigned short SiS_GetCH701x ( struct SiS_Private * SiS_Pr , unsigned short tempax ) ;
void SiS_SetCH70xxANDOR ( struct SiS_Private * SiS_Pr , unsigned short reg ,
unsigned char orval , unsigned short andval ) ;
2010-11-19 21:58:47 +00:00
# ifdef CONFIG_FB_SIS_315
2005-09-09 13:04:45 -07:00
void SiS_Chrontel701xBLOn ( struct SiS_Private * SiS_Pr ) ;
void SiS_Chrontel701xBLOff ( struct SiS_Private * SiS_Pr ) ;
2005-04-16 15:20:36 -07:00
# endif /* 315 */
2010-11-19 21:58:47 +00:00
# ifdef CONFIG_FB_SIS_300
2005-09-09 13:04:45 -07:00
void SiS_SetChrontelGPIO ( struct SiS_Private * SiS_Pr , unsigned short myvbinfo ) ;
2005-04-16 15:20:36 -07:00
# endif
2005-09-09 13:04:45 -07:00
void SiS_DDC2Delay ( struct SiS_Private * SiS_Pr , unsigned int delaytime ) ;
unsigned short SiS_ReadDDC1Bit ( struct SiS_Private * SiS_Pr ) ;
unsigned short SiS_HandleDDC ( struct SiS_Private * SiS_Pr , unsigned int VBFlags , int VGAEngine ,
unsigned short adaptnum , unsigned short DDCdatatype ,
unsigned char * buffer , unsigned int VBFlags2 ) ;
2005-04-16 15:20:36 -07:00
2005-09-09 13:04:45 -07:00
extern void SiS_DisplayOff ( struct SiS_Private * SiS_Pr ) ;
extern void SiS_DisplayOn ( struct SiS_Private * SiS_Pr ) ;
2007-02-12 00:55:06 -08:00
extern bool SiS_SearchModeID ( struct SiS_Private * , unsigned short * , unsigned short * ) ;
2005-09-09 13:04:45 -07:00
extern unsigned short SiS_GetModeFlag ( struct SiS_Private * SiS_Pr , unsigned short ModeNo ,
unsigned short ModeIdIndex ) ;
extern unsigned short SiS_GetModePtr ( struct SiS_Private * SiS_Pr , unsigned short ModeNo , unsigned short ModeIdIndex ) ;
extern unsigned short SiS_GetColorDepth ( struct SiS_Private * SiS_Pr , unsigned short ModeNo , unsigned short ModeIdIndex ) ;
extern unsigned short SiS_GetOffset ( struct SiS_Private * SiS_Pr , unsigned short ModeNo , unsigned short ModeIdIndex ,
unsigned short RefreshRateTableIndex ) ;
extern void SiS_LoadDAC ( struct SiS_Private * SiS_Pr , unsigned short ModeNo ,
unsigned short ModeIdIndex ) ;
extern void SiS_CalcLCDACRT1Timing ( struct SiS_Private * SiS_Pr , unsigned short ModeNo ,
unsigned short ModeIdIndex ) ;
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_GetRefCRT1CRTC ( struct SiS_Private * SiS_Pr , unsigned short Index , int UseWide ) ;
2010-11-19 21:58:47 +00:00
# ifdef CONFIG_FB_SIS_300
2005-09-09 13:04:45 -07:00
extern void SiS_GetFIFOThresholdIndex300 ( struct SiS_Private * SiS_Pr , 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 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 ) ;
2005-04-16 15:20:36 -07:00
# endif
# endif