搜尋此網誌

2011年4月23日 星期六

[AHCI]AHCI PORT Registers[阜的暫存器]

Port Registers(one set per port)[譯自AHCI1.0]
  • Port offset = 100h + (PI Asserted Bit Position * 80h) [每個阜的偏移位址 x 80h]
    黃色為軟體人員須注意的重點暫存器
Start
End
Symbol
Description
100h
103h
PxCLB
Port x Command List Base Address
104h
107h
PxCLB
Port x Command List Base Address Upper 32-Bits
108h
10Bh
PxFB
Port x FIS Base Address
10Ch
10Fh
PxFBU
Port x FIS Base Address Upper 32-Bits
110h
113h
PxIS
Port x Interrupt Status
114h
117h
PxIE
Port x Interrupt Enable
118h
11Bh
PxCMD
Port x Command and Status
11Ch
11Fh
Reserved
Reserved
120h
123h
PxTFD
Port x Task File Data
124h
127h
PxSIG
Port x Signature
128h
12Bh
PxSSTS
Port x Serial ATA Status (SCR0: SStatus)
12Ch
12Fh
PxSCTL
Port x Serial ATA Control (SCR2: SControl)
130h
133h
PxSERR
Port x Serial ATA Error (SCR1: SError)
134h
137h
PxSACT
Port x Serial ATA Active (SCR3: SActive)
138h
13Bh
PxCI
Port x Command Issue
13Ch
13Fh
PxSNTF
Port x SNotification
140h
143h
Reserved
Reserved for FIS-based Switching Definition
144h
16Fh
Reserved
Reserved
170h
17Fh
PxVS
Port 0 Vendor Specific


3.3.6 Offset 110h: PxIS – Port x Interrupt Status
Bit
Type
Reset
Description
31
RWC
0
Cold Presence Detect Status (CPDS):
30
RWC
0
Task File Error Status (TFES):
29
RWC
0
Host Bus Fatal Error Status (HBFS):
28
RWC
0
Host Bus Data Error Status (HBDS):
27
RWC
0
Interface Fatal Error Status (IFS):
26
RWC
0
Interface Non-fatal Error Status (INFS):
25
RO
0
Reserved
24
RWC
0
Overflow Status (OFS):
23
RWC
0
Incorrect Port Multiplier Status (IPMS): 指示HBA從裝置的PM區域接收FIS與期望不相符合。由於正常PM列舉處理,IPMS位元可能設定在PM裝置被列舉期間。IPMS它被提出建議,只有使用在PM列舉完成之後。
22
RO
0
PhyRdy Chang Status (PRCS):
21:08
RO
0
Reserved
07
RWC
0
Device Mechanical Presence Status (DMPS):
06
RO
0
Port Change Status (PCS):
05
RWC
0
Descriptor Processed (DPS):
04
RO
0
Unknown FIS Interrupt (UFS):
03
RWC
0
Set Device Bits FIS Interrupt (SDBS):
02
RWC
0
DMA Setup FIS Interrupt (DSS):
01
RWC
0
PIO Setup FIS Interrupt (PSS):
00
RWC
0
Device to Host Register FIS Interrupt (DHRS):


3.3.6 Offset 114h: PxIE – Port x Interrupt Enable
暫存器致能和除能對應的中斷所屬的系統軟體描述。當有一個bit被設為’1’,並對應所屬的中斷狀態是有效的,接著中斷產生。中斷來源被Disable(‘0’),仍然在狀態暫存器會被反映出來。這暫存器跟PxIS暫存器相互對稱。
Bit
Type
Reset
Description
31
RW/RO
0
Cold Presence Detect Enable (CPDE):
30
RW
0
Task File Error Enable (TFEE):
29
RW
0
Host Bus Fatal Error Enable (HBFE):
28
RW
0
Host Bus Data Error Enable (HBDE):
27
RW
0
Interface Fatal Error Enable (IFE):
26
RW
0
Interface Non-fatal Error Enable (INFE):
25
RO
0
Reserved
24
RW
0
Overflow Enable (OFE):
23
RW
0
Incorrect Port Multiplier Enable (IPME): 當設定它與GHC.IE,還有P0IS.IPMS被設定,HBA將引發一個中斷。
22
RW
0
PhyRdy Chang Interrupt Enable (PRCE):
21:08
RO
0
Reserved
07
RW/RO
0
Device Mechanical Presence Enable (DMPE):
06
RW
0
Port Change Interrupt Enable (PCE):
05
RW
0
Descriptor Processed Interrupt Enable (DPE):
04
RW
0
Unknown FIS Interrupt Enable (UFE):
03
RW
0
Set Device Bits FIS Interrupt Enable (SDB):
02
RW
0
DMA Setup FIS Interrupt Enable (DSE):
01
RW
0
PIO Setup FIS Interrupt Enable (PSE):
00
RW
0
Device to Host Register FIS Interrupt Enable (DHRE):



Offset 118h: PxCMD – Port x Command and Status
Bit
Type
Reset
Description
31:28
RW
0h
Interface Communication Control (ICC): 這區域介面被用來控制電源管理狀態。如果連接層現在在L_IDLE狀態,寫入到這區域將造成HBA啟動一個介面電源轉換需求。如果連接層現在不在L_IDLE狀態,寫入到這個區域將沒有影響。
Value Definition
Fh-7h Reserved
6h Slumber(睡眠):這將造成HBA要求介面轉換到睡眠(Slumber)狀態。SATA裝置可能會拒絕這需求,以及介面將保留在目前狀態。
5-3h Reserved
2h Partial(局部): 這將造成HBA要求介面轉換到局部(Partial)狀態。SATA裝置可能會拒絕這需求,以及介面將保留在目前狀態。
1h Action(行動): 這將造成HBA要求介面轉換到運作(Action)狀態。
0h No_Op(沒開)/Idle(空閒): 當軟體讀取這個值,它指示HBA已準備接受一個新介面控制命令,儘管轉換到之前選擇狀態還不能發生。
除了No-Op(0h),當系統軟體寫入一個非保留值其他的, HBA將執行動作(Action)和更新這區域後在回到Idle(空閒)0h
如果軟體寫至此區域去改變這狀態到另一個狀態連接是以經存在了(換言之,介面是在行動(Action)狀態和一個需求引起到的行動(Action)狀態)HBA將得到不執行與回傳此區域為空閒(idle)。如果介面是在低電源狀態,以及軟體要轉換它到一個不同低電源狀態,軟體必須優先連接到運作期間與當啟動轉換到低電源狀態需求。
27
RW/RO
0
Aggressive Slumber/Partial (ASP):當設定為’1’,與ALPE被設定,HBA將有效率的進入睡眠(Slumber)狀態,清除PXCI暫存器與清除PxSACT暫存器,或者是,清除PxSACT暫存器與清除PXCI暫存器。當清除為’0’,與ALPE被設定,HBA將有效率的進入局部(Partial)狀態,清除PXCI暫存器與清除PxSACT暫存器,或者是,清除PxSACT暫存器與清除PXCI暫存器。如果CAP.SALP被清為’0’,軟體只能將這bit視為保留。詳細請看8.3.1.3章節。
26
RW/RO
0
Aggressive Link Power Management Enable (ALPE): 當設定為’1’HBA將有效率的進入低連接電源狀態(Partial(局部)Slumer(睡眠))依據上面ASP位元設定狀態。如果CAP.SALP被設為’1’,軟體只能將這bit設為1。如果CAP.SALP被清為’0’,軟體只能將這bit視為保留。詳細請看8.3.1.3章節。
25
RW
0
Drive LED on ATAPI Enable (DLAE):
24
RW
0
Device is ATAPI(ATAPI):
23:22
RO
0
Reserved
21
RO
HwInit
External SATA Port (ESP):
20
RO
HwInit
Cold Presence Detection(CPD):
19
RO
HwInit
Mechanical Presence Switch Attached to Port (MPSP):
18
RO
HwInit
Hot Plug Capable Port(HPCP):
17
RW/RO
0
Port Multiplier Attached(PMA): 由於HBA支援PM(CAPSPM = ‘1’)bit可被Read/Write。或者是HBA不支援PM(CAPSPM = ‘0’)bit只可被Read。當被軟體設定為1時,PM被附加在HBA對應的Port。或者是被軟體設定為0時,PM被沒有附加在HBA對應的Port上。軟體必須負責去偵測不管任何一個目前的PM。硬體無法自動偵測一個PM的存在。
16
RO
See Desc
Cold Presence State (CPS):
15
RO
0
Command List Running (CR):
14
RO
0
FIS Receive Running (FR):
13
RO
See Desc
Mechanical Presence Switch State (MPSS):
12:08
RO
0h
Current Command Slot(CCS):
07:05
RO
0
Reserved
04
RW
0
FIS Receive Enable (FRE):
03
RW1
0
Command List Override(CLO):設定這bit為’1’造成PxTFD.STS.BSYPxTFD.STS.DRQ被清除為’0’。這允許Software Reset去轉換成裝置不去處理BSYDRQ位元,這兩個位元被設定在PxTFD暫存器。當HBA清除這bit為’0’PxTFD.STS.BSYPxTFD.STS.DRQ將不為所動。寫到這個位元為’0’將不會有任何影響。
這個bit只能夠寫1,將立即優先設定PxCMD.ST位元為’1’,在這之前PxCMD.ST位元為’0’。設定這bit1在其他時間不被支援,以及產生的結果是不確定運作狀態。軟體必須等到CLO清除為’0’之後在設定PxCMD.ST為’1’
02
RW/RO
0/1
Power On Device (POD):
01
RW/RO
0/1
Spin-Up Device(SUD):
00
RW
0
Start(ST): 當設定時,HBA會處理Command List。當清除時,HBA就不會處理Command List。無論什麼時候,bit0改變為1時,HBACommand List欄位0開始處理。無論何時,bit1改變為0時,HBA將控制器推向空閒狀態中,HBA也會去清除PxCI暫存器。當ST設定成1的重要限制請參考10.3.1節。




3.3.5 Offset 110h: PxIS – Port x Interrupt Status
Bit
Type
Reset
Descripttion
31
RWC
0
Cold Port Detect Status (CPDS):
30
RWC
0
Task file Error Status (TFES):
29
RWC
0
Host Bus Fatal Error Status (HBFS):
28
RWC
0
Host Bus Data Error Status (HBDS):
27
RWC
0
Interface fatal Error Status (IFS):
26
RWC
0
Interface Non-fatal Error Status (INFS):
25
RO
0
Reserved
24
RWC
0
Overflow Status (OFS):
23
RWC
0
Incorrect Port Multiplier Status(IPMS):
22
RO
0
PhyRdy Change Status (PRCS): 當設定為’1’時,指示內部PhyRdy信號為改變狀態。這bit映射到PxSERR.DIAG.N。軟體必須先清除PxSERR.DIAG.N0,此bit才會被清除。
21:08
RO
0
Reserved
07
RWC
0
Device Mechanical Presence Status(DMPS):
06
RO
0
Port Connect Change Status(PCS): 1=目前連接狀態改變。0=目前連接狀態沒有改變。這bit映射到PxSERR.DIAG.X。當PxSERR.DIAG.X被清除時,此bit才會被清除。
05
RWC
0
Descriptor Processed(DPS): 當執行到PRD有設定'I' bit,這時已經轉換完它的所有資料。參考5.4.2節。
04
RO
0
Unknown FIS Interrupt(UFS):
03
RWC
0
Set Device Bits Interrupt:
02
RWC
0
DMA Setup FIS Interrupt:
01
RWC
0
PIO Setup FIS Interrupt:
00
RWC
0
Device to Host Register FIS Interrupt (DHRS):




3.3.8 Offset 120h: PxTDF – Port x Task File Data
This is a 32-bit register that copies specific fields of the task file when FISes are received. The FISes that contain this information are:
  • D2H Register FIS
  • PIO Setup FIS
  • Set Device Bits FIS(BSY and DRQ are not updated with this FIS)
Bit
Type
Reset
Description
31:16
RO
0
Reserved
15:08
RO
0
Error(ERR)
07:00
RO
7Fh
Status(STS)
Bit
Field
Definition
7
BSY
指示介面是忙碌的。
6:4
cs
命令詳細說明。
3
DRQ
指示要求資料傳輸。
2:1
cs
命令詳細說明。
0
ERR
指示傳輸期間發生錯誤。


3.3.10 Offset 128h: PxSSTS – Port x Serial ATA Status
32-bit暫存器表達介面和主機的目前狀態。HBA連續與非同步的更新它。當HBA傳送一個COMRESET到裝置時,這暫存器被更新為它的Reset狀態值。
Bit
Type
Reset
Description
31:12
RO
0
Reserved
11:08
RO
0
Interface Power Management (IPM):指示目前介面狀態。
0h 裝置不存在或者是通信無法建立
1h 介面在行動狀態
2h 介面在部份電源管理狀態
6h 介面在睡眠電源管理狀態
所有其他值保留
07:04
RO
0
Current Interface Speed (SPD):指示交握介面通訊速度。
0h 裝置不存在或者是通信無法建立
1h 1代交握通訊速率
2h 2代交握通訊速率
所有其他值保留
03:00
RO
0
Device Detection (DET):指示介面裝置偵測與Phy狀態。
0h 沒有裝置被偵測到或者是Phy通信無法建立
1h 裝置被偵測到但是Phy通信無法建立
3h 裝置被偵測到與Phy通信可建立
4h Phy在不連接模式由於介面被除能或是執行在BIST迴圈模式。
所有其他值保留

















Bit
Type
Reset
Description
31:12
RO
0
Reserved
11:08
RO
0
Interface Power Management (IPM): Indicates the current interface state:
0h Device not present or communication not established
1h Interface in active state
2h Interface in Partial power management state
6h Interface in Slumber power management state
All other values reserved
07:04
RO
0
Current Interface Speed (SPD): Indicates the negotiated interface communication speed.
0h Device not present or communication not established
1h Generation 1 communication rate negotiated
2h Generation 2 communication rate negotiated
All other values reserved
03:00
RO
0
Device Detection (DET): Indicates the interface device detection and Phy state.
0h No device detected and Phy communication not established
1h Device presence detected but Phy communication not established
3h Device presence detected and Phy communication established
4h Phy in offline mode as a result of the interface being disabled or running in a BIST loopback mode
All other values reserved



3.3.11 Offset 12Ch: PxSCTL – Port x Serial ATA Control
這是一個32-bit讀寫暫存器經由軟體來控制SATA功能。經由主機轉換器或介面寫入到這暫存器導致行動的取得。讀取回傳得到的是最後一次寫入的值。
Bit
Type
Reset
Description
31:20
RO
0
Reserved
19:16
RO
0h
Port Multiplier Port (PMP): AHCI沒使用這個領域。
15:12
RO
0h
Select Power Management(SPM): AHCI沒使用這個領域。
11:08
RW
0h
Interface Power Management Transitions Allowed (IPM): 指示哪些電源狀態HBA允許被轉換。如果一個介面電源管理狀態被除能,HBA不允許去初始化狀態,以及必須來自裝置的任何請求進入那狀態。
0h 沒有介面限制
1h 關於部分狀態轉變被Disable
2h 關於睡眠狀態轉變被Disable
3h 關於部分與睡眠兩者狀態轉變被Disable
所有其他值保留
07:04
RW
0h
Speed Allowed(SPD): 指示高的介面允許速度。
0h 沒有交握速度限制
1h 限制交握速率為1代的通信速率
2h 限制交握速率為不大於2代的通信速率
所有其他值保留
03:00
RW
0h
Device Detection Initialization(DET): 控制HBA裝置偵測與介面初始化。
0h 沒有裝置偵測與初始化行動需求
1h 執行介面通信初始化,順序的去建立通信。這一個功能同等於硬體Reset,以及導致介面被重置,還有通信重新初始化。當這裡為1h時,在這介面的COMRESET已被傳送。當軟體將離開,這DET區域會設定為1h,在介面的COMRESET會被送出,但需要確保在1 millisecond以內。
4h DisableSerial ATA interface和把Phy放進離線模式。
所有其他值保留
PxCMD0這裡才能被修改。在PxCMD1時,改變這裡結果是未被定義的行為。當PxCMD設定為1時,這裡將允許為0h值。
注意:對於當DET = 1h時的COMRESET傳送,它是被允許去執行任何屬於Serial ATA定義的行為。
3.3.12 Offset 130h: PxSERR – Port x Serial ATA Error (SCR1:SError)
Bit
Type
Reset
Description
31:16 RWC 0000h
Diagnostics(DIAG)診斷法:對於確認正確運算或隔離錯誤模式使用診斷軟體,包含診斷錯誤資訊:
31:27
Reserved
26
Exchanged(X): 當這個bit設定時,則指示一個COMINIT信號被接收。在PxIS.PCS位元被映射到此位元。
25
Unknown FIS Type(F):
24
Transport State transition error(T):
23
Link Sequence Error(S):
22
Handshake Error(H):
21
CRC Error(C): 指示一個或多個CRC的錯誤發生與鏈結層。
20
Disparity Error(D):AHCI沒有使用到這個功能。
19
10B to 8B Decode Error(B):指示一個或多個10B8B的解碼錯誤發生。
18
Comm Wake(W): 指示一個Comm Wake(命令喚醒)經由 Phy被偵測到。
17
Phy Internal Error(I): 指示Phy偵測某個內部錯誤。
16
PhyRdy Change(N): 指示PhyRdy信號是否為改變狀態。在PxIS.PRCS位元被映射到此位元。
15:00
RWC
0000h
Error(ERR):主要軟體在錯誤狀態採取一個適當的條件,ERR的領域包含錯誤資訊。

15:12
Reserved
11

10

9

8

7:2

1

0













沒有留言:

張貼留言