[Newbie]DPMS not working with Trident Cyberblade/i7

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jun 10, 2002 at 08:12:09 -0500, Watzlavick wrote:
> The I-Opener is really just a dumbed-down laptop.  In your experience, does the
> trident driver seem to turn off the backlight via DPMS on other laptops?  If
> DPMS properly blanks the screen, can I assume it's basically working even if the
> backlight stays on?  I can do some more research and debugging but I'm not sure
> where to begin.  I was poking through the Cyberblade i7 Tech Ref Manual and I
> found the section talking about ENPBLT.  I can't probe the pins directly because
> it's a BGA part - ideally, I'd look to see whether the driver was turning off
> the ENPBLT signal on the Cyberblade to see if it was a driver problem or if
> there was something in between the Cyberblade and display.
> 
> The bios has three options for "video off method":  DPMS support, blank screen,
> and V/H SYNC+blank.  I've had it set to DPMS but maybe there's another circuit
> getting in the way.  I'll try V/H SYNC to see if the display will take that.
> One more question if I may:  what is the trident driver trying to do in the
> various DPMS states?  That might help me understand the mechanism for backlight
> control on the I-Opener.  If you can point me to the proper file, I can look to
> see what is going on.

Get the current CVS, and try this patch. 

Alan.

Index: trident_driver.c
===================================================================
RCS file: /home/x-cvs/xc/programs/Xserver/hw/xfree86/drivers/trident/trident_driver.c,v
retrieving revision 1.172
diff -u -r1.172 trident_driver.c
--- trident_driver.c	2002/05/28 10:39:39	1.172
+++ trident_driver.c	2002/06/10 13:54:12
@@ -617,7 +617,7 @@
 TRIDENTDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode, int flags)
 {
     TRIDENTPtr pTrident = TRIDENTPTR(pScrn);
-    CARD8 DPMSCont, PMCont, temp;
+    CARD8 DPMSCont, PMCont, temp, temp2;
 
     if (!pScrn->vtSema)
 	return;
@@ -629,27 +629,53 @@
     PMCont = INB(0x83C6) & 0xFC;
     OUTB(0x3CE, 0x23);
     DPMSCont = INB(0x3CF) & 0xFC;
+
+    /* turn on soft power control for backlight */
+    OUTB(0x3CE, 0x25);
+    temp2 = INB(0x3CF) | 0x08;
+    OUTB(0x3CF, temp2);
+
     switch (PowerManagementMode)
     {
 	case DPMSModeOn:
 		/* Screen: On, HSync: On, VSync: On */
 		PMCont |= 0x03;
 		DPMSCont |= 0x00;
+	
+		/* enable backlight */
+		OUTB(0x3CE, 0x24);
+		temp2 = INB(0x3CF) | 0x08;
+		OUTB(0x3CF, temp2);
 		break;
 	case DPMSModeStandby:
 		/* Screen: Off, HSync: Off, VSync: On */
 		PMCont |= 0x02;
 		DPMSCont |= 0x01;
+		OUTB(0x3CE, 0x24);
+
+		/* disable backlight */
+		temp2 = INB(0x3CF) & 0xF7;
+		OUTB(0x3CF, temp2);
 		break;
 	case DPMSModeSuspend:
 		/* Screen: Off, HSync: On, VSync: Off */
 		PMCont |= 0x02;
 		DPMSCont |= 0x02;
+
+		/* disable backlight */
+		OUTB(0x3CE, 0x24);
+		temp2 = INB(0x3CF) & 0xF7;
+		OUTB(0x3CF, temp2);
 		break;
 	case DPMSModeOff:
 		/* Screen: Off, HSync: Off, VSync: Off */
 		PMCont |= 0x00;
 		DPMSCont |= 0x03;
+
+		/* disable backlight */
+		OUTB(0x3CE, 0x24);
+		temp2 = INB(0x3CF) & 0xF7;
+		OUTB(0x3CF, temp2);
 		break;
     }
     OUTB(0x3CF, DPMSCont);


[Index of Archives]     [XFree86]     [Xfree86 Xpert]     [X.org]     [IETF Annouce]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Picture Sharing]     [Linux Security]     [Linux RAID]

  Powered by Linux