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