Commit fab04b97 authored by Aaro Koskinen's avatar Aaro Koskinen Committed by Greg Kroah-Hartman

staging: xgifb: move XGI21_LVDSCapStruct into xgifb_video_info

Move the LVDS data into a device-specific data, and eliminate the global
variable usage.
Signed-off-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 64afdf87
...@@ -382,7 +382,7 @@ static void XGIRegInit(struct vb_device_info *XGI_Pr, unsigned long BaseAddr) ...@@ -382,7 +382,7 @@ static void XGIRegInit(struct vb_device_info *XGI_Pr, unsigned long BaseAddr)
/* ------------------ Internal helper routines ----------------- */ /* ------------------ Internal helper routines ----------------- */
static int XGIfb_GetXG21DefaultLVDSModeIdx(void) static int XGIfb_GetXG21DefaultLVDSModeIdx(struct xgifb_video_info *xgifb_info)
{ {
int found_mode = 0; int found_mode = 0;
...@@ -391,11 +391,11 @@ static int XGIfb_GetXG21DefaultLVDSModeIdx(void) ...@@ -391,11 +391,11 @@ static int XGIfb_GetXG21DefaultLVDSModeIdx(void)
found_mode = 0; found_mode = 0;
while ((XGIbios_mode[XGIfb_mode_idx].mode_no != 0) while ((XGIbios_mode[XGIfb_mode_idx].mode_no != 0)
&& (XGIbios_mode[XGIfb_mode_idx].xres && (XGIbios_mode[XGIfb_mode_idx].xres
<= XGI21_LCDCapList[0].LVDSHDE)) { <= xgifb_info->lvds_data.LVDSHDE)) {
if ((XGIbios_mode[XGIfb_mode_idx].xres if ((XGIbios_mode[XGIfb_mode_idx].xres
== XGI21_LCDCapList[0].LVDSHDE) == xgifb_info->lvds_data.LVDSHDE)
&& (XGIbios_mode[XGIfb_mode_idx].yres && (XGIbios_mode[XGIfb_mode_idx].yres
== XGI21_LCDCapList[0].LVDSVDE) == xgifb_info->lvds_data.LVDSVDE)
&& (XGIbios_mode[XGIfb_mode_idx].bpp == 8)) { && (XGIbios_mode[XGIfb_mode_idx].bpp == 8)) {
found_mode = 1; found_mode = 1;
break; break;
...@@ -458,8 +458,8 @@ static int XGIfb_validate_mode(struct xgifb_video_info *xgifb_info, int myindex) ...@@ -458,8 +458,8 @@ static int XGIfb_validate_mode(struct xgifb_video_info *xgifb_info, int myindex)
if (xgifb_info->chip == XG21) { if (xgifb_info->chip == XG21) {
if (xgifb_info->display2 == XGIFB_DISP_LCD) { if (xgifb_info->display2 == XGIFB_DISP_LCD) {
xres = XGI21_LCDCapList[0].LVDSHDE; xres = xgifb_info->lvds_data.LVDSHDE;
yres = XGI21_LCDCapList[0].LVDSVDE; yres = xgifb_info->lvds_data.LVDSVDE;
if (XGIbios_mode[myindex].xres > xres) if (XGIbios_mode[myindex].xres > xres)
return -1; return -1;
if (XGIbios_mode[myindex].yres > yres) if (XGIbios_mode[myindex].yres > yres)
...@@ -1173,7 +1173,7 @@ static int XGIfb_do_set_var(struct fb_var_screeninfo *var, int isactive, ...@@ -1173,7 +1173,7 @@ static int XGIfb_do_set_var(struct fb_var_screeninfo *var, int isactive,
if (isactive) { if (isactive) {
XGIfb_pre_setmode(xgifb_info); XGIfb_pre_setmode(xgifb_info);
if (XGISetModeNew(hw_info, if (XGISetModeNew(xgifb_info, hw_info,
XGIbios_mode[xgifb_info->mode_idx].mode_no) XGIbios_mode[xgifb_info->mode_idx].mode_no)
== 0) { == 0) {
printk(KERN_ERR "XGIfb: Setting mode[0x%x] failed\n", printk(KERN_ERR "XGIfb: Setting mode[0x%x] failed\n",
...@@ -2167,7 +2167,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev, ...@@ -2167,7 +2167,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
if (xgifb_info->display2 == XGIFB_DISP_LCD && if (xgifb_info->display2 == XGIFB_DISP_LCD &&
xgifb_info->chip == XG21) xgifb_info->chip == XG21)
xgifb_info->mode_idx = xgifb_info->mode_idx =
XGIfb_GetXG21DefaultLVDSModeIdx(); XGIfb_GetXG21DefaultLVDSModeIdx(xgifb_info);
else else
xgifb_info->mode_idx = DEFAULT_MODE; xgifb_info->mode_idx = DEFAULT_MODE;
} }
......
...@@ -90,6 +90,8 @@ struct xgifb_video_info { ...@@ -90,6 +90,8 @@ struct xgifb_video_info {
unsigned char TV_type; unsigned char TV_type;
unsigned char TV_plug; unsigned char TV_plug;
struct XGI21_LVDSCapStruct lvds_data;
enum XGI_CHIP_TYPE chip; enum XGI_CHIP_TYPE chip;
unsigned char revision_id; unsigned char revision_id;
......
...@@ -1070,19 +1070,20 @@ static int XGINew_DDRSizing340(struct xgi_hw_device_info *HwDeviceExtension, ...@@ -1070,19 +1070,20 @@ static int XGINew_DDRSizing340(struct xgi_hw_device_info *HwDeviceExtension,
return 0; return 0;
} }
static void XGINew_SetDRAMSize_340(struct xgi_hw_device_info *HwDeviceExtension, static void XGINew_SetDRAMSize_340(struct xgifb_video_info *xgifb_info,
struct xgi_hw_device_info *HwDeviceExtension,
struct vb_device_info *pVBInfo) struct vb_device_info *pVBInfo)
{ {
unsigned short data; unsigned short data;
pVBInfo->FBAddr = HwDeviceExtension->pjVideoMemoryAddress; pVBInfo->FBAddr = HwDeviceExtension->pjVideoMemoryAddress;
XGISetModeNew(HwDeviceExtension, 0x2e); XGISetModeNew(xgifb_info, HwDeviceExtension, 0x2e);
data = xgifb_reg_get(pVBInfo->P3c4, 0x21); data = xgifb_reg_get(pVBInfo->P3c4, 0x21);
/* disable read cache */ /* disable read cache */
xgifb_reg_set(pVBInfo->P3c4, 0x21, (unsigned short) (data & 0xDF)); xgifb_reg_set(pVBInfo->P3c4, 0x21, (unsigned short) (data & 0xDF));
XGI_DisplayOff(HwDeviceExtension, pVBInfo); XGI_DisplayOff(xgifb_info, HwDeviceExtension, pVBInfo);
/* data = xgifb_reg_get(pVBInfo->P3c4, 0x1); */ /* data = xgifb_reg_get(pVBInfo->P3c4, 0x1); */
/* data |= 0x20 ; */ /* data |= 0x20 ; */
...@@ -1156,7 +1157,7 @@ static void xgifb_read_vbios(struct pci_dev *pdev, ...@@ -1156,7 +1157,7 @@ static void xgifb_read_vbios(struct pci_dev *pdev,
if (entry >= j) if (entry >= j)
entry = 0; entry = 0;
i += entry * 25; i += entry * 25;
lvds = &pVBInfo->XG21_LVDSCapList[0]; lvds = &xgifb_info->lvds_data;
if (vbios_size <= i + 24) if (vbios_size <= i + 24)
goto error; goto error;
lvds->LVDS_Capability = vbios[i] | (vbios[i + 1] << 8); lvds->LVDS_Capability = vbios[i] | (vbios[i + 1] << 8);
...@@ -1779,7 +1780,7 @@ unsigned char XGIInitNew(struct pci_dev *pdev) ...@@ -1779,7 +1780,7 @@ unsigned char XGIInitNew(struct pci_dev *pdev)
pVBInfo); pVBInfo);
printk("20"); printk("20");
XGINew_SetDRAMSize_340(HwDeviceExtension, pVBInfo); XGINew_SetDRAMSize_340(xgifb_info, HwDeviceExtension, pVBInfo);
printk("21"); printk("21");
printk("22"); printk("22");
......
This diff is collapsed.
...@@ -6,11 +6,13 @@ extern void XGI_UnLockCRT2(struct xgi_hw_device_info *HwDeviceExtension, ...@@ -6,11 +6,13 @@ extern void XGI_UnLockCRT2(struct xgi_hw_device_info *HwDeviceExtension,
struct vb_device_info *); struct vb_device_info *);
extern void XGI_LockCRT2(struct xgi_hw_device_info *HwDeviceExtension, extern void XGI_LockCRT2(struct xgi_hw_device_info *HwDeviceExtension,
struct vb_device_info *); struct vb_device_info *);
extern void XGI_DisplayOff(struct xgi_hw_device_info *, extern void XGI_DisplayOff(struct xgifb_video_info *,
struct xgi_hw_device_info *,
struct vb_device_info *); struct vb_device_info *);
extern void XGI_GetVBType(struct vb_device_info *); extern void XGI_GetVBType(struct vb_device_info *);
extern void XGI_SenseCRT1(struct vb_device_info *); extern void XGI_SenseCRT1(struct vb_device_info *);
extern unsigned char XGISetModeNew(struct xgi_hw_device_info *HwDeviceExtension, extern unsigned char XGISetModeNew(struct xgifb_video_info *xgifb_info,
struct xgi_hw_device_info *HwDeviceExtension,
unsigned short ModeNo) ; unsigned short ModeNo) ;
extern unsigned char XGI_SearchModeID(unsigned short ModeNo, extern unsigned char XGI_SearchModeID(unsigned short ModeNo,
......
...@@ -375,7 +375,6 @@ struct vb_device_info { ...@@ -375,7 +375,6 @@ struct vb_device_info {
unsigned char *pXGINew_CR97 ; unsigned char *pXGINew_CR97 ;
struct XGI330_LCDCapStruct *LCDCapList; struct XGI330_LCDCapStruct *LCDCapList;
struct XGI21_LVDSCapStruct *XG21_LVDSCapList;
struct XGI_TimingHStruct *TimingH; struct XGI_TimingHStruct *TimingH;
struct XGI_TimingVStruct *TimingV; struct XGI_TimingVStruct *TimingV;
......
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