📄 power.c
字号:
#include "types.h"
#include "board.h"
#include "global.h"
#include "ms_reg.h"
#include "panel.h"
#include "misc.h"
#include "ms_rwreg.h"
#include "mstar.h"
#include "debug.h"
#include "msOsd.h"
#define TurnOffOSD 1
void Power_TurnOffLed(void);
void Power_TurnOffPanel(void);
void Power_PowerOffSystem(void);
extern void InitialVolume(void);
#if NewEA03
void SetRSDSOffsetZeroLevel(BYTE On);
#endif
//=============================================
void Power_TurnOffLed(void)
{
hw_ClrGreenLed();
hw_ClrAmberLed();
}
#if 1//EnableFactoryDefine
void Power_TurnOnGreenLed(void)
{
hw_SetGreenLed();
}
void Power_TurnOffGreenLed(void)
{
hw_ClrGreenLed();
}
void Power_TurnOnAmberLed(void)
{
hw_SetAmberLed();
}
void Power_TurnOffAmberLed(void)
{
hw_ClrAmberLed();
}
#endif
//=============================================
// Control system power status
// caller : main()
void Power_PowerHandler(void)
{ if (ForcePowerSavingFlag)
{
Clr_ForcePowerSavingFlag(); // clear force power saving flag
if (!PowerSavingFlag)
{
#if DEBUG_ENABLE
printMsg("enter power saving");
#endif
Power_TurnOffGreenLed(); // turn off green led
if (PowerOnFlag)
Power_TurnOnAmberLed(); // turn on amber led
Power_PowerOffSystem();
if (!PowerOnFlag) // system is on power-off status
Power_TurnOffLed();
}
}
}
void Power_PowerOnSystem(void)
{
Clr_PowerSavingFlag();
#if Dual_Input_Icon_Enable
Set_DrawSourceTypeFlag();
#endif
Set_InitVolumeFlag();
InitialVolume();//yurian add 20050124
Power_TurnOffPanel();
mStar_PowerUp();
Set_InputTimingChangeFlag();
SrcFlags|=SyncLoss;
}
void Power_PowerOffSystem(void)
{
Set_PowerSavingFlag();
Clr_InitVolumeFlag();
SetAudio(0);
Power_TurnOffPanel();
mStar_PowerDown();
Clr_InputTimingChangeFlag();
}
#if (PanelRSDS&&!PanelOff1Sec) // only for Hannstar 15" RSDS panel
void sMute(BYTE on)
{
// for Hannstar TCON panel :
mStar_WriteByte(REGBK, REGBANKTCON);
if (on)
{
mStar_WriteByte(IFCTRL, OuputFormat|PUA_B);
#if NewEA03
mStar_WriteWord(G4VST_H, 0);
mStar_WriteWord(G4VEND_H, 0);
mStar_WriteWord(G4HST_H, 0);
mStar_WriteWord(G4HEND_H, 0);
mStar_WriteByte(G4CTRL, 0); // Active high
ForceDelay1ms(40);
#endif
mStar_WriteWord(G4VST_H, GPO4_VStart);
mStar_WriteWord(G4VEND_H, GPO4_VEnd);
mStar_WriteWord(G4HST_H, GPO4_HStart);
mStar_WriteWord(G4HEND_H, GPO4_HEnd);
mStar_WriteByte(G4CTRL, GPO4_Control);
}
else
{ mStar_WriteByte(IFCTRL, OuputFormat);
mStar_WriteWord(G4VST_H, 0);
mStar_WriteWord(G4VEND_H, 0);
mStar_WriteWord(G4HST_H, 0);
mStar_WriteWord(G4HEND_H, 0);
mStar_WriteByte(G4CTRL, 1); // Active low
}
mStar_WriteByte(REGBK, REGBANKSCALER);
}
#endif
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#if (!PanelOff1Sec)
void Power_TurnOnPanel(void)
{
#if NewEA03
SetRSDSOffsetZeroLevel(0);
#endif
#if (PanelAUEN05|PanelAUEG01|PanelAUEG01_v2) //xxxx 20031121
mStar_WriteByte(OCTRL2,mStar_ReadByte(OCTRL2)|WHTS_B);
Delay1ms(100);
mStar_WriteByte(OCTRL2,mStar_ReadByte(OCTRL2)&(~WHTS_B));
#endif
//---------------------------------
#if 0//NewEA03
hw_SetPanel12V();
ForceDelay1ms(PanelOnTiming0);
hw_SetPanel();
#else
hw_SetPanel();
#if PanelRSDS
ForceDelay1ms(PanelOnTiming0); //delay between 3.3V On - 12V On
hw_SetPanel12V(); //Set 12V Panel Power
#endif
#endif
//---------------------------------
Delay1ms(PanelOnTiming1);
#if PanelRSDS
sMute(1);
#endif
#if PanelRSDS
mStar_WriteByte(OCTRL3, 0x1F); // RSDS output with all GPO
mStar_WriteByte(TRISTATE, 0);
#elif PanelLVDS
mStar_WriteByte(OCTRL3, ENRT_B); // LVDS output
mStar_WriteByte(TRISTATE, 0xff);
#elif PanelTTL
mStar_WriteByte(TRISTATE, 0);
#endif
Delay1ms(PanelOnTiming2);
if (InputTimingChangeFlag)
Power_TurnOffPanel();
else
hw_SetBackLit();
}
void Power_TurnOffPanel(void)
{
#if NewEA03
SetRSDSOffsetZeroLevel(1);
#endif
#if TurnOffOSD
mStar_WriteOSDByte(OSDDBC, 0x0); // disable osd double buffer
mStar_WriteOSDByte(IOSDC1, 0);
Delay4us();
#endif
hw_ClrBackLit();
#if (PanelCPTEA03|PanelCPTXG08|PanelHstSX84|PanelHanStarSXA1|PanelHstSX84_F|PanelCPTXP02)//tony 23/12/03
mStar_WriteByte(OCTRL2, mStar_ReadByte(OCTRL2)|BLKS_B);
#endif
Delay1ms(PanelOffTiming1);
#if (PanelAUEN05|PanelAUEG01|PanelAUEG01_v2) //xxxx 20031121
mStar_WriteByte(OCTRL2,mStar_ReadByte(OCTRL2)|WHTS_B);
#endif
#if PanelRSDS
sMute(0);
#endif
mStar_WriteByte(TRISTATE, 0xFF);
#if !PanelTTL
mStar_WriteByte(OCTRL3, 0);
#endif
Delay1ms(PanelOffTiming2);
//-------------------------
#if NewEA03
hw_ClrPanel();
Delay1ms(PanelOffTiming0);
hw_ClrPanel12V();
mStar_WriteByte(OCTRL2, mStar_ReadByte(OCTRL2)&(~BLKS_B));
#else
#if PanelRSDS
hw_ClrPanel12V();
Delay1ms(PanelOffTiming0);
#endif
#if (PanelAUEN05|PanelAUEG01|PanelAUEG01_v2) //xxxx 20031121
mStar_WriteByte(OCTRL2,mStar_ReadByte(OCTRL2)&(~WHTS_B));
#endif
#if (PanelCPTEA03|PanelCPTXG08|PanelHstSX84|PanelHanStarSXA1|PanelHstSX84_F|PanelCPTXP02)//tony 23/12/03
mStar_WriteByte(OCTRL2, mStar_ReadByte(OCTRL2)&(~BLKS_B));
#endif
hw_ClrPanel();
#endif
//-------------------------
#if TurnOffOSD
mStar_WriteOSDByte(OSDDBC, 0x5); // enable double
#endif
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#else //turn on/off for Panel AUES05
void Power_TurnOnPanel(void)
{
while(DisablePanelOnFlag)
ForceDelay1ms(50);
hw_SetPanel();
#if DEBUG_ENABLE
printMsg("on panel power");
#endif
Delay1ms(PanelOnTiming1);
mStar_WriteByte(OCTRL3, 0x1F);
mStar_WriteByte(TRISTATE, 0);
Delay1ms(PanelOnTiming2);
if (InputTimingChangeFlag)
Power_TurnOffPanel();
else
hw_SetBackLit();
}
void Power_TurnOffPanel(void)
{
#if TurnOffOSD
mStar_WriteOSDByte(OSDDBC, 0x0); // disable osd double buffer
mStar_WriteOSDByte(IOSDC1, 0);
Delay4us();
#endif
hw_ClrBackLit();
Delay1ms(PanelOffTiming1);
mStar_WriteByte(TRISTATE, 0xFF);
mStar_WriteByte(OCTRL3, 0);
Delay1ms(PanelOffTiming2);
hw_ClrPanel();
#if DEBUG_ENABLE
printMsg("off panel power");
#endif
Set_DisablePanelOnFlag();
PanelOffTimeCounter=5;
#if TurnOffOSD
mStar_WriteOSDByte(OSDDBC, 0x5); // enable double
#endif
}
#endif
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#if NewEA03
void SetRSDSOffsetZeroLevel(BYTE On)
{
mStar_WriteByte(REGBK,REGBANKADC);
mStar_WriteByte(TESTEN,0x80);
if(On)
mStar_WriteByte(TST_REG,0x80);
else
mStar_WriteByte(TST_REG,0x8b);
mStar_WriteByte(TESTEN,0x00);
mStar_WriteByte(REGBK,REGBANKSCALER);
Delay1ms(1);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -