XORG_NV/sun-src/xc/programs/Xserver/hw/xfree86/vbe/vbe.c
author Henry Zhao <Henry.Zhao@Sun.COM>
Mon, 12 Jun 2006 13:53:11 -0700
changeset 31 6fef7fb81fc7
permissions -rw-r--r--
6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     1
/* $XFree86: xc/programs/Xserver/hw/xfree86/vbe/vbe.c,v 1.2tsi Exp $ */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     2
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     3
/*
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     4
 *                   XFree86 vbe module
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     5
 *               Copyright 2000 Egbert Eich
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     6
 *
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     7
 * The mode query/save/set/restore functions from the vesa driver 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     8
 * have been moved here.
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
     9
 * Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    10
 * Authors: Paulo César Pereira de Andrade <[email protected]> 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    11
 */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    12
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    13
#ifdef HAVE_XORG_CONFIG_H
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    14
#include <xorg-config.h>
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    15
#endif
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    16
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    17
#include "xf86.h"
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    18
#include "xf86_ansic.h"
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    19
#include "vbe.h"
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    20
#include <X11/Xarch.h>
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    21
#define DPMS_SERVER
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    22
#include <X11/extensions/dpms.h>
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    23
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    24
#define VERSION(x) VBE_VERSION_MAJOR(x),VBE_VERSION_MINOR(x)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    25
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    26
#if X_BYTE_ORDER == X_LITTLE_ENDIAN
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    27
#define B_O16(x)  (x) 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    28
#define B_O32(x)  (x)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    29
#else
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    30
#define B_O16(x)  ((((x) & 0xff) << 8) | (((x) & 0xff) >> 8))
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    31
#define B_O32(x)  ((((x) & 0xff) << 24) | (((x) & 0xff00) << 8) \
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    32
                  | (((x) & 0xff0000) >> 8) | (((x) & 0xff000000) >> 24))
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    33
#endif
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    34
#define L_ADD(x)  (B_O32(x) & 0xffff) + ((B_O32(x) >> 12) & 0xffff00)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    35
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    36
#define FARP(p)		(((unsigned)(p & 0xffff0000) >> 12) | (p & 0xffff))
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    37
#define R16(v)		((v) & 0xffff)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    38
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    39
static unsigned char * vbeReadEDID(vbeInfoPtr pVbe);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    40
static Bool vbeProbeDDC(vbeInfoPtr pVbe);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    41
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    42
const char *vbe_ddcSymbols[] = {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    43
    "xf86InterpretEDID",
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    44
    NULL
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    45
};
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    46
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    47
static const char vbeVersionString[] = "VBE2";
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    48
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    49
vbeInfoPtr
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    50
VBEInit(xf86Int10InfoPtr pInt, int entityIndex)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    51
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    52
    return VBEExtendedInit(pInt, entityIndex, 0);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    53
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    54
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    55
vbeInfoPtr
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    56
VBEExtendedInit(xf86Int10InfoPtr pInt, int entityIndex, int Flags)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    57
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    58
    int RealOff;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    59
    pointer page = NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    60
    ScrnInfoPtr pScrn = xf86FindScreenForEntity(entityIndex);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    61
    vbeControllerInfoPtr vbe = NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    62
    Bool init_int10 = FALSE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    63
    vbeInfoPtr vip = NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    64
    int screen;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    65
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    66
    if (!pScrn) return NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    67
    screen = pScrn->scrnIndex;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    68
    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    69
    if (!pInt) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    70
	if (!xf86LoadSubModule(pScrn, "int10"))
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    71
	    goto error;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    72
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    73
	xf86DrvMsg(screen,X_INFO,"initializing int10\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    74
	pInt = xf86ExtendedInitInt10(entityIndex,Flags);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    75
	if (!pInt)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    76
	    goto error;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    77
	init_int10 = TRUE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    78
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    79
    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    80
    page = xf86Int10AllocPages(pInt,1,&RealOff);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    81
    if (!page) goto error;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    82
    vbe = (vbeControllerInfoPtr) page;    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    83
    memcpy(vbe->VbeSignature,vbeVersionString,4);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    84
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    85
    pInt->ax = 0x4F00;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    86
    pInt->es = SEG_ADDR(RealOff);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    87
    pInt->di = SEG_OFF(RealOff);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    88
    pInt->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    89
    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    90
    xf86ExecX86int10(pInt);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    91
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    92
    if ((pInt->ax & 0xff) != 0x4f) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    93
	xf86DrvMsgVerb(screen,X_INFO,3,"VESA BIOS not detected\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    94
	goto error;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    95
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    96
    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    97
    switch (pInt->ax & 0xff00) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    98
    case 0:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
    99
	xf86DrvMsg(screen,X_INFO,"VESA BIOS detected\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   100
	break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   101
    case 0x100:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   102
	xf86DrvMsg(screen,X_INFO,"VESA BIOS function failed\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   103
	goto error;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   104
    case 0x200:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   105
	xf86DrvMsg(screen,X_INFO,"VESA BIOS not supported\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   106
	goto error;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   107
    case 0x300:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   108
	xf86DrvMsg(screen,X_INFO,"VESA BIOS not supported in current mode\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   109
	goto error;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   110
    default:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   111
	xf86DrvMsg(screen,X_INFO,"Invalid\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   112
	goto error;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   113
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   114
    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   115
    xf86DrvMsgVerb(screen, X_INFO, 4,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   116
		"VbeVersion is %d, OemStringPtr is 0x%08lx,\n"
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   117
		"\tOemVendorNamePtr is 0x%08lx, OemProductNamePtr is 0x%08lx,\n"
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   118
		"\tOemProductRevPtr is 0x%08lx\n",
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   119
		vbe->VbeVersion, (unsigned long)vbe->OemStringPtr,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   120
		(unsigned long)vbe->OemVendorNamePtr,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   121
		(unsigned long)vbe->OemProductNamePtr,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   122
		(unsigned long)vbe->OemProductRevPtr);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   123
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   124
    xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE Version %i.%i\n",
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   125
		   VERSION(vbe->VbeVersion));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   126
    xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE Total Mem: %i kB\n",
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   127
		   vbe->TotalMem * 64);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   128
    xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE OEM: %s\n",
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   129
		   (CARD8*)xf86int10Addr(pInt,L_ADD(vbe->OemStringPtr)));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   130
    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   131
    if (B_O16(vbe->VbeVersion) >= 0x200) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   132
	xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE OEM Software Rev: %i.%i\n",
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   133
		    VERSION(vbe->OemSoftwareRev));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   134
	if (vbe->OemVendorNamePtr)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   135
	    xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE OEM Vendor: %s\n",
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   136
		    (CARD8*)xf86int10Addr(pInt,L_ADD(vbe->OemVendorNamePtr)));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   137
	if (vbe->OemProductNamePtr)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   138
	    xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE OEM Product: %s\n",
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   139
		    (CARD8*)xf86int10Addr(pInt,L_ADD(vbe->OemProductNamePtr)));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   140
	if (vbe->OemProductRevPtr)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   141
	    xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE OEM Product Rev: %s\n",
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   142
		    (CARD8*)xf86int10Addr(pInt,L_ADD(vbe->OemProductRevPtr)));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   143
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   144
    vip = (vbeInfoPtr)xnfalloc(sizeof(vbeInfoRec));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   145
    vip->version = B_O16(vbe->VbeVersion);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   146
    vip->pInt10 = pInt;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   147
    vip->ddc = DDC_UNCHECKED;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   148
    vip->memory = page;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   149
    vip->real_mode_base = RealOff;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   150
    vip->num_pages = 1;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   151
    vip->init_int10 = init_int10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   152
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   153
    return vip;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   154
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   155
 error:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   156
    if (page)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   157
	xf86Int10FreePages(pInt, page, 1);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   158
    if (init_int10)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   159
	xf86FreeInt10(pInt);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   160
    return NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   161
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   162
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   163
void
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   164
vbeFree(vbeInfoPtr pVbe)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   165
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   166
    if (!pVbe)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   167
	return;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   168
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   169
    xf86Int10FreePages(pVbe->pInt10,pVbe->memory,pVbe->num_pages);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   170
    /* If we have initalized int10 we ought to free it, too */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   171
    if (pVbe->init_int10) 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   172
	xf86FreeInt10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   173
    xfree(pVbe);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   174
    return;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   175
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   176
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   177
static Bool
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   178
vbeProbeDDC(vbeInfoPtr pVbe)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   179
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   180
    char *ddc_level;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   181
    int screen = pVbe->pInt10->scrnIndex;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   182
    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   183
    if (!pVbe || (pVbe->ddc == DDC_NONE))
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   184
	return FALSE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   185
    if (pVbe->ddc != DDC_UNCHECKED)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   186
	return TRUE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   187
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   188
    pVbe->pInt10->ax = 0x4F15;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   189
    pVbe->pInt10->bx = 0;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   190
    pVbe->pInt10->cx = 0;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   191
    pVbe->pInt10->es = 0;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   192
    pVbe->pInt10->di = 0;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   193
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   194
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   195
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   196
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   197
    if ((pVbe->pInt10->ax & 0xff) != 0x4f) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   198
        xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC not supported\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   199
	pVbe->ddc = DDC_NONE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   200
	return FALSE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   201
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   202
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   203
    switch ((pVbe->pInt10->ax >> 8) & 0xff) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   204
    case 0:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   205
	xf86DrvMsg(screen,X_INFO,"VESA VBE DDC supported\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   206
	switch (pVbe->pInt10->bx & 0x3) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   207
	case 0:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   208
  	    ddc_level = " none"; 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   209
	    pVbe->ddc = DDC_NONE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   210
	    break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   211
	case 1:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   212
  	    ddc_level = " 1";
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   213
	    pVbe->ddc = DDC_1;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   214
	    break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   215
	case 2:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   216
  	    ddc_level = " 2"; 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   217
	    pVbe->ddc = DDC_2;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   218
	    break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   219
	case 3:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   220
  	    ddc_level = " 1 + 2"; 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   221
	    pVbe->ddc = DDC_1_2;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   222
	    break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   223
	default:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   224
 	    ddc_level = "";
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   225
	    pVbe->ddc = DDC_NONE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   226
	    break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   227
	}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   228
  	xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC Level%s\n",ddc_level); 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   229
  	if (pVbe->pInt10->bx & 0x4) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   230
    	    xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC Screen blanked" 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   231
    			"for data transfer\n"); 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   232
    	    pVbe->ddc_blank = TRUE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   233
    	}  else
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   234
    	    pVbe->ddc_blank = FALSE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   235
	    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   236
  	xf86DrvMsgVerb(screen,X_INFO,3,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   237
		       "VESA VBE DDC transfer in appr. %x sec.\n", 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   238
		       (pVbe->pInt10->bx >> 8) & 0xff); 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   239
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   240
    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   241
    return TRUE; 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   242
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   243
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   244
typedef enum {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   245
  VBEOPT_NOVBE,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   246
    VBEOPT_NODDC
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   247
} VBEOpts;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   248
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   249
static const OptionInfoRec VBEOptions[] = {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   250
    { VBEOPT_NOVBE,	"NoVBE",	OPTV_BOOLEAN,	{0},	FALSE },
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   251
    { VBEOPT_NODDC,	"NoDDC",	OPTV_BOOLEAN,	{0},	FALSE },
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   252
    { -1,		NULL,		OPTV_NONE,	{0},	FALSE },
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   253
};
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   254
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   255
static unsigned char *
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   256
vbeReadEDID(vbeInfoPtr pVbe)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   257
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   258
    int RealOff = pVbe->real_mode_base;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   259
    pointer page = pVbe->memory;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   260
    unsigned char *tmp = NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   261
    Bool novbe = FALSE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   262
    Bool noddc = FALSE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   263
    int screen = pVbe->pInt10->scrnIndex;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   264
    OptionInfoPtr options;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   265
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   266
    if (!page) return NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   267
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   268
    options = xnfalloc(sizeof(VBEOptions));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   269
    (void)memcpy(options, VBEOptions, sizeof(VBEOptions));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   270
    xf86ProcessOptions(screen, xf86Screens[screen]->options, options);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   271
    xf86GetOptValBool(options, VBEOPT_NOVBE, &novbe);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   272
    xf86GetOptValBool(options, VBEOPT_NODDC, &noddc);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   273
    xfree(options);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   274
    if (novbe || noddc) return NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   275
    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   276
    if (!vbeProbeDDC(pVbe)) goto error;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   277
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   278
    memset(page,0,sizeof(vbeInfoPtr));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   279
    strcpy(page,vbeVersionString);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   280
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   281
    pVbe->pInt10->ax = 0x4F15;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   282
    pVbe->pInt10->bx = 0x01;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   283
    pVbe->pInt10->cx = 0;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   284
    pVbe->pInt10->dx = 0;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   285
    pVbe->pInt10->es = SEG_ADDR(RealOff);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   286
    pVbe->pInt10->di = SEG_OFF(RealOff);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   287
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   288
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   289
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   290
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   291
    if ((pVbe->pInt10->ax & 0xff) != 0x4f) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   292
        xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC invalid\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   293
	goto error;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   294
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   295
    switch (pVbe->pInt10->ax & 0xff00) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   296
    case 0x0:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   297
	xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC read successfully\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   298
  	tmp = (unsigned char *)xnfalloc(128); 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   299
  	memcpy(tmp,page,128); 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   300
	break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   301
    case 0x100:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   302
	xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC read failed\n");	
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   303
	break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   304
    default:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   305
	xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC unkown failure %i\n",
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   306
		       pVbe->pInt10->ax & 0xff00);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   307
	break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   308
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   309
    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   310
 error:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   311
    return tmp;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   312
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   313
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   314
xf86MonPtr
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   315
vbeDoEDID(vbeInfoPtr pVbe, pointer pDDCModule)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   316
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   317
    xf86MonPtr    pMonitor;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   318
    pointer       pModule;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   319
    unsigned char *DDC_data = NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   320
    ScrnInfoPtr   scrp;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   321
    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   322
    if (!pVbe) return NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   323
    if (pVbe->version < 0x200)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   324
	return NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   325
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   326
    scrp = xf86Screens[pVbe->pInt10->scrnIndex];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   327
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   328
    if (!(pModule = pDDCModule)) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   329
	pModule =
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   330
	    xf86LoadSubModule(scrp, "ddc");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   331
	if (!pModule)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   332
	    return NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   333
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   334
	xf86LoaderReqSymLists(vbe_ddcSymbols, NULL);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   335
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   336
        
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   337
    DDC_data = vbeReadEDID(pVbe);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   338
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   339
    if (!DDC_data) 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   340
	return NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   341
    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   342
    pMonitor = xf86InterpretEDID(pVbe->pInt10->scrnIndex, DDC_data);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   343
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   344
    if (pMonitor) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   345
	xf86DrvMsg(scrp->scrnIndex, X_PROBED,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   346
	"VBE DDC detected a %s:\n", pMonitor->features.input_type ?
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   347
	"DFP" : "CRT");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   348
	xf86PrintEDID(pMonitor);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   349
	xf86DrvMsg(scrp->scrnIndex, X_INFO, "end of VBE DDC Monitor info\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   350
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   351
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   352
    if (!pDDCModule)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   353
        xf86UnloadSubModule(pModule);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   354
    return pMonitor;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   355
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   356
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   357
#define GET_UNALIGNED2(x) \
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   358
            ((*(CARD16*)(x)) | (*(((CARD16*)(x) + 1))) << 16)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   359
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   360
VbeInfoBlock *
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   361
VBEGetVBEInfo(vbeInfoPtr pVbe)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   362
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   363
    VbeInfoBlock *block = NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   364
    int i, pStr, pModes;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   365
    char *str;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   366
    CARD16 major, *modes;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   367
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   368
    bzero(pVbe->memory, sizeof(VbeInfoBlock));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   369
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   370
    /*
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   371
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   372
	AH    := 4Fh	Super VGA support
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   373
	AL    := 00h	Return Super VGA information
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   374
	ES:DI := Pointer to buffer
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   375
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   376
    Output:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   377
	AX    := status
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   378
	(All other registers are preserved)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   379
     */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   380
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   381
    ((char*)pVbe->memory)[0] = 'V';
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   382
    ((char*)pVbe->memory)[1] = 'B';
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   383
    ((char*)pVbe->memory)[2] = 'E';
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   384
    ((char*)pVbe->memory)[3] = '2';
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   385
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   386
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   387
    pVbe->pInt10->ax = 0x4f00;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   388
    pVbe->pInt10->es = SEG_ADDR(pVbe->real_mode_base);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   389
    pVbe->pInt10->di = SEG_OFF(pVbe->real_mode_base);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   390
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   391
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   392
    if (R16(pVbe->pInt10->ax) != 0x4f)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   393
	return (NULL);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   394
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   395
    block = xcalloc(sizeof(VbeInfoBlock), 1);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   396
    block->VESASignature[0] = ((char*)pVbe->memory)[0];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   397
    block->VESASignature[1] = ((char*)pVbe->memory)[1];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   398
    block->VESASignature[2] = ((char*)pVbe->memory)[2];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   399
    block->VESASignature[3] = ((char*)pVbe->memory)[3];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   400
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   401
    block->VESAVersion = *(CARD16*)(((char*)pVbe->memory) + 4);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   402
    major = (unsigned)block->VESAVersion >> 8;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   403
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   404
    pStr = GET_UNALIGNED2((((char*)pVbe->memory) + 6));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   405
    str = xf86int10Addr(pVbe->pInt10, FARP(pStr));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   406
    block->OEMStringPtr = strdup(str);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   407
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   408
    block->Capabilities[0] = ((char*)pVbe->memory)[10];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   409
    block->Capabilities[1] = ((char*)pVbe->memory)[11];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   410
    block->Capabilities[2] = ((char*)pVbe->memory)[12];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   411
    block->Capabilities[3] = ((char*)pVbe->memory)[13];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   412
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   413
    pModes = GET_UNALIGNED2((((char*)pVbe->memory) + 14));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   414
    modes = xf86int10Addr(pVbe->pInt10, FARP(pModes));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   415
    i = 0;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   416
    while (modes[i] != 0xffff)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   417
	i++;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   418
    block->VideoModePtr = xalloc(sizeof(CARD16) * i + 1);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   419
    memcpy(block->VideoModePtr, modes, sizeof(CARD16) * i);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   420
    block->VideoModePtr[i] = 0xffff;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   421
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   422
    block->TotalMemory = *(CARD16*)(((char*)pVbe->memory) + 18);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   423
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   424
    if (major < 2)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   425
	memcpy(&block->OemSoftwareRev, ((char*)pVbe->memory) + 20, 236);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   426
    else {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   427
	block->OemSoftwareRev = *(CARD16*)(((char*)pVbe->memory) + 20);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   428
	pStr = GET_UNALIGNED2((((char*)pVbe->memory) + 22));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   429
	str = xf86int10Addr(pVbe->pInt10, FARP(pStr));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   430
	block->OemVendorNamePtr = strdup(str);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   431
	pStr = GET_UNALIGNED2((((char*)pVbe->memory) + 26));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   432
	str = xf86int10Addr(pVbe->pInt10, FARP(pStr));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   433
	block->OemProductNamePtr = strdup(str);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   434
	pStr = GET_UNALIGNED2((((char*)pVbe->memory) + 30));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   435
	str = xf86int10Addr(pVbe->pInt10, FARP(pStr));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   436
	block->OemProductRevPtr = strdup(str);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   437
	memcpy(&block->Reserved, ((char*)pVbe->memory) + 34, 222);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   438
	memcpy(&block->OemData, ((char*)pVbe->memory) + 256, 256);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   439
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   440
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   441
    return (block);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   442
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   443
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   444
void
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   445
VBEFreeVBEInfo(VbeInfoBlock *block)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   446
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   447
    xfree(block->OEMStringPtr);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   448
    xfree(block->VideoModePtr);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   449
    if (((unsigned)block->VESAVersion >> 8) >= 2) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   450
	xfree(block->OemVendorNamePtr);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   451
	xfree(block->OemProductNamePtr);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   452
	xfree(block->OemProductRevPtr);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   453
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   454
    xfree(block);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   455
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   456
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   457
Bool
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   458
VBESetVBEMode(vbeInfoPtr pVbe, int mode, VbeCRTCInfoBlock *block)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   459
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   460
    /*
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   461
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   462
	AH    := 4Fh	Super VGA support
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   463
	AL    := 02h	Set Super VGA video mode
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   464
	BX    := Video mode
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   465
	    D0-D8  := Mode number
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   466
	    D9-D10 := Reserved (must be 0)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   467
	    D11    := 0 Use current default refresh rate
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   468
		   := 1 Use user specified CRTC values for refresh rate
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   469
	    D12-13	Reserved for VBE/AF (must be 0)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   470
	    D14    := 0 Use windowed frame buffer model
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   471
		   := 1 Use linear/flat frame buffer model
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   472
	    D15    := 0 Clear video memory
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   473
		   := 1 Don't clear video memory
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   474
	ES:DI := Pointer to VbeCRTCInfoBlock structure
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   475
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   476
    Output: AX = Status
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   477
	(All other registers are preserved)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   478
    */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   479
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   480
    pVbe->pInt10->ax = 0x4f02;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   481
    pVbe->pInt10->bx = mode;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   482
    if (block) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   483
	pVbe->pInt10->bx |= 1 << 11;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   484
	memcpy(pVbe->memory, block, sizeof(VbeCRTCInfoBlock));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   485
	pVbe->pInt10->es = SEG_ADDR(pVbe->real_mode_base);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   486
	pVbe->pInt10->di = SEG_OFF(pVbe->real_mode_base);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   487
    } else
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   488
	pVbe->pInt10->bx &= ~(1 << 11);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   489
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   490
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   491
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   492
    return (R16(pVbe->pInt10->ax) == 0x4f);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   493
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   494
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   495
Bool
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   496
VBEGetVBEMode(vbeInfoPtr pVbe, int *mode)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   497
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   498
    /*
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   499
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   500
	AH := 4Fh	Super VGA support
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   501
	AL := 03h	Return current video mode
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   502
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   503
    Output:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   504
	AX := Status
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   505
	BX := Current video mode
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   506
	(All other registers are preserved)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   507
    */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   508
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   509
    pVbe->pInt10->ax = 0x4f03;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   510
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   511
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   512
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   513
    if (R16(pVbe->pInt10->ax) == 0x4f) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   514
	*mode = R16(pVbe->pInt10->bx);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   515
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   516
	return (TRUE);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   517
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   518
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   519
    return (FALSE);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   520
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   521
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   522
VbeModeInfoBlock *
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   523
VBEGetModeInfo(vbeInfoPtr pVbe, int mode)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   524
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   525
    VbeModeInfoBlock *block = NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   526
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   527
    bzero(pVbe->memory, sizeof(VbeModeInfoBlock));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   528
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   529
    /*
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   530
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   531
	AH    := 4Fh	Super VGA support
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   532
	AL    := 01h	Return Super VGA mode information
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   533
	CX    := 	Super VGA video mode
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   534
			(mode number must be one of those returned by Function 0)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   535
	ES:DI := Pointer to buffer
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   536
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   537
    Output:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   538
	AX    := status
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   539
	(All other registers are preserved)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   540
     */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   541
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   542
    pVbe->pInt10->ax = 0x4f01;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   543
    pVbe->pInt10->cx = mode;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   544
    pVbe->pInt10->es = SEG_ADDR(pVbe->real_mode_base);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   545
    pVbe->pInt10->di = SEG_OFF(pVbe->real_mode_base);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   546
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   547
    if (R16(pVbe->pInt10->ax) != 0x4f)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   548
	return (NULL);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   549
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   550
    block = xcalloc(sizeof(VbeModeInfoBlock), 1);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   551
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   552
    block->ModeAttributes = *(CARD16*)pVbe->memory;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   553
    block->WinAAttributes = ((char*)pVbe->memory)[2];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   554
    block->WinBAttributes = ((char*)pVbe->memory)[3];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   555
    block->WinGranularity = *(CARD16*)(((char*)pVbe->memory) + 4);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   556
    block->WinSize = *(CARD16*)(((char*)pVbe->memory) + 6);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   557
    block->WinASegment = *(CARD16*)(((char*)pVbe->memory) + 8);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   558
    block->WinBSegment = *(CARD16*)(((char*)pVbe->memory) + 10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   559
    block->WinFuncPtr = *(CARD32*)(((char*)pVbe->memory) + 12);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   560
    block->BytesPerScanline = *(CARD16*)(((char*)pVbe->memory) + 16);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   561
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   562
    /* mandatory information for VBE 1.2 and above */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   563
    block->XResolution = *(CARD16*)(((char*)pVbe->memory) + 18);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   564
    block->YResolution = *(CARD16*)(((char*)pVbe->memory) + 20);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   565
    block->XCharSize = ((char*)pVbe->memory)[22];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   566
    block->YCharSize = ((char*)pVbe->memory)[23];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   567
    block->NumberOfPlanes = ((char*)pVbe->memory)[24];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   568
    block->BitsPerPixel = ((char*)pVbe->memory)[25];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   569
    block->NumberOfBanks = ((char*)pVbe->memory)[26];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   570
    block->MemoryModel = ((char*)pVbe->memory)[27];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   571
    block->BankSize = ((char*)pVbe->memory)[28];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   572
    block->NumberOfImages = ((char*)pVbe->memory)[29];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   573
    block->Reserved = ((char*)pVbe->memory)[30];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   574
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   575
    /* Direct color fields (required for direct/6 and YUV/7 memory models) */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   576
    block->RedMaskSize = ((char*)pVbe->memory)[31];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   577
    block->RedFieldPosition = ((char*)pVbe->memory)[32];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   578
    block->GreenMaskSize = ((char*)pVbe->memory)[33];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   579
    block->GreenFieldPosition = ((char*)pVbe->memory)[34];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   580
    block->BlueMaskSize = ((char*)pVbe->memory)[35];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   581
    block->BlueFieldPosition = ((char*)pVbe->memory)[36];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   582
    block->RsvdMaskSize = ((char*)pVbe->memory)[37];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   583
    block->RsvdFieldPosition = ((char*)pVbe->memory)[38];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   584
    block->DirectColorModeInfo = ((char*)pVbe->memory)[39];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   585
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   586
    /* Mandatory information for VBE 2.0 and above */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   587
    if (pVbe->version >= 0x200) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   588
	block->PhysBasePtr = *(CARD32*)(((char*)pVbe->memory) + 40);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   589
	block->Reserved32 = *(CARD32*)(((char*)pVbe->memory) + 44);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   590
	block->Reserved16 = *(CARD16*)(((char*)pVbe->memory) + 48);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   591
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   592
	/* Mandatory information for VBE 3.0 and above */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   593
	if (pVbe->version >= 0x300) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   594
	    block->LinBytesPerScanLine = *(CARD16*)(((char*)pVbe->memory) + 50);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   595
	    block->BnkNumberOfImagePages = ((char*)pVbe->memory)[52];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   596
	    block->LinNumberOfImagePages = ((char*)pVbe->memory)[53];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   597
	    block->LinRedMaskSize = ((char*)pVbe->memory)[54];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   598
	    block->LinRedFieldPosition = ((char*)pVbe->memory)[55];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   599
	    block->LinGreenMaskSize = ((char*)pVbe->memory)[56];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   600
	    block->LinGreenFieldPosition = ((char*)pVbe->memory)[57];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   601
	    block->LinBlueMaskSize = ((char*)pVbe->memory)[58];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   602
	    block->LinBlueFieldPosition = ((char*)pVbe->memory)[59];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   603
	    block->LinRsvdMaskSize = ((char*)pVbe->memory)[60];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   604
	    block->LinRsvdFieldPosition = ((char*)pVbe->memory)[61];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   605
	    block->MaxPixelClock = *(CARD32*)(((char*)pVbe->memory) + 62);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   606
	    memcpy(&block->Reserved2, ((char*)pVbe->memory) + 66, 188);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   607
	}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   608
	else
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   609
	memcpy(&block->LinBytesPerScanLine, ((char*)pVbe->memory) + 50, 206);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   610
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   611
    else
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   612
	memcpy(&block->PhysBasePtr, ((char*)pVbe->memory) + 40, 216);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   613
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   614
    return (block);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   615
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   616
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   617
void
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   618
VBEFreeModeInfo(VbeModeInfoBlock *block)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   619
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   620
    xfree(block);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   621
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   622
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   623
Bool
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   624
VBESaveRestore(vbeInfoPtr pVbe, vbeSaveRestoreFunction function, 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   625
	       pointer *memory, int *size, int *real_mode_pages)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   626
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   627
    /*
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   628
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   629
	AH    := 4Fh	Super VGA support
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   630
	AL    := 04h	Save/restore Super VGA video state
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   631
	DL    := 00h	Return save/restore state buffer size
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   632
	CX    := Requested states
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   633
		D0 = Save/restore video hardware state
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   634
		D1 = Save/restore video BIOS data state
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   635
		D2 = Save/restore video DAC state
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   636
		D3 = Save/restore Super VGA state
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   637
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   638
    Output:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   639
	AX = Status
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   640
	BX = Number of 64-byte blocks to hold the state buffer
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   641
	(All other registers are preserved)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   642
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   643
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   644
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   645
	AH    := 4Fh	Super VGA support
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   646
	AL    := 04h	Save/restore Super VGA video state
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   647
	DL    := 01h	Save Super VGA video state
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   648
	CX    := Requested states (see above)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   649
	ES:BX := Pointer to buffer
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   650
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   651
    Output:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   652
	AX    := Status
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   653
	(All other registers are preserved)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   654
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   655
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   656
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   657
	AH    := 4Fh	Super VGA support
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   658
	AL    := 04h	Save/restore Super VGA video state
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   659
	DL    := 02h	Restore Super VGA video state
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   660
	CX    := Requested states (see above)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   661
	ES:BX := Pointer to buffer
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   662
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   663
    Output:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   664
	AX     := Status
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   665
	(All other registers are preserved)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   666
     */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   667
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   668
    if ((pVbe->version & 0xff00) > 0x100) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   669
        int screen = pVbe->pInt10->scrnIndex;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   670
        if (function == MODE_QUERY ||
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   671
	    (function == MODE_SAVE && !*memory)) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   672
	    /* Query amount of memory to save state */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   673
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   674
	    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   675
	    pVbe->pInt10->ax = 0x4f04;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   676
	    pVbe->pInt10->dx = 0;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   677
	    pVbe->pInt10->cx = 0x000f;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   678
	    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   679
	    if (R16(pVbe->pInt10->ax) != 0x4f)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   680
	        return (FALSE);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   681
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   682
	    if (function == MODE_SAVE) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   683
	        int npages = (R16(pVbe->pInt10->bx) * 64) / 4096 + 1;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   684
		if ((*memory = xf86Int10AllocPages(pVbe->pInt10, npages,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   685
						   real_mode_pages)) == NULL) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   686
		    xf86DrvMsg(screen, X_ERROR,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   687
			       "Cannot allocate memory to save SVGA state.\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   688
		    return (FALSE);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   689
		}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   690
	    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   691
	    *size = pVbe->pInt10->bx * 64;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   692
	}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   693
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   694
	/* Save/Restore Super VGA state */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   695
	if (function != MODE_QUERY) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   696
	    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   697
	    if (!*memory) return FALSE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   698
	    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   699
	    pVbe->pInt10->ax = 0x4f04;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   700
	    switch (function) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   701
	    case MODE_SAVE:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   702
	      pVbe->pInt10->dx = 1;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   703
	      break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   704
	    case MODE_RESTORE:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   705
	      pVbe->pInt10->dx = 2;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   706
	      break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   707
	    case MODE_QUERY:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   708
	      return FALSE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   709
	    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   710
	    pVbe->pInt10->cx = 0x000f;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   711
	    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   712
	    pVbe->pInt10->es = SEG_ADDR(*real_mode_pages);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   713
	    pVbe->pInt10->bx = SEG_OFF(*real_mode_pages);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   714
	    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   715
	    return (R16(pVbe->pInt10->ax) == 0x4f);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   716
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   717
	}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   718
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   719
    return TRUE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   720
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   721
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   722
Bool
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   723
VBEBankSwitch(vbeInfoPtr pVbe, unsigned int iBank, int window)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   724
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   725
    /*
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   726
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   727
	AH    := 4Fh	Super VGA support
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   728
	AL    := 05h
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   729
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   730
    Output:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   731
     */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   732
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   733
    pVbe->pInt10->ax = 0x4f05;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   734
    pVbe->pInt10->bx = window;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   735
    pVbe->pInt10->dx = iBank;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   736
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   737
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   738
    if (R16(pVbe->pInt10->ax) != 0x4f)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   739
	return (FALSE);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   740
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   741
    return (TRUE);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   742
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   743
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   744
Bool
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   745
VBESetGetLogicalScanlineLength(vbeInfoPtr pVbe, vbeScanwidthCommand command,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   746
				int width, int *pixels, int *bytes, int *max)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   747
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   748
    if (command < SCANWID_SET || command > SCANWID_GET_MAX)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   749
	return (FALSE);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   750
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   751
    /*
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   752
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   753
	AX := 4F06h VBE Set/Get Logical Scan Line Length
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   754
	BL := 00h Set Scan Line Length in Pixels
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   755
	   := 01h Get Scan Line Length
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   756
	   := 02h Set Scan Line Length in Bytes
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   757
	   := 03h Get Maximum Scan Line Length
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   758
	CX := If BL=00h Desired Width in Pixels
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   759
	      If BL=02h Desired Width in Bytes
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   760
	      (Ignored for Get Functions)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   761
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   762
    Output:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   763
	AX := VBE Return Status
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   764
	BX := Bytes Per Scan Line
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   765
	CX := Actual Pixels Per Scan Line
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   766
	      (truncated to nearest complete pixel)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   767
	DX := Maximum Number of Scan Lines
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   768
     */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   769
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   770
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   771
    pVbe->pInt10->ax = 0x4f06;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   772
    pVbe->pInt10->bx = command;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   773
    if (command == SCANWID_SET || command == SCANWID_SET_BYTES)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   774
	pVbe->pInt10->cx = width;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   775
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   776
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   777
    if (R16(pVbe->pInt10->ax) != 0x4f)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   778
	return (FALSE);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   779
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   780
    if (command == SCANWID_GET || command == SCANWID_GET_MAX) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   781
	if (pixels)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   782
	    *pixels = R16(pVbe->pInt10->cx);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   783
	if (bytes)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   784
	    *bytes = R16(pVbe->pInt10->bx);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   785
	if (max)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   786
	    *max = R16(pVbe->pInt10->dx);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   787
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   788
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   789
    return (TRUE);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   790
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   791
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   792
Bool
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   793
VBESetDisplayStart(vbeInfoPtr pVbe, int x, int y, Bool wait_retrace)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   794
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   795
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   796
    pVbe->pInt10->ax = 0x4f07;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   797
    pVbe->pInt10->bx = wait_retrace ? 0x80 : 0x00;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   798
    pVbe->pInt10->cx = x;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   799
    pVbe->pInt10->dx = y;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   800
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   801
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   802
    if (R16(pVbe->pInt10->ax) != 0x4f)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   803
	return (FALSE);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   804
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   805
    return (TRUE);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   806
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   807
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   808
Bool
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   809
VBEGetDisplayStart(vbeInfoPtr pVbe, int *x, int *y)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   810
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   811
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   812
    pVbe->pInt10->ax = 0x4f07;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   813
    pVbe->pInt10->bx = 0x01;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   814
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   815
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   816
    if (R16(pVbe->pInt10->ax) != 0x4f)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   817
	return (FALSE);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   818
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   819
    *x = pVbe->pInt10->cx;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   820
    *y = pVbe->pInt10->dx;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   821
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   822
    return (TRUE);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   823
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   824
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   825
int
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   826
VBESetGetDACPaletteFormat(vbeInfoPtr pVbe, int bits)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   827
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   828
    /*
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   829
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   830
	AX := 4F08h VBE Set/Get Palette Format
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   831
	BL := 00h Set DAC Palette Format
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   832
	   := 01h Get DAC Palette Format
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   833
	BH := Desired bits of color per primary
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   834
	      (Set DAC Palette Format only)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   835
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   836
    Output:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   837
	AX := VBE Return Status
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   838
	BH := Current number of bits of color per primary
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   839
     */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   840
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   841
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   842
    pVbe->pInt10->ax = 0x4f08;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   843
    if (!bits)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   844
	pVbe->pInt10->bx = 0x01;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   845
    else 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   846
	pVbe->pInt10->bx = (bits & 0x00ff) << 8;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   847
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   848
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   849
    if (R16(pVbe->pInt10->ax) != 0x4f)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   850
	return (0);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   851
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   852
    return (bits != 0 ? bits : (pVbe->pInt10->bx >> 8) & 0x00ff);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   853
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   854
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   855
CARD32 *
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   856
VBESetGetPaletteData(vbeInfoPtr pVbe, Bool set, int first, int num,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   857
		      CARD32 *data, Bool secondary, Bool wait_retrace)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   858
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   859
    /*
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   860
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   861
    (16-bit)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   862
	AX    := 4F09h VBE Load/Unload Palette Data
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   863
	BL    := 00h Set Palette Data
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   864
	      := 01h Get Palette Data
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   865
	      := 02h Set Secondary Palette Data
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   866
	      := 03h Get Secondary Palette Data
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   867
	      := 80h Set Palette Data during Vertical Retrace
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   868
	CX    := Number of palette registers to update (to a maximum of 256)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   869
	DX    := First of the palette registers to update (start)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   870
	ES:DI := Table of palette values (see below for format)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   871
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   872
    Output:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   873
	AX    := VBE Return Status
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   874
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   875
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   876
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   877
    (32-bit)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   878
	BL     := 00h Set Palette Data
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   879
	       := 80h Set Palette Data during Vertical Retrace
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   880
	CX     := Number of palette registers to update (to a maximum of 256)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   881
	DX     := First of the palette registers to update (start)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   882
	ES:EDI := Table of palette values (see below for format)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   883
	DS     := Selector for memory mapped registers
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   884
     */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   885
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   886
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   887
    pVbe->pInt10->ax = 0x4f09;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   888
    if (!secondary)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   889
	pVbe->pInt10->bx = set && wait_retrace ? 0x80 : set ? 0 : 1;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   890
    else
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   891
	pVbe->pInt10->bx = set ? 2 : 3;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   892
    pVbe->pInt10->cx = num;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   893
    pVbe->pInt10->dx = first;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   894
    pVbe->pInt10->es = SEG_ADDR(pVbe->real_mode_base);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   895
    pVbe->pInt10->di = SEG_OFF(pVbe->real_mode_base);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   896
    if (set)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   897
	memcpy(pVbe->memory, data, num * sizeof(CARD32));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   898
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   899
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   900
    if (R16(pVbe->pInt10->ax) != 0x4f)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   901
	return (NULL);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   902
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   903
    if (set)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   904
	return (data);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   905
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   906
    data = xalloc(num * sizeof(CARD32));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   907
    memcpy(data, pVbe->memory, num * sizeof(CARD32));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   908
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   909
    return (data);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   910
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   911
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   912
VBEpmi *
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   913
VBEGetVBEpmi(vbeInfoPtr pVbe)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   914
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   915
    VBEpmi *pmi;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   916
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   917
    /*
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   918
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   919
	AH    := 4Fh	Super VGA support
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   920
	AL    := 0Ah	Protected Mode Interface
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   921
	BL    := 00h	Return Protected Mode Table
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   922
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   923
    Output:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   924
	AX    := Status
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   925
	ES    := Real Mode Segment of Table
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   926
	DI    := Offset of Table
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   927
	CX    := Lenght of Table including protected mode code in bytes (for copying purposes)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   928
	(All other registers are preserved)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   929
     */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   930
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   931
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   932
    pVbe->pInt10->ax = 0x4f0a;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   933
    pVbe->pInt10->bx = 0;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   934
    pVbe->pInt10->di = 0;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   935
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   936
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   937
    if (R16(pVbe->pInt10->ax) != 0x4f)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   938
	return (NULL);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   939
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   940
    pmi = xalloc(sizeof(VBEpmi));
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   941
    pmi->seg_tbl = R16(pVbe->pInt10->es);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   942
    pmi->tbl_off = R16(pVbe->pInt10->di);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   943
    pmi->tbl_len = R16(pVbe->pInt10->cx);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   944
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   945
    return (pmi);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   946
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   947
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   948
#if 0
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   949
vbeModeInfoPtr
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   950
VBEBuildVbeModeList(vbeInfoPtr pVbe, VbeInfoBlock *vbe)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   951
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   952
    vbeModeInfoPtr ModeList = NULL;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   953
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   954
    int i = 0;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   955
    while (vbe->VideoModePtr[i] != 0xffff) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   956
	vbeModeInfoPtr m;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   957
	VbeModeInfoBlock *mode;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   958
	int id = vbe->VideoModePtr[i++];
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   959
	int bpp;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   960
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   961
	if ((mode = VBEGetModeInfo(pVbe, id)) == NULL)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   962
	    continue;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   963
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   964
 	bpp = mode->BitsPerPixel;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   965
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   966
	m = xnfcalloc(sizeof(vbeModeInfoRec),1);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   967
	m->width = mode->XResolution;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   968
	m->height = mode->YResolution;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   969
	m->bpp = bpp;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   970
	m->n = id;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   971
	m->next = ModeList;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   972
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   973
	xf86DrvMsgVerb(pVbe->pInt10->scrnIndex, X_PROBED, 3,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   974
		       "BIOS reported VESA mode 0x%x: x:%i y:%i bpp:%i\n",
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   975
		       m->n, m->width, m->height, m->bpp);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   976
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   977
	ModeList = m;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   978
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   979
	VBEFreeModeInfo(mode);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   980
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   981
    return ModeList;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   982
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   983
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   984
unsigned short 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   985
VBECalcVbeModeIndex(vbeModeInfoPtr m, DisplayModePtr mode, int bpp)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   986
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   987
    while (m) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   988
	if (bpp == m->bpp 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   989
	    && mode->HDisplay == m->width 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   990
	    && mode->VDisplay == m->height)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   991
	    return m->n;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   992
	m = m->next;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   993
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   994
    return 0;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   995
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   996
#endif
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   997
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   998
void
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
   999
VBEVesaSaveRestore(vbeInfoPtr pVbe, vbeSaveRestorePtr vbe_sr,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1000
		  vbeSaveRestoreFunction function)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1001
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1002
    Bool SaveSucc = FALSE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1003
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1004
    if (VBE_VERSION_MAJOR(pVbe->version) > 1
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1005
	&& (function == MODE_SAVE || vbe_sr->pstate)) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1006
	if (function == MODE_RESTORE)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1007
	    memcpy(vbe_sr->state, vbe_sr->pstate, vbe_sr->stateSize);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1008
	ErrorF("VBESaveRestore\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1009
	if ((VBESaveRestore(pVbe,function,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1010
			    (pointer)&vbe_sr->state,
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1011
			    &vbe_sr->stateSize,&vbe_sr->statePage))) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1012
	    if (function == MODE_SAVE) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1013
		SaveSucc = TRUE;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1014
		vbe_sr->stateMode = -1; /* invalidate */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1015
		/* don't rely on the memory not being touched */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1016
		if (vbe_sr->pstate == NULL)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1017
		    vbe_sr->pstate = xalloc(vbe_sr->stateSize);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1018
		memcpy(vbe_sr->pstate, vbe_sr->state, vbe_sr->stateSize);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1019
	    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1020
	    ErrorF("VBESaveRestore done with success\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1021
	    return;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1022
	}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1023
	ErrorF("VBESaveRestore done\n");
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1024
    } 
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1025
    
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1026
    if (function == MODE_SAVE && !SaveSucc)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1027
	    (void)VBEGetVBEMode(pVbe, &vbe_sr->stateMode);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1028
	
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1029
    if (function == MODE_RESTORE && vbe_sr->stateMode != -1)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1030
	    VBESetVBEMode(pVbe, vbe_sr->stateMode, NULL);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1031
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1032
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1033
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1034
int
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1035
VBEGetPixelClock(vbeInfoPtr pVbe, int mode, int clock)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1036
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1037
    /*
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1038
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1039
	AX := 4F0Bh VBE Get Pixel Clock
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1040
	BL := 01h Get Pixel Clock
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1041
	ECX := pixel clock in units of Hz
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1042
        DX := mode number
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1043
     
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1044
    Output:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1045
	AX := VBE Return Status
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1046
	ECX := Closest pixel clock
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1047
     */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1048
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1049
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1050
    pVbe->pInt10->ax = 0x4f0b;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1051
    pVbe->pInt10->bx = 0x01;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1052
    pVbe->pInt10->cx = clock;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1053
    pVbe->pInt10->dx = mode;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1054
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1055
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1056
    if (R16(pVbe->pInt10->ax) != 0x4f)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1057
	return (0);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1058
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1059
    return (pVbe->pInt10->cx);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1060
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1061
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1062
Bool
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1063
VBEDPMSSet(vbeInfoPtr pVbe, int mode)
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1064
{
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1065
    /*
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1066
    Input:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1067
	AX := 4F10h DPMS
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1068
	BL := 01h Set Display Power State
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1069
	BH := requested power state
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1070
     
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1071
    Output:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1072
	AX := VBE Return Status
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1073
     */
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1074
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1075
    pVbe->pInt10->num = 0x10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1076
    pVbe->pInt10->ax = 0x4f10;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1077
    pVbe->pInt10->bx = 0x01;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1078
    switch (mode) {
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1079
    case DPMSModeOn:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1080
	break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1081
    case DPMSModeStandby:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1082
	pVbe->pInt10->bx |= 0x100;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1083
	break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1084
    case DPMSModeSuspend:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1085
	pVbe->pInt10->bx |= 0x200;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1086
	break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1087
    case DPMSModeOff:
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1088
	pVbe->pInt10->bx |= 0x400;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1089
	break;
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1090
    }
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1091
    xf86ExecX86int10(pVbe->pInt10);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1092
    return (R16(pVbe->pInt10->ax) == 0x4f);
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1093
}
6fef7fb81fc7 6420309: auto-config improve: Need to move VBE DDC fallback probing from server to drivers
Henry Zhao <Henry.Zhao@Sun.COM>
parents:
diff changeset
  1094