View | Details | Raw Unified | Return to bug 135002
Collapse All | Expand All

(-)i830_driver.c (-8 / +22 lines)
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
   }

Return to bug 135002