2010年6月22日 星期二

筆記2 --- Turn On/Off LVDS

筆記2 --- Turn On/Off LVDS

(only for V10IS)

先將047D bit3 先設為1方能控制

Turn off LVDS:
。 0B36 bit6 = 1
。 0870 bit0 = 1

Turn on LVDS:
。 0B36 bit6 = 0
。 0870 bit0 = 0

PS:
當LVDS關閉後,可用KB或TP動一下即可開啟LVDS

%IF    Icetest  ;mice test
TT_start:
lda PwrAP_PwrCtrl
jnb acc.Cut_LVDS,Exit ; If PWR AP not select cut LVDS item,jmp lda SENSE_FLAG_1
lda SENSE_FLAG_1
anl a,#03h
jnz RstBkLitSaver_1 ; If any key or TP is active, jmp
jmp GoBackLitSaver_1 ; Check time is or not up
ret
;;;
RstBkLitSaver_1:
CLRBIT BIT0, 0871h
oemclb BKLightIdleSTS_1,ecLCDBriSeg_1 ; Leave BackLightIdle mode
SET_BACKLIGHT_ON ;;jerry10/13
mov r0,#BIOSNORL_LVDS ; BIOS recory LVDS and Backlight
call _PUT_SCI_RECORDER
mov a,#080h ; A=SCI Task Description Byte
call WigglePin
RstBKLFTimer_1:
CLRBIT PS2_SENSE_1,SENSE_FLAG_1
CLRBIT MATRIX_SENSE_1,SENSE_FLAG_1
RET
GoBackLitSaver_1:
GETA 0871h
JNB ACC.0, Exit
oemseb BKLightIdleSTS_1,ecLCDBriSeg_1 ; Don't do again
SET_BACKLIGHT_OFF ;;jerry10/13
mov r0,#BIOSCUT_LVDS ; BIOS cut LVDS and Backlight
call _PUT_SCI_RECORDER
mov a,#080h ; A=SCI Task Description Byte
call WigglePin
Exit:
RET
%ENDIF



不過…由於加入上面的code會造成code size爆掉(@@")
所以把某段code刪減成如下:
(因為跟047D原本的功能相衝突,所以就刪它部份功能了:) )
;;----------------------------------------------------------------------------
;; Ivan request enable LVDS off ater 3 min for I series.
;;----------------------------------------------------------------------------
%IF PwrmgetAP
LCDBackLitSaver_1:
ret
LCDBackLitCount_1:
IF_AC_ON_LINE QtLCDBackLitCount_1 ; Modify Autodim & Powersaving function, Alan Yen 20070306
lda BKLSaverTm_1
JZ QtLCDBackLitCount_1
DEC A
sta BKLSaverTm_1
QtLCDBackLitCount_1:
RET
;;----------------------------------------------------------------------------
HookTP_1:
SETBIT PS2_SENSE_1,SENSE_FLAG_1
RET
;;----------------------------------------------------------------------------
HookKeyboard_1:
SETBIT MATRIX_SENSE_1,SENSE_FLAG_1
RET
%ENDIF ;PwrmgetAP



後記:
最後因為每台機種不同的因素,(HW拉線路不同)
有些機種是整個LCD panel都關閉了,
有些機種只是LCD brightness降到某個程度,但訊號依輸出。
可能要改BIOS…大工程= =
(還不知道改哪裡)
後來請Inco用VS寫隻AP通知OS,也能達到相同效果 / \

SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 2);
或著
PostMessage(hWnd,WM_SYSCOMMAND,SC_MONITORPOWER,2);

沒有留言:

張貼留言