[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     ! 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