Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 25aa75f1 authored by Aaro Koskinen's avatar Aaro Koskinen Committed by Greg Kroah-Hartman
Browse files

staging: xgifb: enable forcecrt2type on XG21



Make "forcecrt2type" to apply also for XG21. The patch enables user to
switch LVDS LCD ON/OFF without the need to update the video BIOS.

Signed-off-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 77609101
Loading
Loading
Loading
Loading
+17 −11
Original line number Diff line number Diff line
@@ -1744,10 +1744,8 @@ static void XGIfb_detect_VB(struct xgifb_video_info *xgifb_info)
			XGIfb_crt1off = 0;
	}

	if (XGIfb_crt2type != -1)
		/* TW: Override with option */
		xgifb_info->display2 = XGIfb_crt2type;
	else if (cr32 & XGI_VB_TV)
	if (!xgifb_info->display2_force) {
		if (cr32 & XGI_VB_TV)
			xgifb_info->display2 = XGIFB_DISP_TV;
		else if (cr32 & XGI_VB_LCD)
			xgifb_info->display2 = XGIFB_DISP_LCD;
@@ -1755,6 +1753,7 @@ static void XGIfb_detect_VB(struct xgifb_video_info *xgifb_info)
			xgifb_info->display2 = XGIFB_DISP_CRT;
		else
			xgifb_info->display2 = XGIFB_DISP_NONE;
	}

	if (XGIfb_tvplug != -1)
		/* PR/TW: Override with option */
@@ -1926,6 +1925,11 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
		goto error;
	}

	if (XGIfb_crt2type != -1) {
		xgifb_info->display2 = XGIfb_crt2type;
		xgifb_info->display2_force = true;
	}

	XGIRegInit(&xgifb_info->dev_info, (unsigned long)hw_info->pjIOAddress);

	xgifb_reg_set(XGISR, IND_XGI_PASSWORD, XGI_PASSWORD);
@@ -2104,6 +2108,8 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,

	if (xgifb_info->hasVB != HASVB_NONE)
		XGIfb_detect_VB(xgifb_info);
	else if (xgifb_info->chip != XG21)
		xgifb_info->display2 = XGIFB_DISP_NONE;

	if (xgifb_info->display2 == XGIFB_DISP_LCD) {
		if (!enable_dstn) {
+1 −0
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ struct xgifb_video_info {
	unsigned int refresh_rate;

	enum xgifb_display_type display2; /* the second display output type */
	bool display2_force;
	unsigned char hasVB;
	unsigned char TV_type;
	unsigned char TV_plug;
+7 −1
Original line number Diff line number Diff line
@@ -1136,7 +1136,13 @@ static void xgifb_read_vbios(struct pci_dev *pdev,
	}
	if (vbios_size <= 0x65)
		goto error;
	if (!(vbios[0x65] & 0x1)) {
	/*
	 * The user can ignore the LVDS bit in the BIOS and force the display
	 * type.
	 */
	if (!(vbios[0x65] & 0x1) &&
	    (!xgifb_info->display2_force ||
	     xgifb_info->display2 != XGIFB_DISP_LCD)) {
		vfree(vbios);
		return;
	}