Пример #1
0
Bool
fbdevHWEnterVT(ScrnInfoPtr pScrn)
{
    if (!fbdevHWModeInit(pScrn, pScrn->currentMode))
        return FALSE;
    fbdevHWAdjustFrame(pScrn, pScrn->frameX0, pScrn->frameY0);
    return TRUE;
}
Пример #2
0
Bool
fbdevHWEnterVT(int scrnIndex, int flags)
{
	ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
	
	TRACE_ENTER("EnterVT");
	if (!fbdevHWModeInit(pScrn, pScrn->currentMode))
		return FALSE;
	fbdevHWAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
	return TRUE;
}
Bool
imxDisplayStartScreenInit(int scrnIndex, ScreenPtr pScreen)
{
	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
	ImxPtr fPtr = IMXPTR(pScrn);

	if (!xf86SetDesiredModes(pScrn)) {

		xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "mode initialization failed\n");
		return FALSE;
	}

#if 0
	if (!fbdevHWModeInit(pScrn, pScrn->currentMode)) {

		xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "mode initialization failed\n");
		return FALSE;
	}
	pScrn->displayWidth =
		fbdevHWGetLineLength(pScrn) / (pScrn->bitsPerPixel / 8);
#else
	pScrn->vtSema = TRUE;

	/* Access the fd for the FB driver */
	int fdDev = fbdevHWGetFD(pScrn);
	if (-1 == fdDev) {
		return FALSE;
	}

	/* Access from fix screen info */
	struct fb_fix_screeninfo fbFixScreenInfo;
	if (-1 == ioctl(fdDev, FBIOGET_FSCREENINFO, &fbFixScreenInfo)) {

		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
			"ioctl error on FBIOGET_FSCREENINFO: %s\n",
			strerror(errno));
		return FALSE;
	}
	int lineLength = fbFixScreenInfo.line_length;
		
	/* Access from var screen info */
	struct fb_var_screeninfo fbVarScreenInfo;
	if (-1 == ioctl(fdDev, FBIOGET_VSCREENINFO, &fbVarScreenInfo)) {

		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
			"ioctl error on FBIOGET_VSCREENINFO: %s\n",
			strerror(errno));
		return FALSE;
	}
	if (lineLength <= 0) {
		lineLength = fbVarScreenInfo.xres_virtual *
				fbVarScreenInfo.bits_per_pixel / 8;
	}

	pScrn->displayWidth = lineLength / (pScrn->bitsPerPixel / 8);

	if ((TrueColor == pScrn->defaultVisual) ||
		(DirectColor == pScrn->defaultVisual)) {

		pScrn->offset.red   = fbVarScreenInfo.red.offset;
		pScrn->offset.green = fbVarScreenInfo.green.offset;
		pScrn->offset.blue  = fbVarScreenInfo.blue.offset;

		pScrn->mask.red   = ((1 << fbVarScreenInfo.red.length) - 1) << fbVarScreenInfo.red.offset;
		pScrn->mask.green = ((1 << fbVarScreenInfo.green.length) - 1) << fbVarScreenInfo.green.offset;
		pScrn->mask.blue  = ((1 << fbVarScreenInfo.blue.length) - 1) << fbVarScreenInfo.blue.offset;
	}
#endif

	xf86SaveScreen(pScreen, SCREEN_SAVER_ON);

	return TRUE;
}