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