Home | History | Annotate | Line # | Download | only in marvell
mvpexreg.h revision 1.1.24.1
      1       1.1  kiyohara /*	$NetBSD: mvpexreg.h,v 1.1.24.1 2017/12/03 11:37:05 jdolecek Exp $	*/
      2       1.1  kiyohara /*
      3       1.1  kiyohara  * Copyright (c) 2008, 2009 KIYOHARA Takashi
      4       1.1  kiyohara  * All rights reserved.
      5       1.1  kiyohara  *
      6       1.1  kiyohara  * Redistribution and use in source and binary forms, with or without
      7       1.1  kiyohara  * modification, are permitted provided that the following conditions
      8       1.1  kiyohara  * are met:
      9       1.1  kiyohara  * 1. Redistributions of source code must retain the above copyright
     10       1.1  kiyohara  *    notice, this list of conditions and the following disclaimer.
     11       1.1  kiyohara  * 2. Redistributions in binary form must reproduce the above copyright
     12       1.1  kiyohara  *    notice, this list of conditions and the following disclaimer in the
     13       1.1  kiyohara  *    documentation and/or other materials provided with the distribution.
     14       1.1  kiyohara  *
     15       1.1  kiyohara  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     16       1.1  kiyohara  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     17       1.1  kiyohara  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     18       1.1  kiyohara  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
     19       1.1  kiyohara  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     20       1.1  kiyohara  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     21       1.1  kiyohara  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     22       1.1  kiyohara  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     23       1.1  kiyohara  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
     24       1.1  kiyohara  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25       1.1  kiyohara  * POSSIBILITY OF SUCH DAMAGE.
     26       1.1  kiyohara  */
     27       1.1  kiyohara 
     28       1.1  kiyohara #ifndef _MVPEXREG_H_
     29       1.1  kiyohara #define _MVPEXREG_H_
     30       1.1  kiyohara 
     31       1.1  kiyohara 
     32       1.1  kiyohara /*
     33       1.1  kiyohara  * PCI Express Interface Registers
     34       1.1  kiyohara  */
     35       1.1  kiyohara #define MVPEX_SIZE	0x2000
     36       1.1  kiyohara 
     37       1.1  kiyohara 
     38       1.1  kiyohara /* PCI Express BAR Control Registers */
     39       1.1  kiyohara #define MVPEX_BAR1C		0x1804	/* BAR1 Control */
     40       1.1  kiyohara #define MVPEX_BAR2C		0x1808	/* BAR2 Control */
     41       1.1  kiyohara #define MVPEX_BARC_BAREN		(1 << 0)
     42       1.1  kiyohara #define MVPEX_BARC_BARSIZE_MASK	0xffff0000
     43       1.1  kiyohara #define MVPEX_BARC_BARSIZE(s)	(((s) - 1) & MVPEX_BARC_BARSIZE_MASK)
     44       1.1  kiyohara #define MVPEX_ERBARC	0x180c	/* Expresion ROM BAR Control */
     45       1.1  kiyohara #define MVPEX_ERBARC_EXPROMEN	(1 << 0)
     46       1.1  kiyohara #define MVPEX_ERBARC_EXPROMSZ_05M	(0 << 19)
     47       1.1  kiyohara #define MVPEX_ERBARC_EXPROMSZ_1M	(1 << 19)
     48       1.1  kiyohara #define MVPEX_ERBARC_EXPROMSZ_2M	(2 << 19)
     49       1.1  kiyohara #define MVPEX_ERBARC_EXPROMSZ_4M	(3 << 19)
     50       1.1  kiyohara /* PCI Express Configuration Requests Generation Registers */
     51       1.1  kiyohara #define MVPEX_CA		0x18f8	/* Configuration Address */
     52       1.1  kiyohara #define MVPEX_CA_CONFIGEN		(1 << 31)
     53       1.1  kiyohara #define MVPEX_CD		0x18fc	/* Configuration Data */
     54       1.1  kiyohara /* PCI Express Interrupt Registers */
     55       1.1  kiyohara #define MVPEX_IC		0x1900	/* Interrupt Cause */
     56       1.1  kiyohara #define MVPEX_IM		0x1910	/* Interrupt Mask */
     57       1.1  kiyohara #define MVPEX_I_MDIS			(1 << 1)
     58       1.1  kiyohara #define MVPEX_I_ERRWRTOREG		(1 << 3)
     59       1.1  kiyohara #define MVPEX_I_HITDFLTWINERR	(1 << 4)       /* Hit Default Win Err */
     60       1.1  kiyohara #define MVPEX_I_CORERRDET		(1 << 8)    /* Correctable Err Detect */
     61       1.1  kiyohara #define MVPEX_I_NFERRDET		(1 << 9)      /* Non-Fatal Err Detect */
     62       1.1  kiyohara #define MVPEX_I_FERRDET		(1 << 10)	/* Fatal Err Detect */
     63       1.1  kiyohara #define MVPEX_I_DSTATECHANGE		(1 << 11)	/* Dstate Change */
     64       1.1  kiyohara #define MVPEX_I_BIST			(1 << 12)     /* PCI-e BIST activated */
     65       1.1  kiyohara #define MVPEX_I_RCVERRFATAL		(1 << 16)     /* Rcv ERR_FATAL msg */
     66       1.1  kiyohara #define MVPEX_I_RCVERRNONFATAL	(1 << 17)     /* Rcv ERR_NONFATAL msg */
     67       1.1  kiyohara #define MVPEX_I_RCVERRCOR		(1 << 18)	/* Rcv ERR_COR msg */
     68       1.1  kiyohara #define MVPEX_I_RCVCRS		(1 << 19)/* Rcv CRS completion status */
     69       1.1  kiyohara #define MVPEX_I_PEXSLVHOT		(1 << 20)	/* Rcv Hot Reset */
     70       1.1  kiyohara #define MVPEX_I_PEXSLVDISLINK	(1 << 21)	/* Slave Disable Link */
     71       1.1  kiyohara #define MVPEX_I_PEXSLVLB		(1 << 22)	/* Slave Loopback */
     72       1.1  kiyohara #define MVPEX_I_PEXLINKFAIL		(1 << 23)	/* Link Failure */
     73       1.1  kiyohara #define MVPEX_I_PIN(p)		(1 << (((p) - 1) + 24))
     74       1.1  kiyohara /* PCI Express Address Window Control Registers */
     75  1.1.24.1  jdolecek #define MVPEX_NWINDOW	6	/* Window 4 and 5 has Remap (High) Register */
     76  1.1.24.1  jdolecek #define MVPEX_W_OFFSET(w)	((w < 4) ? ((w) << 4) : ((w - 4) << 5) + 0x40)
     77       1.1  kiyohara #define MVPEX_WC(x)		(0x1820 + MVPEX_W_OFFSET(x))	/* Win Ctrl */
     78       1.1  kiyohara #define MVPEX_WC_WINEN		(1 << 0)
     79       1.1  kiyohara #define MVPEX_WC_BARMAP_BAR1		(0 << 1)
     80       1.1  kiyohara #define MVPEX_WC_BARMAP_BAR2		(1 << 1)
     81       1.1  kiyohara #define MVPEX_WC_TARGET(t)		(((t) & 0xf) << 4)
     82       1.1  kiyohara #define MVPEX_WC_ATTR(a)		(((a) & 0xff) << 8)
     83       1.1  kiyohara #define MVPEX_WC_SIZE(s)		(((s) - 1) & 0xffff0000)
     84       1.1  kiyohara #define MVPEX_WB(x)		(0x1824 + MVPEX_W_OFFSET(x))	/* Win Base */
     85       1.1  kiyohara #define MVPEX_WB_BASE(b)		((b) & 0xffff0000)
     86       1.1  kiyohara #define MVPEX_WR(x)		(0x182c + MVPEX_W_OFFSET(x))	/* Win Remap */
     87       1.1  kiyohara #define MVPEX_WR_REMAP_REMAPEN	(1 << 0)
     88       1.1  kiyohara #define MVPEX_WR_REMAP(a)		((a) & 0xffff0000)
     89       1.1  kiyohara #define MVPEX_DWC		0x18b0	/* Default Window Control */
     90       1.1  kiyohara #define MVPEX_EROMWC		0x18c0	/* Expresion ROM Win Control */
     91       1.1  kiyohara #define MVPEX_EROMWR		0x18c4	/* Expresion ROM Win Remap */
     92       1.1  kiyohara /* PCI Express Control and Status Registers */
     93       1.1  kiyohara #define MVPEX_CTRL		0x1a00	/* Control */
     94       1.1  kiyohara #define MVPEX_CTRL_CONFROOTCOMPLEX	(1 << 1)
     95       1.1  kiyohara #define MVPEX_CTRL_CFGMAPTOMEMEN	(1 << 2)
     96       1.1  kiyohara #define MVPEX_CTRL_CONFMSTRHOTRESET	(1 << 24)	/* Master Hot-Reset */
     97       1.1  kiyohara #define MVPEX_CTRL_CONFMSTRLB	(1 << 26)	/* Master Loopback */
     98       1.1  kiyohara #define MVPEX_CTRL_CONFMSTRDISSCRMB	(1 << 27)/* Master Disable Scrambling */
     99       1.1  kiyohara #define MVPEX_STAT		0x1a04	/* Status */
    100       1.1  kiyohara #define MVPEX_STAT_DLDOWN		(1 << 0)
    101       1.1  kiyohara #define MVPEX_STAT_PEXBUSNUM(s)	(((s) & 0x00ff00) >> 8)
    102       1.1  kiyohara #define MVPEX_STAT_PEXDEVNUM(s)	(((s) & 0x1f0000) >> 16)
    103       1.1  kiyohara #define MVPEX_STAT_PEXSLVHOTRESET	(1 << 24)     /* Slave Hot Reset (RO) */
    104       1.1  kiyohara #define MVPEX_STAT_PEXSLVDISLINK	(1 << 25)  /* Slave Disable Link (RO) */
    105       1.1  kiyohara #define MVPEX_STAT_PEXSLVLB		(1 << 26)      /* Slave Loopback (RO) */
    106       1.1  kiyohara #define MVPEX_STAT_PEXSLVDISSCRMB	(1 << 27)  /* Slv Dis Scrambling (RO) */
    107       1.1  kiyohara #define MVPEX_CT		0x1a10	/* Completion Timeout */
    108       1.1  kiyohara #define MVPEX_FC		0x1a20	/* Flow Control */
    109       1.1  kiyohara #define MVPEX_AT		0x1a40	/* Acknowledge Timers (1X) */
    110       1.1  kiyohara #define MVPEX_TLC		0x1ab0	/* TL Control */
    111       1.1  kiyohara /* PCI Express Configuration Header Registers */
    112       1.1  kiyohara /* see at dev/pci/pcireg.h from 0x00 to 0x3c. */
    113       1.1  kiyohara #define MVPEX_BAR0INTERNAL	0x0010	/* BAR0 Internal */
    114       1.1  kiyohara #define MVPEX_BAR0INTERNAL_MASK	0xfff00000
    115       1.1  kiyohara #define MVPEX_BAR0INTERNALH	0x0014	/* BAR0 Internal (High) */
    116       1.1  kiyohara #define MVPEX_BAR1		0x0018	/* BAR1 */
    117       1.1  kiyohara #define MVPEX_BAR1H		0x001c	/* BAR1 */
    118       1.1  kiyohara #define MVPEX_BAR2		0x0020	/* BAR2 */
    119       1.1  kiyohara #define MVPEX_BAR2H		0x0024	/* BAR2 */
    120       1.1  kiyohara #define MVPEX_BAR_MASK		0xffff0000
    121       1.1  kiyohara #define MVPEX_PMCH		0x0040	/* Power Management Cap Header */
    122       1.1  kiyohara #define MVPEX_PMCSH		0x0044	/*     Control and Status */
    123       1.1  kiyohara #define MVPEX_MSIMC		0x0050	/* MSI Message Control */
    124       1.1  kiyohara #define MVPEX_MSIMA		0x0054	/* MSI Message Address */
    125       1.1  kiyohara #define MVPEX_MSIMAH		0x0058	/* MSI Message Address (High) */
    126       1.1  kiyohara #define MVPEX_MSIMD		0x005c	/* MSI Message Data */
    127       1.1  kiyohara #define MVPEX_CAP		0x0060	/* Capability */
    128       1.1  kiyohara #define MVPEX_DC		0x0064	/* Device Capabilities */
    129       1.1  kiyohara #define MVPEX_DCS		0x0068	/* Device Control Status */
    130       1.1  kiyohara #define MVPEX_LC		0x006c	/* Link Capabilities */
    131       1.1  kiyohara #define MVPEX_LCS		0x0070	/* Link Control Status */
    132       1.1  kiyohara #define MVPEX_AERH		0x0100	/* Advanced Error Report Header */
    133       1.1  kiyohara #define MVPEX_UESTAT		0x0104	/* Uncorrectable Error Status */
    134       1.1  kiyohara #define MVPEX_UEM		0x0108	/* Uncorrectable Error Mask */
    135       1.1  kiyohara #define MVPEX_UESEVERITY	0x010c	/* Uncorrectable Error Serverity */
    136       1.1  kiyohara #define MVPEX_CES		0x0110	/* Correctable Error Status */
    137       1.1  kiyohara #define MVPEX_CEM		0x0114	/* Correctable Error Mask */
    138       1.1  kiyohara #define MVPEX_AECC		0x0118	/* Advanced Error Cap and Ctrl */
    139       1.1  kiyohara #define MVPEX_HLDWORD1	0x011c	/* Header Log First DWORD */
    140       1.1  kiyohara #define MVPEX_HLDWORD2	0x0120	/* Header Log Second DWORD */
    141       1.1  kiyohara #define MVPEX_HLDWORD3	0x0124	/* Header Log Third DWORD */
    142       1.1  kiyohara #define MVPEX_HLDWORD4	0x0128	/* Header Log Fourth DWORD */
    143       1.1  kiyohara 
    144       1.1  kiyohara #endif	/* _MVPEXREG_H_ */
    145