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