追踨法蘭克

2018年11月13日 星期二

ACPI (3) ACPI Hardware Model

ACPI 前面寫了一些文章,都是參考ACPI Spec 裡面所提到的。 這一章 是ACPI Hardware Model, 故名思義,HW 要Support 這些暫存器才能支援ACPI的功能, 以Intel 為例,這些都是基本的暫存器,還有可能有更多的擴充功能,是屬於Intel Hardware confidential, 也就是非Common 的部分,這裡不會探討。

 
 
(1)PM1 Event Registers
1. PM1a Event Block 這是必需的暫存器,只要support ACPI 的Hardware,如Intel, 一定要實作這些暫存器,他有以下功能:
  • Power Management timer control/status
  • Porocessor power state control/status
  • Global Lock related interfaces
  • Power or Sleep button (fixed register interfaces)
  • System power state control(sleeping/wake control)
2. PM1b Event Block  是 可選擇性的暫存器,可有可無。

這些暫存器 每個block 是32 bit 的指標指向之,而存在FADT 內。如果不支援PM1b Event Block,指標為0.

PM1 Group 就是以上五件事的 Enable / Status, Length 各位32bits 一半,為16bits. 通常會有PM1a, PM1b 不一定有的,可以參考Intel 的Spec.

(2). PM1 Control Registers
PM1 control 暫存器 一樣是包含兩個block,
1. PM1a Control Block 是必需的暫存器,只要support ACPI 的Hardware,如Intel, 一定要實作這些暫存器,他有以下功能:
  • SCI/SMI routing control/status for power management and genernal-purpose events
  • Processor power state control/status
  • Global Lock related interfaces
2. PM1b Control Block 是 可選擇性的暫存器,可有可無。

這些暫存器 每個block 是32 bit 的指標指向之,而存在FADT 內。如果不支援PM1b Control Block,指標為0.

PM1 control register block 必須有一個最小的大小為 2 bytes(16bits)

(3)PM2 Control Register 是 可選擇性的暫存器,可有可無。

(4) PM Timer Register : PM Timer Block 是 選擇性的暫存器,可有可無。當Hardware實作時,會回傳時間. 是唯讀的暫存器,以Intel 為例 運作在3.579545MHz.

(5) Processor Control Block: 這是一個選擇性的暫存器,每一個處理器一個block.

(6) Genernal-Purpose Event Registers: 這個暫存器可以控制Enable/顯示Status,經由 GPIO 接收外部的SCI Event,如_LXX, _EXX, _QXX (_QXX 是透過 EC 或SMBUS 轉接的相關ROOT Event ). (所接入的SCI Event 可能是 LID、Power Button、Sleep Button、Battery、Thermal、PCIE Hotplug、PCIE wake up event等等)這都要看HW 怎麼設計,來決定怎麼處理。





沒有留言:

張貼留言