Home | History | Annotate | Line # | Download | only in pci
pciide_i31244_reg.h revision 1.1
      1 /*	$NetBSD: pciide_i31244_reg.h,v 1.1 2003/03/18 01:41:54 thorpej Exp $	*/
      2 
      3 /*
      4  * Copyright (c) 2002 Wasabi Systems, Inc.
      5  * All rights reserved.
      6  *
      7  * Written by Jason R. Thorpe for Wasabi Systems, Inc.
      8  *
      9  * Redistribution and use in source and binary forms, with or without
     10  * modification, are permitted provided that the following conditions
     11  * are met:
     12  * 1. Redistributions of source code must retain the above copyright
     13  *    notice, this list of conditions and the following disclaimer.
     14  * 2. Redistributions in binary form must reproduce the above copyright
     15  *    notice, this list of conditions and the following disclaimer in the
     16  *    documentation and/or other materials provided with the distribution.
     17  * 3. All advertising materials mentioning features or use of this software
     18  *    must display the following acknowledgement:
     19  *	This product includes software developed for the NetBSD Project by
     20  *	Wasabi Systems, Inc.
     21  * 4. The name of Wasabi Systems, Inc. may not be used to endorse
     22  *    or promote products derived from this software without specific prior
     23  *    written permission.
     24  *
     25  * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
     26  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     27  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     28  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
     29  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     30  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     32  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     33  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     34  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     35  * POSSIBILITY OF SUCH DAMAGE.
     36  */
     37 
     38 #ifndef _DEV_PCI_PCIIDE_I31244_REG_H_
     39 #define	_DEV_PCI_PCIIDE_I31244_REG_H_
     40 
     41 /*
     42  * Register definitions for the Intel i31244 Serial ATA Controller.
     43  */
     44 
     45 /*
     46  * In DPA mode, the i31244 has a single 64-bit BAR.
     47  */
     48 #define	ARTISEA_PCI_DPA_BASE	PCI_MAPREG_START
     49 
     50 /*
     51  * Extended Control and Status Register 0
     52  */
     53 #define	ARTISEA_PCI_SUECR0	0x98
     54 #define	SUECR0_LED0_ONLY	(1U << 28)	/* activity on LED0 only */
     55 #define	SUECR0_SFSS		(1U << 16)	/* Superset Features
     56 						   Secondary Select */
     57 
     58 /*
     59  * DPA mode shared registers.
     60  */
     61 #define	ARTISEA_SUPDIPR		0x00	/* DPA interrupt pending register */
     62 #define	SUPDIPR_PORTSHIFT(x)	((x) * 8)
     63 #define	SUPDIPR_PHY_CS		(1U << 0)	/* PHY change state */
     64 #define	SUPDIPR_PHY_RDY		(1U << 1)	/* PHY ready */
     65 #define	SUPDIPR_FIFO_ERR	(1U << 2)	/* FIFO error */
     66 #define	SUPDIPR_ERR_RCVD	(1U << 3)	/* ERR received */
     67 #define	SUPDIPR_U_FIS_R		(1U << 4)	/* unrecog. FIS reception */
     68 #define	SUPDIPR_DATA_I		(1U << 5)	/* data integrity */
     69 #define	SUPDIPR_CRC_ED		(1U << 6)	/* CRC error detected */
     70 #define	SUPDIPR_IDE		(1U << 7)	/* IDE interrupt */
     71 
     72 #define	ARTISEA_SUPDIMR		0x04	/* DPA interrupt mask register */
     73 	/* See SUPDIPR bits. */
     74 
     75 /*
     76  * DPA mode offset to per-port registers.
     77  */
     78 #define	ARTISEA_DPA_PORT_BASE(x) (((x) + 1) * 0x200)
     79 
     80 /*
     81  * DPA mode per-port registers.
     82  */
     83 #define	ARTISEA_SUPDDR		0x00	/* DPA data port register */
     84 	/* ATA/ATAPI compatible */
     85 
     86 #define	ARTISEA_SUPDER		0x04	/* DPA error register */
     87 	/* ATA/ATAPI compatible */
     88 
     89 #define	ARTISEA_SUPDFR		0x06	/* DPA features register */
     90 	/* ATA/ATAPI compatible */
     91 
     92 #define	ARTISEA_SUPDCSR		0x08	/* DPA sector count register */
     93 	/* ATA/ATAPI compatible */
     94 
     95 #define	ARTISEA_SUPDSNR		0x0c	/* DPA sector number register */
     96 	/* ATA/ATAPI compatible */
     97 
     98 #define	ARTISEA_SUPDCLR		0x10	/* DPA cylinder low register */
     99 	/* ATA/ATAPI compatible */
    100 
    101 #define	ARTISEA_SUPDCHR		0x14	/* DPA cylinder high register */
    102 	/* ATA/ATAPI compatible */
    103 
    104 #define	ARTISEA_SUPDDHR		0x18	/* DPA device/head register */
    105 	/* ATA/ATAPI compatible */
    106 
    107 #define	ARTISEA_SUPDSR		0x1c	/* DPA status register */
    108 	/* ATA/ATAPI compatible */
    109 
    110 #define	ARTISEA_SUPDCR		0x1d	/* DPA command register */
    111 	/* ATA/ATAPI compatible */
    112 
    113 #define	ARTISEA_SUPDASR		0x28	/* DPA alt. status register */
    114 	/* ATA/ATAPI compatible */
    115 
    116 #define	ARTISEA_SUPDDCTLR	0x29	/* DPA device control register */
    117 	/* ATA/ATAPI compatible */
    118 
    119 #define	ARTISEA_SUPDUDDTPR	0x64	/* DPA upper DMA desc. table pointer */
    120 
    121 #define	ARTISEA_SUPDUDDPR	0x6c	/* DPA upper DMA data buffer pointer */
    122 
    123 #define	ARTISEA_SUPDDCMDR	0x70	/* DPA DMA command register */
    124 	/* Almost compatible with PCI IDE, but not quite. */
    125 #define	SUPDDCMDR_START		(1U << 0)	/* start DMA transfer (c) */
    126 #define	SUPDDCMDR_WRITE		(1U << 3)	/* write *to memory* (c) */
    127 #define	SUPDDCMDR_DP_DMA_ACT	(1U << 8)	/* first party DMA active */
    128 #define	SUPDDCMDR_FP_DMA_DIR	(1U << 9)	/* 1 = host->device */
    129 
    130 #define	ARTISEA_SUPDDSR		0x72	/* DPA DMA status register */
    131 	/* PCI IDE compatible */
    132 
    133 #define	ARTISEA_SUPDDDTPR	0x74	/* DPA DMA desc. table pointer */
    134 
    135 #define	ARTISEA_SUPERSET_DPA_OFF 0x100	/* offset to Superset regs: DPA mode */
    136 
    137 #define	ARTISEA_SUPDSSSR	0x000	/* DPA SATA SStatus register */
    138 #define	SUPDSSSR_IPM_NP		(0 << 8)	/* device not present */
    139 #define	SUPDSSSR_IPM_ACT	(1U << 8)	/* active state */
    140 #define	SUPDSSSR_IPM_PARTIAL	(2U << 8)	/* partial power mgmt */
    141 #define	SUPDSSSR_IPM_SLUMBER	(6U << 8)	/* slumber power mgmt */
    142 #define	SUPDSSSR_SPD_NP		(0 << 4)	/* device not present */
    143 #define	SUPDSSSR_SPD_G1		(1U << 4)	/* Generation 1 speed */
    144 #define	SUPDSSSR_DET_NP		(0 << 0)	/* device not present */
    145 #define	SUPDSSSR_DET_PHY_CNE	(1U << 0)	/* PHY comm. not established */
    146 #define	SUPDSSSR_DET_PHY_CE	(3U << 0)	/* PHY comm. established */
    147 #define	SUPDSSSR_DET_PHY_LOOP	(4U << 0)	/* loopback mode */
    148 
    149 #define	ARTISEA_SUPDSSER	0x004	/* DPA SATA SError register */
    150 #define	SUPDSSER_DIAG_F		(1U << 25)	/* invalid FIS type */
    151 #define	SUPDSSER_DIAG_T		(1U << 24)	/* not implemented */
    152 #define	SUPDSSER_DIAG_S		(1U << 23)	/* not implemented */
    153 #define	SUPDSSER_DIAG_H		(1U << 22)	/* handshake error */
    154 #define	SUPDSSER_DIAG_C		(1U << 21)	/* CRC error */
    155 #define	SUPDSSER_DIAG_D		(1U << 20)	/* disparity error */
    156 #define	SUPDSSER_DIAG_B		(1U << 19)	/* not implemented */
    157 #define	SUPDSSER_DIAG_W		(1U << 18)	/* comm wake */
    158 #define	SUPDSSER_DIAG_I		(1U << 17)	/* not implemented */
    159 #define	SUPDSSER_DIAG_N		(1U << 16)	/* PHY RDY state change */
    160 #define	SUPDSSER_ERR_E		(1U << 11)	/* internal error */
    161 #define	SUPDSSER_ERR_P		(1U << 10)	/* protocol error */
    162 #define	SUPDSSER_ERR_C		(1U << 9)	/* non-recovered comm. */
    163 #define	SUPDSSER_ERR_T		(1U << 8)	/* non-recovered TDIE */
    164 #define	SUPDSSER_ERR_M		(1U << 1)	/* recovered comm. */
    165 #define	SUPDSSER_ERR_I		(1U << 0)	/* not implemented */
    166 
    167 #define	ARTISEA_SUPDDSCR	0x008	/* DPA SATA SControl register */
    168 #define	SUPDDSCR_IPM_ANY	(0 << 8)	/* no IPM mode restrictions */
    169 #define	SUPDDSCR_IPM_NO_PARTIAL	(1U << 8)	/* no PARTIAL mode */
    170 #define	SUPDDSCR_IPM_NO_SLUMBER	(2U << 8)	/* no SLUMBER mode */
    171 #define	SUPDDSCR_IPM_NONE	(3U << 8)	/* no PM allowed */
    172 #define	SUPDDSCR_SPD_ANY	(0 << 4)	/* no speed restrictions */
    173 #define	SUPDDSCR_SPD_G1		(1U << 4)	/* <= Generation 1 */
    174 #define	SUPDDSCR_DET_NORM	(0 << 0)	/* normal operation */
    175 #define	SUPDDSCR_DET_INIT	(1U << 0)	/* comm. init */
    176 #define	SUPDDSCR_DET_DISABLE	(4U << 0)	/* disable interface */
    177 
    178 #define	ARTISEA_SUPDSDBR	0x00c	/* DPA Set Device Bits register */
    179 
    180 #define	ARTISEA_SUPDPFR		0x040	/* DPA PHY feature register */
    181 #define	SUPDPFR_SSCEN		(1U << 16)	/* SSC enable */
    182 #define	SUPDPFR_FVS		(1U << 14)	/* full voltage swing */
    183 
    184 #define	ARTISEA_SUPDBFCSR	0x044	/* DPA BIST FIS ctrl/stat register */
    185 #define	SUPDBFCSR_PAT_D21_5	(0 << 30)	/* D21.5s */
    186 #define	SUPDBFCSR_PAT_D24_3	(1U << 30)	/* D24.3s */
    187 #define	SUPDBFCSR_PAT_D10_2	(2U << 30)	/* D10.2 / K28.5 */
    188 #define	SUPDBFCSR_PAT_COUNT	(3U << 30)	/* counting */
    189 #define	SUPDBFCSR_CS_D21_5	(0 << 28)
    190 #define	SUPDBFCSR_CS_D24_3	(1U << 28)
    191 #define	SUPDBFCSR_CS_D10_2	(2U << 28)
    192 #define	SUPDBFCSR_CS_COUNT	(3U << 30)
    193 #define	SUPDBFCSR_CLEAR_ERRS	(1U << 25)	/* clear errors/frames */
    194 #define	SUPDBFCSR_CE		(1U << 24)	/* BIST check enable */
    195 #define	SUPDBFCSR_PE		(1U << 23)	/* BIST pattern enable */
    196 #define	SUPDBFCSR_K28_5		((1U << 16) |				\
    197 				 (1U << 8)	/* send K28.5s */
    198 #define	SUPDBFCSR_BIST_ACT_RX	(1U << 15)	/* BIST Act. FIS was rx'd */
    199 #define	SUPDBFCSR_BIST_ACT_RX_TO (1U << 14)	/* ...with transmit-only */
    200 #define	SUPDBFCSR_BIST_ACT_RX_AB (1U << 13)	/* ...with align-bypass */
    201 #define	SUPDBFCSR_BIST_ACT_RX_SB (1U << 12)	/* ...with scrambling-bypass */
    202 #define	SUPDBFCSR_BIST_ACT_RX_RT (1U << 11)	/* ...with retimed */
    203 #define	SUPDBFCSR_BIST_ACT_RX_P  (1U << 10)	/* ...with primitive */
    204 #define	SUPDBFCSR_BIST_ACT_RX_AFEL (1U << 9)	/* ...with AFE loopback */
    205 #define	SUPDBFCSR_BIST_ACT_TX	(1U << 7)	/* send BIST Act. FIS */
    206 #define	SUPDBFCSR_BIST_ACT_TX_TO (1U << 6)	/* ...with transmit-only */
    207 #define	SUPDBFCSR_BIST_ACT_TX_AB (1U << 5)	/* ...with align-bypass */
    208 #define	SUPDBFCSR_BIST_ACT_TX_SB (1U << 4)	/* ...with scrambling-bypass */
    209 #define	SUPDBFCSR_BIST_ACT_TX_RT (1U << 3)	/* ...with retimed */
    210 #define	SUPDBFCSR_BIST_ACT_TX_P  (1U << 2)	/* ...with primitive */
    211 #define	SUPDBFCSR_BIST_ACT_TX_AFEL (1U << 1)	/* ...with AFE loopback */
    212 #define	SUPDBFCSR_INIT_NE_TO	(1U << 0)	/* init. near-end tx-only */
    213 
    214 #define	ARTISEA_SUPDBER		0x048	/* DPA BIST errors register */
    215 
    216 #define	ARTISEA_SUPDBFR		0x04c	/* DPA BIST frames register */
    217 
    218 #define	ARTISEA_SUPDHBDLR	0x050	/* DPA Host BIST data low register */
    219 
    220 #define	ARTISEA_SUPDHBDHR	0x054	/* DPA Host BIST data high register */
    221 
    222 #define	ARTISEA_SUPDDBDLR	0x058	/* DPA Device BIST data low */
    223 
    224 #define	ARTISEA_SUPDDBDHR	0x05c	/* DPA Device BIST data high */
    225 
    226 #define	ARTISEA_SUPDDSFCSR	0x068	/* DPA DMA setup FIS ctrl/stat */
    227 #define	SUPDDSFCSR_DIR		(1U << 31)	/* First Party setup FIS
    228 						   word 0 direction bit
    229 						   (1 == tx -> rx) */
    230 #define	SUPDDSFCSR_INTR		(1U << 30)	/* rcvd's First Party setup
    231 						   FIS with I bit set */
    232 #define	SUPDDSFCSR_START_SETUP	(1U << 28)	/* send DMA setup FIS */
    233 #define	SUPDDSFCSR_EN_FP_AP	(1U << 27)	/* enab. FP DMA auto-process */
    234 #define	SUPDDSFCSR_ABORT_TSM	(1U << 24)	/* abort xport/link SMs */
    235 
    236 #define	ARTISEA_SUPDHDBILR	0x06c	/* DPA Host DMA Buff. Id low */
    237 
    238 #define	ARTISEA_SUPDHDBIHR	0x070	/* DPA Host DMA Buff. Id high */
    239 
    240 #define	ARTISEA_SUPDHRDR0	0x074	/* DPA Host Resvd. DWORD 0 */
    241 
    242 #define	ARTISEA_SUPDHDBOR	0x078	/* DPA Host DMA Buff. offset */
    243 
    244 #define	ARTISEA_SUPDHDTCR	0x07c	/* DPA Host DMA xfer count */
    245 
    246 #define	ARTISEA_SUPDHRDR1	0x080	/* DPA Host Resvd. DWORD 1 */
    247 
    248 #define	ARTISEA_SUPDDDBILR	0x084	/* DPA Device DMA Buff. Id low */
    249 
    250 #define	ARTISEA_SUPDDDBIHR	0x088	/* DPA Device DMA Buff. Id high */
    251 
    252 #define	ARTISEA_SUPDDRDR0	0x08c	/* DPA Device Resvd. DWORD 0 */
    253 
    254 #define	ARTISEA_SUPDDDBOR	0x090	/* DPA Device DMA Buff. offset */
    255 
    256 #define	ARTISEA_SUPDDTCR	0x094	/* DPA Device DMA xfer count */
    257 
    258 #define	ARTISEA_SUPDDRDR1	0x09c	/* DPA Device Resvd. DWORD 1 */
    259 
    260 #endif /* _DEV_PCI_PCIIDE_I31244_REG_H_ */
    261