/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Orb related data structures.
 *
 * Copyright IBM Corp. 2007, 2011
 *
 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com>
 *	      Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
 *	      Sebastian Ott <sebott@linux.vnet.ibm.com>
 */

#ifndef S390_ORB_H
#define S390_ORB_H

#include <linux/types.h>
#include <asm/dma-types.h>

/*
 * Command-mode operation request block
 */
struct cmd_orb {
	u32 intparm;	/* interruption parameter */
	u32 key:4;	/* flags, like key, suspend control, etc. */
	u32 spnd:1;	/* suspend control */
	u32 res1:1;	/* reserved */
	u32 mod:1;	/* modification control */
	u32 sync:1;	/* synchronize control */
	u32 fmt:1;	/* format control */
	u32 pfch:1;	/* prefetch control */
	u32 isic:1;	/* initial-status-interruption control */
	u32 alcc:1;	/* address-limit-checking control */
	u32 ssic:1;	/* suppress-suspended-interr. control */
	u32 res2:1;	/* reserved */
	u32 c64:1;	/* IDAW/QDIO 64 bit control  */
	u32 i2k:1;	/* IDAW 2/4kB block size control */
	u32 lpm:8;	/* logical path mask */
	u32 ils:1;	/* incorrect length */
	u32 zero:6;	/* reserved zeros */
	u32 orbx:1;	/* ORB extension control */
	dma32_t cpa;	/* channel program address */
}  __packed __aligned(4);

/*
 * Transport-mode operation request block
 */
struct tm_orb {
	u32 intparm;
	u32 key:4;
	u32:9;
	u32 b:1;
	u32:2;
	u32 lpm:8;
	u32:7;
	u32 x:1;
	dma32_t tcw;
	u32 prio:8;
	u32:8;
	u32 rsvpgm:8;
	u32:8;
	u32:32;
	u32:32;
	u32:32;
	u32:32;
}  __packed __aligned(4);

/*
 * eadm operation request block
 */
struct eadm_orb {
	u32 intparm;
	u32 key:4;
	u32:4;
	u32 compat1:1;
	u32 compat2:1;
	u32:21;
	u32 x:1;
	dma32_t aob;
	u32 css_prio:8;
	u32:8;
	u32 scm_prio:8;
	u32:8;
	u32:29;
	u32 fmt:3;
	u32:32;
	u32:32;
	u32:32;
}  __packed __aligned(4);

union orb {
	struct cmd_orb cmd;
	struct tm_orb tm;
	struct eadm_orb eadm;
}  __packed __aligned(4);

#endif /* S390_ORB_H */
