#include "accel.h"
#include "virge.h"
uint32
Virge_DPMSCapabilities(void)
{
return B_DPMS_ON | B_DPMS_STAND_BY | B_DPMS_SUSPEND | B_DPMS_OFF;
}
uint32
Virge_GetDPMSMode(void)
{
uint32 mode = B_DPMS_ON;
switch (ReadSeqReg(0x0d) & 0x70) {
case 0:
mode = B_DPMS_ON;
break;
case 0x10:
mode = B_DPMS_STAND_BY;
break;
case 0x40:
mode = B_DPMS_SUSPEND;
break;
case 0x50:
mode = B_DPMS_OFF;
break;
default:
TRACE("Unknown DPMS mode, reg sr0D: 0x%X\n", ReadSeqReg(0x0d));
}
TRACE("Virge_GetDPMSMode() mode: %d\n", mode);
return mode;
}
status_t
Virge_SetDPMSMode(uint32 dpmsMode)
{
TRACE("Virge_SetDPMSMode() mode: %d\n", dpmsMode);
WriteSeqReg(0x08, 0x06);
uint8 sr0D = ReadSeqReg(0x0d) & 0x03;
switch (dpmsMode) {
case B_DPMS_ON:
break;
case B_DPMS_STAND_BY:
sr0D |= 0x10;
break;
case B_DPMS_SUSPEND:
sr0D |= 0x40;
break;
case B_DPMS_OFF:
sr0D |= 0x50;
break;
default:
TRACE("Invalid DPMS mode %d\n", dpmsMode);
return B_ERROR;
}
WriteSeqReg(0x0d, sr0D);
return B_OK;
}