coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
sata.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef _SOC_SATA_H_
4 #define _SOC_SATA_H_
5 
6 #define SATA_PORT_SUPPORT 0x03
7 #define SATA_PORT_MASK 0x3f
8 
9 /* PCI Configuration Space */
10 #define SATA_PID 0x70
11 #define SATA_PID_NEXT 0xff00
12 #define SATA_PID_CID 0xff
13 
14 #define SATA_MAP 0x90
15 #define SATA_MAP_SPD3 (1 << 11)
16 #define SATA_MAP_SPD2 (1 << 10)
17 #define SATA_MAP_SPD1 (1 << 9)
18 #define SATA_MAP_SPD0 (1 << 8)
19 #define SATA_MAP_SPD_MASK (SATA_MAP_SPD0 | SATA_MAP_SPD1 \
20  | SATA_MAP_SPD2 | SATA_MAP_SPD3)
21 #define SATA_MAP_SMS_RAID 0x40
22 
23 #define SATA_PCS 0x92
24 #define SATA_PCS_ORM (1 << 15)
25 #define SATA_PCS_PORT5 (1 << 5)
26 #define SATA_PCS_PORT4 (1 << 4)
27 #define SATA_PCS_PORT3 (1 << 3)
28 #define SATA_PCS_PORT2 (1 << 2)
29 #define SATA_PCS_PORT1 (1 << 1)
30 #define SATA_PCS_PORT0 (1 << 0)
31 #define SATA_PCS_PORTS (SATA_PCS_PORT0 | SATA_PCS_PORT1 | SATA_PCS_PORT2 \
32  | SATA_PCS_PORT3 | SATA_PCS_PORT4 | SATA_PCS_PORT5)
33 
34 #define SATA_TM 0x94
35 #define SATA_TM_PCD5 (1 << 29)
36 #define SATA_TM_PCD4 (1 << 28)
37 #define SATA_TM_PCD3 (1 << 27)
38 #define SATA_TM_PCD2 (1 << 26)
39 #define SATA_TM_PCD1 (1 << 25)
40 #define SATA_TM_PCD0 (1 << 24)
41 #define SATA_TM_PCD_MASK (SATA_TM_PCD0 | SATA_TM_PCD1 | SATA_TM_PCD2 \
42  | SATA_TM_PCD3 | SATA_TM_PCD4 | SATA_TM_PCD5)
43 
44 #define SATA_SIRI 0xa0
45 #define SATA_SIRD 0xa4
46 
47 /* Memory Mapped I/O Space */
48 #define AHCI_GHC_CAP 0
49 #define AHCI_GHC_CAP_S64A (1 << 31)
50 #define AHCI_GHC_CAP_SCQA (1 << 30)
51 #define AHCI_GHC_CAP_SSNTF (1 << 29)
52 #define AHCI_GHC_CAP_SMPS (1 << 28)
53 #define AHCI_GHC_CAP_SSS (1 << 27)
54 #define AHCI_GHC_CAP_SALP (1 << 26)
55 #define AHCI_GHC_CAP_SAL (1 << 25)
56 #define AHCI_GHC_CAP_SCLO (1 << 24)
57 #define AHCI_GHC_CAP_ISS 0x00f00000
58 #define AHCI_GHC_CAP_ISS_GEN1 (1 << 20)
59 #define AHCI_GHC_CAP_ISS_GEN2 (2 << 20)
60 #define AHCI_GHC_CAP_ISS_GEN3 (3 << 20)
61 #define AHCI_GHC_CAP_SNZO (1 << 19)
62 #define AHCI_GHC_CAP_SAM (1 << 18)
63 #define AHCI_GHC_CAP_SMP (1 << 17)
64 #define AHCI_GHC_CAP_FBSS (1 << 16)
65 #define AHCI_GHC_CAP_PMD (1 << 15)
66 #define AHCI_GHC_CAP_SSC (1 << 14)
67 #define AHCI_GHC_CAP_PSC (1 << 13)
68 #define AHCI_GHC_CAP_NCS 0x00000f00
69 #define AHCI_GHC_CAP_CCCS (1 << 7)
70 #define AHCI_GHC_CAP_EMS (1 << 6)
71 #define AHCI_GHC_CAP_SXS (1 << 5)
72 #define AHCI_GHC_CAP_NP 0x0000001f
73 
74 #define AHCI_HBA_CTRL 4
75 #define AHCI_HBA_CTRL_AE (1 << 31)
76 #define AHCI_HBA_CTRL_MRSM (1 << 2)
77 #define AHCI_HBA_CTRL_IE (1 << 1)
78 #define AHCI_HBA_CTRL_HR (1 << 0)
79 
80 #define AHCI_GHC_PI 0x000c
81 #define AHCI_GHC_CAP2 0x0024
82 #define AHCI_GHC_CAP2_DESO (1 << 5)
83 #define AHCI_GHC_CAP2_SADM (1 << 4)
84 #define AHCI_GHC_CAP2_SDS (1 << 3)
85 #define AHCI_GHC_CAP2_APST (1 << 2)
86 #define AHCI_GHC_CAP2_BOH (1 << 0)
87 
88 #define AHCI_VSP 0x00a0
89 #define AHCI_VSP_SFMS (1 << 6)
90 #define AHCI_VSP_PFS (1 << 5)
91 #define AHCI_VSP_PT (1 << 4)
92 #define AHCI_VSP_SRPIR (1 << 3)
93 
94 #define AHCI_SFM 0xc8
95 #define AHCI_SFM_OROM_UI 0x0c00
96 #define AHCI_SFM_OROM_UI_2SEC 0
97 #define AHCI_SFM_OROM_UI_4SEC (1 << 10)
98 #define AHCI_SFM_OROM_UI_6SEC (2 << 10)
99 #define AHCI_SFM_OROM_UI_8SEC (3 << 10)
100 #define AHCI_SFM_SRT (1 << 9)
101 #define AHCI_SFM_RRT_ESATA (1 << 8)
102 #define AHCI_SFM_LED (1 << 7)
103 #define AHCI_SFM_HDDUNLOCK (1 << 6)
104 #define AHCI_SFM_OROM_UI_BANNER (1 << 5)
105 #define AHCI_SFM_RRT (1 << 4)
106 #define AHCI_SFM_R5 (1 << 3)
107 #define AHCI_SFM_R10 (1 << 2)
108 #define AHCI_SFM_R1 (1 << 1)
109 #define AHCI_SFM_R0 (1 << 0)
110 
111 #define AHCI_PXCMD0 0x0118
112 #define AHCI_PXCMD1 0x0198
113 
114 #define AHCI_PXCMD_ICC 0xf0000000
115 #define AHCI_PXCMD_ASP (1 << 27)
116 #define AHCI_PXCMD_ALPE (1 << 26)
117 #define AHCI_PXCMD_DLAE (1 << 25)
118 #define AHCI_PXCMD_ATAPI (1 << 24)
119 #define AHCI_PXCMD_APSTE (1 << 23)
120 #define AHCI_PXCMD_FBSCP (1 << 22)
121 #define AHCI_PXCMD_ESP (1 << 21)
122 #define AHCI_PXCMD_CPD (1 << 20)
123 #define AHCI_PXCMD_MPSP (1 << 19)
124 #define AHCI_PXCMD_HPCP (1 << 18)
125 #define AHCI_PXCMD_PMA (1 << 17)
126 #define AHCI_PXCMD_CR (1 << 15)
127 #define AHCI_PXCMD_FR (1 << 14)
128 #define AHCI_PXCMD_MPSS (1 << 13)
129 #define AHCI_PXCMD_CCS 0x00001f00
130 #define AHCI_PXCMD_PSP (1 << 6)
131 #define AHCI_PXCMD_FRE (1 << 4)
132 #define AHCI_PXCMD_CLO (1 << 3)
133 #define AHCI_PXCMD_POD (1 << 2)
134 #define AHCI_PXCMD_SUD (1 << 1)
135 #define AHCI_PXCMD_ST (1 << 0)
136 
137 #endif /* _SOC_SATA_H_ */