annotate usr/src/uts/common/sys/sata/adapters/ahci/ahcivar.h @ 14183:68927c785889 default tip

4099 SMF methods without absolute paths no longer work Reviewed by: Richard Lowe <richlowe@richlowe.net> Approved by: Dan McDonald <danmcd@nexenta.com>
author Jerry Jelinek <jerry.jelinek@joyent.com>
date Fri, 06 Sep 2013 09:20:56 -0700
parents 47f42be153c1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
1 /*
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
2 * CDDL HEADER START
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
3 *
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
4 * The contents of this file are subject to the terms of the
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
5 * Common Development and Distribution License (the "License").
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
6 * You may not use this file except in compliance with the License.
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
7 *
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
9 * or http://www.opensolaris.org/os/licensing.
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
10 * See the License for the specific language governing permissions
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
11 * and limitations under the License.
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
12 *
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
13 * When distributing Covered Code, include this CDDL HEADER in each
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
15 * If applicable, add the following below this CDDL HEADER, with the
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
16 * fields enclosed by brackets "[]" replaced with your own identifying
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
17 * information: Portions Copyright [yyyy] [name of copyright owner]
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
18 *
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
19 * CDDL HEADER END
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
20 */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
21
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
22 /*
12548
026ee4e02773 6796043 ahci driver needs to implement driver hardening
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10881
diff changeset
23 * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
14044
8fa61bfa2342 3797 AHCI: Support for ASMedia ASM106x
Marcel Telka <Marcel.Telka@nexenta.com>
parents: 12741
diff changeset
24 * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
25 */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
26
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
27
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
28 #ifndef _AHCIVAR_H
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
29 #define _AHCIVAR_H
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
30
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
31 #ifdef __cplusplus
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
32 extern "C" {
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
33 #endif
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
34
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
35 /*
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
36 * AHCI address qualifier flags (in qual field of ahci_addr struct).
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
37 */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
38 #define AHCI_ADDR_NULL 0x00
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
39 #define AHCI_ADDR_PORT 0x01
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
40 #define AHCI_ADDR_PMPORT 0x02
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
41 #define AHCI_ADDR_PMULT 0x04
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
42 #define AHCI_ADDR_VALID (AHCI_ADDR_PORT | \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
43 AHCI_ADDR_PMULT | \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
44 AHCI_ADDR_PMPORT)
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
45
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
46 /*
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
47 * AHCI address structure.
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
48 */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
49 struct ahci_addr {
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
50
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
51 /* HBA port number */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
52 uint8_t aa_port;
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
53
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
54 /* Port multiplier port number */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
55 uint8_t aa_pmport;
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
56
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
57 /*
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
58 * AHCI_ADDR_NULL
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
59 * AHCI_ADDR_PORT
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
60 * AHCI_ADDR_PMPORT
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
61 * AHCI_ADDR_PMULT
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
62 */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
63 uint8_t aa_qual;
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
64 };
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
65 typedef struct ahci_addr ahci_addr_t;
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
66
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
67 _NOTE(SCHEME_PROTECTS_DATA("unshared data", ahci_addr))
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
68
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
69 #define AHCI_ADDR_IS_PORT(addrp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
70 ((addrp)->aa_qual & AHCI_ADDR_PORT)
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
71 #define AHCI_ADDR_IS_PMPORT(addrp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
72 ((addrp)->aa_qual & AHCI_ADDR_PMPORT)
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
73 #define AHCI_ADDR_IS_PMULT(addrp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
74 ((addrp)->aa_qual & AHCI_ADDR_PMULT)
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
75 #define AHCI_ADDR_IS_VALID(addrp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
76 ((addrp)->aa_port < SATA_MAX_CPORTS) && \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
77 ((addrp)->aa_pmport < SATA_MAX_PMPORTS) && \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
78 ((addrp)->aa_qual & AHCI_ADDR_VALID)
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
79
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
80 #define AHCI_ADDR_SET(addrp, port, pmport, qual) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
81 { \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
82 (addrp)->aa_port = port; \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
83 (addrp)->aa_pmport = pmport; \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
84 (addrp)->aa_qual = qual; \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
85 }
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
86 #define AHCI_ADDR_SET_PORT(addrp, port) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
87 AHCI_ADDR_SET(addrp, port, 0, AHCI_ADDR_PORT)
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
88 #define AHCI_ADDR_SET_PMPORT(addrp, port, pmport) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
89 AHCI_ADDR_SET(addrp, port, pmport, AHCI_ADDR_PMPORT)
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
90 #define AHCI_ADDR_SET_PMULT(addrp, port) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
91 AHCI_ADDR_SET(addrp, port, SATA_PMULT_HOSTPORT, AHCI_ADDR_PMULT)
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
92
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
93 /* Type for argument of event handler */
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
94 typedef struct ahci_event_arg {
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
95 void *ahciea_ctlp;
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
96 void *ahciea_portp;
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
97 void *ahciea_addrp;
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
98 uint32_t ahciea_event;
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
99 } ahci_event_arg_t;
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
100
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
101 /* Warlock annotation */
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
102 _NOTE(DATA_READABLE_WITHOUT_LOCK(ahci_event_arg_t::ahciea_ctlp))
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
103 _NOTE(DATA_READABLE_WITHOUT_LOCK(ahci_event_arg_t::ahciea_portp))
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
104 _NOTE(DATA_READABLE_WITHOUT_LOCK(ahci_event_arg_t::ahciea_addrp))
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
105 _NOTE(DATA_READABLE_WITHOUT_LOCK(ahci_event_arg_t::ahciea_event))
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
106
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
107
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
108 /*
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
109 * ahci_pmult_info stores the information of a port multiplier and its
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
110 * sub-devices in case a port multiplier is attached to an HBA port.
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
111 */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
112 struct ahci_pmult_info {
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
113
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
114 /* Number of the device ports */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
115 int ahcipmi_num_dev_ports;
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
116
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
117 /* Device type of the sub-devices of the port multipler */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
118 uint8_t ahcipmi_device_type[SATA_MAX_PMPORTS];
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
119
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
120 /* State of port multiplier port */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
121 uint32_t ahcipmi_port_state[SATA_MAX_PMPORTS];
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
122
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
123 /*
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
124 * Port multiplier port on which there is outstanding NCQ
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
125 * commands. Only make sense in command based switching mode.
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
126 */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
127 uint8_t ahcipmi_ncq_pmport;
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
128
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
129 /* Pending asynchronous notification events tags */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
130 uint32_t ahcipmi_snotif_tags;
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
131 };
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
132 typedef struct ahci_pmult_info ahci_pmult_info_t;
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
133
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
134 /*
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
135 * flags for ahciport_flags
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
136 *
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
137 * AHCI_PORT_FLAG_MOPPING: this flag will be set when the HBA is stopped,
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
138 * and all the outstanding commands need to be aborted and sent to upper
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
139 * layers.
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
140 *
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
141 * AHCI_PORT_FLAG_POLLING: this flag will be set when the interrupt is
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
142 * disabled, and the command is executed in POLLING mode.
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
143 *
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
144 * AHCI_PORT_FLAG_RQSENSE: this flag will be set when a REQUEST SENSE which
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
145 * is used to retrieve sense data is being executed.
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
146 *
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
147 * AHCI_PORT_FLAG_STARTED: this flag will be set when the port is started,
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
148 * that is PxCMD.ST is set with '1', and be cleared when the port is put into
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
149 * idle, that is PxCMD.ST is changed from '1' to '0'.
5225
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
150 *
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
151 * AHCI_PORT_FLAG_RDLOGEXT: this flag will be set when a READ LOG EXT which
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
152 * is used to retrieve NCQ failure context is being executed.
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
153 *
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
154 * AHCI_PORT_FLAG_NODEV: this flag will be set when a device is found gone
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
155 * during ahci_restart_port_wait_till_ready process.
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
156 *
12609
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
157 * AHCI_PORT_FLAG_RDWR_PMULT: this flag will be set when a READ/WRITE
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
158 * PORTMULT command is being executed.
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
159 *
12609
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
160 * AHCI_PORT_FLAG_IGNORE_IPMS: this flag will be set when enumerating a port
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
161 * multiplier. According AHCI spec, IPMS error should be ignore during
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
162 * enumeration of port multiplier.
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
163 *
12609
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
164 * AHCI_PORT_FLAG_PMULT_SNTF: this flag will be set when the a asynchronous
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
165 * notification event on the port multiplier is being handled.
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
166 *
12609
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
167 * AHCI_PORT_FLAG_HOTPLUG: this flag will be set when a hot plug event is
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
168 * being handled.
12741
3c598875d4a2 6960485 ahci should refine the error recovery related message
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12609
diff changeset
169 *
3c598875d4a2 6960485 ahci should refine the error recovery related message
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12609
diff changeset
170 * AHCI_PORT_FLAG_ERRPRINT: this flag will be set when error recovery message
3c598875d4a2 6960485 ahci should refine the error recovery related message
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12609
diff changeset
171 * will be printed. Note that, for INDENTIFY DEVICE command sent to ATAPI
3c598875d4a2 6960485 ahci should refine the error recovery related message
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12609
diff changeset
172 * device or ATAPI PACKET command, this flag won't be set.
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
173 */
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
174 #define AHCI_PORT_FLAG_MOPPING 0x02
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
175 #define AHCI_PORT_FLAG_POLLING 0x04
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
176 #define AHCI_PORT_FLAG_RQSENSE 0x08
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
177 #define AHCI_PORT_FLAG_STARTED 0x10
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
178 #define AHCI_PORT_FLAG_RDLOGEXT 0x20
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
179 #define AHCI_PORT_FLAG_NODEV 0x40
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
180 #define AHCI_PORT_FLAG_RDWR_PMULT 0x80
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
181 #define AHCI_PORT_FLAG_IGNORE_IPMS 0x100
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
182 #define AHCI_PORT_FLAG_PMULT_SNTF 0x200
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
183 #define AHCI_PORT_FLAG_HOTPLUG 0x400
12741
3c598875d4a2 6960485 ahci should refine the error recovery related message
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12609
diff changeset
184 #define AHCI_PORT_FLAG_ERRPRINT 0x800
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
185
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
186 typedef struct ahci_port {
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
187 /* The physical port number */
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
188 uint8_t ahciport_port_num;
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
189
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
190 /* Type of the device attached to the port */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
191 uint8_t ahciport_device_type;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
192 /* State of the port */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
193 uint32_t ahciport_port_state;
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
194
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
195 /* Port multiplier struct */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
196 ahci_pmult_info_t *ahciport_pmult_info;
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
197
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
198 /*
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
199 * AHCI_PORT_FLAG_MOPPING
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
200 * AHCI_PORT_FLAG_POLLING
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
201 * AHCI_PORT_FLAG_RQSENSE
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
202 * AHCI_PORT_FLAG_STARTED
5225
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
203 * AHCI_PORT_FLAG_RDLOGEXT
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
204 * AHCI_PORT_FLAG_NODEV
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
205 * AHCI_PORT_FLAG_RDWR_PMULT
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
206 * AHCI_PORT_FLAG_IGNORE_IPMS
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
207 * AHCI_PORT_FLAG_PMULT_SNTF
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
208 * AHCI_PORT_FLAG_HOTPLUG
12741
3c598875d4a2 6960485 ahci should refine the error recovery related message
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12609
diff changeset
209 * AHCI_PORT_FLAG_ERRPRINT
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
210 */
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
211 int ahciport_flags;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
212
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
213 /* Pointer to received FIS structure */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
214 ahci_rcvd_fis_t *ahciport_rcvd_fis;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
215 ddi_dma_handle_t ahciport_rcvd_fis_dma_handle;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
216 ddi_acc_handle_t ahciport_rcvd_fis_acc_handle;
6187
27b2dddfa732 6558738 ahci sata hba driver needs to support suspend/resume
yt160523
parents: 5225
diff changeset
217 ddi_dma_cookie_t ahciport_rcvd_fis_dma_cookie;
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
218
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
219 /* Pointer to command list structure */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
220 ahci_cmd_header_t *ahciport_cmd_list;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
221 ddi_dma_handle_t ahciport_cmd_list_dma_handle;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
222 ddi_acc_handle_t ahciport_cmd_list_acc_handle;
6187
27b2dddfa732 6558738 ahci sata hba driver needs to support suspend/resume
yt160523
parents: 5225
diff changeset
223 ddi_dma_cookie_t ahciport_cmd_list_dma_cookie;
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
224
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
225 /* Pointer to cmmand table structure */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
226 ahci_cmd_table_t \
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
227 *ahciport_cmd_tables[AHCI_PORT_MAX_CMD_SLOTS];
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
228 ddi_dma_handle_t \
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
229 ahciport_cmd_tables_dma_handle[AHCI_PORT_MAX_CMD_SLOTS];
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
230 ddi_acc_handle_t \
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
231 ahciport_cmd_tables_acc_handle[AHCI_PORT_MAX_CMD_SLOTS];
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
232
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
233 /* Condition variable used for sync mode commands */
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
234 kcondvar_t ahciport_cv;
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
235
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
236 /* The whole mutex for the port structure */
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
237 kmutex_t ahciport_mutex;
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
238
5225
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
239 /* The maximum number of tags for native queuing command transfers */
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
240 int ahciport_max_ncq_tags;
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
241
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
242 /* Keep the tags of all pending non-ncq commands */
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
243 uint32_t ahciport_pending_tags;
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
244
5225
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
245 /*
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
246 * Keep the tags of all pending ncq commands
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
247 * (READ/WRITE FPDMA QUEUED)
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
248 */
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
249 uint32_t ahciport_pending_ncq_tags;
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
250
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
251 /* Keep all the pending sata packets */
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
252 sata_pkt_t *ahciport_slot_pkts[AHCI_PORT_MAX_CMD_SLOTS];
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
253
12609
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
254 /* Used to check whether corresponding packet is timeout */
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
255 int ahciport_slot_timeout[AHCI_PORT_MAX_CMD_SLOTS];
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
256
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
257 /* Queue of completed (done) sata packet */
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
258 sata_pkt_t *ahciport_doneq;
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
259
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
260 /* Pointer of the tail of completed sata packet queue */
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
261 sata_pkt_t **ahciport_doneqtail;
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
262
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
263 /* the length of the completed sata packet queue */
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
264 uint32_t ahciport_doneq_len;
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
265
8010
95c42a8a213e 6703522 ahci driver needs to support SATA tape
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 7623
diff changeset
266 /* Keep the byte count of all PRD entries for every sata packet */
95c42a8a213e 6703522 ahci driver needs to support SATA tape
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 7623
diff changeset
267 uint32_t \
95c42a8a213e 6703522 ahci driver needs to support SATA tape
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 7623
diff changeset
268 ahciport_prd_bytecounts[AHCI_PORT_MAX_CMD_SLOTS];
95c42a8a213e 6703522 ahci driver needs to support SATA tape
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 7623
diff changeset
269
5225
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
270 /* Keep the error retrieval sata packet */
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
271 sata_pkt_t *ahciport_err_retri_pkt;
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
272
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
273 /* Keep the read/write port multiplier packet */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
274 sata_pkt_t *ahciport_rdwr_pmult_pkt;
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
275
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
276 /*
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
277 * SATA HBA driver is supposed to remember and maintain device
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
278 * reset state. While the reset is in progress, it doesn't accept
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
279 * any more commands until receiving the command with
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
280 * SATA_CLEAR_DEV_RESET_STATE flag and SATA_IGNORE_DEV_RESET_STATE.
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
281 */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
282 int ahciport_reset_in_progress;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
283
8317
249d7b80428e 6767262 ahci driver should support Dell PowerVault RD1000 backup device
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 8010
diff changeset
284 /* Taskq for handling event */
249d7b80428e 6767262 ahci driver should support Dell PowerVault RD1000 backup device
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 8010
diff changeset
285 ddi_taskq_t *ahciport_event_taskq;
249d7b80428e 6767262 ahci driver should support Dell PowerVault RD1000 backup device
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 8010
diff changeset
286
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
287 /* This is for error recovery handler */
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
288 ahci_event_arg_t *ahciport_event_args;
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
289
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
290 /* This is to calculate how many mops are in progress */
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
291 int ahciport_mop_in_progress;
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
292 } ahci_port_t;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
293
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
294 /* Warlock annotation */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
295 _NOTE(READ_ONLY_DATA(ahci_port_t::ahciport_rcvd_fis_dma_handle))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
296 _NOTE(READ_ONLY_DATA(ahci_port_t::ahciport_cmd_list_dma_handle))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
297 _NOTE(READ_ONLY_DATA(ahci_port_t::ahciport_cmd_tables_dma_handle))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
298 _NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
299 ahci_port_t::ahciport_device_type))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
300 _NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
301 ahci_port_t::ahciport_port_state))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
302 _NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
303 ahci_port_t::ahciport_flags))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
304 _NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
305 ahci_port_t::ahciport_pending_tags))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
306 _NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
307 ahci_port_t::ahciport_slot_pkts))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
308 _NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
12609
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
309 ahci_port_t::ahciport_slot_timeout))
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
310 _NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
311 ahci_port_t::ahciport_doneq))
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
312 _NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
313 ahci_port_t::ahciport_doneqtail))
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
314 _NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
315 ahci_port_t::ahciport_doneq_len))
2e69f035b60b 6957836 assertion failure in ahci_mop_commands
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 12548
diff changeset
316 _NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
317 ahci_port_t::ahciport_reset_in_progress))
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
318 _NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
319 ahci_port_t::ahciport_mop_in_progress))
8317
249d7b80428e 6767262 ahci driver should support Dell PowerVault RD1000 backup device
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 8010
diff changeset
320 _NOTE(MUTEX_PROTECTS_DATA(ahci_port_t::ahciport_mutex,
249d7b80428e 6767262 ahci driver should support Dell PowerVault RD1000 backup device
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 8010
diff changeset
321 ahci_port_t::ahciport_event_taskq))
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
322
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
323 #define AHCI_NUM_PORTS(ctlp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
324 (ctlp)->ahcictl_num_ports
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
325
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
326 #define AHCIPORT_NUM_PMPORTS(portp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
327 (portp)->ahciport_pmult_info->ahcipmi_num_dev_ports
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
328
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
329 #define AHCIPORT_NCQ_PMPORT(ahci_portp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
330 (ahci_portp->ahciport_pmult_info->ahcipmi_ncq_pmport)
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
331
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
332 #define AHCIPORT_DEV_TYPE(portp, addrp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
333 (portp)->ahciport_device_type
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
334
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
335 #define AHCIPORT_PMDEV_TYPE(portp, addrp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
336 (portp)->ahciport_pmult_info->ahcipmi_device_type \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
337 [(addrp)->aa_pmport]
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
338
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
339 #define AHCIPORT_GET_DEV_TYPE(portp, addrp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
340 (AHCI_ADDR_IS_PORT(addrp) | AHCI_ADDR_IS_PMULT(addrp) ? \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
341 AHCIPORT_DEV_TYPE(portp, addrp) : \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
342 AHCIPORT_PMDEV_TYPE(portp, addrp))
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
343
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
344 #define AHCIPORT_SET_DEV_TYPE(portp, addrp, type) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
345 if (AHCI_ADDR_IS_PORT(addrp) | AHCI_ADDR_IS_PMULT(addrp)) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
346 AHCIPORT_DEV_TYPE(portp, addrp) = type; \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
347 else \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
348 AHCIPORT_PMDEV_TYPE(portp, addrp) = type;
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
349
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
350 #define AHCIPORT_STATE(portp, addrp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
351 (portp)->ahciport_port_state
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
352
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
353 #define AHCIPORT_PMSTATE(portp, addrp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
354 (portp)->ahciport_pmult_info->ahcipmi_port_state \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
355 [(addrp)->aa_pmport]
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
356
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
357 #define AHCIPORT_GET_STATE(portp, addrp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
358 (AHCI_ADDR_IS_PORT(addrp) | AHCI_ADDR_IS_PMULT(addrp) ? \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
359 AHCIPORT_STATE(portp, addrp) : AHCIPORT_PMSTATE(portp, addrp))
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
360
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
361 #define AHCIPORT_SET_STATE(portp, addrp, state) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
362 if (AHCI_ADDR_IS_PORT(addrp) | AHCI_ADDR_IS_PMULT(addrp)) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
363 AHCIPORT_STATE(portp, addrp) = state; \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
364 else \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
365 AHCIPORT_PMSTATE(portp, addrp) = state;
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
366
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
367 typedef struct ahci_ctl {
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
368 dev_info_t *ahcictl_dip;
10881
a3a5f64c08c9 6891348 ahci driver should disable 64-bit DMA for AMD/ATI SB600 by default again
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 10510
diff changeset
369
a3a5f64c08c9 6891348 ahci driver should disable 64-bit DMA for AMD/ATI SB600 by default again
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 10510
diff changeset
370 ushort_t ahcictl_venid;
a3a5f64c08c9 6891348 ahci driver should disable 64-bit DMA for AMD/ATI SB600 by default again
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 10510
diff changeset
371 ushort_t ahcictl_devid;
a3a5f64c08c9 6891348 ahci driver should disable 64-bit DMA for AMD/ATI SB600 by default again
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 10510
diff changeset
372
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
373 /* To map port number to cport number */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
374 uint8_t ahcictl_port_to_cport[AHCI_MAX_PORTS];
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
375 /* To map cport number to port number */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
376 uint8_t ahcictl_cport_to_port[AHCI_MAX_PORTS];
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
377
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
378 /* Number of controller ports */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
379 int ahcictl_num_ports;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
380 /* Number of command slots */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
381 int ahcictl_num_cmd_slots;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
382 /* Number of implemented ports */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
383 int ahcictl_num_implemented_ports;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
384 /* Bit map to indicate which port is implemented */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
385 uint32_t ahcictl_ports_implemented;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
386 ahci_port_t *ahcictl_ports[AHCI_MAX_PORTS];
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
387
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
388 int ahcictl_flags;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
389 int ahcictl_power_level;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
390 off_t ahcictl_pmcsr_offset;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
391
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
392 /*
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
393 * AHCI_CAP_PIO_MDRQ
5225
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
394 * AHCI_CAP_NO_MCMDLIST_NONQUEUE
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
395 * AHCI_CAP_NCQ
6187
27b2dddfa732 6558738 ahci sata hba driver needs to support suspend/resume
yt160523
parents: 5225
diff changeset
396 * AHCI_CAP_PM
10881
a3a5f64c08c9 6891348 ahci driver should disable 64-bit DMA for AMD/ATI SB600 by default again
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 10510
diff changeset
397 * AHCI_CAP_BUF_32BIT_DMA
9204
561855cf06ec 6753962 ahci does not work with Asus M3N78 Pro/M3N-HT (nforce 780a) motherboard SATA interfaces
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 8707
diff changeset
398 * AHCI_CAP_SCLO
10881
a3a5f64c08c9 6891348 ahci driver should disable 64-bit DMA for AMD/ATI SB600 by default again
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 10510
diff changeset
399 * AHCI_CAP_COMMU_32BIT_DMA
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
400 * AHCI_CAP_INIT_PORT_RESET
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
401 * AHCI_CAP_SNTF
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
402 * AHCI_CAP_PMULT_CBSS
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
403 * AHCI_CAP_PMULT_FBSS
10881
a3a5f64c08c9 6891348 ahci driver should disable 64-bit DMA for AMD/ATI SB600 by default again
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 10510
diff changeset
404 * AHCI_CAP_SRST_NO_HOSTPORT
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
405 */
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
406 int ahcictl_cap;
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
407
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
408 /* Pci configuration space handle */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
409 ddi_acc_handle_t ahcictl_pci_conf_handle;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
410
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
411 /* Mapping into bar 5 - AHCI base address */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
412 ddi_acc_handle_t ahcictl_ahci_acc_handle;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
413 uintptr_t ahcictl_ahci_addr;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
414
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
415 /* Pointer used for sata hba framework registration */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
416 struct sata_hba_tran *ahcictl_sata_hba_tran;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
417
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
418 /* DMA attributes for the data buffer */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
419 ddi_dma_attr_t ahcictl_buffer_dma_attr;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
420 /* DMA attributes for the rcvd FIS */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
421 ddi_dma_attr_t ahcictl_rcvd_fis_dma_attr;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
422 /* DMA attributes for the command list */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
423 ddi_dma_attr_t ahcictl_cmd_list_dma_attr;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
424 /* DMA attributes for command tables */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
425 ddi_dma_attr_t ahcictl_cmd_table_dma_attr;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
426
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
427 /* Used for watchdog handler */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
428 timeout_id_t ahcictl_timeout_id;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
429
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
430 /* Per controller mutex */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
431 kmutex_t ahcictl_mutex;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
432
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
433 /* Components for interrupt */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
434 ddi_intr_handle_t *ahcictl_intr_htable; /* For array of intrs */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
435 int ahcictl_intr_type; /* What type of interrupt */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
436 int ahcictl_intr_cnt; /* # of intrs returned */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
437 size_t ahcictl_intr_size; /* Size of intr array */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
438 uint_t ahcictl_intr_pri; /* Intr priority */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
439 int ahcictl_intr_cap; /* Intr capabilities */
12548
026ee4e02773 6796043 ahci driver needs to implement driver hardening
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10881
diff changeset
440
026ee4e02773 6796043 ahci driver needs to implement driver hardening
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10881
diff changeset
441 /* FMA capabilities */
026ee4e02773 6796043 ahci driver needs to implement driver hardening
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10881
diff changeset
442 int ahcictl_fm_cap;
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
443 } ahci_ctl_t;
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
444
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
445 /* Warlock annotation */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
446 _NOTE(READ_ONLY_DATA(ahci_ctl_t::ahcictl_ports))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
447 _NOTE(READ_ONLY_DATA(ahci_ctl_t::ahcictl_cport_to_port))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
448 _NOTE(READ_ONLY_DATA(ahci_ctl_t::ahcictl_port_to_cport))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
449
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
450 _NOTE(MUTEX_PROTECTS_DATA(ahci_ctl_t::ahcictl_mutex,
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
451 ahci_ctl_t::ahcictl_power_level))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
452 _NOTE(MUTEX_PROTECTS_DATA(ahci_ctl_t::ahcictl_mutex,
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
453 ahci_ctl_t::ahcictl_flags))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
454 _NOTE(MUTEX_PROTECTS_DATA(ahci_ctl_t::ahcictl_mutex,
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
455 ahci_ctl_t::ahcictl_timeout_id))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
456
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
457 #define AHCI_SUCCESS (0) /* Successful return */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
458 #define AHCI_TIMEOUT (1) /* Timed out */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
459 #define AHCI_FAILURE (-1) /* Unsuccessful return */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
460
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
461 /* Flags for ahcictl_flags */
6187
27b2dddfa732 6558738 ahci sata hba driver needs to support suspend/resume
yt160523
parents: 5225
diff changeset
462 #define AHCI_ATTACH 0x1
27b2dddfa732 6558738 ahci sata hba driver needs to support suspend/resume
yt160523
parents: 5225
diff changeset
463 #define AHCI_DETACH 0x2
27b2dddfa732 6558738 ahci sata hba driver needs to support suspend/resume
yt160523
parents: 5225
diff changeset
464 #define AHCI_SUSPEND 0x4
14077
47f42be153c1 3839 AHCI: WARNINGs should be replaced by ASSERTs
Marcel Telka <Marcel.Telka@nexenta.com>
parents: 14044
diff changeset
465 #define AHCI_QUIESCE 0x8
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
466
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
467 /* Values for ahcictl_cap */
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
468 /* PIO Multiple DRQ Block */
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
469 #define AHCI_CAP_PIO_MDRQ 0x1
5225
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
470 /*
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
471 * Multiple command slots in the command list cannot be used for
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
472 * non-queued commands
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
473 */
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
474 #define AHCI_CAP_NO_MCMDLIST_NONQUEUE 0x2
5225
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
475 /* Native Command Queuing (NCQ) */
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
476 #define AHCI_CAP_NCQ 0x4
6187
27b2dddfa732 6558738 ahci sata hba driver needs to support suspend/resume
yt160523
parents: 5225
diff changeset
477 /* Power Management (PM) */
27b2dddfa732 6558738 ahci sata hba driver needs to support suspend/resume
yt160523
parents: 5225
diff changeset
478 #define AHCI_CAP_PM 0x8
9693
fabbe0870acb 6773433 AMD/ATI SB700/SB750/SB800 ahci should use 64-bit DMA
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 9204
diff changeset
479 /* 32-bit DMA addressing for buffer block */
fabbe0870acb 6773433 AMD/ATI SB700/SB750/SB800 ahci should use 64-bit DMA
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 9204
diff changeset
480 #define AHCI_CAP_BUF_32BIT_DMA 0x10
9204
561855cf06ec 6753962 ahci does not work with Asus M3N78 Pro/M3N-HT (nforce 780a) motherboard SATA interfaces
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 8707
diff changeset
481 /* Supports Command List Override */
561855cf06ec 6753962 ahci does not work with Asus M3N78 Pro/M3N-HT (nforce 780a) motherboard SATA interfaces
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 8707
diff changeset
482 #define AHCI_CAP_SCLO 0x20
9693
fabbe0870acb 6773433 AMD/ATI SB700/SB750/SB800 ahci should use 64-bit DMA
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 9204
diff changeset
483 /* 32-bit DMA addressing for communication memory descriptors */
fabbe0870acb 6773433 AMD/ATI SB700/SB750/SB800 ahci should use 64-bit DMA
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 9204
diff changeset
484 #define AHCI_CAP_COMMU_32BIT_DMA 0x40
10226
bcd1cd454e93 6855989 SB600 AHCI controller fails to configure SATA disk, regression to 111b
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 10082
diff changeset
485 /* Port reset is needed for initialization */
bcd1cd454e93 6855989 SB600 AHCI controller fails to configure SATA disk, regression to 111b
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 10082
diff changeset
486 #define AHCI_CAP_INIT_PORT_RESET 0x80
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
487 /* Port Asychronous Notification */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
488 #define AHCI_CAP_SNTF 0x100
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
489 /* Port Multiplier Command-Based Switching Support (PMULT_CBSS) */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
490 #define AHCI_CAP_PMULT_CBSS 0x200
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
491 /* Port Multiplier FIS-Based Switching Support (PMULT_FBSS) */
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
492 #define AHCI_CAP_PMULT_FBSS 0x400
10510
ac4291bea6be 6875025 AHCI port multiplier support cause regression of AMD/ATI SB600/700 support
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 10318
diff changeset
493 /* Software Reset FIS cannot set pmport with 0xf for direct access device */
ac4291bea6be 6875025 AHCI port multiplier support cause regression of AMD/ATI SB600/700 support
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 10318
diff changeset
494 #define AHCI_CAP_SRST_NO_HOSTPORT 0x800
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
495
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
496 /* Flags controlling the restart port behavior */
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
497 #define AHCI_PORT_RESET 0x0001 /* Reset the port */
9204
561855cf06ec 6753962 ahci does not work with Asus M3N78 Pro/M3N-HT (nforce 780a) motherboard SATA interfaces
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 8707
diff changeset
498 #define AHCI_RESET_NO_EVENTS_UP 0x0002 /* Don't send reset events up */
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
499
5225
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
500 #define ERR_RETRI_CMD_IN_PROGRESS(ahci_portp) \
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
501 (ahci_portp->ahciport_flags & \
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
502 (AHCI_PORT_FLAG_RQSENSE|AHCI_PORT_FLAG_RDLOGEXT))
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
503
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
504 #define RDWR_PMULT_CMD_IN_PROGRESS(ahci_portp) \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
505 (ahci_portp->ahciport_flags & \
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
506 AHCI_PORT_FLAG_RDWR_PMULT)
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
507
5225
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
508 #define NON_NCQ_CMD_IN_PROGRESS(ahci_portp) \
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
509 (!ERR_RETRI_CMD_IN_PROGRESS(ahci_portp) && \
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
510 ahci_portp->ahciport_pending_tags != 0 && \
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
511 ahci_portp->ahciport_pending_ncq_tags == 0)
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
512
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
513 #define NCQ_CMD_IN_PROGRESS(ahci_portp) \
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
514 (!ERR_RETRI_CMD_IN_PROGRESS(ahci_portp) && \
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
515 ahci_portp->ahciport_pending_ncq_tags != 0)
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
516
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
517 /* Command type for ahci_claim_free_slot routine */
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
518 #define AHCI_NON_NCQ_CMD 0x0
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
519 #define AHCI_NCQ_CMD 0x1
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
520 #define AHCI_ERR_RETRI_CMD 0x2
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
521 #define AHCI_RDWR_PMULT_CMD 0x4
5225
92c1b014785f 6508467 ahci driver should use the common definitions defined in sata_defs.h
yt160523
parents: 4879
diff changeset
522
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
523 /* State values for ahci_attach */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
524 #define AHCI_ATTACH_STATE_NONE (0x1 << 0)
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
525 #define AHCI_ATTACH_STATE_STATEP_ALLOC (0x1 << 1)
12548
026ee4e02773 6796043 ahci driver needs to implement driver hardening
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10881
diff changeset
526 #define AHCI_ATTACH_STATE_FMA (0x1 << 2)
026ee4e02773 6796043 ahci driver needs to implement driver hardening
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10881
diff changeset
527 #define AHCI_ATTACH_STATE_REG_MAP (0x1 << 3)
026ee4e02773 6796043 ahci driver needs to implement driver hardening
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10881
diff changeset
528 #define AHCI_ATTACH_STATE_PCICFG_SETUP (0x1 << 4)
026ee4e02773 6796043 ahci driver needs to implement driver hardening
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10881
diff changeset
529 #define AHCI_ATTACH_STATE_INTR_ADDED (0x1 << 5)
026ee4e02773 6796043 ahci driver needs to implement driver hardening
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10881
diff changeset
530 #define AHCI_ATTACH_STATE_MUTEX_INIT (0x1 << 6)
026ee4e02773 6796043 ahci driver needs to implement driver hardening
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10881
diff changeset
531 #define AHCI_ATTACH_STATE_PORT_ALLOC (0x1 << 7)
026ee4e02773 6796043 ahci driver needs to implement driver hardening
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10881
diff changeset
532 #define AHCI_ATTACH_STATE_HW_INIT (0x1 << 8)
026ee4e02773 6796043 ahci driver needs to implement driver hardening
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10881
diff changeset
533 #define AHCI_ATTACH_STATE_TIMEOUT_ENABLED (0x1 << 9)
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
534
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
535 /* Interval used for delay */
7623
76bac10725f1 6728188 ahci_software_reset fails at clearing AHCI_CMD_STATUS_ST
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 6857
diff changeset
536 #define AHCI_10MS_TICKS (drv_usectohz(10000)) /* ticks in 10 ms */
76bac10725f1 6728188 ahci_software_reset fails at clearing AHCI_CMD_STATUS_ST
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 6857
diff changeset
537 #define AHCI_1MS_TICKS (drv_usectohz(1000)) /* ticks in 1 ms */
76bac10725f1 6728188 ahci_software_reset fails at clearing AHCI_CMD_STATUS_ST
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 6857
diff changeset
538 #define AHCI_100US_TICKS (drv_usectohz(100)) /* ticks in 100 us */
9204
561855cf06ec 6753962 ahci does not work with Asus M3N78 Pro/M3N-HT (nforce 780a) motherboard SATA interfaces
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 8707
diff changeset
539 #define AHCI_10MS_USECS (10000) /* microsecs in 10 millisec */
561855cf06ec 6753962 ahci does not work with Asus M3N78 Pro/M3N-HT (nforce 780a) motherboard SATA interfaces
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 8707
diff changeset
540 #define AHCI_1MS_USECS (1000) /* microsecs in 1 millisec */
561855cf06ec 6753962 ahci does not work with Asus M3N78 Pro/M3N-HT (nforce 780a) motherboard SATA interfaces
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 8707
diff changeset
541 #define AHCI_100US_USECS (100)
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
542
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
543 /*
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
544 * The following values are the numbers of times to retry polled requests.
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
545 */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
546 #define AHCI_POLLRATE_HBA_RESET 100
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
547 #define AHCI_POLLRATE_PORT_SSTATUS 10
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
548 #define AHCI_POLLRATE_PORT_TFD_ERROR 1100
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
549 #define AHCI_POLLRATE_PORT_IDLE 50
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
550 #define AHCI_POLLRATE_PORT_SOFTRESET 100
4879
ced5e1e3b491 6550832 sata AHCI driver has to support SATA ATAPI CD/DVD devices
yt160523
parents: 3333
diff changeset
551 #define AHCI_POLLRATE_GET_SPKT 100
14044
8fa61bfa2342 3797 AHCI: Support for ASMedia ASM106x
Marcel Telka <Marcel.Telka@nexenta.com>
parents: 12741
diff changeset
552 #define AHCI_POLLRATE_PORT_IDLE_FR 500
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
553
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
554
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
555 /* Clearing & setting the n'th bit in a given tag */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
556 #define CLEAR_BIT(tag, bit) (tag &= ~(0x1<<bit))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
557 #define SET_BIT(tag, bit) (tag |= (0x1<<bit))
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
558
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
559
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
560 #if DEBUG
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
561
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
562 #define AHCI_DEBUG 1
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
563
10082
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
564 #endif
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
565
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
566 #define AHCIDBG_INIT 0x0001
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
567 #define AHCIDBG_ENTRY 0x0002
8010
95c42a8a213e 6703522 ahci driver needs to support SATA tape
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 7623
diff changeset
568 #define AHCIDBG_PRDT 0x0004
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
569 #define AHCIDBG_EVENT 0x0008
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
570 #define AHCIDBG_POLL_LOOP 0x0010
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
571 #define AHCIDBG_PKTCOMP 0x0020
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
572 #define AHCIDBG_TIMEOUT 0x0040
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
573 #define AHCIDBG_INFO 0x0080
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
574 #define AHCIDBG_VERBOSE 0x0100
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
575 #define AHCIDBG_INTR 0x0200
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
576 #define AHCIDBG_ERRS 0x0400
8010
95c42a8a213e 6703522 ahci driver needs to support SATA tape
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 7623
diff changeset
577 #define AHCIDBG_ATACMD 0x0800
95c42a8a213e 6703522 ahci driver needs to support SATA tape
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 7623
diff changeset
578 #define AHCIDBG_ATAPICMD 0x1000
95c42a8a213e 6703522 ahci driver needs to support SATA tape
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 7623
diff changeset
579 #define AHCIDBG_SENSEDATA 0x2000
95c42a8a213e 6703522 ahci driver needs to support SATA tape
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 7623
diff changeset
580 #define AHCIDBG_NCQ 0x4000
95c42a8a213e 6703522 ahci driver needs to support SATA tape
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 7623
diff changeset
581 #define AHCIDBG_PM 0x8000
95c42a8a213e 6703522 ahci driver needs to support SATA tape
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 7623
diff changeset
582 #define AHCIDBG_UNDERFLOW 0x10000
8707
e7010197c2f6 6768770 ahci driver should enable MSI interrupt mode by default
ying tian - Beijing China <Ying.Tian@Sun.COM>
parents: 8317
diff changeset
583 #define AHCIDBG_MSI 0x20000
10318
811db323512d PSARC/2009/394 SATA Framework Port Multiplier Support
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 10226
diff changeset
584 #define AHCIDBG_PMULT 0x40000
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
585
9204
561855cf06ec 6753962 ahci does not work with Asus M3N78 Pro/M3N-HT (nforce 780a) motherboard SATA interfaces
Xiao-Yu Zhang <Xiao-Yu.Zhang@Sun.COM>
parents: 8707
diff changeset
586 extern uint32_t ahci_debug_flags;
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
587
10082
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
588 #if DEBUG
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
589
10082
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
590 #define AHCIDBG(flag, ahci_ctlp, fmt, args ...) \
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
591 if (ahci_debug_flags & (flag)) { \
10082
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
592 ahci_log(ahci_ctlp, CE_WARN, fmt, ## args); \
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
593 if (ahci_ctlp == NULL) \
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
594 sata_trace_debug(NULL, fmt, ## args); \
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
595 else \
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
596 sata_trace_debug(ahci_ctlp->ahcictl_dip,\
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
597 fmt, ## args); \
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
598 }
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
599
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
600 #else
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
601
10082
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
602 #define AHCIDBG(flag, ahci_ctlp, fmt, args ...) \
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
603 if (ahci_debug_flags & (flag)) { \
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
604 if (ahci_ctlp == NULL) \
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
605 sata_trace_debug(NULL, fmt, ## args); \
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
606 else \
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
607 sata_trace_debug(ahci_ctlp->ahcictl_dip,\
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
608 fmt, ## args); \
435eef142c62 6713021 sata: provide a ring buffer for storing sata status messages to aid in debugging analysis
Fred Herard <Fred.Herard@Sun.COM>
parents: 9693
diff changeset
609 }
3333
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
610
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
611 #endif /* DEBUG */
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
612
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
613
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
614 #ifdef __cplusplus
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
615 }
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
616 #endif
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
617
88329a0ff1be PSARC/2006/384 SATA AHCI HBA Driver
yt160523
parents:
diff changeset
618 #endif /* _AHCIVAR_H */