s390: add eadm related structures
Add structures to be used by the eadm subchannel driver. Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
		
							parent
							
								
									382b736635
								
							
						
					
					
						commit
						d2fc439b99
					
				| @ -79,6 +79,18 @@ struct erw { | ||||
| 	__u32 res16 : 16; | ||||
| } __attribute__ ((packed)); | ||||
| 
 | ||||
| /**
 | ||||
|  * struct erw_eadm - EADM Subchannel extended report word | ||||
|  * @b: aob error | ||||
|  * @r: arsb error | ||||
|  */ | ||||
| struct erw_eadm { | ||||
| 	__u32 : 16; | ||||
| 	__u32 b : 1; | ||||
| 	__u32 r : 1; | ||||
| 	__u32  : 14; | ||||
| } __packed; | ||||
| 
 | ||||
| /**
 | ||||
|  * struct sublog - subchannel logout area | ||||
|  * @res0: reserved | ||||
| @ -169,10 +181,23 @@ struct esw3 { | ||||
| 	__u32 zeros[3]; | ||||
| } __attribute__ ((packed)); | ||||
| 
 | ||||
| /**
 | ||||
|  * struct esw_eadm - EADM Subchannel Extended Status Word (ESW) | ||||
|  * @sublog: subchannel logout | ||||
|  * @erw: extended report word | ||||
|  */ | ||||
| struct esw_eadm { | ||||
| 	__u32 sublog; | ||||
| 	struct erw_eadm erw; | ||||
| 	__u32 : 32; | ||||
| 	__u32 : 32; | ||||
| 	__u32 : 32; | ||||
| } __packed; | ||||
| 
 | ||||
| /**
 | ||||
|  * struct irb - interruption response block | ||||
|  * @scsw: subchannel status word | ||||
|  * @esw: extened status word, 4 formats | ||||
|  * @esw: extened status word | ||||
|  * @ecw: extended control word | ||||
|  * | ||||
|  * The irb that is handed to the device driver when an interrupt occurs. For | ||||
| @ -191,6 +216,7 @@ struct irb { | ||||
| 		struct esw1 esw1; | ||||
| 		struct esw2 esw2; | ||||
| 		struct esw3 esw3; | ||||
| 		struct esw_eadm eadm; | ||||
| 	} esw; | ||||
| 	__u8   ecw[32]; | ||||
| } __attribute__ ((packed,aligned(4))); | ||||
|  | ||||
							
								
								
									
										74
									
								
								arch/s390/include/asm/eadm.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								arch/s390/include/asm/eadm.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,74 @@ | ||||
| #ifndef _ASM_S390_EADM_H | ||||
| #define _ASM_S390_EADM_H | ||||
| 
 | ||||
| #include <linux/types.h> | ||||
| 
 | ||||
| struct arqb { | ||||
| 	u64 data; | ||||
| 	u16 fmt:4; | ||||
| 	u16:12; | ||||
| 	u16 cmd_code; | ||||
| 	u16:16; | ||||
| 	u16 msb_count; | ||||
| 	u32 reserved[12]; | ||||
| } __packed; | ||||
| 
 | ||||
| #define ARQB_CMD_MOVE	1 | ||||
| 
 | ||||
| struct arsb { | ||||
| 	u16 fmt:4; | ||||
| 	u32:28; | ||||
| 	u8 ef; | ||||
| 	u8:8; | ||||
| 	u8 ecbi; | ||||
| 	u8:8; | ||||
| 	u8 fvf; | ||||
| 	u16:16; | ||||
| 	u8 eqc; | ||||
| 	u32:32; | ||||
| 	u64 fail_msb; | ||||
| 	u64 fail_aidaw; | ||||
| 	u64 fail_ms; | ||||
| 	u64 fail_scm; | ||||
| 	u32 reserved[4]; | ||||
| } __packed; | ||||
| 
 | ||||
| struct msb { | ||||
| 	u8 fmt:4; | ||||
| 	u8 oc:4; | ||||
| 	u8 flags; | ||||
| 	u16:12; | ||||
| 	u16 bs:4; | ||||
| 	u32 blk_count; | ||||
| 	u64 data_addr; | ||||
| 	u64 scm_addr; | ||||
| 	u64:64; | ||||
| } __packed; | ||||
| 
 | ||||
| struct aidaw { | ||||
| 	u8 flags; | ||||
| 	u32 :24; | ||||
| 	u32 :32; | ||||
| 	u64 data_addr; | ||||
| } __packed; | ||||
| 
 | ||||
| #define MSB_OC_CLEAR	0 | ||||
| #define MSB_OC_READ	1 | ||||
| #define MSB_OC_WRITE	2 | ||||
| #define MSB_OC_RELEASE	3 | ||||
| 
 | ||||
| #define MSB_FLAG_BNM	0x80 | ||||
| #define MSB_FLAG_IDA	0x40 | ||||
| 
 | ||||
| #define MSB_BS_4K	0 | ||||
| #define MSB_BS_1M	1 | ||||
| 
 | ||||
| #define AOB_NR_MSB	124 | ||||
| 
 | ||||
| struct aob { | ||||
| 	struct arqb request; | ||||
| 	struct arsb response; | ||||
| 	struct msb msb[AOB_NR_MSB]; | ||||
| } __packed __aligned(PAGE_SIZE); | ||||
| 
 | ||||
| #endif /* _ASM_S390_EADM_H */ | ||||
| @ -1,7 +1,7 @@ | ||||
| /*
 | ||||
|  *  Helper functions for scsw access. | ||||
|  * | ||||
|  *    Copyright IBM Corp. 2008, 2009 | ||||
|  *    Copyright IBM Corp. 2008, 2012 | ||||
|  *    Author(s): Peter Oberparleiter <peter.oberparleiter@de.ibm.com> | ||||
|  */ | ||||
| 
 | ||||
| @ -99,15 +99,47 @@ struct tm_scsw { | ||||
| 	u32 schxs:8; | ||||
| } __attribute__ ((packed)); | ||||
| 
 | ||||
| /**
 | ||||
|  * struct eadm_scsw - subchannel status word for eadm subchannels | ||||
|  * @key: subchannel key | ||||
|  * @eswf: esw format | ||||
|  * @cc: deferred condition code | ||||
|  * @ectl: extended control | ||||
|  * @fctl: function control | ||||
|  * @actl: activity control | ||||
|  * @stctl: status control | ||||
|  * @aob: AOB address | ||||
|  * @dstat: device status | ||||
|  * @cstat: subchannel status | ||||
|  */ | ||||
| struct eadm_scsw { | ||||
| 	u32 key:4; | ||||
| 	u32:1; | ||||
| 	u32 eswf:1; | ||||
| 	u32 cc:2; | ||||
| 	u32:6; | ||||
| 	u32 ectl:1; | ||||
| 	u32:2; | ||||
| 	u32 fctl:3; | ||||
| 	u32 actl:7; | ||||
| 	u32 stctl:5; | ||||
| 	u32 aob; | ||||
| 	u32 dstat:8; | ||||
| 	u32 cstat:8; | ||||
| 	u32:16; | ||||
| } __packed; | ||||
| 
 | ||||
| /**
 | ||||
|  * union scsw - subchannel status word | ||||
|  * @cmd: command-mode SCSW | ||||
|  * @tm: transport-mode SCSW | ||||
|  * @eadm: eadm SCSW | ||||
|  */ | ||||
| union scsw { | ||||
| 	struct cmd_scsw cmd; | ||||
| 	struct tm_scsw tm; | ||||
| } __attribute__ ((packed)); | ||||
| 	struct eadm_scsw eadm; | ||||
| } __packed; | ||||
| 
 | ||||
| #define SCSW_FCTL_CLEAR_FUNC	 0x1 | ||||
| #define SCSW_FCTL_HALT_FUNC	 0x2 | ||||
|  | ||||
| @ -59,9 +59,33 @@ struct tm_orb { | ||||
| 	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; | ||||
| 	u32 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 */ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user