2  *  linux/drivers/s390/crypto/zcrypt_pcixcc.h
 
   6  *  Copyright (C)  2001, 2006 IBM Corporation
 
   7  *  Author(s): Robert Burroughs
 
   8  *             Eric Rossman (edrossma@us.ibm.com)
 
  10  *  Hotplug & misc device support: Jochen Roehrig (roehrig@de.ibm.com)
 
  11  *  Major cleanup & driver split: Martin Schwidefsky <schwidefsky@de.ibm.com>
 
  13  * This program is free software; you can redistribute it and/or modify
 
  14  * it under the terms of the GNU General Public License as published by
 
  15  * the Free Software Foundation; either version 2, or (at your option)
 
  18  * This program is distributed in the hope that it will be useful,
 
  19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
  20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 
  21  * GNU General Public License for more details.
 
  23  * You should have received a copy of the GNU General Public License
 
  24  * along with this program; if not, write to the Free Software
 
  25  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
  28 #ifndef _ZCRYPT_PCIXCC_H_
 
  29 #define _ZCRYPT_PCIXCC_H_
 
  33  *        Note that all shorts and ints are big-endian.
 
  34  *        All pointer fields are 16 bytes long, and mean nothing.
 
  36  *        A request CPRB is followed by a request_parameter_block.
 
  38  *        The request (or reply) parameter block is organized thus:
 
  44         unsigned short cprb_len;        /* CPRB length        220        */
 
  45         unsigned char  cprb_ver_id;     /* CPRB version id.   0x02       */
 
  46         unsigned char  pad_000[3];      /* Alignment pad bytes           */
 
  47         unsigned char  func_id[2];      /* function id        0x5432     */
 
  48         unsigned char  cprb_flags[4];   /* Flags                         */
 
  49         unsigned int   req_parml;       /* request parameter buffer len  */
 
  50         unsigned int   req_datal;       /* request data buffer           */
 
  51         unsigned int   rpl_msgbl;       /* reply  message block length   */
 
  52         unsigned int   rpld_parml;      /* replied parameter block len   */
 
  53         unsigned int   rpl_datal;       /* reply data block len          */
 
  54         unsigned int   rpld_datal;      /* replied data block len        */
 
  55         unsigned int   req_extbl;       /* request extension block len   */
 
  56         unsigned char  pad_001[4];      /* reserved                      */
 
  57         unsigned int   rpld_extbl;      /* replied extension block len   */
 
  58         unsigned char  req_parmb[16];   /* request parm block 'address'  */
 
  59         unsigned char  req_datab[16];   /* request data block 'address'  */
 
  60         unsigned char  rpl_parmb[16];   /* reply parm block 'address'    */
 
  61         unsigned char  rpl_datab[16];   /* reply data block 'address'    */
 
  62         unsigned char  req_extb[16];    /* request extension block 'addr'*/
 
  63         unsigned char  rpl_extb[16];    /* reply extension block 'addres'*/
 
  64         unsigned short ccp_rtcode;      /* server return code            */
 
  65         unsigned short ccp_rscode;      /* server reason code            */
 
  66         unsigned int   mac_data_len;    /* Mac Data Length               */
 
  67         unsigned char  logon_id[8];     /* Logon Identifier              */
 
  68         unsigned char  mac_value[8];    /* Mac Value                     */
 
  69         unsigned char  mac_content_flgs;/* Mac content flag byte         */
 
  70         unsigned char  pad_002;         /* Alignment                     */
 
  71         unsigned short domain;          /* Domain                        */
 
  72         unsigned char  pad_003[12];     /* Domain masks                  */
 
  73         unsigned char  pad_004[36];     /* reserved                      */
 
  74 } __attribute__((packed));
 
  76 int zcrypt_pcixcc_init(void);
 
  77 void zcrypt_pcixcc_exit(void);
 
  79 #endif /* _ZCRYPT_PCIXCC_H_ */