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

Re: [Xpert]Re: Screen blanking/DPMS with Sun Ultra1



(More comments below -- FEM)
> 
> On Mon, 3 Dec 2001, Moritz Bunkus wrote:
> 
> > Hello everyone.
> > 
> > I have a lot of Sun Ultra1 boxes with Sun monitors. Until recently they
> > ran under Solaris. With this setup they monitors went into some sort of
> > power saving mode after some time of inactivity.
> > 
> > All those boxes now run Woody with XFree 4.1.0.1. Unfortunately
> > either the graphics hardware (the suncg6 driver is used) or the monitor
> > don't support DPMS (option "DPMS" is given in the monitor section): the
> > logfile says
> > (WW) SUNCG6(0): Option "DPMS" is not used
> > (WW) SUNCG6(0): Option "StandByTime" is not used
> > (WW) SUNCG6(0): Option "SuspendTime" is not used
> > (WW) SUNCG6(0): Option "OffTime" is not used
> > 
> > Now the boxes all have their monitors on all the time which is
> > definitely not what I want. Is there a way to use power saving with
> > this setup? Or at least some sort of screen blanking and/or a
> > screensaver?
> >

Moritz,
  I don't know if you ever got this resolved or not, nor do I know
if you have been following the follow-on discussions or not (helpful
to me, not so directly to the CG6 case.)

  In any case, here is an idea which I have no way of testing, but
which parallels David Miller's suggestion regarding the Creator graphics
card.

  The kernel code seems to blank/unblank a display device connected to
a CG6 frame buffer seems to use the mask CG6_THC_MISC_VIDEO in the module
[cgsixfb.c at cg6_blank] thus:
   tmp = sbus_readl(&fb->s.cg6.thc->thc_misc);
   tmp &= ~CG6_THC_MISC_VIDEO;
   wbus_writel(tmp, &fb->s.cg6.thc->thc_misc);

  This suggests that changing the XF86 cg6 driver module ---
cg6_driver.c --- as follows should get you screen blanking at least:
The current CG6SaveScreen procedure is an empty procedure returning
TRUE.  Something along the following lines might do what you want--

  static Bool
  CG6SaveScreen(ScreenPtr pScreen, int mode) {
   ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];  /* Like elsewhere*/
   Cg6Ptr pCg6;
   unsigned int tmp;
   pCg6 = GET_CG6_FROM_SCRN(pScrn);
   tmp = pCg6 -> thc -> thc_misc;
   switch(mode) {
     case SCREEN_SAVER_ON:
     case SCREEN_SAVER_CYCLE:
       tmp &= ~CG6_THC_MISC_VIDEO;
       break;
     case SCREEN_SAVER_OFF:
     case SCREEN_SAVER_FORCER:
       tmp |= CG6_THC_MISC_VIDEO;
       break;
     default: return FALSE;
   }
   pCg6 -> thc -> thc_misc = tmp;
   return TRUE;
 }

  If you try that and it works, there are some other THC_MISC masks
which might get the display device to turn off.  As I mentioned a couple
weeks ago, something along these lines will turn it off:  Solaris
knows how to do it.

Sorry to be so long-winded.  Hope this is of some use to you (or that
someone who actually knows will correct it into something useful).

Regards,
Ferris


--
Ferris McCormick (P44646, MI) <fmccor@inforead.com>
Phone: (703) 392-0303
Fax:   (703) 392-0401




Reply to: