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_ */