|
Lines 865-870
Link Here
|
| 865 |
vbeInfoPtr pVbe = pI830->pVbe; |
922 |
vbeInfoPtr pVbe = pI830->pVbe; |
| 866 |
CARD32 temp; |
923 |
CARD32 temp; |
| 867 |
int singlepipe = 0; |
924 |
int singlepipe = 0; |
|
|
925 |
int loop; |
| 868 |
#ifdef I915G_WORKAROUND |
926 |
#ifdef I915G_WORKAROUND |
| 869 |
int getmode1; |
927 |
int getmode1; |
| 870 |
Bool setmode = FALSE; |
928 |
Bool setmode = FALSE; |
|
Lines 961-997
Link Here
|
| 961 |
/* LFP on PipeA is unlikely! */ |
1019 |
/* LFP on PipeA is unlikely! */ |
| 962 |
OUTREG(0x61200, INREG(0x61200) & ~0x80000000); |
1020 |
OUTREG(0x61200, INREG(0x61200) & ~0x80000000); |
| 963 |
OUTREG(0x61204, INREG(0x61204) & ~0x00000001); |
1021 |
OUTREG(0x61204, INREG(0x61204) & ~0x00000001); |
| 964 |
while ((INREG(0x61200) & 0x80000000) || (INREG(0x61204) & 1)); |
1022 |
loop = 1000000; |
|
|
1023 |
while ((INREG(0x61200) & 0x80000000) || (INREG(0x61204) & 1) && loop) |
| 1024 |
loop--; |
| 965 |
/* Fix up LVDS */ |
1025 |
/* Fix up LVDS */ |
| 966 |
OUTREG(LVDS, (INREG(LVDS) & ~1<<30) | 0x80000300); |
1026 |
OUTREG(LVDS, (INREG(LVDS) & ~1<<30) | 0x80000300); |
| 967 |
/* Enable LVDS */ |
1027 |
/* Enable LVDS */ |
| 968 |
OUTREG(0x61200, INREG(0x61200) | 0x80000000); |
1028 |
OUTREG(0x61200, INREG(0x61200) | 0x80000000); |
| 969 |
OUTREG(0x61204, INREG(0x61204) | 0x00000001); |
1029 |
OUTREG(0x61204, INREG(0x61204) | 0x00000001); |
| 970 |
while (!(INREG(0x61200) & 0x80000000) && !(INREG(0x61204) & 1)); |
1030 |
loop = 1000000; |
| 971 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
1031 |
while (!(INREG(0x61200) & 0x80000000) && !(INREG(0x61204) & 1) && loop) |
|
|
1032 |
loop--; |
| 1033 |
if (loop) |
| 1034 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
| 972 |
"Enabling LVDS directly. Pipe A.\n"); |
1035 |
"Enabling LVDS directly. Pipe A.\n"); |
| 973 |
} else |
1036 |
} else |
| 974 |
if (singlepipe & (PIPE_LFP << 8)) { |
1037 |
if (singlepipe & (PIPE_LFP << 8)) { |
| 975 |
OUTREG(0x61200, INREG(0x61200) & ~0x80000000); |
1038 |
OUTREG(0x61200, INREG(0x61200) & ~0x80000000); |
| 976 |
OUTREG(0x61204, INREG(0x61204) & ~0x00000001); |
1039 |
OUTREG(0x61204, INREG(0x61204) & ~0x00000001); |
| 977 |
while ((INREG(0x61200) & 0x80000000) || (INREG(0x61204) & 1)); |
1040 |
loop = 1000000; |
|
|
1041 |
while ((INREG(0x61200) & 0x80000000) || (INREG(0x61204) & 1) && loop) |
| 1042 |
loop--; |
| 978 |
/* Fix up LVDS */ |
1043 |
/* Fix up LVDS */ |
| 979 |
OUTREG(LVDS, (INREG(LVDS) | 1<<30) | 0x80000300); |
1044 |
OUTREG(LVDS, (INREG(LVDS) | 1<<30) | 0x80000300); |
| 980 |
/* Enable LVDS */ |
1045 |
/* Enable LVDS */ |
| 981 |
OUTREG(0x61200, INREG(0x61200) | 0x80000000); |
1046 |
OUTREG(0x61200, INREG(0x61200) | 0x80000000); |
| 982 |
OUTREG(0x61204, INREG(0x61204) | 0x00000001); |
1047 |
OUTREG(0x61204, INREG(0x61204) | 0x00000001); |
| 983 |
while (!(INREG(0x61200) & 0x80000000) && !(INREG(0x61204) & 1)); |
1048 |
loop = 1000000; |
| 984 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
1049 |
while (!(INREG(0x61200) & 0x80000000) && !(INREG(0x61204) & 1) && loop) |
|
|
1050 |
loop--; |
| 1051 |
if (loop) |
| 1052 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
| 985 |
"Enabling LVDS directly. Pipe B.\n"); |
1053 |
"Enabling LVDS directly. Pipe B.\n"); |
| 986 |
} |
1054 |
} |
| 987 |
else if (!(IS_I830(pI830) || IS_845G(pI830) || IS_I865G(pI830))) { |
1055 |
else if (!(IS_I830(pI830) || IS_845G(pI830) || IS_I865G(pI830))) { |
| 988 |
if (!(devices & (PIPE_LFP | PIPE_LFP<<8))) { |
1056 |
if (!(devices & (PIPE_LFP | PIPE_LFP<<8))) { |
| 989 |
OUTREG(0x61200, INREG(0x61200) & ~0x80000000); |
1057 |
OUTREG(0x61200, INREG(0x61200) & ~0x80000000); |
| 990 |
OUTREG(0x61204, INREG(0x61204) & ~0x00000001); |
1058 |
OUTREG(0x61204, INREG(0x61204) & ~0x00000001); |
| 991 |
while ((INREG(0x61200) & 0x80000000) || (INREG(0x61204) & 1)); |
1059 |
loop = 1000000; |
|
|
1060 |
while ((INREG(0x61200) & 0x80000000) || (INREG(0x61204) & 1) && loop) |
| 1061 |
loop--; |
| 992 |
/* Fix up LVDS */ |
1062 |
/* Fix up LVDS */ |
| 993 |
OUTREG(LVDS, (INREG(LVDS) | 1<<30) & ~0x80000300); |
1063 |
OUTREG(LVDS, (INREG(LVDS) | 1<<30) & ~0x80000300); |
| 994 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
1064 |
if (loop) |
|
|
1065 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
| 995 |
"Disabling LVDS directly.\n"); |
1066 |
"Disabling LVDS directly.\n"); |
| 996 |
} |
1067 |
} |
| 997 |
} |
1068 |
} |