xref: /linux/drivers/s390/cio/orb.h (revision d2fc439b99820cccd6978918c260730dd97bf373)
19e6f9f85SSebastian Ott /*
29e6f9f85SSebastian Ott  * Orb related data structures.
39e6f9f85SSebastian Ott  *
49e6f9f85SSebastian Ott  * Copyright IBM Corp. 2007, 2011
59e6f9f85SSebastian Ott  *
69e6f9f85SSebastian Ott  * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com>
79e6f9f85SSebastian Ott  *	      Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
89e6f9f85SSebastian Ott  *	      Sebastian Ott <sebott@linux.vnet.ibm.com>
99e6f9f85SSebastian Ott  */
109e6f9f85SSebastian Ott 
119e6f9f85SSebastian Ott #ifndef S390_ORB_H
129e6f9f85SSebastian Ott #define S390_ORB_H
139e6f9f85SSebastian Ott 
149e6f9f85SSebastian Ott /*
159e6f9f85SSebastian Ott  * Command-mode operation request block
169e6f9f85SSebastian Ott  */
179e6f9f85SSebastian Ott struct cmd_orb {
189e6f9f85SSebastian Ott 	u32 intparm;	/* interruption parameter */
199e6f9f85SSebastian Ott 	u32 key:4;	/* flags, like key, suspend control, etc. */
209e6f9f85SSebastian Ott 	u32 spnd:1;	/* suspend control */
219e6f9f85SSebastian Ott 	u32 res1:1;	/* reserved */
229e6f9f85SSebastian Ott 	u32 mod:1;	/* modification control */
239e6f9f85SSebastian Ott 	u32 sync:1;	/* synchronize control */
249e6f9f85SSebastian Ott 	u32 fmt:1;	/* format control */
259e6f9f85SSebastian Ott 	u32 pfch:1;	/* prefetch control */
269e6f9f85SSebastian Ott 	u32 isic:1;	/* initial-status-interruption control */
279e6f9f85SSebastian Ott 	u32 alcc:1;	/* address-limit-checking control */
289e6f9f85SSebastian Ott 	u32 ssic:1;	/* suppress-suspended-interr. control */
299e6f9f85SSebastian Ott 	u32 res2:1;	/* reserved */
309e6f9f85SSebastian Ott 	u32 c64:1;	/* IDAW/QDIO 64 bit control  */
319e6f9f85SSebastian Ott 	u32 i2k:1;	/* IDAW 2/4kB block size control */
329e6f9f85SSebastian Ott 	u32 lpm:8;	/* logical path mask */
339e6f9f85SSebastian Ott 	u32 ils:1;	/* incorrect length */
349e6f9f85SSebastian Ott 	u32 zero:6;	/* reserved zeros */
359e6f9f85SSebastian Ott 	u32 orbx:1;	/* ORB extension control */
369e6f9f85SSebastian Ott 	u32 cpa;	/* channel program address */
379e6f9f85SSebastian Ott }  __packed __aligned(4);
389e6f9f85SSebastian Ott 
399e6f9f85SSebastian Ott /*
409e6f9f85SSebastian Ott  * Transport-mode operation request block
419e6f9f85SSebastian Ott  */
429e6f9f85SSebastian Ott struct tm_orb {
439e6f9f85SSebastian Ott 	u32 intparm;
449e6f9f85SSebastian Ott 	u32 key:4;
459e6f9f85SSebastian Ott 	u32:9;
469e6f9f85SSebastian Ott 	u32 b:1;
479e6f9f85SSebastian Ott 	u32:2;
489e6f9f85SSebastian Ott 	u32 lpm:8;
499e6f9f85SSebastian Ott 	u32:7;
509e6f9f85SSebastian Ott 	u32 x:1;
519e6f9f85SSebastian Ott 	u32 tcw;
529e6f9f85SSebastian Ott 	u32 prio:8;
539e6f9f85SSebastian Ott 	u32:8;
549e6f9f85SSebastian Ott 	u32 rsvpgm:8;
559e6f9f85SSebastian Ott 	u32:8;
569e6f9f85SSebastian Ott 	u32:32;
579e6f9f85SSebastian Ott 	u32:32;
589e6f9f85SSebastian Ott 	u32:32;
599e6f9f85SSebastian Ott 	u32:32;
609e6f9f85SSebastian Ott }  __packed __aligned(4);
619e6f9f85SSebastian Ott 
62*d2fc439bSSebastian Ott /*
63*d2fc439bSSebastian Ott  * eadm operation request block
64*d2fc439bSSebastian Ott  */
65*d2fc439bSSebastian Ott struct eadm_orb {
66*d2fc439bSSebastian Ott 	u32 intparm;
67*d2fc439bSSebastian Ott 	u32 key:4;
68*d2fc439bSSebastian Ott 	u32:4;
69*d2fc439bSSebastian Ott 	u32 compat1:1;
70*d2fc439bSSebastian Ott 	u32 compat2:1;
71*d2fc439bSSebastian Ott 	u32:21;
72*d2fc439bSSebastian Ott 	u32 x:1;
73*d2fc439bSSebastian Ott 	u32 aob;
74*d2fc439bSSebastian Ott 	u32 css_prio:8;
75*d2fc439bSSebastian Ott 	u32:8;
76*d2fc439bSSebastian Ott 	u32 scm_prio:8;
77*d2fc439bSSebastian Ott 	u32:8;
78*d2fc439bSSebastian Ott 	u32:29;
79*d2fc439bSSebastian Ott 	u32 fmt:3;
80*d2fc439bSSebastian Ott 	u32:32;
81*d2fc439bSSebastian Ott 	u32:32;
82*d2fc439bSSebastian Ott 	u32:32;
83*d2fc439bSSebastian Ott }  __packed __aligned(4);
84*d2fc439bSSebastian Ott 
859e6f9f85SSebastian Ott union orb {
869e6f9f85SSebastian Ott 	struct cmd_orb cmd;
879e6f9f85SSebastian Ott 	struct tm_orb tm;
88*d2fc439bSSebastian Ott 	struct eadm_orb eadm;
899e6f9f85SSebastian Ott }  __packed __aligned(4);
909e6f9f85SSebastian Ott 
919e6f9f85SSebastian Ott #endif /* S390_ORB_H */
92