162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Orb related data structures.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright IBM Corp. 2007, 2011
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com>
862306a36Sopenharmony_ci *	      Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
962306a36Sopenharmony_ci *	      Sebastian Ott <sebott@linux.vnet.ibm.com>
1062306a36Sopenharmony_ci */
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#ifndef S390_ORB_H
1362306a36Sopenharmony_ci#define S390_ORB_H
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci/*
1662306a36Sopenharmony_ci * Command-mode operation request block
1762306a36Sopenharmony_ci */
1862306a36Sopenharmony_cistruct cmd_orb {
1962306a36Sopenharmony_ci	u32 intparm;	/* interruption parameter */
2062306a36Sopenharmony_ci	u32 key:4;	/* flags, like key, suspend control, etc. */
2162306a36Sopenharmony_ci	u32 spnd:1;	/* suspend control */
2262306a36Sopenharmony_ci	u32 res1:1;	/* reserved */
2362306a36Sopenharmony_ci	u32 mod:1;	/* modification control */
2462306a36Sopenharmony_ci	u32 sync:1;	/* synchronize control */
2562306a36Sopenharmony_ci	u32 fmt:1;	/* format control */
2662306a36Sopenharmony_ci	u32 pfch:1;	/* prefetch control */
2762306a36Sopenharmony_ci	u32 isic:1;	/* initial-status-interruption control */
2862306a36Sopenharmony_ci	u32 alcc:1;	/* address-limit-checking control */
2962306a36Sopenharmony_ci	u32 ssic:1;	/* suppress-suspended-interr. control */
3062306a36Sopenharmony_ci	u32 res2:1;	/* reserved */
3162306a36Sopenharmony_ci	u32 c64:1;	/* IDAW/QDIO 64 bit control  */
3262306a36Sopenharmony_ci	u32 i2k:1;	/* IDAW 2/4kB block size control */
3362306a36Sopenharmony_ci	u32 lpm:8;	/* logical path mask */
3462306a36Sopenharmony_ci	u32 ils:1;	/* incorrect length */
3562306a36Sopenharmony_ci	u32 zero:6;	/* reserved zeros */
3662306a36Sopenharmony_ci	u32 orbx:1;	/* ORB extension control */
3762306a36Sopenharmony_ci	u32 cpa;	/* channel program address */
3862306a36Sopenharmony_ci}  __packed __aligned(4);
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci/*
4162306a36Sopenharmony_ci * Transport-mode operation request block
4262306a36Sopenharmony_ci */
4362306a36Sopenharmony_cistruct tm_orb {
4462306a36Sopenharmony_ci	u32 intparm;
4562306a36Sopenharmony_ci	u32 key:4;
4662306a36Sopenharmony_ci	u32:9;
4762306a36Sopenharmony_ci	u32 b:1;
4862306a36Sopenharmony_ci	u32:2;
4962306a36Sopenharmony_ci	u32 lpm:8;
5062306a36Sopenharmony_ci	u32:7;
5162306a36Sopenharmony_ci	u32 x:1;
5262306a36Sopenharmony_ci	u32 tcw;
5362306a36Sopenharmony_ci	u32 prio:8;
5462306a36Sopenharmony_ci	u32:8;
5562306a36Sopenharmony_ci	u32 rsvpgm:8;
5662306a36Sopenharmony_ci	u32:8;
5762306a36Sopenharmony_ci	u32:32;
5862306a36Sopenharmony_ci	u32:32;
5962306a36Sopenharmony_ci	u32:32;
6062306a36Sopenharmony_ci	u32:32;
6162306a36Sopenharmony_ci}  __packed __aligned(4);
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci/*
6462306a36Sopenharmony_ci * eadm operation request block
6562306a36Sopenharmony_ci */
6662306a36Sopenharmony_cistruct eadm_orb {
6762306a36Sopenharmony_ci	u32 intparm;
6862306a36Sopenharmony_ci	u32 key:4;
6962306a36Sopenharmony_ci	u32:4;
7062306a36Sopenharmony_ci	u32 compat1:1;
7162306a36Sopenharmony_ci	u32 compat2:1;
7262306a36Sopenharmony_ci	u32:21;
7362306a36Sopenharmony_ci	u32 x:1;
7462306a36Sopenharmony_ci	u32 aob;
7562306a36Sopenharmony_ci	u32 css_prio:8;
7662306a36Sopenharmony_ci	u32:8;
7762306a36Sopenharmony_ci	u32 scm_prio:8;
7862306a36Sopenharmony_ci	u32:8;
7962306a36Sopenharmony_ci	u32:29;
8062306a36Sopenharmony_ci	u32 fmt:3;
8162306a36Sopenharmony_ci	u32:32;
8262306a36Sopenharmony_ci	u32:32;
8362306a36Sopenharmony_ci	u32:32;
8462306a36Sopenharmony_ci}  __packed __aligned(4);
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ciunion orb {
8762306a36Sopenharmony_ci	struct cmd_orb cmd;
8862306a36Sopenharmony_ci	struct tm_orb tm;
8962306a36Sopenharmony_ci	struct eadm_orb eadm;
9062306a36Sopenharmony_ci}  __packed __aligned(4);
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci#endif /* S390_ORB_H */
93