Merge branch 'modesetting-origin' into modesetting

This commit is contained in:
Keith Packard 2007-02-01 21:31:27 -08:00
commit 1dde7a15a3
4 changed files with 33 additions and 74 deletions

View File

@ -129,51 +129,6 @@ other drivers.
Disable or enable XVideo support.
Default: XVideo is enabled for configurations where it is supported.
.TP
.BI "Option \*qMonitorLayout\*q \*q" anystr \*q
Allow different monitor configurations. e.g. \*qCRT,LFP\*q will
configure a CRT on Pipe A and an LFP on Pipe B. Regardless of the
primary heads' pipe it is always configured as \*q<PIPEA>,<PIPEB>\*q.
Additionally you can add different configurations such as
\*qCRT+DFP,LFP\*q which would put a digital flat panel and a CRT
on pipe A, and a local flat panel on pipe B.
For single pipe configurations you can just specify the monitors types
on Pipe A, such as \*qCRT+DFP\*q which will enable the CRT and DFP
on Pipe A.
Valid monitors are CRT, LFP, DFP, TV, CRT2, LFP2, DFP2, TV2 and NONE.
NOTE: Some configurations of monitor types may fail, this depends on
the Video BIOS and system configuration.
Default: Not configured, and will use the current head's pipe and monitor.
.TP
.BI "Option \*qClone\*q \*q" boolean \*q
Enable Clone mode on pipe B. This will setup the second head as a complete
mirror of the monitor attached to pipe A.
NOTE: Video overlay functions will not work on the second head in this mode.
If you require this, then use the MonitorLayout above and do (as an example)
\*qCRT+DFP,NONE\*q to configure both a CRT and DFP on Pipe A to achieve
local mirroring and disable the use of this option.
Default: Clone mode on pipe B is disabled.
.TP
.BI "Option \*qCloneRefresh\*q \*q" integer \*q
When the Clone option is specified we can drive the second monitor at a
different refresh rate than the primary.
Default: 60Hz.
.TP
.BI "Option \*qCheckLid\*q \*q" boolean \*q
On mobile platforms it's desirable to monitor the lid status and switch
the outputs accordingly when the lid is opened or closed. By default this
option is on, but may incur a very minor performance penalty as we need
to poll a register on the card to check for this activity. It can be
turned off using this option. This only works with the 830M, 852GM and 855GM
systems.
Default: enabled.
.TP
.BI "Option \*qFlipPrimary\*q \*q" boolean \*q
When using a dual pipe system, it may be preferable to switch the primary
screen to the alternate pipe to display on the other monitor connection.
NOTE: Using this option may cause text mode to be restored incorrectly,
and thus should be used with caution.
Default: disabled.
.TP
.BI "Option \*qRotate\*q \*q90\*q"
Rotate the desktop 90 degrees counterclockwise. Other valid options are
0, 90, 180 and 270 degrees. The RandR extension is used for rotation

View File

@ -401,7 +401,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# define ERR_VERTEX_MAX (1 << 5) /* lpt/cst */
# define ERR_PGTBL_ERROR (1 << 4)
# define ERR_DISPLAY_OVERLAY_UNDERRUN (1 << 3)
# define ERR_MAIN_MEMORY_REFRESH (1 << 2)
# define ERR_MAIN_MEMORY_REFRESH (1 << 1)
# define ERR_INSTRUCTION_ERROR (1 << 0)

View File

@ -462,7 +462,7 @@ void i830DumpRegs (ScrnInfoPtr pScrn)
break;
default:
p2 = 1;
xf86DrvMsg (pScrn->scrnIndex, X_ERROR, "p2 out of range\n");
xf86DrvMsg (pScrn->scrnIndex, X_WARNING, "p2 out of range\n");
break;
}
switch ((dpll >> 16) & 0xff) {
@ -484,33 +484,39 @@ void i830DumpRegs (ScrnInfoPtr pScrn)
p1 = 8; break;
default:
p1 = 1;
xf86DrvMsg (pScrn->scrnIndex, X_ERROR, "p1 out of range\n");
xf86DrvMsg (pScrn->scrnIndex, X_WARNING, "p1 out of range\n");
break;
}
switch ((dpll >> 13) & 0x3) {
case 0:
ref = 96000;
break;
case 3:
ref = 100000;
break;
default:
ref = 0;
xf86DrvMsg (pScrn->scrnIndex, X_ERROR, "ref out of range\n");
xf86DrvMsg (pScrn->scrnIndex, X_WARNING, "ref out of range\n");
break;
}
phase = (dpll >> 9) & 0xf;
switch (phase) {
case 6:
break;
default:
xf86DrvMsg (pScrn->scrnIndex, X_INFO,
"SDVO phase shift %d out of range -- probobly not "
"an issue.\n", phase);
break;
if (IS_I965G(pI830)) {
phase = (dpll >> 9) & 0xf;
switch (phase) {
case 6:
break;
default:
xf86DrvMsg (pScrn->scrnIndex, X_INFO,
"SDVO phase shift %d out of range -- probobly not "
"an issue.\n", phase);
break;
}
}
switch ((dpll >> 8) & 1) {
case 0:
break;
default:
xf86DrvMsg (pScrn->scrnIndex, X_ERROR, "fp select out of range\n");
xf86DrvMsg (pScrn->scrnIndex, X_WARNING,
"fp select out of range\n");
break;
}
n = ((fp >> 16) & 0x3f);
@ -645,13 +651,18 @@ i830_check_error_state(ScrnInfoPtr pScrn)
temp = INREG16(ESR);
if (temp != 0) {
Bool vertex_max = !IS_I965G(pI830) && (temp & ERR_VERTEX_MAX);
Bool pgtbl = temp & ERR_PGTBL_ERROR;
Bool underrun = !IS_I965G(pI830) &&
(temp & ERR_DISPLAY_OVERLAY_UNDERRUN);
Bool instruction = !IS_I965G(pI830) && (temp & ERR_INSTRUCTION_ERROR);
xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
"ESR is 0x%08lx%s%s%s%s\n", temp,
temp & ERR_VERTEX_MAX ? ", max vertices exceeded" : "",
temp & ERR_PGTBL_ERROR ? ", page table error" : "",
temp & ERR_DISPLAY_OVERLAY_UNDERRUN ?
", display/overlay underrun" : "",
temp & ERR_INSTRUCTION_ERROR ? ", instruction error" : "");
vertex_max ? ", max vertices exceeded" : "",
pgtbl ? ", page table error" : "",
underrun ? ", display/overlay underrun" : "",
instruction ? ", instruction error" : "");
errors++;
}
/* Check first for page table errors */
@ -665,7 +676,7 @@ i830_check_error_state(ScrnInfoPtr pScrn)
} else {
temp = INREG(PGTBL_ER);
if (temp != 0) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
"PGTBL_ER is 0x%08lx"
"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n", temp,
temp & PGTBL_ERR_HOST_GTT_PTE ? ", host gtt pte" : "",

View File

@ -270,12 +270,7 @@ typedef enum {
OPTION_XVIDEO,
OPTION_VIDEO_KEY,
OPTION_COLOR_KEY,
OPTION_VBE_RESTORE,
OPTION_DISPLAY_INFO,
OPTION_DEVICE_PRESENCE,
OPTION_MONITOR_LAYOUT,
OPTION_CHECKDEVICES,
OPTION_FIXEDPIPE,
OPTION_LINEARALLOC,
OPTION_INTELTEXPOOL,
OPTION_INTELMMSIZE
@ -293,9 +288,7 @@ static OptionInfoRec I830Options[] = {
{OPTION_XVIDEO, "XVideo", OPTV_BOOLEAN, {0}, TRUE},
{OPTION_COLOR_KEY, "ColorKey", OPTV_INTEGER, {0}, FALSE},
{OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE},
{OPTION_MONITOR_LAYOUT, "MonitorLayout", OPTV_ANYSTR,{0}, FALSE},
{OPTION_CHECKDEVICES, "CheckDevices",OPTV_BOOLEAN, {0}, FALSE},
{OPTION_FIXEDPIPE, "FixedPipe", OPTV_ANYSTR, {0}, FALSE},
{OPTION_LINEARALLOC, "LinearAlloc", OPTV_INTEGER, {0}, FALSE},
{OPTION_INTELTEXPOOL,"Legacy3D", OPTV_BOOLEAN, {0}, FALSE},
{OPTION_INTELMMSIZE, "AperTexSize", OPTV_INTEGER, {0}, FALSE},
@ -3049,8 +3042,8 @@ I830EnterVT(int scrnIndex, int flags)
return FALSE;
if (i830_check_error_state(pScrn)) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Existing errors found in hardware state\n");
xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
"Existing errors found in hardware state.\n");
}
ResetState(pScrn, FALSE);