xref: /OK3568_Linux_fs/kernel/drivers/s390/cio/orb.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Orb related data structures.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright IBM Corp. 2007, 2011
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com>
8*4882a593Smuzhiyun  *	      Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
9*4882a593Smuzhiyun  *	      Sebastian Ott <sebott@linux.vnet.ibm.com>
10*4882a593Smuzhiyun  */
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #ifndef S390_ORB_H
13*4882a593Smuzhiyun #define S390_ORB_H
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /*
16*4882a593Smuzhiyun  * Command-mode operation request block
17*4882a593Smuzhiyun  */
18*4882a593Smuzhiyun struct cmd_orb {
19*4882a593Smuzhiyun 	u32 intparm;	/* interruption parameter */
20*4882a593Smuzhiyun 	u32 key:4;	/* flags, like key, suspend control, etc. */
21*4882a593Smuzhiyun 	u32 spnd:1;	/* suspend control */
22*4882a593Smuzhiyun 	u32 res1:1;	/* reserved */
23*4882a593Smuzhiyun 	u32 mod:1;	/* modification control */
24*4882a593Smuzhiyun 	u32 sync:1;	/* synchronize control */
25*4882a593Smuzhiyun 	u32 fmt:1;	/* format control */
26*4882a593Smuzhiyun 	u32 pfch:1;	/* prefetch control */
27*4882a593Smuzhiyun 	u32 isic:1;	/* initial-status-interruption control */
28*4882a593Smuzhiyun 	u32 alcc:1;	/* address-limit-checking control */
29*4882a593Smuzhiyun 	u32 ssic:1;	/* suppress-suspended-interr. control */
30*4882a593Smuzhiyun 	u32 res2:1;	/* reserved */
31*4882a593Smuzhiyun 	u32 c64:1;	/* IDAW/QDIO 64 bit control  */
32*4882a593Smuzhiyun 	u32 i2k:1;	/* IDAW 2/4kB block size control */
33*4882a593Smuzhiyun 	u32 lpm:8;	/* logical path mask */
34*4882a593Smuzhiyun 	u32 ils:1;	/* incorrect length */
35*4882a593Smuzhiyun 	u32 zero:6;	/* reserved zeros */
36*4882a593Smuzhiyun 	u32 orbx:1;	/* ORB extension control */
37*4882a593Smuzhiyun 	u32 cpa;	/* channel program address */
38*4882a593Smuzhiyun }  __packed __aligned(4);
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun /*
41*4882a593Smuzhiyun  * Transport-mode operation request block
42*4882a593Smuzhiyun  */
43*4882a593Smuzhiyun struct tm_orb {
44*4882a593Smuzhiyun 	u32 intparm;
45*4882a593Smuzhiyun 	u32 key:4;
46*4882a593Smuzhiyun 	u32:9;
47*4882a593Smuzhiyun 	u32 b:1;
48*4882a593Smuzhiyun 	u32:2;
49*4882a593Smuzhiyun 	u32 lpm:8;
50*4882a593Smuzhiyun 	u32:7;
51*4882a593Smuzhiyun 	u32 x:1;
52*4882a593Smuzhiyun 	u32 tcw;
53*4882a593Smuzhiyun 	u32 prio:8;
54*4882a593Smuzhiyun 	u32:8;
55*4882a593Smuzhiyun 	u32 rsvpgm:8;
56*4882a593Smuzhiyun 	u32:8;
57*4882a593Smuzhiyun 	u32:32;
58*4882a593Smuzhiyun 	u32:32;
59*4882a593Smuzhiyun 	u32:32;
60*4882a593Smuzhiyun 	u32:32;
61*4882a593Smuzhiyun }  __packed __aligned(4);
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun /*
64*4882a593Smuzhiyun  * eadm operation request block
65*4882a593Smuzhiyun  */
66*4882a593Smuzhiyun struct eadm_orb {
67*4882a593Smuzhiyun 	u32 intparm;
68*4882a593Smuzhiyun 	u32 key:4;
69*4882a593Smuzhiyun 	u32:4;
70*4882a593Smuzhiyun 	u32 compat1:1;
71*4882a593Smuzhiyun 	u32 compat2:1;
72*4882a593Smuzhiyun 	u32:21;
73*4882a593Smuzhiyun 	u32 x:1;
74*4882a593Smuzhiyun 	u32 aob;
75*4882a593Smuzhiyun 	u32 css_prio:8;
76*4882a593Smuzhiyun 	u32:8;
77*4882a593Smuzhiyun 	u32 scm_prio:8;
78*4882a593Smuzhiyun 	u32:8;
79*4882a593Smuzhiyun 	u32:29;
80*4882a593Smuzhiyun 	u32 fmt:3;
81*4882a593Smuzhiyun 	u32:32;
82*4882a593Smuzhiyun 	u32:32;
83*4882a593Smuzhiyun 	u32:32;
84*4882a593Smuzhiyun }  __packed __aligned(4);
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun union orb {
87*4882a593Smuzhiyun 	struct cmd_orb cmd;
88*4882a593Smuzhiyun 	struct tm_orb tm;
89*4882a593Smuzhiyun 	struct eadm_orb eadm;
90*4882a593Smuzhiyun }  __packed __aligned(4);
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun #endif /* S390_ORB_H */
93