EC - MIWU

Multi-Input Wake-Up(MIWU)

MIWU模組用於把 EC 由 Idle mode 中 Wake up 到 Active mode。在 Active Mode 下,Wake up 事件成為ICU的中斷訊號,完成Wake up 的要求工作。

MIMU 的 Wake up 事件觸發來源可分為內部模組和外部可 Wake up 群組,總共32個觸發事件來源MIWU察覺任何有效的輸入觸發訊號,若有觸發訊號進來則會產生wake-up 事件的需求,這時wake-up 事件會通知Power Management module(PMC)讓系統離開Idle mode回復Active mode


下圖為Wake-up 事件的流程圖


在 wake-up 事件的流程,由觸發訊號產生開始,經 WKEDGn 會先確認中斷是否符合要求(可以設定要求為 Falling Edge/ Rasing Edge/ Any Edge),當符合要求就把WKPNDn的相對位元設為1,表示有 wake up 事件產生,再經由 WKENn 確認wake up 事件是否為 Enable ,確認為 enable 後,把事件傳送到 Power Management Control Unit [PMC]去通知核心處理器離開 Idle mode。同時,也把事件傳送給 ICU 在 EC 回到 Active 時,處理中斷任務


MIWU Register

  • Edge Detection Register (WKEDG)
    • 這個register設為0時,觸發方式為Low to High,設為1時,觸發方式為High – to – Low
    • WKEDGE1 bit 0 ~ bit 7控制WUI 10 ~ WUI 17
    • WKEDGE2 bit 1 ~ bit 7控制WUI 20 ~ WUI 27
    • WKEDGE3 bit 2 ~ bit 7控制WUI 30 ~ WUI 37
    • WKEDGE4 bit 3 ~ bit 7控制WUI 40 ~ WUI 47
  • Pending Register(WKPND)
    • 這個register控制是否鎖住發生選擇觸發的狀態與輸入信訊。設為1時,參考輸入的觸發信號,設0時則不參考,這個register只有用software可以控制,用WKPCL register可以清除。
    • WKPND1 bit 0 ~ bit 7控制WUI 10 ~ WUI 17
    • WKPND2 bit 1 ~ bit 7控制WUI 20 ~ WUI 27
    • WKPND3 bit 2 ~ bit 7控制WUI 30 ~ WUI 37
    • WKPND4 bit 3 ~ bit 7控制WUI 40 ~ WUI 47
  • WKEN(Enable Register)
    • 這個register控制有輸入觸發訊號時的wake-up功能,設為1時,為Enable,設為0時,為Disable
    • WKEN1 bit 0 ~ bit 7控制WUI 10 ~ WUI 17
    • WKEN 2 bit 1 ~ bit 7控制WUI 20 ~ WUI 27
    • WKEN 3 bit 2 ~ bit 7控制WUI 30 ~ WUI 37
    • WKEN 4 bit 3 ~ bit 7控制WUI 40 ~ WUI 47
  • WKPCL(Pending Clear Register)
    • 這個register在清除pending bits,是用來避免硬體及軟體在讀寫時有其他可能操作上的衝突,
    • WKPCL 1 bit 0 ~ bit 7控制WUI 10 ~ WUI 17
    • WKPCL 2 bit 1 ~ bit 7控制WUI 20 ~ WUI 27
    • WKPCL 3 bit 2 ~ bit 7控制WUI 30 ~ WUI 37
    • WKPCL 4 bit 3 ~ bit 7控制WUI 40 ~ WUI 47

Power Wake Up 範例

  • Power button function diagram
  • Power button H/W Pin definition

Power button Pin GPIO01 – 查詢table 9 MIWU InputUI21,Interrupt NameINT 30,查詢table15得知INT 30SourceExternalMIWU,因為Power Button為外部中斷,所以一開始H/W就要定義為External

  • Power button wake up function setting process
    • Enter Idle Setting -
      • 清除Pending Event – WKPCLn = 0xFF
      • 設定Edge Trigger to (HIGH-TO-LOW) – WKEDG2.1 = 1
      • 啟動Wake-up功能 – WKEN2.1 = 1
      • 啟動中斷向量服務 – IENAM1.E = 1
    • Exit Idle Setting –
      • 取消Wake-up功能 – WKEN2.1 = 0
      • 清除Pending Event – WKPCL2 = 0xFF


留言

這個網誌中的熱門文章

EC 所需知識 - SMBUS

EC 所需知識 - KBC

EC 所需知識 - LPC