Merge branch 'modesetting-origin' into modesetting
This commit is contained in:
commit
1dde7a15a3
45
man/i810.man
45
man/i810.man
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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" : "",
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue