| /* 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 */ |