xref: /titanic_51/usr/src/uts/intel/io/dktp/controller/ata/ata_blacklist.h (revision 8c112d45d87338e20826001e18cb9e22e5187658)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 
22 /*
23  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 #ifndef _ATA_BLACKLIST_H
28 #define	_ATA_BLACKLIST_H
29 
30 
31 #ifdef	__cplusplus
32 extern "C" {
33 #endif
34 
35 /*
36  * This is the PCI-IDE chip blacklist
37  */
38 typedef struct {
39 	uint_t	b_vendorid;
40 	uint_t	b_vmask;
41 	uint_t	b_deviceid;
42 	uint_t	b_dmask;
43 	uint_t	b_flags;
44 } pcibl_t;
45 
46 extern	pcibl_t	ata_pciide_blacklist[];
47 
48 /*
49  * This is the drive blacklist
50  */
51 typedef	struct {
52 	char	*b_model;
53 	char    *b_fw;
54 	uint_t	 b_flags;
55 } atabl_t;
56 
57 extern	atabl_t	ata_drive_blacklist[];
58 
59 /*
60  * use the same flags for both lists
61  */
62 #define	ATA_BL_BOGUS	0x1	/* only use in compatibility mode */
63 #define	ATA_BL_NODMA	0x2	/* don't use DMA on this one */
64 #define	ATA_BL_1SECTOR	0x4	/* limit PIO transfers to 1 sector */
65 #define	ATA_BL_BMSTATREG_PIO_BROKEN	0x8
66 
67 				/*
68 				 * do not use bus master ide status register
69 				 * if not doing dma, or if it does not work
70 				 * properly when doing DMA (for example, on
71 				 * some lx50's!)
72 				 */
73 
74 
75 #define	ATA_BL_NORVRT	0x10
76 				/*
77 				 * Don't enable revert to power-on
78 				 * defaults before rebooting
79 				 */
80 
81 #define	ATA_BL_NO_SIMPLEX	0x20
82 				/*
83 				 * Ignore simplex bit on this device
84 				 * if set
85 				 */
86 #define	ATA_BL_ATAPI_NODMA	0x40
87 				/*
88 				 * Disable DMA for ATAPI devices because
89 				 * controller has trouble supporting it
90 				 */
91 
92 #define	ATA_BL_LBA48	0x80
93 				/*
94 				 * the drive's ATA version is less than 6,
95 				 * but it support the LBA48 mode.
96 				 */
97 
98 #ifdef	__cplusplus
99 }
100 #endif
101 
102 #endif /* _ATA_BLACKLIST_H */
103