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