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