19e6f9f85SSebastian Ott /* 29e6f9f85SSebastian Ott * Orb related data structures. 39e6f9f85SSebastian Ott * 49e6f9f85SSebastian Ott * Copyright IBM Corp. 2007, 2011 59e6f9f85SSebastian Ott * 69e6f9f85SSebastian Ott * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> 79e6f9f85SSebastian Ott * Peter Oberparleiter <peter.oberparleiter@de.ibm.com> 89e6f9f85SSebastian Ott * Sebastian Ott <sebott@linux.vnet.ibm.com> 99e6f9f85SSebastian Ott */ 109e6f9f85SSebastian Ott 119e6f9f85SSebastian Ott #ifndef S390_ORB_H 129e6f9f85SSebastian Ott #define S390_ORB_H 139e6f9f85SSebastian Ott 149e6f9f85SSebastian Ott /* 159e6f9f85SSebastian Ott * Command-mode operation request block 169e6f9f85SSebastian Ott */ 179e6f9f85SSebastian Ott struct cmd_orb { 189e6f9f85SSebastian Ott u32 intparm; /* interruption parameter */ 199e6f9f85SSebastian Ott u32 key:4; /* flags, like key, suspend control, etc. */ 209e6f9f85SSebastian Ott u32 spnd:1; /* suspend control */ 219e6f9f85SSebastian Ott u32 res1:1; /* reserved */ 229e6f9f85SSebastian Ott u32 mod:1; /* modification control */ 239e6f9f85SSebastian Ott u32 sync:1; /* synchronize control */ 249e6f9f85SSebastian Ott u32 fmt:1; /* format control */ 259e6f9f85SSebastian Ott u32 pfch:1; /* prefetch control */ 269e6f9f85SSebastian Ott u32 isic:1; /* initial-status-interruption control */ 279e6f9f85SSebastian Ott u32 alcc:1; /* address-limit-checking control */ 289e6f9f85SSebastian Ott u32 ssic:1; /* suppress-suspended-interr. control */ 299e6f9f85SSebastian Ott u32 res2:1; /* reserved */ 309e6f9f85SSebastian Ott u32 c64:1; /* IDAW/QDIO 64 bit control */ 319e6f9f85SSebastian Ott u32 i2k:1; /* IDAW 2/4kB block size control */ 329e6f9f85SSebastian Ott u32 lpm:8; /* logical path mask */ 339e6f9f85SSebastian Ott u32 ils:1; /* incorrect length */ 349e6f9f85SSebastian Ott u32 zero:6; /* reserved zeros */ 359e6f9f85SSebastian Ott u32 orbx:1; /* ORB extension control */ 369e6f9f85SSebastian Ott u32 cpa; /* channel program address */ 379e6f9f85SSebastian Ott } __packed __aligned(4); 389e6f9f85SSebastian Ott 399e6f9f85SSebastian Ott /* 409e6f9f85SSebastian Ott * Transport-mode operation request block 419e6f9f85SSebastian Ott */ 429e6f9f85SSebastian Ott struct tm_orb { 439e6f9f85SSebastian Ott u32 intparm; 449e6f9f85SSebastian Ott u32 key:4; 459e6f9f85SSebastian Ott u32:9; 469e6f9f85SSebastian Ott u32 b:1; 479e6f9f85SSebastian Ott u32:2; 489e6f9f85SSebastian Ott u32 lpm:8; 499e6f9f85SSebastian Ott u32:7; 509e6f9f85SSebastian Ott u32 x:1; 519e6f9f85SSebastian Ott u32 tcw; 529e6f9f85SSebastian Ott u32 prio:8; 539e6f9f85SSebastian Ott u32:8; 549e6f9f85SSebastian Ott u32 rsvpgm:8; 559e6f9f85SSebastian Ott u32:8; 569e6f9f85SSebastian Ott u32:32; 579e6f9f85SSebastian Ott u32:32; 589e6f9f85SSebastian Ott u32:32; 599e6f9f85SSebastian Ott u32:32; 609e6f9f85SSebastian Ott } __packed __aligned(4); 619e6f9f85SSebastian Ott 62*d2fc439bSSebastian Ott /* 63*d2fc439bSSebastian Ott * eadm operation request block 64*d2fc439bSSebastian Ott */ 65*d2fc439bSSebastian Ott struct eadm_orb { 66*d2fc439bSSebastian Ott u32 intparm; 67*d2fc439bSSebastian Ott u32 key:4; 68*d2fc439bSSebastian Ott u32:4; 69*d2fc439bSSebastian Ott u32 compat1:1; 70*d2fc439bSSebastian Ott u32 compat2:1; 71*d2fc439bSSebastian Ott u32:21; 72*d2fc439bSSebastian Ott u32 x:1; 73*d2fc439bSSebastian Ott u32 aob; 74*d2fc439bSSebastian Ott u32 css_prio:8; 75*d2fc439bSSebastian Ott u32:8; 76*d2fc439bSSebastian Ott u32 scm_prio:8; 77*d2fc439bSSebastian Ott u32:8; 78*d2fc439bSSebastian Ott u32:29; 79*d2fc439bSSebastian Ott u32 fmt:3; 80*d2fc439bSSebastian Ott u32:32; 81*d2fc439bSSebastian Ott u32:32; 82*d2fc439bSSebastian Ott u32:32; 83*d2fc439bSSebastian Ott } __packed __aligned(4); 84*d2fc439bSSebastian Ott 859e6f9f85SSebastian Ott union orb { 869e6f9f85SSebastian Ott struct cmd_orb cmd; 879e6f9f85SSebastian Ott struct tm_orb tm; 88*d2fc439bSSebastian Ott struct eadm_orb eadm; 899e6f9f85SSebastian Ott } __packed __aligned(4); 909e6f9f85SSebastian Ott 919e6f9f85SSebastian Ott #endif /* S390_ORB_H */ 92