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

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

1.1       nbrk        1: /*     $OpenBSD: isesreg.h,v 1.10 2007/05/25 21:27:16 krw Exp $ $      */
                      2:
                      3: /*
                      4:  * Copyright (c) 2000 Håkan Olsson (ho@crt.se)
                      5:  * Copyright (c) 2000 Theo de Raadt
                      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:  *
                     11:  * 1. Redistributions of source code must retain the above copyright
                     12:  *    notice, this list of conditions and the following disclaimer.
                     13:  * 2. Redistributions in binary form must reproduce the above copyright
                     14:  *    notice, this list of conditions and the following disclaimer in the
                     15:  *    documentation and/or other materials provided with the distribution.
                     16:  *
                     17:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     18:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     19:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     20:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     21:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     22:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     23:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     24:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     25:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     26:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     27:  */
                     28:
                     29: /*
                     30:  * Register definitions for Pijnenburg PCC-ISES crypto chip.
                     31:  * Definitions from revision 1.6 of the product datasheet.
                     32:  */
                     33:
                     34: /*
                     35:  * PCC-ISES Evaluation board DMA offsets
                     36:  */
                     37: #define ISES_DMA_READ_COUNT    0x0100          /* bit 31-16 */
                     38: #define ISES_DMA_RCOUNT(x)     ((x) << 16)
                     39: #define ISES_DMA_WRITE_COUNT   0x0100          /* bit 15-0  */
                     40: #define ISES_DMA_WCOUNT(x)     ((x) & 0x00FF)
                     41:
                     42: #define ISES_DMA_WRITE_START   0x0104
                     43: #define ISES_DMA_READ_START    0x0108
                     44: #define ISES_DMA_CTRL          0x010C
                     45: #define ISES_DMA_STATUS                ISES_DMA_CTRL
                     46: #define ISES_DMA_RESET         0x0110
                     47:
                     48: #define ISES_DMA_CTRL_ILT      0x40000000      /* Ignore Latency Timer */
                     49: #define ISES_DMA_CTRL_RMULT    0x0D000000      /* Enable PCI Read Multiple */
                     50: #define ISES_DMA_CTRL_RLINE    0x09000000      /* Enable PCI Read Line */
                     51: #define ISES_DMA_CTRL_READ     0x01000000      /* Enable PCI Read */
                     52: #define ISES_DMA_CTRL_WRITE    0x00000100      /* Enable PCI Write */
                     53:
                     54: #define ISES_DMA_STATUS_R_RUN  0x01000000      /* PCI Read running */
                     55: #define ISES_DMA_STATUS_R_ERR  0x02000000      /* PCI Read error */
                     56: #define ISES_DMA_STATUS_W_RUN  0x00000100      /* PCI Write running */
                     57: #define ISES_DMA_STATUS_W_ERR  0x00000200      /* PCI Write error */
                     58:
                     59: /*
                     60:  * PCC-ISES A-interface
                     61:  */
                     62:
                     63: #define ISES_A_OFFSET          0x0200
                     64: #define ISES_A(x)              (ISES_A_OFFSET + (x))
                     65:
                     66: #define ISES_A_STAT            ISES_A(0x00)    /* status register */
                     67: #define ISES_A_INTS            ISES_A(0x04)    /* interrupt status register */
                     68: #define ISES_A_INTE            ISES_A(0x08)    /* interrupt enable register */
                     69: #define ISES_A_SREQ            ISES_A(0x0C)    /* service request (read) */
                     70: #define ISES_A_CTRL            ISES_A_SREQ     /* control register (write) */
                     71: #define ISES_A_OQD             ISES_A(0x10)    /* Output Queue Data (read) */
                     72: #define ISES_A_IQD             ISES_A_OQD      /* Input Queue Data (write) */
                     73: #define ISES_A_OQS             ISES_A(0x14)    /* Output Queue Semaphore */
                     74: #define ISES_A_IQS             ISES_A(0x18)    /* Input Queue Semaphore */
                     75: #define ISES_A_OQF             ISES_A(0x1C)    /* Output Queue Filled (ro) */
                     76: #define ISES_A_IQF             ISES_A(0x20)    /* Input Queue Free (ro) */
                     77:
                     78: /*
                     79:  * PCC-ISES B-interface
                     80:  */
                     81:
                     82: #define ISES_B_OFFSET          0x0300
                     83: #define ISES_B(x)              (ISES_B_OFFSET + (x))
                     84:
                     85: #define ISES_B_BDATAIN         ISES_B(0x0)
                     86: #define ISES_B_BDATAOUT                ISES_B(0x4)
                     87: #define ISES_B_STAT            ISES_B(0x8)
                     88:
                     89: /*
                     90:  * PCC-ISES I-interface (not used)
                     91:  */
                     92:
                     93: #define ISES_I_OFFSET          0x0400
                     94:
                     95: /*
                     96:  * PCC-ISES board registers
                     97:  */
                     98:
                     99: #define ISES_BO_OFFSET         0x0500
                    100: #define ISES_BO(x)             (ISES_BO_OFFSET + (x))
                    101:
                    102: #define ISES_BO_STAT           ISES_BO(0x0)
                    103: #define ISES_BO_LOOPCOUNTER    ISES_BO(0x4)
                    104: #define ISES_BO_TESTREG                ISES_BO(0x8)
                    105:
                    106: #define ISES_BO_STAT_LOOP      0x00000001      /* B-interface LoopMode */
                    107: #define ISES_BO_STAT_TAMPER    0x00000002      /* Set tamper */
                    108: #define ISES_BO_STAT_POWERDOWN 0x00000004      /* Set power down */
                    109: #define ISES_BO_STAT_ACONF     0x00000008      /* Set A-intf access to 16b */
                    110: #define ISES_BO_STAT_HWRESET   0x00000010      /* Reset PCC-ISES (hw) */
                    111: #define ISES_BO_STAT_AIRQ      0x00000020      /* A-interface interrupt (ro)*/
                    112:
                    113: /*
                    114:  * PCC-ISES A-interface STAT register bits
                    115:  */
                    116:
                    117: #define ISES_STAT_LNAU_MASKED  0x00000001      /* LNAU flags masked, this bit
                    118:                                                   must be zero for the other
                    119:                                                   LNAU flags to be read
                    120:                                                   correctly. */
                    121: #define ISES_STAT_LNAU_BUSY_1  0x00000002      /* LNAU unit 1 is busy */
                    122: #define ISES_STAT_LNAU_ERR_1   0x00000004      /* LNAU unit 1 error */
                    123: #define ISES_STAT_LNAU_BUSY_2  0x00000008      /* LNAU unit 2 is busy */
                    124: #define ISES_STAT_LNAU_ERR_2   0x00000010      /* LNAU unit 2 error */
                    125: #define ISES_STAT_BCHU_MASKED  0x00000020      /* BCHU flags masked */
                    126: #define ISES_STAT_BCHU_BUSY    0x00000040      /* BCHU is busy */
                    127: #define ISES_STAT_BCHU_ERR     0x00000080      /* BCHU error flag */
                    128: #define ISES_STAT_BCHU_SCIF    0x00000100      /* symm. crypto inoperative */
                    129: #define ISES_STAT_BCHU_HIF     0x00000200      /* hash unit inoperative */
                    130: #define ISES_STAT_BCHU_DDB     0x00000400      /* discard data blocks */
                    131: #define ISES_STAT_BCHU_IRF     0x00000800      /* input request flag */
                    132: #define ISES_STAT_BCHU_OAF     0x00001000      /* output available flag */
                    133: #define ISES_STAT_BCHU_DIE     0x00002000      /* data input enabled */
                    134: #define ISES_STAT_BCHU_UE      0x00004000      /* unit enable bit */
                    135: #define ISES_STAT_BCHU_IFE     0x00008000      /* input FIFO empty */
                    136: #define ISES_STAT_BCHU_IFHE    0x00010000      /* input FIFO half emtpy */
                    137: #define ISES_STAT_BCHU_IFF     0x00020000      /* input FIFO full */
                    138: #define ISES_STAT_BCHU_OFE     0x00040000      /* output FIFO emtpy */
                    139: #define ISES_STAT_BCHU_OFHF    0x00080000      /* output FIFO half full */
                    140: #define ISES_STAT_BCHU_OFF     0x00100000      /* output FIFO full */
                    141: #define ISES_STAT_HW_DA                0x00200000      /* downloaded appl flag */
                    142: #define ISES_STAT_HW_ACONF     0x00400000      /* A-intf configuration flag */
                    143: #define ISES_STAT_SW_WFOQ      0x00800000      /* SW: Waiting for out queue */
                    144: #define ISES_STAT_SW_OQSINC    0x08000000      /* SW 2.x: OQS increased */
                    145:
                    146: #define ISES_STAT_IDP_MASK     0x0f000000      /* IDP state mask (HW_DA=0) */
                    147: #define ISES_STAT_IDP_STATE(x)  (((x) & ISES_STAT_IDP_MASK) >> 24)
                    148: #define ISES_IDP_WFPL          0x4             /* Waiting for pgm len state */
                    149:
                    150: static const char *ises_idp_state[] =
                    151: {
                    152:        "reset state",                          /* 0x0 */
                    153:        "testing NSRAM",                        /* 0x1 */
                    154:        "checking for firmware",                /* 0x2 */
                    155:        "clearing NSRAM",                       /* 0x3 */
                    156:        "waiting for program length",           /* 0x4 */
                    157:        "waiting for program data",             /* 0x5 */
                    158:        "waiting for program CRC",              /* 0x6 */
                    159:        "functional test program",              /* 0x7 */
                    160:        0, 0, 0, 0, 0, 0, 0,                    /* 0x8-0xe */
                    161:        "Error: NSRAM or firmware failed"       /* 0xf */
                    162: };
                    163:
                    164: #define ISES_STAT_SW_MASK      0x03000000      /* SW mode (HW_DA=1) */
                    165: #define ISES_STAT_SW_MODE(x)   (((x) & ISES_STAT_SW_MASK) >> 24)
                    166:
                    167: #define ISES_A_CTRL_RESET      0x0000          /* SW reset (go to ST mode) */
                    168: #define ISES_A_CTRL_CONTINUE   0x0001          /* Return to CMD from WFC */
                    169:
                    170: #ifdef ISESDEBUG
                    171: static const char *ises_sw_mode[] =
                    172: {
                    173:        "ST (SelfTest)",                        /* 0x0 */
                    174:        "CMD",                                  /* 0x1 (normal) */
                    175:        "WFC (Wait for continue)",              /* 0x2 */
                    176:        "CMD (Wait for reset)"                  /* 0x3 */
                    177: };
                    178: #endif
                    179:
                    180: /* BERR (BCHU Error Register) */
                    181: #define ISES_BERR_DPAR         0x00000001      /* DES parity error */
                    182: #define ISES_BERR_IDESBCP      0x00000002      /* illegal DES mode value */
                    183: #define ISES_BERR_ISFRBCP      0x00000004      /* illegal SAFER rounds spec */
                    184: #define ISES_BERR_INCMBCP      0x00000008      /* illegal non-crypto mode */
                    185: #define ISES_BERR_IBCF         0x00000010      /* illegal value in BCFR */
                    186: #define ISES_BERR_reserved     0x00000020      /* reserved */
                    187: #define ISES_BERR_SRB          0x00000040      /* write SCU while busy */
                    188: #define ISES_BERR_HRB          0x00000080      /* write HU while busy */
                    189: #define ISES_BERR_IHFR         0x00000100      /* illegal value in HFR */
                    190: #define ISES_BERR_PADERR       0x00000200      /* padding error */
                    191: #define ISES_BERR_BIDM         0x00000400      /* B-interface input data
                    192:                                                   misalignment */
                    193: /* BCHCR (BCHU Control Register) */
                    194: #define ISES_BCHCR_BCHU_DIE    0x00000001      /* data input enabled */
                    195: #define ISES_BCHCR_BCHU_UE     0x00000002      /* unit enable */
                    196: #define ISES_BCHCR_BCHU_RST    0x00000004      /* BCHU reset */
                    197:
                    198: /*
                    199:  * OMR (Operation Method Register)
                    200:  */
                    201: /* -- SELR (Selector Register) */
                    202: #define ISES_SELR_BCHU_EH      0x80000000      /* stop/continue on error */
                    203: #define ISES_SELR_BCHU_HISOF   0x01000000      /* HU input is SCU output */
                    204: #define ISES_SELR_BCHU_DIS     0x02000000      /* data interface select */
                    205:
                    206: /* -- HOMR (HU Operation Mode Register) */
                    207: #define ISES_HOMR_HMTR         0x00800000      /* hash message type reg bit */
                    208: #define ISES_HOMR_ER           0x00300000      /* BE/LE, 2bit mask */
                    209:
                    210: #define ISES_HOMR_HFR          0x00070000      /* Hash function mask, 3bits */
                    211: #define ISES_HOMR_HFR_NOP      0x00000000      /* NOP */
                    212: #define ISES_HOMR_HFR_MD5      0x00010000      /* MD5 */
                    213: #define ISES_HOMR_HFR_RMD160   0x00020000      /* RIPEMD-160 */
                    214: #define ISES_HOMR_HFR_RMD128   0x00030000      /* RIPEMD-128 */
                    215: #define ISES_HOMR_HFR_SHA1     0x00040000      /* SHA-1 */
                    216:
                    217: /* -- SOMR (Symmetric crypto Operation Method Register) */
                    218: #define ISES_SOMR_BCFR         0x0000f000      /* block cipher function reg */
                    219: #define ISES_SOMR_BCPR         0x00000ff0      /* block cipher parameters */
                    220: #define ISES_SOMR_BOMR         (ISES_SOMR_BCFR | ISES_SOMR_BCPR)
                    221: #define ISES_SOMR_BOMR_NOP     0x00000000      /* NOP */
                    222: #define ISES_SOMR_BOMR_TRANSPARENT 0x00000010  /* Transparent */
                    223: #define ISES_SOMR_BOMR_DES     0x00001000      /* DES */
                    224: #define ISES_SOMR_BOMR_3DES2   0x00001010      /* 3DES-2 */
                    225: #define ISES_SOMR_BOMR_3DES    0x00001020      /* 3DES-3 */
                    226: #define ISES_SOMR_BOMR_SAFER   0x00002000      /* SAFER (actually more) */
                    227: #define ISES_SOMR_EDR          0x00000008      /* Encrypt/Decrypt register */
                    228: #define ISES_SOMR_FMR          0x00000003      /* feedback mode mask */
                    229: #define ISES_SOMR_FMR_ECB      0x00000000      /* EBC */
                    230: #define ISES_SOMR_FMR_CBC      0x00000001      /* CBC */
                    231: #define ISES_SOMR_FMR_CFB64    0x00000002      /* CFB64 */
                    232: #define ISES_SOMR_FMR_OFB64    0x00000003      /* OFB64 */
                    233:
                    234: /*
                    235:  * HRNG (Hardware Random Number Generator)
                    236:  */
                    237: #define ISES_OFFSET_HRNG_CTRL  0x00            /* Control register */
                    238: #define ISES_OFFSET_HRNG_LFSR  0x04            /* Linear feedback shift reg */
                    239: #define ISES_HRNG_CTRL_HE      0x00000001      /* HRNG enable */
                    240:
                    241: /*
                    242:  * A-interface commands
                    243:  */
                    244: #define ISES_MKCMD(cmd,len)    (cmd | cmd << 16 | len << 8 | len << 24)
                    245: #define ISES_CMD_NONE          -1
                    246:
                    247: /*     Command name            Code       Len  RLen    Desc                 */
                    248: #define ISES_CMD_CHIP_ID       0x00    /* 0    3       Read chipID */
                    249: /* LNAU commands - LNAU 1 */
                    250: #define ISES_CMD_LRESET_1      0x01    /* 0    0       LNAU reset */
                    251: #define ISES_CMD_LRSFLG_1      0x02    /* 0    0       LNAU flags reset */
                    252: #define ISES_CMD_LUPLOAD_1     0x03    /* 0    64      Upload result */
                    253: #define ISES_CMD_LW_A_1                0x04    /* ?64  0       Load A register */
                    254: #define ISES_CMD_LW_B_1                0x05    /* ?64  0       Load B register */
                    255: #define ISES_CMD_LW_N_1                0x06    /* ?64  0       Load N register */
                    256: #define ISES_CMD_LW_Bq_1       0x07    /* ?32  0       Load Bq register */
                    257: #define ISES_CMD_LW_Nq_1       0x08    /* ?32  0       Load Nq register */
                    258: #define ISES_CMD_LW_Bp_1       0x09    /* ?34  0       Load Bp register */
                    259: #define ISES_CMD_LW_Np_1       0x0a    /* ?34  0       Load Np register */
                    260: #define ISES_CMD_LW_U_1                0x0b    /* ?34  0       Load U register */
                    261: #define ISES_CMD_LMOD_1                0x0c    /* 0    0       Start A % N */
                    262: #define ISES_CMD_LMULMOD_1     0x0d    /* 0    0       Start (A*B) % N */
                    263: #define ISES_CMD_LEXPMOD_1     0x0e    /* 0    0       Start (A^B) % N */
                    264: #define ISES_CMD_LEXPCRTMOD_1  0x0f    /* 0    0       Start (A^B)%N w/ CRT */
                    265: /* LNAU commands - LNAU 2 */
                    266: #define ISES_CMD_LRESET_2      0x10    /* 0    0       Reset */
                    267: #define ISES_CMD_LRSFLG_2      0x11    /* 0    0       Flags reset */
                    268: #define ISES_CMD_LUPLOAD_2     0x12    /* 0    64      Upload result */
                    269: #define ISES_CMD_LW_A_2                0x13    /* ?64  0       Load A register */
                    270: #define ISES_CMD_LW_B_2                0x14    /* ?64  0       Load B register */
                    271: #define ISES_CMD_LW_N_2                0x15    /* ?64  0       Load N register */
                    272: #define ISES_CMD_LW_Bq_2       0x16    /* ?32  0       Load Bq register */
                    273: #define ISES_CMD_LW_Nq_2       0x17    /* ?32  0       Load Nq register */
                    274: #define ISES_CMD_LW_Bp_2       0x18    /* ?34  0       Load Bp register */
                    275: #define ISES_CMD_LW_Np_2       0x19    /* ?34  0       Load Np register */
                    276: #define ISES_CMD_LW_U_2                0x1a    /* ?34  0       Load U register */
                    277: #define ISES_CMD_LMOD_2                0x1b    /* 0    0       Start A % N */
                    278: #define ISES_CMD_LMULMOD_2     0x1c    /* 0    0       Start (A*B) % N */
                    279: #define ISES_CMD_LEXPMOD_2     0x1d    /* 0    0       Start (A^B) % N */
                    280: #define ISES_CMD_LEXPCRTMOD_2  0x1e    /* 0    0       Start (A^B)%N w/ CRT */
                    281: /* BCHU commands */
                    282: #define ISES_CMD_RST_BERR      0x1f    /* 0    0       Reset BERR */
                    283: #define ISES_CMD_BR_BERR       0x20    /* 0    0       Read BERR */
                    284: #define ISES_CMD_BW_DATA       0x21    /* 2    0       Write DATA */
                    285: #define ISES_CMD_BR_DATA       0x22    /* 0    2       Read DATA */
                    286: #define ISES_CMD_BW_BCHCR      0x23    /* 1    0       Write BCHCR */
                    287: #define ISES_CMD_BR_BCHCR      0x24    /* 0    0       Read BCHCR */
                    288: #define ISES_CMD_BW_OMR                0x25    /* 1    0       Write OMR */
                    289: #define ISES_CMD_BR_OMR                0x26    /* 0    1       Read OMR */
                    290: #define ISES_CMD_BW_KR0                0x27    /* 2    0       Write key 0 */
                    291: #define ISES_CMD_BR_KR0                0x28    /* 0    2       Read key 0 */
                    292: #define ISES_CMD_BW_KR1                0x29    /* 2    0       Write key 1 */
                    293: #define ISES_CMD_BR_KR1                0x2a    /* 0    2       Read key 1 */
                    294: #define ISES_CMD_BW_KR2                0x2b    /* 2    0       Write key 2 */
                    295: #define ISES_CMD_BR_KR2                0x2c    /* 0    2       Read key 2 */
                    296: #define ISES_CMD_BW_SCCR       0x2d    /* 2    0       Write SCCR */
                    297: #define ISES_CMD_BR_SCCR       0x2e    /* 0    2       Read SCCR */
                    298: #define ISES_CMD_BW_DBCR       0x2f    /* 2    0       Write DBCR */
                    299: #define ISES_CMD_BR_DBCR       0x30    /* 0    2       Read DBCR */
                    300: #define ISES_CMD_BW_HMLR       0x31    /* 2    0       Write HMLR */
                    301: #define ISES_CMD_BR_HMLR       0x32    /* 0    2       Read HMLR */
                    302: #define ISES_CMD_BW_CVR                0x33    /* 5    0       Write CVR */
                    303: #define ISES_CMD_BR_CVR                0x34    /* 0    5       Read CVR */
                    304: #define ISES_CMD_BPROC         0x35    /* ?255 ?255    Process data blocks */
                    305: #define ISES_CMD_BTERM         0x36    /* 0    0       Terminate session */
                    306: #define ISES_CMD_BSWITCH       0x37    /* 18   18      Switch BCHU session */
                    307: /* HRNG commands */
                    308: #define ISES_CMD_HSTART                0x38    /* 0    0       Start RBG unit */
                    309: #define ISES_CMD_HSTOP         0x39    /* 0    0       Stop RGB unit */
                    310: #define ISES_CMD_HSEED         0x3a    /* 1    0       Seed LFSR */
                    311: #define ISES_CMD_HBITS         0x3b    /* 1    ?255    Return n*32 rnd bits */
                    312:
                    313: /* Command return codes (RC) */
                    314: #define ISES_RC_MASK           0x0000ffff
                    315: #define ISES_RC_SUCCESS                0x0000          /* success */
                    316: #define ISES_RC_CMDERR         0x0001          /* cmd interpretation error */
                    317: #define ISES_RC_QERR           0x0002          /* queue handling error */
                    318: #define ISES_RC_LNAU_ERR       0x0003          /* LNAU cmd proc error */
                    319: #define ISES_RC_BCHU_ERR       0x0004          /* BCHU cmd proc error */
                    320: #define ISES_RC_BCHU_BIFCSEL   0x0005          /* OMR says B-if, must be A */
                    321: #define ISES_RC_BCHU_ODD       0x0006          /* odd #words in param list */
                    322: #define ISES_RC_HRNG_ILLEN     0x0007          /* too large bitstream */
                    323:
                    324: /* Interrupt bits, IRQE, IRQES, IRQEC, IRQSS, IRQ registers */
                    325: #define ISES_IRQ_TIMER_1       0x00000001      /* Timer 1 reached zero */
                    326: #define ISES_IRQ_TIMER_2       0x00000002      /* Timer 2 reached zero */
                    327: #define ISES_IRQ_I_IIN0                0x00000004      /* I-int 'Iin0' */
                    328: #define ISES_IRQ_I_IIN1                0x00000008      /* I-int 'Iin1' */
                    329: #define ISES_IRQ_I_IIN2                0x00000010      /* I-int 'Iin2' */
                    330: #define ISES_IRQ_I_IIN3                0x00000020      /* I-int 'Iin3' */
                    331: #define ISES_IRQ_LNAU_1_ERROR  0x00000040      /* LNAU 1 op error/abort */
                    332: #define ISES_IRQ_LNAU_1_DONE   0x00000080      /* LNAU 1 op done */
                    333: #define ISES_IRQ_LNAU_2_ERROR  0x00000100      /* LNAU 2 op error/abort */
                    334: #define ISES_IRQ_LNAU_2_DONE   0x00000200      /* LNAU 1 op done */
                    335: #define ISES_IRQ_BCHU_DONE     0x00000400      /* BCHU operation done */
                    336: #define ISES_IRQ_BCHU_ERROR    0x00000800      /* BCHU operation error/abrt */
                    337: #define ISES_IRQ_BCHU_IRF      0x00001000      /* BCHU input request flag >1*/
                    338: #define ISES_IRQ_BCHU_OAF      0x00002000      /* BCHU output avail flag >1 */
                    339: #define ISES_IRQ_BCHU_IEF      0x00004000      /* BCHU input empty flag >1  */
                    340: #define ISES_IRQ_A_WCTRL       0x00008000      /* A-int CTRL reg was written*/
                    341: #define ISES_IRQ_A_RSREQ       0x00010000      /* A-int SREQ reg was read   */
                    342: #define ISES_IRQ_A_DIQ         0x00020000      /* in queue emtpy, IQD write */
                    343: #define ISES_IRQ_A_CIQ         0x00040000      /* in queue has complete cmd */
                    344: #define ISES_IRQ_A_OQF         0x00080000      /* output queue full */
                    345:
                    346: #define ISES_SESSION(sid)      ( (sid) & 0x0fffffff)
                    347: #define        ISES_CARD(sid)          (((sid) & 0xf0000000) >> 28)
                    348: #define        ISES_SID(crd,ses)       (((crd) << 28) | ((ses) & 0x0fffffff))
                    349:
                    350: /* Size and layout of ises_session is firmware dependent. */
                    351: /* This structure should be usable for the SWITCH_SESSION command. */
                    352: struct ises_session {
                    353:        u_int32_t       kr[6];          /* Key register KR2,KR1,KR0 */
                    354:        u_int32_t       omr;            /* Operation method register */
                    355:
                    356:        /* The following values (on-chip) are cleared after an OMR write */
                    357:        u_int32_t       sccr[2];        /* Symm. crypto chaining reg. (IV) */
                    358:        u_int32_t       cvr[5];         /* Chaining variables reg. */
                    359:        u_int32_t       dbcr[2];        /* Data block count register */
                    360:        u_int32_t       hmlr[2];        /* Hash message length reg. */
                    361: } __attribute__((packed));
                    362:
                    363: #define ISES_B_DATASIZE                        4096

CVSweb