Commit 39c6e0a0 authored by James Simmons's avatar James Simmons

[SIS FBDEV] More sisfb driver updates.

[FBCON] Many fixes dealing with reszing the screen.
parent 5958121c
...@@ -1044,6 +1044,9 @@ static void fbcon_set_display(struct vc_data *vc, int init, int logo) ...@@ -1044,6 +1044,9 @@ static void fbcon_set_display(struct vc_data *vc, int init, int logo)
vc->vc_rows = nr_rows; vc->vc_rows = nr_rows;
} }
p->vrows = info->var.yres_virtual / vc->vc_font.height; p->vrows = info->var.yres_virtual / vc->vc_font.height;
if(info->var.yres > (vc->vc_font.height * (vc->vc_rows + 1))) {
p->vrows -= (info->var.yres - (vc->vc_font.height * vc->vc_rows)) / vc->vc_font.height;
}
if ((info->var.yres % vc->vc_font.height) && if ((info->var.yres % vc->vc_font.height) &&
(info->var.yres_virtual % vc->vc_font.height < (info->var.yres_virtual % vc->vc_font.height <
info->var.yres % vc->vc_font.height)) info->var.yres % vc->vc_font.height))
...@@ -1815,14 +1818,16 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width, ...@@ -1815,14 +1818,16 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width,
(y_diff < 0 || y_diff > fh)) { (y_diff < 0 || y_diff > fh)) {
var.activate = FB_ACTIVATE_TEST; var.activate = FB_ACTIVATE_TEST;
err = fb_set_var(&var, info); err = fb_set_var(&var, info);
if (err || width != var.xres/fw || if (err || width > var.xres/fw ||
height != var.yres/fh) height > var.yres/fh)
return -EINVAL; return -EINVAL;
DPRINTK("resize now %ix%i\n", var.xres, var.yres); DPRINTK("resize now %ix%i\n", var.xres, var.yres);
var.activate = FB_ACTIVATE_NOW; var.activate = FB_ACTIVATE_NOW;
fb_set_var(&var, info); fb_set_var(&var, info);
p->vrows = info->var.yres_virtual/fh;
} }
p->vrows = var.yres_virtual/fh;
if(var.yres > (fh * (height + 1)))
p->vrows -= (var.yres - (fh * height)) / fh;
return 0; return 0;
} }
...@@ -1857,6 +1862,7 @@ static int fbcon_switch(struct vc_data *vc) ...@@ -1857,6 +1862,7 @@ static int fbcon_switch(struct vc_data *vc)
} }
if (info) if (info)
info->var.yoffset = p->yscroll = 0; info->var.yoffset = p->yscroll = 0;
fbcon_resize(vc, vc->vc_cols, vc->vc_rows);
switch (p->scrollmode & __SCROLL_YMASK) { switch (p->scrollmode & __SCROLL_YMASK) {
case __SCROLL_YWRAP: case __SCROLL_YWRAP:
scrollback_phys_max = p->vrows - vc->vc_rows; scrollback_phys_max = p->vrows - vc->vc_rows;
...@@ -1875,7 +1881,6 @@ static int fbcon_switch(struct vc_data *vc) ...@@ -1875,7 +1881,6 @@ static int fbcon_switch(struct vc_data *vc)
info->currcon = unit; info->currcon = unit;
fbcon_resize(vc, vc->vc_cols, vc->vc_rows);
update_var(unit, info); update_var(unit, info);
fbcon_set_palette(vc, color_table); fbcon_set_palette(vc, color_table);
...@@ -2094,6 +2099,11 @@ static int fbcon_do_set_font(struct vc_data *vc, struct console_font_op *op, ...@@ -2094,6 +2099,11 @@ static int fbcon_do_set_font(struct vc_data *vc, struct console_font_op *op,
/* reset wrap/pan */ /* reset wrap/pan */
info->var.xoffset = info->var.yoffset = p->yscroll = 0; info->var.xoffset = info->var.yoffset = p->yscroll = 0;
p->vrows = info->var.yres_virtual / h; p->vrows = info->var.yres_virtual / h;
#if 0 /* INCOMPLETE - let the console gurus handle this */
if(info->var.yres > (h * (vc->vc_rows + 1))
p->vrows -= (info->var.yres - (h * vc->vc_rows)) / h;
#endif
if ((info->var.yres % h) if ((info->var.yres % h)
&& (info->var.yres_virtual % h < info->var.yres % h)) && (info->var.yres_virtual % h < info->var.yres % h))
p->vrows--; p->vrows--;
......
...@@ -1515,7 +1515,7 @@ static const SiS300_TVDataStruct SiS300_ExtNTSCData[] = ...@@ -1515,7 +1515,7 @@ static const SiS300_TVDataStruct SiS300_ExtNTSCData[] =
}; };
#if 0 #if 0
static const SiS310_TVDataStruct SiS300_St1HiTVData[]= static const SiS300_TVDataStruct SiS300_St1HiTVData[]=
{ {
}; };
...@@ -1731,33 +1731,31 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1024x768Data_2[] = ...@@ -1731,33 +1731,31 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1024x768Data_2[] =
{800, 525,1280, 813} {800, 525,1280, 813}
}; };
static const SiS300_LVDSDataStruct SiS300_LVDS1280x1024Data_1[] = static const SiS300_LVDSDataStruct SiS300_LVDS1280x1024Data_1[]=
{ {
{840, 438,1344, 806}, {1048, 442,1688,1066},
{840, 409,1344, 806}, {1048, 392,1688,1066},
{840, 438,1344, 806}, {1048, 442,1688,1066},
{840, 409,1344, 806}, {1048, 392,1688,1066},
{840, 518,1344, 806}, {1048, 522,1688,1066},
{1050, 638,1344, 806}, {1208, 642,1688,1066},
{1344, 806,1344, 806}, {1432, 810,1688,1066},
{800, 449,1280, 801}, {1688,1066,1688,1066}
{800, 525,1280, 813}
}; };
static const SiS300_LVDSDataStruct SiS300_LVDS1280x1024Data_2[] = static const SiS300_LVDSDataStruct SiS300_LVDS1280x1024Data_2[]=
{ {
{1344, 806,1344, 806}, {1688,1066,1688,1066},
{1344, 806,1344, 806}, {1688,1066,1688,1066},
{1344, 806,1344, 806}, {1688,1066,1688,1066},
{1344, 806,1344, 806}, {1688,1066,1688,1066},
{1344, 806,1344, 806}, {1688,1066,1688,1066},
{1344, 806,1344, 806}, {1688,1066,1688,1066},
{1344, 806,1344, 806}, {1688,1066,1688,1066},
{800, 449,1280, 801}, {1688,1066,1688,1066}
{800, 525,1280, 813}
}; };
static const SiS300_LVDSDataStruct SiS300_LVDS1400x1050Data_1[] = /* TW: New */ static const SiS300_LVDSDataStruct SiS300_LVDS1400x1050Data_1[] =
{ {
{928, 416, 1688, 1066}, {928, 416, 1688, 1066},
{928, 366, 1688, 1066}, {928, 366, 1688, 1066},
...@@ -1770,7 +1768,7 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1400x1050Data_1[] = /* TW: New ...@@ -1770,7 +1768,7 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1400x1050Data_1[] = /* TW: New
{1688, 1066, 1688, 1066} {1688, 1066, 1688, 1066}
}; };
static const SiS300_LVDSDataStruct SiS300_LVDS1400x1050Data_2[] = /* TW: New */ static const SiS300_LVDSDataStruct SiS300_LVDS1400x1050Data_2[] =
{ {
{1688,1066, 1688,1066}, {1688,1066, 1688,1066},
{1688,1066, 1688,1066}, {1688,1066, 1688,1066},
...@@ -1783,33 +1781,60 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1400x1050Data_2[] = /* TW: New ...@@ -1783,33 +1781,60 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1400x1050Data_2[] = /* TW: New
{1688,1066, 1688,1066}, {1688,1066, 1688,1066},
}; };
static const SiS300_LVDSDataStruct SiS300_LVDS1280x768Data_1[]= /* TW: New - TODO */ static const SiS300_LVDSDataStruct SiS300_LVDS1600x1200Data_1[]=
{ /* TW: Temp data, invalid (is identical to 1024x768) */ {
{840, 438,1344, 806}, {1088, 450, 2048,1250},
{840, 409,1344, 806}, {1088, 400, 2048,1250},
{840, 438,1344, 806}, {1088, 450, 2048,1250},
{840, 409,1344, 806}, {1088, 400, 2048,1250},
{840, 518,1344, 806}, {1088, 530, 2048,1250},
{1050, 638,1344, 806}, {1248, 650, 2048,1250},
{1344, 806,1344, 806}, {1472, 818, 2048,1250},
{800, 449,1280, 801}, {1728,1066, 2048,1250},
{800, 525,1280, 813} {1848,1066, 2048,1250},
{2048,1250, 2048,1250}
};
static const SiS300_LVDSDataStruct SiS300_LVDS1600x1200Data_2[]=
{
{2048,1250, 2048,1250},
{2048,1250, 2048,1250},
{2048,1250, 2048,1250},
{2048,1250, 2048,1250},
{2048,1250, 2048,1250},
{2048,1250, 2048,1250},
{2048,1250, 2048,1250},
{2048,1250, 2048,1250},
{2048,1250, 2048,1250},
{2048,1250, 2048,1250}
};
static const SiS300_LVDSDataStruct SiS300_LVDS1280x768Data_1[]=
{
{ 768, 438, 1408, 806},
{ 768, 388, 1408, 806},
{ 768, 438, 1408, 806},
{ 768, 388, 1408, 806},
{ 768, 518, 1408, 806},
{ 928, 638, 1408, 806},
{1152, 806, 1408, 806},
{1408, 806, 1408, 806},
{1408, 806, 1408, 806}
};
static const SiS300_LVDSDataStruct SiS300_LVDS1280x768Data_2[]=
{
{1408, 806, 1408, 806},
{1408, 806, 1408, 806},
{1408, 806, 1408, 806},
{1408, 806, 1408, 806},
{1408, 806, 1408, 806},
{1408, 806, 1408, 806},
{1408, 806, 1408, 806},
{1408, 806, 1408, 806},
{1408, 806, 1408, 806}
}; };
static const SiS300_LVDSDataStruct SiS300_LVDS1280x768Data_2[]= /* TW: New - TODO */
{ /* TW: Temp data, invalid (is identical to 1024x768) */
{1344, 806,1344, 806},
{1344, 806,1344, 806},
{1344, 806,1344, 806},
{1344, 806,1344, 806},
{1344, 806,1344, 806},
{1344, 806,1344, 806},
{1344, 806,1344, 806},
{800, 449,1280, 801},
{800, 525,1280, 813}
};
/* TW: New: */
static const SiS300_LVDSDataStruct SiS300_LVDS1024x600Data_1[] = static const SiS300_LVDSDataStruct SiS300_LVDS1024x600Data_1[] =
{ {
{840, 604,1344, 800}, {840, 604,1344, 800},
...@@ -1823,7 +1848,6 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1024x600Data_1[] = ...@@ -1823,7 +1848,6 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1024x600Data_1[] =
{800, 525,1280, 785} {800, 525,1280, 785}
}; };
/* TW: New: */
static const SiS300_LVDSDataStruct SiS300_LVDS1024x600Data_2[] = static const SiS300_LVDSDataStruct SiS300_LVDS1024x600Data_2[] =
{ {
{1344, 800,1344, 800}, {1344, 800,1344, 800},
...@@ -1837,7 +1861,6 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1024x600Data_2[] = ...@@ -1837,7 +1861,6 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1024x600Data_2[] =
{800, 525,1280, 813} {800, 525,1280, 813}
}; };
/* TW: New: */
static const SiS300_LVDSDataStruct SiS300_LVDS1152x768Data_1[] = static const SiS300_LVDSDataStruct SiS300_LVDS1152x768Data_1[] =
{ {
{840, 438,1344, 806}, {840, 438,1344, 806},
...@@ -1851,7 +1874,6 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1152x768Data_1[] = ...@@ -1851,7 +1874,6 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1152x768Data_1[] =
{800, 525,1280, 813} {800, 525,1280, 813}
}; };
/* TW: New: */
static const SiS300_LVDSDataStruct SiS300_LVDS1152x768Data_2[] = static const SiS300_LVDSDataStruct SiS300_LVDS1152x768Data_2[] =
{ {
{1344, 806,1344, 806}, {1344, 806,1344, 806},
...@@ -1865,17 +1887,19 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1152x768Data_2[] = ...@@ -1865,17 +1887,19 @@ static const SiS300_LVDSDataStruct SiS300_LVDS1152x768Data_2[] =
{800, 525,1280, 813} {800, 525,1280, 813}
}; };
/* TW: New in 650/LVDS BIOS - 1:1 */ /* TW: pass 1:1 data */
static const SiS300_LVDSDataStruct SiS300_LVDSXXXxXXXData_1[] = /* TW: New */ static const SiS300_LVDSDataStruct SiS300_LVDSXXXxXXXData_1[]=
{ {
{ 800, 449, 800, 449}, { 800, 449, 800, 449},
{ 800, 449, 800, 449}, { 800, 449, 800, 449},
{ 900, 449, 900, 449}, { 900, 449, 900, 449},
{ 900, 449, 900, 449}, { 900, 449, 900, 449},
{ 800, 525, 800, 525}, { 800, 525, 800, 525}, /* 640x480 */
{1056, 628,1056, 628}, {1056, 628, 1056, 628}, /* 800x600 */
{1344, 806,1344, 806}, {1344, 806, 1344, 806}, /* 1024x768 */
{1688, 806,1688, 806} /* 1280x768 ! */ {1344,1066, 1344,1066}, /* 1280x1024 */ /* INSERTED ! */
{1688, 806, 1688, 806}, /* 1280x768 ! */
/* No other panels ! */
}; };
static const SiS300_LVDSDataStruct SiS300_LVDS640x480Data_1[] = static const SiS300_LVDSDataStruct SiS300_LVDS640x480Data_1[] =
...@@ -2448,6 +2472,34 @@ static const SiS300_LVDSDesStruct SiS300_PanelType0f_2[] = ...@@ -2448,6 +2472,34 @@ static const SiS300_LVDSDesStruct SiS300_PanelType0f_2[] =
{ 0, 0} { 0, 0}
}; };
static const SiS300_LVDSDesStruct SiS300_PanelTypeNS_1[]=
{
{ 8, 0},
{ 8, 0},
{ 8, 0},
{ 8, 0},
{ 8, 0},
{ 0, 0},
{ 0, 0},
{ 0, 0},
{ 0, 806},
{ 0, 0 }
};
static const SiS300_LVDSDesStruct SiS300_PanelTypeNS_2[] =
{
{ 0 , 0},
{ 0 , 0},
{ 0 , 0},
{ 0 , 0},
{ 0 , 0},
{ 0 , 0},
{ 0 , 0},
{ 0 , 0},
{ 0 , 0},
{ 0 , 0}
};
static const SiS300_LVDSDesStruct SiS300_PanelType1076_1[] = /* TW: New */ static const SiS300_LVDSDesStruct SiS300_PanelType1076_1[] = /* TW: New */
{ {
{ 0 , 0}, { 0 , 0},
......
This diff is collapsed.
This diff is collapsed.
...@@ -261,16 +261,15 @@ void SiSInitPCIetc(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtensio ...@@ -261,16 +261,15 @@ void SiSInitPCIetc(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtensio
void SiSDetermineROMUsage(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, UCHAR *ROMAddr); void SiSDetermineROMUsage(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, UCHAR *ROMAddr);
#ifdef LINUX_XF86 #ifdef LINUX_XF86
USHORT SiS_CalcModeIndex(ScrnInfoPtr pScrn, DisplayModePtr mode);
USHORT SiS_CheckCalcModeIndex(ScrnInfoPtr pScrn, DisplayModePtr mode, int VBFlags);
USHORT SiS_CheckBuildCustomMode(ScrnInfoPtr pScrn, DisplayModePtr mode, int VBFlags); USHORT SiS_CheckBuildCustomMode(ScrnInfoPtr pScrn, DisplayModePtr mode, int VBFlags);
void SiS_SetPitch(SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, UShort BaseAddr); void SiS_SetPitch(SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, UShort BaseAddr);
void SiS_SetPitchCRT1(SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, UShort BaseAddr); void SiS_SetPitchCRT1(SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, UShort BaseAddr);
void SiS_SetPitchCRT2(SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, UShort BaseAddr); void SiS_SetPitchCRT2(SiS_Private *SiS_Pr, ScrnInfoPtr pScrn, UShort BaseAddr);
unsigned char SiS_GetSetModeID(ScrnInfoPtr pScrn, unsigned char id);
unsigned char SiS_GetSetBIOSScratch(ScrnInfoPtr pScrn, USHORT offset, unsigned char value);
extern int SiS_compute_vclk(int Clock, int *out_n, int *out_dn, int *out_div, extern int SiS_compute_vclk(int Clock, int *out_n, int *out_dn, int *out_div,
int *out_sbit, int *out_scale); int *out_sbit, int *out_scale);
extern unsigned char SiS_GetSetBIOSScratch(ScrnInfoPtr pScrn, USHORT offset, unsigned char value);
extern unsigned char SiS_GetSetModeID(ScrnInfoPtr pScrn, unsigned char id);
extern USHORT SiS_CalcModeIndex(ScrnInfoPtr pScrn, DisplayModePtr mode);
#endif #endif
extern USHORT SiS_GetOffset(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex, extern USHORT SiS_GetOffset(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,
......
This diff is collapsed.
...@@ -72,8 +72,10 @@ void SiS_GetCRT2Data(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHOR ...@@ -72,8 +72,10 @@ void SiS_GetCRT2Data(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHOR
USHORT RefreshRateTableIndex,PSIS_HW_DEVICE_INFO HwDeviceExtension); USHORT RefreshRateTableIndex,PSIS_HW_DEVICE_INFO HwDeviceExtension);
void SiS_GetCRT2DataLVDS(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex, void SiS_GetCRT2DataLVDS(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,
USHORT RefreshRateTableIndex,PSIS_HW_DEVICE_INFO HwDeviceExtension); USHORT RefreshRateTableIndex,PSIS_HW_DEVICE_INFO HwDeviceExtension);
#ifdef SIS315H
void SiS_GetCRT2PtrA(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex, void SiS_GetCRT2PtrA(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,
USHORT RefreshRateTableIndex,USHORT *CRT2Index,USHORT *ResIndex); USHORT RefreshRateTableIndex,USHORT *CRT2Index,USHORT *ResIndex);
#endif
void SiS_GetCRT2Part2Ptr(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex, void SiS_GetCRT2Part2Ptr(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,
USHORT RefreshRateTableIndex,USHORT *CRT2Index, USHORT *ResIndex); USHORT RefreshRateTableIndex,USHORT *CRT2Index, USHORT *ResIndex);
void SiS_GetCRT2Data301(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex, void SiS_GetCRT2Data301(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,
...@@ -142,8 +144,10 @@ void SiS_SetCRT2ECLK(SiS_Private *SiS_Pr, UCHAR *ROMAddr, USHORT ModeNo,USHO ...@@ -142,8 +144,10 @@ void SiS_SetCRT2ECLK(SiS_Private *SiS_Pr, UCHAR *ROMAddr, USHORT ModeNo,USHO
void SiS_GetLVDSDesPtr(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex, void SiS_GetLVDSDesPtr(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,
USHORT RefreshRateTableIndex,USHORT *PanelIndex,USHORT *ResIndex, USHORT RefreshRateTableIndex,USHORT *PanelIndex,USHORT *ResIndex,
PSIS_HW_DEVICE_INFO HwDeviceExtension); PSIS_HW_DEVICE_INFO HwDeviceExtension);
#ifdef SIS315H
void SiS_GetLVDSDesPtrA(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex, void SiS_GetLVDSDesPtrA(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,
USHORT RefreshRateTableIndex,USHORT *PanelIndex,USHORT *ResIndex); USHORT RefreshRateTableIndex,USHORT *PanelIndex,USHORT *ResIndex);
#endif
void SiS_SetTPData(SiS_Private *SiS_Pr); void SiS_SetTPData(SiS_Private *SiS_Pr);
void SiS_WhatIsThis(SiS_Private *SiS_Pr, USHORT myvbinfo); void SiS_WhatIsThis(SiS_Private *SiS_Pr, USHORT myvbinfo);
void SiS_ModCRT1CRTC(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex, void SiS_ModCRT1CRTC(SiS_Private *SiS_Pr, UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,
...@@ -202,8 +206,10 @@ void SiS_SetGroup1(SiS_Private *SiS_Pr, USHORT BaseAddr,UCHAR *ROMAddr,USHOR ...@@ -202,8 +206,10 @@ void SiS_SetGroup1(SiS_Private *SiS_Pr, USHORT BaseAddr,UCHAR *ROMAddr,USHOR
PSIS_HW_DEVICE_INFO HwDeviceExtension,USHORT RefreshRateTableIndex); PSIS_HW_DEVICE_INFO HwDeviceExtension,USHORT RefreshRateTableIndex);
void SiS_SetGroup1_LVDS(SiS_Private *SiS_Pr, USHORT BaseAddr,UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex, void SiS_SetGroup1_LVDS(SiS_Private *SiS_Pr, USHORT BaseAddr,UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,
PSIS_HW_DEVICE_INFO HwDeviceExtension,USHORT RefreshRateTableIndex); PSIS_HW_DEVICE_INFO HwDeviceExtension,USHORT RefreshRateTableIndex);
#ifdef SIS315H
void SiS_SetGroup1_LCDA(SiS_Private *SiS_Pr, USHORT BaseAddr,UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex, void SiS_SetGroup1_LCDA(SiS_Private *SiS_Pr, USHORT BaseAddr,UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,
PSIS_HW_DEVICE_INFO HwDeviceExtension,USHORT RefreshRateTableIndex); PSIS_HW_DEVICE_INFO HwDeviceExtension,USHORT RefreshRateTableIndex);
#endif
void SiS_SetGroup1_301(SiS_Private *SiS_Pr, USHORT BaseAddr,UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex, void SiS_SetGroup1_301(SiS_Private *SiS_Pr, USHORT BaseAddr,UCHAR *ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,
PSIS_HW_DEVICE_INFO HwDeviceExtension,USHORT RefreshRateTableIndex); PSIS_HW_DEVICE_INFO HwDeviceExtension,USHORT RefreshRateTableIndex);
#ifdef SIS300 #ifdef SIS300
...@@ -231,18 +237,24 @@ void SiS_VBWait(SiS_Private *SiS_Pr); ...@@ -231,18 +237,24 @@ void SiS_VBWait(SiS_Private *SiS_Pr);
void SiS_SiS30xBLOn(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension); void SiS_SiS30xBLOn(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension);
void SiS_SiS30xBLOff(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension); void SiS_SiS30xBLOff(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension);
/* TW: New functions (with mostly temporary names) */
void SiS_Chrontel701xBLOn(SiS_Private *SiS_Pr); void SiS_Chrontel701xBLOn(SiS_Private *SiS_Pr);
void SiS_Chrontel701xBLOff(SiS_Private *SiS_Pr);
#ifdef SIS315H
void SiS_Chrontel701xOn(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, void SiS_Chrontel701xOn(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension,
USHORT BaseAddr); USHORT BaseAddr);
void SiS_Chrontel701xBLOff(SiS_Private *SiS_Pr);
void SiS_Chrontel701xOff(SiS_Private *SiS_Pr); void SiS_Chrontel701xOff(SiS_Private *SiS_Pr);
void SiS_ChrontelResetDB(SiS_Private *SiS_Pr); void SiS_ChrontelResetDB(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr);
void SiS_ChrontelDoSomething4(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr); void SiS_ChrontelDoSomething4(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr);
void SiS_ChrontelDoSomething3(SiS_Private *SiS_Pr, USHORT ModeNo, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr); void SiS_ChrontelDoSomething3(SiS_Private *SiS_Pr, USHORT ModeNo, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr);
void SiS_ChrontelDoSomething2(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr); void SiS_ChrontelDoSomething2(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr);
void SiS_ChrontelDoSomething1(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr); void SiS_ChrontelDoSomething1(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr);
BOOLEAN SiS_WeHaveBacklightCtrl(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr); BOOLEAN SiS_WeHaveBacklightCtrl(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr);
void SiS_ChrontelPowerSequencing(SiS_Private *SiS_Pr);
void SiS_SetCH701xForLCD(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr);
#ifdef NEWCH701x
void SiS_ChrontelDoSomething5(SiS_Private *SiS_Pr);
#endif
#endif /* 315 */
#if 0 #if 0
BOOLEAN SiS_IsSomethingCR5F(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr); BOOLEAN SiS_IsSomethingCR5F(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr);
#endif #endif
...@@ -250,12 +262,9 @@ BOOLEAN SiS_IsYPbPr(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, ...@@ -250,12 +262,9 @@ BOOLEAN SiS_IsYPbPr(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension,
BOOLEAN SiS_IsChScart(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr); BOOLEAN SiS_IsChScart(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr);
BOOLEAN SiS_IsTVOrYPbPrOrScart(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr); BOOLEAN SiS_IsTVOrYPbPrOrScart(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr);
BOOLEAN SiS_IsLCDOrLCDA(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr); BOOLEAN SiS_IsLCDOrLCDA(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr);
void SiS_SetCH701xForLCD(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension, USHORT BaseAddr);
void SiS_ChrontelPowerSequencing(SiS_Private *SiS_Pr);
BOOLEAN SiS_CR36BIOSWord23b(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension); BOOLEAN SiS_CR36BIOSWord23b(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension);
BOOLEAN SiS_CR36BIOSWord23d(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension); BOOLEAN SiS_CR36BIOSWord23d(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension);
BOOLEAN SiS_IsSR13_CR30(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension); BOOLEAN SiS_IsSR13_CR30(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension);
/* TW end */
extern void SiS_SetReg1(USHORT, USHORT, USHORT); extern void SiS_SetReg1(USHORT, USHORT, USHORT);
extern void SiS_SetReg3(USHORT, USHORT); extern void SiS_SetReg3(USHORT, USHORT);
......
...@@ -60,7 +60,7 @@ UCHAR SiS310_LCDDelayCompensation_3xx301B[] = /* 30xB,LV */ ...@@ -60,7 +60,7 @@ UCHAR SiS310_LCDDelayCompensation_3xx301B[] = /* 30xB,LV */
0x02,0x02,0x02 0x02,0x02,0x02
}; };
const UCHAR SiS310_LCDDelayCompensation_LVDS[] = /* LVDS */ const UCHAR SiS310_LCDDelayCompensation_LVDS650[] = /* LVDS */
{ {
0x00,0x00,0x00, /* 800x600 */ 0x00,0x00,0x00, /* 800x600 */
0x00,0x00,0x00, /* 1024x768 */ 0x00,0x00,0x00, /* 1024x768 */
...@@ -79,6 +79,25 @@ const UCHAR SiS310_LCDDelayCompensation_LVDS[] = /* LVDS */ ...@@ -79,6 +79,25 @@ const UCHAR SiS310_LCDDelayCompensation_LVDS[] = /* LVDS */
0x00,0x00,0x00 0x00,0x00,0x00
}; };
const UCHAR SiS310_LCDDelayCompensation_LVDS740[] = /* LVDS */
{
0x03,0x03,0x03, /* 800x600 */
0x03,0x03,0x03, /* 1024x768 */
0x03,0x03,0x03, /* 1280x1024 */
0x03,0x03,0x03, /* 640x480 (unknown) */
0x03,0x03,0x03, /* 1024x600 (unknown) */
0x03,0x03,0x03, /* 1152x864 (unknown) */
0x03,0x03,0x03, /* 1280x960 (guessed) */
0x03,0x03,0x03, /* 1152x768 (unknown) */
0x03,0x03,0x03, /* 1400x1050 */
0x03,0x03,0x03, /* 1280x768 (guessed) */
0x03,0x03,0x03, /* 1600x1200 */
0x00,0x00,0x00,
0x00,0x00,0x00,
0x00,0x00,0x00,
0x00,0x00,0x00
};
const UCHAR SiS310_LCDDelayCompensation_651301LV[] = /* M650/651 301LV */ const UCHAR SiS310_LCDDelayCompensation_651301LV[] = /* M650/651 301LV */
{ {
0x33,0x33,0x33, /* 800x600 (guessed) */ 0x33,0x33,0x33, /* 800x600 (guessed) */
......
...@@ -330,7 +330,7 @@ void sisfb_syncaccel(void) ...@@ -330,7 +330,7 @@ void sisfb_syncaccel(void)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,34) /* --- KERNEL 2.5.34 and later --- */ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,34) /* --- KERNEL 2.5.34 and later --- */
int sisfb_sync(struct fb_info *info) int fbcon_sis_sync(struct fb_info *info)
{ {
if(!sisfb_accel) return 0; if(!sisfb_accel) return 0;
CRITFLAGS CRITFLAGS
...@@ -343,17 +343,17 @@ int sisfb_sync(struct fb_info *info) ...@@ -343,17 +343,17 @@ int sisfb_sync(struct fb_info *info)
return 0; return 0;
} }
void sisfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) void fbcon_sis_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
{ {
int col=0; int col=0;
CRITFLAGS CRITFLAGS
TWDEBUG("Inside sisfb_fillrect"); TWDEBUG("Inside sis_fillrect");
if(!rect->width || !rect->height) if(!rect->width || !rect->height)
return; return;
if(!sisfb_accel) { if(!sisfb_accel) {
cfb_fillrect(info, rect); cfb_fillrect(info, rect);
return; return;
} }
...@@ -382,7 +382,7 @@ void sisfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) ...@@ -382,7 +382,7 @@ void sisfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
} }
void sisfb_copyarea(struct fb_info *info, const struct fb_copyarea *area) void fbcon_sis_copyarea(struct fb_info *info, const struct fb_copyarea *area)
{ {
int xdir, ydir; int xdir, ydir;
CRITFLAGS CRITFLAGS
......
...@@ -502,8 +502,8 @@ void fbcon_sis_clear32(struct vc_data *conp, struct display *p, int srcy, ...@@ -502,8 +502,8 @@ void fbcon_sis_clear32(struct vc_data *conp, struct display *p, int srcy,
#endif #endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,34) #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,34)
extern int sisfb_accel; extern int sisfb_accel;
void sisfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect); void fbcon_sis_fillrect(struct fb_info *info, const struct fb_fillrect *rect);
void sisfb_copyarea(struct fb_info *info, const struct fb_copyarea *area); void fbcon_sis_copyarea(struct fb_info *info, const struct fb_copyarea *area);
#endif #endif
#endif #endif
This diff is collapsed.
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#define VER_MAJOR 1 #define VER_MAJOR 1
#define VER_MINOR 6 #define VER_MINOR 6
#define VER_LEVEL 0 #define VER_LEVEL 1
#include "sis.h" #include "sis.h"
...@@ -890,11 +890,15 @@ static int sisfb_blank(int blank, ...@@ -890,11 +890,15 @@ static int sisfb_blank(int blank,
struct fb_info *info); struct fb_info *info);
static int sisfb_mmap(struct fb_info *info, struct file *file, static int sisfb_mmap(struct fb_info *info, struct file *file,
struct vm_area_struct *vma); struct vm_area_struct *vma);
extern void sisfb_fillrect(struct fb_info *info, extern void fbcon_sis_fillrect(struct fb_info *info,
const struct fb_fillrect *rect); const struct fb_fillrect *rect);
extern void sisfb_copyarea(struct fb_info *info, extern void fbcon_sis_copyarea(struct fb_info *info,
const struct fb_copyarea *area); const struct fb_copyarea *area);
extern int sisfb_sync(struct fb_info *info); #if 0
extern void cfb_imageblit(struct fb_info *info,
const struct fb_image *image);
#endif
extern int fbcon_sis_sync(struct fb_info *info);
static int sisfb_ioctl(struct inode *inode, static int sisfb_ioctl(struct inode *inode,
struct file *file, struct file *file,
unsigned int cmd, unsigned int cmd,
......
...@@ -372,6 +372,8 @@ typedef struct _SiS_Private ...@@ -372,6 +372,8 @@ typedef struct _SiS_Private
const SiS_LVDSDataStruct *SiS_LVDS1280x960Data_2; const SiS_LVDSDataStruct *SiS_LVDS1280x960Data_2;
const SiS_LVDSDataStruct *SiS_LVDS1400x1050Data_1; const SiS_LVDSDataStruct *SiS_LVDS1400x1050Data_1;
const SiS_LVDSDataStruct *SiS_LVDS1400x1050Data_2; const SiS_LVDSDataStruct *SiS_LVDS1400x1050Data_2;
const SiS_LVDSDataStruct *SiS_LVDS1600x1200Data_1;
const SiS_LVDSDataStruct *SiS_LVDS1600x1200Data_2;
const SiS_LVDSDataStruct *SiS_LVDS1280x768Data_1; const SiS_LVDSDataStruct *SiS_LVDS1280x768Data_1;
const SiS_LVDSDataStruct *SiS_LVDS1280x768Data_2; const SiS_LVDSDataStruct *SiS_LVDS1280x768Data_2;
const SiS_LVDSDataStruct *SiS_LVDS1024x600Data_1; const SiS_LVDSDataStruct *SiS_LVDS1024x600Data_1;
...@@ -410,6 +412,7 @@ typedef struct _SiS_Private ...@@ -410,6 +412,7 @@ typedef struct _SiS_Private
const SiS_LVDSDesStruct *SiS_PanelType0d_1; const SiS_LVDSDesStruct *SiS_PanelType0d_1;
const SiS_LVDSDesStruct *SiS_PanelType0e_1; const SiS_LVDSDesStruct *SiS_PanelType0e_1;
const SiS_LVDSDesStruct *SiS_PanelType0f_1; const SiS_LVDSDesStruct *SiS_PanelType0f_1;
const SiS_LVDSDesStruct *SiS_PanelTypeNS_1;
const SiS_LVDSDesStruct *SiS_PanelType00_2; const SiS_LVDSDesStruct *SiS_PanelType00_2;
const SiS_LVDSDesStruct *SiS_PanelType01_2; const SiS_LVDSDesStruct *SiS_PanelType01_2;
const SiS_LVDSDesStruct *SiS_PanelType02_2; const SiS_LVDSDesStruct *SiS_PanelType02_2;
...@@ -426,6 +429,7 @@ typedef struct _SiS_Private ...@@ -426,6 +429,7 @@ typedef struct _SiS_Private
const SiS_LVDSDesStruct *SiS_PanelType0d_2; const SiS_LVDSDesStruct *SiS_PanelType0d_2;
const SiS_LVDSDesStruct *SiS_PanelType0e_2; const SiS_LVDSDesStruct *SiS_PanelType0e_2;
const SiS_LVDSDesStruct *SiS_PanelType0f_2; const SiS_LVDSDesStruct *SiS_PanelType0f_2;
const SiS_LVDSDesStruct *SiS_PanelTypeNS_2;
const SiS_LVDSDesStruct *LVDS1024x768Des_1; const SiS_LVDSDesStruct *LVDS1024x768Des_1;
const SiS_LVDSDesStruct *LVDS1280x1024Des_1; const SiS_LVDSDesStruct *LVDS1280x1024Des_1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment