Annotation of sys/dev/ata/satareg.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: satareg.h,v 1.1 2004/10/17 17:18:06 grange Exp $ */
2: /* $NetBSD: satareg.h,v 1.3 2004/05/23 23:07:59 wiz Exp $ */
3:
4: /*-
5: * Copyright (c) 2003 The NetBSD Foundation, Inc.
6: * All rights reserved.
7: *
8: * This code is derived from software contributed to The NetBSD Foundation
9: * by Jason R. Thorpe of Wasabi Systems, Inc.
10: *
11: * Redistribution and use in source and binary forms, with or without
12: * modification, are permitted provided that the following conditions
13: * are met:
14: * 1. Redistributions of source code must retain the above copyright
15: * notice, this list of conditions and the following disclaimer.
16: * 2. Redistributions in binary form must reproduce the above copyright
17: * notice, this list of conditions and the following disclaimer in the
18: * documentation and/or other materials provided with the distribution.
19: * 3. All advertising materials mentioning features or use of this software
20: * must display the following acknowledgement:
21: * This product includes software developed by the NetBSD
22: * Foundation, Inc. and its contributors.
23: * 4. Neither the name of The NetBSD Foundation nor the names of its
24: * contributors may be used to endorse or promote products derived
25: * from this software without specific prior written permission.
26: *
27: * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
28: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
29: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
31: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37: * POSSIBILITY OF SUCH DAMAGE.
38: */
39:
40: #ifndef _DEV_ATA_SATAREG_H_
41: #define _DEV_ATA_SATAREG_H_
42:
43: /*
44: * Serial ATA register definitions.
45: *
46: * Reference:
47: *
48: * Serial ATA: High Speed Serialized AT Attachment
49: * Revision 1.0 29-August-2001
50: * Serial ATA Working Group
51: */
52:
53: /*
54: * SStatus (SCR0) --
55: * Serial ATA interface status register
56: */
57: /*
58: * The DET value indicates the interface device detection and
59: * PHY state.
60: */
61: #define SStatus_DET_NODEV (0x0 << 0) /* no device connected */
62: #define SStatus_DET_DEV_NE (0x1 << 0) /* device, but PHY comm not
63: established */
64: #define SStatus_DET_DEV (0x3 << 0) /* device, PHY comm
65: established */
66: #define SStatus_DET_OFFLINE (0x4 << 0) /* PHY in offline mode */
67: #define SStatus_DET_mask (0xf << 0)
68: #define SStatus_DET_shift 0
69: /*
70: * The SPD value indicates the negotiated interface communication
71: * speed established.
72: */
73: #define SStatus_SPD_NONE (0x0 << 4) /* no negotiated speed */
74: #define SStatus_SPD_G1 (0x1 << 4) /* Generation 1 (1.5Gb/s) */
75: #define SStatus_SPD_G2 (0x2 << 4) /* Generation 2 (3.0Gb/s) */
76: #define SStatus_SPD_mask (0xf << 4)
77: #define SStatus_SPD_shift 4
78: /*
79: * The IPM value indicates the current interface power managemnt
80: * state.
81: */
82: #define SStatus_IPM_NODEV (0x0 << 8) /* no device connected */
83: #define SStatus_IPM_ACTIVE (0x1 << 8) /* ACTIVE state */
84: #define SStatus_IPM_PARTIAL (0x2 << 8) /* PARTIAL pm state */
85: #define SStatus_IPM_SLUMBER (0x6 << 8) /* SLUMBER pm state */
86: #define SStatus_IPM_mask (0xf << 8)
87: #define SStatus_IPM_shift 8
88:
89: /*
90: * SError (SCR1) --
91: * Serial ATA interface error register
92: */
93: #define SError_ERR_I (1U << 0) /* Recovered data integrity
94: error */
95: #define SError_ERR_M (1U << 1) /* Recovered communications
96: error */
97: #define SError_ERR_T (1U << 8) /* Non-recovered transient
98: data integrity error */
99: #define SError_ERR_C (1U << 9) /* Non-recovered persistent
100: communication or data
101: integrity error */
102: #define SError_ERR_P (1U << 10) /* Protocol error */
103: #define SError_ERR_E (1U << 11) /* Internal error */
104: #define SError_DIAG_N (1U << 16) /* PhyRdy change */
105: #define SError_DIAG_I (1U << 17) /* PHY internal error */
106: #define SError_DIAG_W (1U << 18) /* Comm Wake */
107: #define SError_DIAG_B (1U << 19) /* 10b to 8b decode error */
108: #define SError_DIAG_D (1U << 20) /* Disparity error */
109: #define SError_DIAG_C (1U << 21) /* CRC error */
110: #define SError_DIAG_H (1U << 22) /* Handshake error */
111: #define SError_DIAG_S (1U << 23) /* Link sequence error */
112: #define SError_DIAG_T (1U << 24) /* Transport state transition
113: error */
114: #define SError_DIAG_F (1U << 25) /* Unrecognized FIS type */
115: #define SError_DIAG_X (1U << 26) /* Device Exchanged */
116:
117: /*
118: * SControl (SCR2) --
119: * Serial ATA interface control register
120: */
121: /*
122: * The DET field controls the host adapter device detection
123: * and interface initialization.
124: */
125: #define SControl_DET_NONE (0x0 << 0) /* No device detection or
126: initialization action
127: requested */
128: #define SControl_DET_INIT (0x1 << 0) /* Initialize interface
129: communication (equiv
130: of a hard reset) */
131: #define SControl_DET_DISABLE (0x4 << 0) /* disable interface and
132: take PHY offline */
133: /*
134: * The SPD field represents the highest allowed communication
135: * speed the interface is allowed to negotiate when communication
136: * is established.
137: */
138: #define SControl_SPD_ANY (0x0 << 4) /* No restrictions */
139: #define SControl_SPD_G1 (0x1 << 4) /* Generation 1 (1.5Gb/s) */
140: #define SControl_SPD_G2 (0x2 << 4) /* Generation 2 (3.0Gb/s) */
141: /*
142: * The IPM field represents the enabled interface power management
143: * states that can be invoked via the Serial ATA interface power
144: * management capabilities.
145: */
146: #define SControl_IPM_ANY (0x0 << 8) /* No restrictions */
147: #define SControl_IPM_NOPARTIAL (0x1 << 8) /* PARTIAL disabled */
148: #define SControl_IPM_NOSLUMBER (0x2 << 8) /* SLUMBER disabled */
149: #define SControl_IPM_NONE (0x3 << 8) /* No power management */
150: /*
151: * The SPM field selects a power management state. A non-zero
152: * value written to this field causes initiation of the selected
153: * power management state.
154: */
155: #define SControl_SPM_PARTIAL (0x1 << 12) /* transition to PARTIAL */
156: #define SControl_SPM_SLUMBER (0x2 << 12) /* transition to SLUBMER */
157: #define SControl_SPM_ComWake (0x4 << 12) /* transition from PM */
158: /*
159: * The PMP field identifies the selected Port Multiplier Port
160: * for accessing the SActive register.
161: */
162: #define SControl_PMP(x) ((x) << 16)
163:
164: #endif /* _DEV_ATA_SATAREG_H_ */
CVSweb