[BACK]Return to noctreg.h CVS log [TXT][DIR] Up to [local] / sys / dev / pci

Annotation of sys/dev/pci/noctreg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: noctreg.h,v 1.8 2003/06/02 19:08:58 jason Exp $       */
                      2:
                      3: /*
                      4:  * Copyright (c) 2002 Jason L. Wright (jason@thought.net)
                      5:  * All rights reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
                     15:  *
                     16:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     17:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
                     18:  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
                     19:  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
                     20:  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
                     21:  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
                     22:  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     23:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
                     24:  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
                     25:  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     26:  * POSSIBILITY OF SUCH DAMAGE.
                     27:  *
                     28:  * Effort sponsored in part by the Defense Advanced Research Projects
                     29:  * Agency (DARPA) and Air Force Research Laboratory, Air Force
                     30:  * Materiel Command, USAF, under agreement number F30602-01-2-0537.
                     31:  *
                     32:  */
                     33:
                     34: #define        NOCT_BAR0               0x10            /* PCI base address */
                     35:
                     36: #define        NOCT_BRDG_ENDIAN        0x0000          /* bridge endian mode */
                     37: #define        NOCT_BRDG_TIMER_PRESET  0x0004          /* bridge timer preset */
                     38: #define        NOCT_BRDG_STAT          0x0008          /* bridge status */
                     39: #define        NOCT_BRDG_CTL           0x000c          /* bridge control */
                     40: #define        NOCT_BRDG_TIMR          0x0010          /* bridge timer */
                     41: #define        NOCT_BRDG_TEST          0x0014          /* bridge test */
                     42: #define        NOCT_BRDG_RPMR          0x0018          /* bridge read ptr mirror */
                     43: #define        NOCT_PKH_TEST0          0x4000          /* pkh test 0 */
                     44: #define        NOCT_PKH_TEST1          0x4004          /* pkh test 1 */
                     45: #define        NOCT_PKH_Q_LEN          0x4008          /* pkh queue length */
                     46: #define        NOCT_PKH_Q_PTR          0x400c          /* pkh queue ptrs */
                     47: #define        NOCT_PKH_Q_BASE_HI      0x4010          /* pkh queue base, msw */
                     48: #define        NOCT_PKH_Q_BASE_LO      0x4014          /* pkh queue base, lsw */
                     49: #define        NOCT_PKH_IER            0x4018          /* pkh intr enable */
                     50: #define        NOCT_PKH_CSR            0x401c          /* pkh control/status */
                     51: #define        NOCT_PKH_SKS_DATA       0x4020          /* pkh secure key data */
                     52: #define        NOCT_PKH_SKS_CTRL       0x4024          /* pkh secure key ctrl */
                     53: #define        NOCT_PKH_CMDB_0         0x40e0          /* pkh command block 0 */
                     54: #define        NOCT_PKH_CMDB_1         0x40e4          /* pkh command block 1 */
                     55: #define        NOCT_PKH_CMDB_2         0x40e8          /* pkh command block 2 */
                     56: #define        NOCT_PKH_CMDB_3         0x40ec          /* pkh command block 3 */
                     57: #define        NOCT_PKH_CMDB_4         0x40f0          /* pkh command block 4 */
                     58: #define        NOCT_PKH_CMDB_5         0x40f4          /* pkh command block 5 */
                     59: #define        NOCT_PKH_CMDB_6         0x40f8          /* pkh command block 6 */
                     60: #define        NOCT_PKH_CMDB_7         0x40fc          /* pkh command block 7 */
                     61: #define        NOCT_PKH_BNCACHE_START  0x5000          /* pkh bignumber cache start */
                     62: #define        NOCT_PKH_BNCACHE_END    0x5fff          /* pkh bigbumber cache end */
                     63: #define        NOCT_EA_TEST_1          0x8000          /* e/a test 1 */
                     64: #define        NOCT_EA_TEST_0          0x8004          /* e/a test 0 */
                     65: #define        NOCT_EA_Q_LEN           0x8008          /* e/a cmd queue len */
                     66: #define        NOCT_EA_Q_PTR           0x800c          /* e/a cmd queue ptr */
                     67: #define        NOCT_EA_Q_BASE_HI       0x8010          /* e/a cmd queue bar 1 */
                     68: #define        NOCT_EA_Q_BASE_LO       0x8014          /* e/a cmd queue bar 0 */
                     69: #define        NOCT_EA_IER             0x8018          /* e/a intr enable */
                     70: #define        NOCT_EA_CSR             0x801c          /* e/a control/status */
                     71: #define        NOCT_EA_CTX_DAT_1       0x8020          /* e/a context data 1 */
                     72: #define        NOCT_EA_CTX_DAT_0       0x8024          /* e/a context data 0 */
                     73: #define        NOCT_EA_CTX_ADDR        0x8028          /* e/a context address */
                     74: #define        NOCT_EA_SDRAM_CFG       0x802c          /* e/a sdram config */
                     75: #define        NOCT_RNG_TOD            0xc000          /* rng time of day */
                     76: #define        NOCT_RNG_TOD_SCALE      0xc008          /* rng pre-scale */
                     77: #define        NOCT_RNG_TOD_READ       0xc010          /* rng time of day (read) */
                     78: #define        NOCT_RNG_X917_KEY1      0xc018          /* rng x9.17 key 1 */
                     79: #define        NOCT_RNG_X917_KEY2      0xc020          /* rng x9.17 key 2 */
                     80: #define        NOCT_RNG_HOSTSEED       0xc028          /* rng host seed */
                     81: #define        NOCT_RNG_SAMPBIAS       0xc030          /* rng intrl seed gen/bias */
                     82: #define        NOCT_RNG_EXTCLK_SCALE   0xc038          /* rng extrn clock scale */
                     83: #define        NOCT_RNG_WRITE          0xc040          /* rng write pointer */
                     84: #define        NOCT_RNG_SEEDSAMP       0xc048          /* rng seed sample */
                     85: #define        NOCT_RNG_LFSRDIAG       0xc050          /* rng lfsr diagnostics */
                     86: #define        NOCT_RNG_LFSRHIST_1     0xc058          /* rng lfsr history 1 */
                     87: #define        NOCT_RNG_LFSRHIST_2     0xc060          /* rng lfsr history 2 */
                     88: #define        NOCT_RNG_LFSRHIST_3     0xc068          /* rng lfsr history 3 */
                     89: #define        NOCT_RNG_LFSRHIST_4     0xc070          /* rng lfsr history 4 */
                     90: #define        NOCT_RNG_CTL            0xc078          /* rng control */
                     91: #define        NOCT_RNG_TEST_1         0xd000          /* rng test 1 */
                     92: #define        NOCT_RNG_TEST_0         0xd004          /* rng test 0 */
                     93: #define        NOCT_RNG_Q_LEN          0xd008          /* rng queue length */
                     94: #define        NOCT_RNG_Q_PTR          0xd00c          /* rng queue pointer */
                     95: #define        NOCT_RNG_Q_BASE_HI      0xd010          /* rng bar1 */
                     96: #define        NOCT_RNG_Q_BASE_LO      0xd014          /* rng bar0 */
                     97: #define        NOCT_RNG_CSR            0xd018          /* rng control/status */
                     98:
                     99: /* NOCT_BRDG_STAT */
                    100: #define        BRDGSTS_PKP_INT         0x80000000      /* pkp interrupt */
                    101: #define        BRDGSTS_CCH_INT         0x40000000      /* cch interrupt */
                    102: #define        BRDGSTS_RNG_INT         0x20000000      /* rng interrupt */
                    103: #define        BRDGSTS_BRG_INT         0x10000000      /* bridge interrupt */
                    104: #define        BRDGSTS_TMR_INT         0x08000000      /* timer interrupt */
                    105: #define        BRDGSTS_CCH_ENA         0x01000000      /* mirror from e/a */
                    106: #define        BRDGSTS_CCH_BSY         0x00800000      /* mirror from e/a */
                    107: #define        BRDGSTS_CCH_ERR         0x00400000      /* mirror from e/a */
                    108: #define        BRDGSTS_CCH_RD_PEND     0x00200000      /* mirror from e/a */
                    109: #define        BRDGSTS_CCH_WR_PEND     0x00100000      /* mirror from e/a */
                    110: #define        BRDGSTS_PKH_ENA         0x00080000      /* mirror from pkh */
                    111: #define        BRDGSTS_PKH_BSY         0x00040000      /* mirror from pkh */
                    112: #define        BRDGSTS_PKH_ERR         0x00020000      /* mirror from pkh */
                    113: #define        BRDGSTS_PKH_SKS         0x00010000      /* mirror from pkh */
                    114: #define        BRDGSTS_HRESP_ERR       0x00002000      /* AHB slave HRESP error */
                    115: #define        BRDGSTS_HBURST_ERR      0x00001000      /* ccm, illegal burst */
                    116: #define        BRDGSTS_HSIZE_ERR       0x00000800      /* ccm, illegal size */
                    117: #define        BRDGSTS_PCIACC_ERR      0x00000400      /* pci access error */
                    118: #define        BRDGSTS_RSVMEM_ERR      0x00000200      /* reserved access */
                    119: #define        BRDGSTS_TRCVFIFO_PERR   0x00000100      /* CS6464AF parity error */
                    120: #define        BRDGSTS_PCIPERR         0x00000080      /* host parity error */
                    121:
                    122: /* NOCT_BRDG_CTL */
                    123: #define        BRDGCTL_PKIRQ_ENA       0x80000000      /* pkh interrupt enable */
                    124: #define        BRDGCTL_EAIRQ_ENA       0x40000000      /* ea interrupt enable */
                    125: #define        BRDGCTL_RNIRQ_ENA       0x20000000      /* rng interrupt enable */
                    126: #define        BRDGCTL_BIRQ_ENA        0x10000000      /* bridge interrupt enable */
                    127: #define        BRDGCTL_TIRQ_ENA        0x08000000      /* timer interrupt enable */
                    128: #define        BRDGCTL_TIMER_ENA       0x00000001      /* enable timer */
                    129:
                    130: /* NOCT_PKH_Q_LEN */
                    131: #define        PKHQLEN_MASK            0x0000000f      /* queue length, 2^n */
                    132:
                    133: /* NOCT_PKH_Q_PTR */
                    134: #define PKHQPTR_READ_M         0x7fff0000      /* read mask */
                    135: #define        PKHQPTR_READ_S          16              /* read shift */
                    136: #define        PKHQPTR_WRITE_M         0x00007fff      /* write mask */
                    137: #define        PKHQPTR_WRITE_S         0               /* write shift */
                    138:
                    139: /* NOCT_PKH_IER */
                    140: #define        PKHIER_CMDSI            0x00020000      /* cmd successful, SI */
                    141: #define        PKHIER_SKSWR            0x00010000      /* sks write op done */
                    142: #define        PKHIER_SKSOFF           0x00008000      /* sks offset error */
                    143: #define        PKHIER_PKHLEN           0x00004000      /* invalid data length */
                    144: #define        PKHIER_PKHOPCODE        0x00002000      /* invalid opcode */
                    145: #define        PKHIER_BADQBASE         0x00001000      /* base queue base */
                    146: #define        PKHIER_LOADERR          0x00000800      /* bus error during load */
                    147: #define        PKHIER_STOREERR         0x00000400      /* bus error during store */
                    148: #define        PKHIER_CMDERR           0x00000200      /* bus error during cmd */
                    149: #define        PKHIER_ILL              0x00000100      /* illegal access */
                    150: #define        PKHIER_PKERESV          0x00000080      /* pke reserved */
                    151: #define        PKHIER_PKEWDT           0x00000040      /* pke mul inv watchdog */
                    152: #define        PKHIER_PKENOTPRIME      0x00000020      /* pke not relatively prime */
                    153: #define        PKHIER_PKE_B            0x00000010      /* pke bad 'b' error */
                    154: #define        PKHIER_PKE_A            0x00000008      /* pke bad 'a' error */
                    155: #define        PKHIER_PKE_M            0x00000004      /* pke bad 'm' error */
                    156: #define        PKHIER_PKE_R            0x00000002      /* pke bad 'r' error */
                    157: #define        PKHIER_PKEOPCODE        0x00000001      /* pke bad opcode */
                    158:
                    159: /* NOCT_PKH_CSR */
                    160: #define        PKHCSR_PKH_ENA          0x80000000      /* enable pkh */
                    161: #define        PKHCSR_PKH_BUSY         0x40000000      /* pkh busy */
                    162: #define        PKHCSR_PKE_GO           0x20000000      /* pke go input */
                    163: #define        PKHCSR_PKE_BUSY         0x10000000      /* pke busy output */
                    164: #define        PKHCSR_LINENO           0x0f000000      /* pke error opcode */
                    165: #define        PKHCSR_CMDSI            0x00020000      /* cmd successful, SI */
                    166: #define        PKHCSR_SKSWR            0x00010000      /* sks write op done */
                    167: #define        PKHCSR_SKSOFF           0x00008000      /* sks offset error */
                    168: #define        PKHCSR_PKHLEN           0x00004000      /* invalid data length */
                    169: #define        PKHCSR_PKHOPCODE        0x00002000      /* invalid opcode */
                    170: #define        PKHCSR_BADQBASE         0x00001000      /* base queue base */
                    171: #define        PKHCSR_LOADERR          0x00000800      /* bus error during load */
                    172: #define        PKHCSR_STOREERR         0x00000400      /* bus error during store */
                    173: #define        PKHCSR_CMDERR           0x00000200      /* bus error during cmd */
                    174: #define        PKHCSR_ILL              0x00000100      /* illegal access */
                    175: #define        PKHCSR_PKERESV          0x00000080      /* pke reserved */
                    176: #define        PKHCSR_PKEWDT           0x00000040      /* pke mul inv watchdog */
                    177: #define        PKHCSR_PKENOTPRIME      0x00000020      /* pke not relatively prime */
                    178: #define        PKHCSR_PKE_B            0x00000010      /* pke bad 'b' error */
                    179: #define        PKHCSR_PKE_A            0x00000008      /* pke bad 'a' error */
                    180: #define        PKHCSR_PKE_M            0x00000004      /* pke bad 'm' error */
                    181: #define        PKHCSR_PKE_R            0x00000002      /* pke bad 'r' error */
                    182: #define        PKHCSR_PKEOPCODE        0x00000001      /* pke bad opcode */
                    183:
                    184: /* NOCT_PKH_SKS_CTRL */
                    185: #define        PKHSKS_GO               0x80000000      /* pkhsks busy */
                    186: #define        PKHSKS_PROMERR          0x40000000      /* prom protocol error */
                    187: #define        PKHSKS_ACCERR           0x20000000      /* access error */
                    188: #define        PKHSKS_LOCMASK          0x00003000      /* location mask: */
                    189: #define        PKHSKS_LOC_FROMPROM     0x00002000
                    190: #define        PKHSKS_LOC_CACHEONLY    0x00001000
                    191: #define        PKHSKS_ADDR             0x00000fff      /* address mask */
                    192:
                    193: /*
                    194:  * public key structures
                    195:  */
                    196: /* opcodes/flags */
                    197: #define        PKH_OP_CODE_MASK        0xf0000000      /* opcode mask */
                    198: #define        PKH_OP_CODE_MOD         0x00000000      /* a mod m */
                    199: #define        PKH_OP_CODE_RMOD        0x10000000      /* R mod m */
                    200: #define        PKH_OP_CODE_ADD         0x20000000      /* (a + b) mod m */
                    201: #define        PKH_OP_CODE_SUB         0x30000000      /* (a - b) mod m */
                    202: #define        PKH_OP_CODE_ADDINV      0x40000000      /* -a mod m */
                    203: #define        PKH_OP_CODE_MUL         0x50000000      /* (a * b) mod m */
                    204: #define        PKH_OP_CODE_MULINV      0x60000000      /* 1/a mod m */
                    205: #define        PKH_OP_CODE_EXP         0x70000000      /* g^e mod m */
                    206: #define        PKH_OP_CODE_LOAD        0x80000000      /* load bn cache */
                    207: #define        PKH_OP_CODE_STORE       0x90000000      /* store bn cache */
                    208: #define        PKH_OP_CODE_RSAPRIV     0xa0000000      /* rsa private key op */
                    209: #define        PKH_OP_CODE_DSASIGN     0xb0000000      /* dsa sign op */
                    210: #define        PKH_OP_CODE_NOP         0xf0000000      /* no-op */
                    211: #define        PKH_OP_SI               0x08000000      /* set interrupt */
                    212:
                    213: /* pkh arithmetic commands */
                    214: struct noct_pkh_cmd_arith {
                    215:        volatile u_int32_t      op;             /* opcode/si, 0x0 - 0x7 */
                    216:        volatile u_int32_t      r;              /* r offset */
                    217:        volatile u_int32_t      m;              /* m length, m offset */
                    218:        volatile u_int32_t      a;              /* a length, a offset */
                    219:        volatile u_int32_t      b;              /* b length, b offset */
                    220:        volatile u_int32_t      c;              /* c offset */
                    221:        volatile u_int32_t      unused[2];      /* reserved */
                    222: };
                    223:
                    224: /* pkh load/store bn cache commands */
                    225: struct noct_pkh_cmd_cache {
                    226:        volatile u_int32_t      op;             /* opcode/si, 0x8-0x9 */
                    227:        volatile u_int32_t      r;              /* r offset */
                    228:        volatile u_int32_t      addrhi;         /* host address, msw */
                    229:        volatile u_int32_t      addrlo;         /* host address, lsw */
                    230:        volatile u_int32_t      len;            /* data length (0-4096) */
                    231:        volatile u_int32_t      unused[3];      /* reserved */
                    232: };
                    233:
                    234: /* pkh rsa private command */
                    235: struct noct_pkh_cmd_rsapriv {
                    236:        volatile u_int32_t      op;             /* opcode/si, 0xa */
                    237:        volatile u_int32_t      par;            /* n, keylen, sksoffset */
                    238:        volatile u_int32_t      unused[6];      /* reserved */
                    239: };
                    240:
                    241: /* pkh dsa sign command */
                    242: struct noct_pkh_cmd_dsasign {
                    243:        volatile u_int32_t      op;             /* opcode/si, 0xb */
                    244:        volatile u_int32_t      par;            /* n, keylen, sksoffset */
                    245:        volatile u_int32_t      unused[6];      /* reserved */
                    246: };
                    247:
                    248: /* pkh nop command */
                    249: struct noct_pkh_cmd_nop {
                    250:        volatile u_int32_t      op;             /* opcode/si, 0xf */
                    251:        volatile u_int32_t      unused[7];      /* reserved */
                    252: };
                    253:
                    254: /* pkh generic command */
                    255: union noct_pkh_cmd {
                    256:        struct noct_pkh_cmd_arith       arith;
                    257:        struct noct_pkh_cmd_cache       cache;
                    258:        struct noct_pkh_cmd_rsapriv     rsapriv;
                    259:        struct noct_pkh_cmd_dsasign     dsasign;
                    260:        struct noct_pkh_cmd_nop         nop;
                    261: };
                    262:
                    263: /* NOCT_EA_Q_LEN */
                    264: #define        EAQLEN_MASK             0x0000000f      /* queue length, 2^n */
                    265:
                    266: /* NOCT_EA_Q_PTR */
                    267: #define EAQPTR_READ_M          0x7fff0000      /* read mask */
                    268: #define        EAQPTR_READ_S           16              /* read shift */
                    269: #define        EAQPTR_WRITE_M          0x00007fff      /* write mask */
                    270: #define        EAQPTR_WRITE_S          0               /* write shift */
                    271:
                    272: /* NOCT_EA_IER */
                    273: #define        EAIER_QALIGN            0x00008000      /* queue alignment */
                    274: #define        EAIER_CMDCMPL           0x00004000      /* command complete */
                    275: #define        EAIER_OPERR             0x00002000      /* opcode error */
                    276: #define        EAIER_CMDREAD           0x00001000      /* command read error */
                    277: #define        EAIER_CMDWRITE          0x00000800      /* command write error */
                    278: #define        EAIER_DATAREAD          0x00000400      /* data read error */
                    279: #define        EAIER_DATAWRITE         0x00000200      /* data write error */
                    280: #define        EAIER_INTRNLLEN         0x00000100      /* internal data length err */
                    281: #define        EAIER_EXTRNLLEN         0x00000080      /* external data length err */
                    282: #define        EAIER_DESBLOCK          0x00000040      /* des block size error */
                    283: #define        EAIER_DESKEY            0x00000020      /* des key error */
                    284: #define        EAIER_ILL               0x00000001      /* illegal access */
                    285:
                    286: /* NOCT_EA_CSR */
                    287: #define        EACSR_ENABLE            0x80000000      /* e/a enable */
                    288: #define        EACSR_BUSY              0x40000000      /* e/a busy */
                    289: #define        EACSR_QALIGN            0x00008000      /* queue alignment */
                    290: #define        EACSR_CMDCMPL           0x00004000      /* command complete */
                    291: #define        EACSR_OPERR             0x00002000      /* opcode error */
                    292: #define        EACSR_CMDREAD           0x00001000      /* command read error */
                    293: #define        EACSR_CMDWRITE          0x00000800      /* command write error */
                    294: #define        EACSR_DATAREAD          0x00000400      /* data read error */
                    295: #define        EACSR_DATAWRITE         0x00000200      /* data write error */
                    296: #define        EACSR_INTRNLLEN         0x00000100      /* internal data length err */
                    297: #define        EACSR_EXTRNLLEN         0x00000080      /* external data length err */
                    298: #define        EACSR_DESBLOCK          0x00000040      /* des block size error */
                    299: #define        EACSR_DESKEY            0x00000020      /* des key error */
                    300: #define        EACSR_ILL               0x00000001      /* illegal access */
                    301:
                    302: /* NOCT_EA_CTX_ADDR */
                    303: #define        EACTXADDR_READPEND      0x80000000      /* read pending/start */
                    304: #define        EACTXADDR_WRITEPEND     0x40000000      /* write pending/start */
                    305: #define        EACTXADDR_MASK          0x00ffffff      /* address mask */
                    306:
                    307: /* NOCT_EA_SDRAM_CFG */
                    308: #define        EASDRC_8KREFRESH        0x00000080      /* 8K refreshes/64ms */
                    309: #define        EASDRC_FREQ             0x0000003f      /* in MHz */
                    310:
                    311: /* NOCT_RNG_CTL */
                    312: #define        RNGCTL_RNG_ENA          0x80000000      /* rng enable */
                    313: #define        RNGCTL_TOD_ENA          0x40000000      /* enable tod counter */
                    314: #define        RNGCTL_EXTCLK_ENA       0x20000000      /* external clock enable */
                    315: #define        RNGCTL_DIAG             0x10000000      /* diagnostic mode */
                    316: #define        RNGCTL_BUFSRC_M         0x0c000000      /* buffer source: */
                    317: #define        RNGCTL_BUFSRC_X917      0x00000000      /*  X9.17 expander */
                    318: #define        RNGCTL_BUFSRC_SEED      0x04000000      /*  seed generator */
                    319: #define        RNGCTL_BUFSRC_HOST      0x08000000      /*  host data */
                    320: #define        RNGCTL_SEEDSRC_M        0x03000000      /* seed source: */
                    321: #define        RNGCTL_SEEDSRC_INT      0x00000000      /*  internal seed generator */
                    322: #define        RNGCTL_SEEDSRC_EXT      0x01000000      /*  external seed generator */
                    323: #define        RNGCTL_SEEDSRC_HOST     0x02000000      /*  host seed */
                    324: #define        RNGCTL_SEED_ERR         0x00008000      /* seed error */
                    325: #define        RNGCTL_X917_ERR         0x00004000      /* X9.17 error */
                    326: #define        RNGCTL_KEY1PAR_ERR      0x00002000      /* key 1 parity error */
                    327: #define        RNGCTL_KEY2PAR_ERR      0x00001000      /* key 2 parity error */
                    328: #define        RNGCTL_HOSTSEEDVALID    0x00000400      /* host seed not consumed */
                    329: #define        RNGCTL_BUF_RDY          0x00000200      /* buffer ready for write */
                    330: #define        RNGCTL_ITERCNT          0x000000ff      /* iteration count */
                    331:
                    332: /* NOCT_RNG_CSR */
                    333: #define        RNGCSR_XFER_ENABLE      0x80000000      /* enable xfer queue */
                    334: #define        RNGCSR_XFER_BUSY        0x40000000      /* xfer in progress */
                    335: #define        RNGCSR_ERR_KEY          0x00800000      /* key error */
                    336: #define        RNGCSR_ERR_BUS          0x00400000      /* pci bus error */
                    337: #define        RNGCSR_ERR_DUP          0x00200000      /* duplicate block generated */
                    338: #define        RNGCSR_ERR_ACCESS       0x00100000      /* access error */
                    339: #define        RNGCSR_INT_KEY          0x00080000      /* intr ena: key error */
                    340: #define        RNGCSR_INT_BUS          0x00040000      /* intr ena: pci error */
                    341: #define        RNGCSR_INT_DUP          0x00020000      /* intr ena: dup error */
                    342: #define        RNGCSR_INT_ACCESS       0x00010000      /* intr ena: access error */
                    343:
                    344: /* NOCT_RNG_Q_PTR */
                    345: #define        RNGQPTR_READ_M          0x00007fff      /* read mask */
                    346: #define        RNGQPTR_READ_S          0               /* read shift */
                    347: #define        RNGQPTR_WRITE_M         0x7fff0000      /* write mask */
                    348: #define        RNGQPTR_WRITE_S         16              /* write shift */
                    349:
                    350: #define        EA_CMD_WORDS            32
                    351: struct noct_ea_cmd {
                    352:        volatile u_int32_t      buf[EA_CMD_WORDS];
                    353: };
                    354:
                    355:
                    356: #define        EA_0_CP                 0x80000000      /* context block */
                    357: #define        EA_0_SI                 0x40000000      /* set interrupt */
                    358: #define        EA_0_CTXIDX             0x0003ffff      /* context index */
                    359:
                    360: #define        EA_1_OPCODE             0xff000000      /* opcode */
                    361: #define        EA_1_ITERCNT            0x000f0000      /* iteration count */
                    362: #define        EA_1_DATALEN            0x0000ffff      /* data length (bytes) */
                    363:
                    364: #define        EA_OP_NOP               0x00000000      /* nop */
                    365: #define        EA_OP_WCTX              0x01000000      /* write context mem */
                    366: #define        EA_OP_RCTX              0x02000000      /* read context mem */
                    367: #define        EA_OP_3DESCBCE          0x03000000      /* 3DES, CBC, encrypt */
                    368: #define        EA_OP_3DESCBCD          0x04000000      /* 3DES, CBC, decrypt */
                    369: #define        EA_OP_ARC4              0x05000000      /* ARC4 transform */
                    370: #define        EA_OP_MD5               0x10000000      /* simple MD5 hash */
                    371: #define        EA_OP_MD5_APP           0x11000000      /* MD5 hash w/append */
                    372: #define        EA_OP_MD5_CMDIV         0x12000000      /* MD5 hash, IV from cmd */
                    373: #define        EA_OP_MD5_LSTIV         0x13000000      /* MD5 hash, IV from last */
                    374: #define        EA_OP_MD5_LSTCMD        0x14000000      /* MD5 hashlast;iv from cmd */
                    375: #define        EA_OP_MD5_LSTLST        0x15000000      /* MD5 hashlast;iv from last */
                    376: #define        EA_OP_MD5_KEYMAT        0x16000000      /* MD5 KEYMAT expansion */
                    377: #define        EA_OP_MD5_SKEYID        0x17000000      /* MD5 SKEYID expansion */
                    378: #define        EA_OP_MD5_IKEKEY        0x18000000      /* MD5 IKE KEYMAT */
                    379: #define        EA_OP_SHA1              0x20000000      /* simple SHA1 hash */
                    380: #define        EA_OP_SHA1_APP          0x21000000      /* SHA1 hash w/append */
                    381: #define        EA_OP_SHA1_CMDIV        0x22000000      /* SHA1 hash, IV from cmd */
                    382: #define        EA_OP_SHA1_LSTIV        0x23000000      /* SHA1 hash, IV from last */
                    383: #define        EA_OP_SHA1_LSTCMD       0x24000000      /* SHA1 hashlast;iv from cmd */
                    384: #define        EA_OP_SHA1_LSTLST       0x25000000      /* SHA1 hashlast;iv from lst */
                    385: #define        EA_OP_SHA1_KEYMAT       0x26000000      /* SHA1 KEYMAT expansion */
                    386: #define        EA_OP_SHA1_SKEYID       0x27000000      /* SHA1 SKEYID expansion */
                    387: #define        EA_OP_SHA1_IKEKEY       0x28000000      /* SHA1 IKE KEYMAT */
                    388: #define        EA_OP_MASTER_HASH       0x30000000      /* master secret hash */
                    389: #define        EA_OP_NULL_NULL         0x80000000      /* packet level null/null */
                    390: #define        EA_OP_SSL3_ARC4_MD5_E   0x81000000      /* ssl 3.0 arc4/md5 enc */
                    391: #define        EA_OP_SSL3_DES_MD5_E    0x82000000      /* ssl 3.0 des/md5 enc */
                    392: #define        EA_OP_SSL3_ARC4_SHA1_E  0x83000000      /* ssl 3.0 arc4/sha1 enc */
                    393: #define        EA_OP_SSL3_DES_SHA1_E   0x84000000      /* ssl 3.0 des/sha1 enc */
                    394: #define        EA_OP_SSL3_ARC4_MD5_D   0x91000000      /* ssl 3.0 arc4/md5 dec */
                    395: #define        EA_OP_SSL3_DES_MD5_D    0x92000000      /* ssl 3.0 des/md5 dec */
                    396: #define        EA_OP_SSL3_ARC4_SHA1_D  0x93000000      /* ssl 3.0 arc4/sha1 dec */
                    397: #define        EA_OP_SSL3_DES_SHA1_D   0x94000000      /* ssl 3.0 des/sha1 dec */
                    398: #define        EA_OP_TLS1_ARC4_MD5_E   0xa1000000      /* tls 1.0 arc4/md5 enc */
                    399: #define        EA_OP_TLS1_DES_MD5_E    0xa2000000      /* tls 1.0 des/md5 enc */
                    400: #define        EA_OP_TLS1_ARC4_SHA1_E  0xa3000000      /* tls 1.0 arc4/sha1 enc */
                    401: #define        EA_OP_TLS1_DES_SHA1_E   0xa4000000      /* tls 1.0 des/sha1 enc */
                    402: #define        EA_OP_TLS1_ARC4_MD5_D   0xb1000000      /* tls 1.0 arc4/md5 dec */
                    403: #define        EA_OP_TLS1_DES_MD5_D    0xb2000000      /* tls 1.0 des/md5 dec */
                    404: #define        EA_OP_TLS1_ARC4_SHA1_D  0xb3000000      /* tls 1.0 arc4/sha1 dec */
                    405: #define        EA_OP_TLS1_DES_SHA1_D   0xb4000000      /* tls 1.0 des/sha1 dec */
                    406: #define        EA_OP_IPS_DES_MD5_E     0xc1000000      /* ipsec des/md5 enc */
                    407: #define        EA_OP_IPS_DES_SHA1_E    0xc2000000      /* ipsec des/sha1 enc */
                    408: #define        EA_OP_IPS_DES_MD5_D     0xd1000000      /* ipsec des/md5 dec */
                    409: #define        EA_OP_IPS_DES_SHA1_D    0xd2000000      /* ipsec des/sha1 dec */

CVSweb