cio.h (4e73e0eb633f8a1b5cbf20e7f42c6dbfec1d1ca7) | cio.h (62733e5a5a480a893e56fa6133ae90904d857bc4) |
---|---|
1/* 2 * include/asm-s390/cio.h 3 * include/asm-s390x/cio.h 4 * 5 * Common interface for I/O on S/390 6 */ 7#ifndef _ASM_S390_CIO_H_ 8#define _ASM_S390_CIO_H_ 9 10#include <linux/spinlock.h> 11#include <asm/types.h> 12 13#ifdef __KERNEL__ 14 15#define LPM_ANYPATH 0xff 16#define __MAX_CSSID 0 17 | 1/* 2 * include/asm-s390/cio.h 3 * include/asm-s390x/cio.h 4 * 5 * Common interface for I/O on S/390 6 */ 7#ifndef _ASM_S390_CIO_H_ 8#define _ASM_S390_CIO_H_ 9 10#include <linux/spinlock.h> 11#include <asm/types.h> 12 13#ifdef __KERNEL__ 14 15#define LPM_ANYPATH 0xff 16#define __MAX_CSSID 0 17 |
18/** 19 * struct cmd_scsw - command-mode subchannel status word 20 * @key: subchannel key 21 * @sctl: suspend control 22 * @eswf: esw format 23 * @cc: deferred condition code 24 * @fmt: format 25 * @pfch: prefetch 26 * @isic: initial-status interruption control 27 * @alcc: address-limit checking control 28 * @ssi: suppress-suspended interruption 29 * @zcc: zero condition code 30 * @ectl: extended control 31 * @pno: path not operational 32 * @res: reserved 33 * @fctl: function control 34 * @actl: activity control 35 * @stctl: status control 36 * @cpa: channel program address 37 * @dstat: device status 38 * @cstat: subchannel status 39 * @count: residual count 40 */ 41struct cmd_scsw { 42 __u32 key : 4; 43 __u32 sctl : 1; 44 __u32 eswf : 1; 45 __u32 cc : 2; 46 __u32 fmt : 1; 47 __u32 pfch : 1; 48 __u32 isic : 1; 49 __u32 alcc : 1; 50 __u32 ssi : 1; 51 __u32 zcc : 1; 52 __u32 ectl : 1; 53 __u32 pno : 1; 54 __u32 res : 1; 55 __u32 fctl : 3; 56 __u32 actl : 7; 57 __u32 stctl : 5; 58 __u32 cpa; 59 __u32 dstat : 8; 60 __u32 cstat : 8; 61 __u32 count : 16; 62} __attribute__ ((packed)); | 18#include <asm/scsw.h> |
63 64/** | 19 20/** |
65 * struct tm_scsw - transport-mode subchannel status word 66 * @key: subchannel key 67 * @eswf: esw format 68 * @cc: deferred condition code 69 * @fmt: format 70 * @x: IRB-format control 71 * @q: interrogate-complete 72 * @ectl: extended control 73 * @pno: path not operational 74 * @fctl: function control 75 * @actl: activity control 76 * @stctl: status control 77 * @tcw: TCW address 78 * @dstat: device status 79 * @cstat: subchannel status 80 * @fcxs: FCX status 81 * @schxs: subchannel-extended status 82 */ 83struct tm_scsw { 84 u32 key:4; 85 u32 :1; 86 u32 eswf:1; 87 u32 cc:2; 88 u32 fmt:3; 89 u32 x:1; 90 u32 q:1; 91 u32 :1; 92 u32 ectl:1; 93 u32 pno:1; 94 u32 :1; 95 u32 fctl:3; 96 u32 actl:7; 97 u32 stctl:5; 98 u32 tcw; 99 u32 dstat:8; 100 u32 cstat:8; 101 u32 fcxs:8; 102 u32 schxs:8; 103} __attribute__ ((packed)); 104 105/** 106 * union scsw - subchannel status word 107 * @cmd: command-mode SCSW 108 * @tm: transport-mode SCSW 109 */ 110union scsw { 111 struct cmd_scsw cmd; 112 struct tm_scsw tm; 113} __attribute__ ((packed)); 114 115int scsw_is_tm(union scsw *scsw); 116u32 scsw_key(union scsw *scsw); 117u32 scsw_eswf(union scsw *scsw); 118u32 scsw_cc(union scsw *scsw); 119u32 scsw_ectl(union scsw *scsw); 120u32 scsw_pno(union scsw *scsw); 121u32 scsw_fctl(union scsw *scsw); 122u32 scsw_actl(union scsw *scsw); 123u32 scsw_stctl(union scsw *scsw); 124u32 scsw_dstat(union scsw *scsw); 125u32 scsw_cstat(union scsw *scsw); 126int scsw_is_solicited(union scsw *scsw); 127int scsw_is_valid_key(union scsw *scsw); 128int scsw_is_valid_eswf(union scsw *scsw); 129int scsw_is_valid_cc(union scsw *scsw); 130int scsw_is_valid_ectl(union scsw *scsw); 131int scsw_is_valid_pno(union scsw *scsw); 132int scsw_is_valid_fctl(union scsw *scsw); 133int scsw_is_valid_actl(union scsw *scsw); 134int scsw_is_valid_stctl(union scsw *scsw); 135int scsw_is_valid_dstat(union scsw *scsw); 136int scsw_is_valid_cstat(union scsw *scsw); 137int scsw_cmd_is_valid_key(union scsw *scsw); 138int scsw_cmd_is_valid_sctl(union scsw *scsw); 139int scsw_cmd_is_valid_eswf(union scsw *scsw); 140int scsw_cmd_is_valid_cc(union scsw *scsw); 141int scsw_cmd_is_valid_fmt(union scsw *scsw); 142int scsw_cmd_is_valid_pfch(union scsw *scsw); 143int scsw_cmd_is_valid_isic(union scsw *scsw); 144int scsw_cmd_is_valid_alcc(union scsw *scsw); 145int scsw_cmd_is_valid_ssi(union scsw *scsw); 146int scsw_cmd_is_valid_zcc(union scsw *scsw); 147int scsw_cmd_is_valid_ectl(union scsw *scsw); 148int scsw_cmd_is_valid_pno(union scsw *scsw); 149int scsw_cmd_is_valid_fctl(union scsw *scsw); 150int scsw_cmd_is_valid_actl(union scsw *scsw); 151int scsw_cmd_is_valid_stctl(union scsw *scsw); 152int scsw_cmd_is_valid_dstat(union scsw *scsw); 153int scsw_cmd_is_valid_cstat(union scsw *scsw); 154int scsw_cmd_is_solicited(union scsw *scsw); 155int scsw_tm_is_valid_key(union scsw *scsw); 156int scsw_tm_is_valid_eswf(union scsw *scsw); 157int scsw_tm_is_valid_cc(union scsw *scsw); 158int scsw_tm_is_valid_fmt(union scsw *scsw); 159int scsw_tm_is_valid_x(union scsw *scsw); 160int scsw_tm_is_valid_q(union scsw *scsw); 161int scsw_tm_is_valid_ectl(union scsw *scsw); 162int scsw_tm_is_valid_pno(union scsw *scsw); 163int scsw_tm_is_valid_fctl(union scsw *scsw); 164int scsw_tm_is_valid_actl(union scsw *scsw); 165int scsw_tm_is_valid_stctl(union scsw *scsw); 166int scsw_tm_is_valid_dstat(union scsw *scsw); 167int scsw_tm_is_valid_cstat(union scsw *scsw); 168int scsw_tm_is_valid_fcxs(union scsw *scsw); 169int scsw_tm_is_valid_schxs(union scsw *scsw); 170int scsw_tm_is_solicited(union scsw *scsw); 171 172#define SCSW_FCTL_CLEAR_FUNC 0x1 173#define SCSW_FCTL_HALT_FUNC 0x2 174#define SCSW_FCTL_START_FUNC 0x4 175 176#define SCSW_ACTL_SUSPENDED 0x1 177#define SCSW_ACTL_DEVACT 0x2 178#define SCSW_ACTL_SCHACT 0x4 179#define SCSW_ACTL_CLEAR_PEND 0x8 180#define SCSW_ACTL_HALT_PEND 0x10 181#define SCSW_ACTL_START_PEND 0x20 182#define SCSW_ACTL_RESUME_PEND 0x40 183 184#define SCSW_STCTL_STATUS_PEND 0x1 185#define SCSW_STCTL_SEC_STATUS 0x2 186#define SCSW_STCTL_PRIM_STATUS 0x4 187#define SCSW_STCTL_INTER_STATUS 0x8 188#define SCSW_STCTL_ALERT_STATUS 0x10 189 190#define DEV_STAT_ATTENTION 0x80 191#define DEV_STAT_STAT_MOD 0x40 192#define DEV_STAT_CU_END 0x20 193#define DEV_STAT_BUSY 0x10 194#define DEV_STAT_CHN_END 0x08 195#define DEV_STAT_DEV_END 0x04 196#define DEV_STAT_UNIT_CHECK 0x02 197#define DEV_STAT_UNIT_EXCEP 0x01 198 199#define SCHN_STAT_PCI 0x80 200#define SCHN_STAT_INCORR_LEN 0x40 201#define SCHN_STAT_PROG_CHECK 0x20 202#define SCHN_STAT_PROT_CHECK 0x10 203#define SCHN_STAT_CHN_DATA_CHK 0x08 204#define SCHN_STAT_CHN_CTRL_CHK 0x04 205#define SCHN_STAT_INTF_CTRL_CHK 0x02 206#define SCHN_STAT_CHAIN_CHECK 0x01 207 208/* 209 * architectured values for first sense byte 210 */ 211#define SNS0_CMD_REJECT 0x80 212#define SNS_CMD_REJECT SNS0_CMD_REJEC 213#define SNS0_INTERVENTION_REQ 0x40 214#define SNS0_BUS_OUT_CHECK 0x20 215#define SNS0_EQUIPMENT_CHECK 0x10 216#define SNS0_DATA_CHECK 0x08 217#define SNS0_OVERRUN 0x04 218#define SNS0_INCOMPL_DOMAIN 0x01 219 220/* 221 * architectured values for second sense byte 222 */ 223#define SNS1_PERM_ERR 0x80 224#define SNS1_INV_TRACK_FORMAT 0x40 225#define SNS1_EOC 0x20 226#define SNS1_MESSAGE_TO_OPER 0x10 227#define SNS1_NO_REC_FOUND 0x08 228#define SNS1_FILE_PROTECTED 0x04 229#define SNS1_WRITE_INHIBITED 0x02 230#define SNS1_INPRECISE_END 0x01 231 232/* 233 * architectured values for third sense byte 234 */ 235#define SNS2_REQ_INH_WRITE 0x80 236#define SNS2_CORRECTABLE 0x40 237#define SNS2_FIRST_LOG_ERR 0x20 238#define SNS2_ENV_DATA_PRESENT 0x10 239#define SNS2_INPRECISE_END 0x04 240 241/** | |
242 * struct ccw1 - channel command word 243 * @cmd_code: command code 244 * @flags: flags, like IDA adressing, etc. 245 * @count: byte count 246 * @cda: data address 247 * 248 * The ccw is the basic structure to build channel programs that perform 249 * operations with the device or the control unit. Only Format-1 channel --- 267 unchanged lines hidden --- | 21 * struct ccw1 - channel command word 22 * @cmd_code: command code 23 * @flags: flags, like IDA adressing, etc. 24 * @count: byte count 25 * @cda: data address 26 * 27 * The ccw is the basic structure to build channel programs that perform 28 * operations with the device or the control unit. Only Format-1 channel --- 267 unchanged lines hidden --- |