Sebastian Ott | d2fc439 | 2012-08-28 16:44:51 +0200 | [diff] [blame^] | 1 | #ifndef _ASM_S390_EADM_H |
2 | #define _ASM_S390_EADM_H | ||||
3 | |||||
4 | #include <linux/types.h> | ||||
5 | |||||
6 | struct arqb { | ||||
7 | u64 data; | ||||
8 | u16 fmt:4; | ||||
9 | u16:12; | ||||
10 | u16 cmd_code; | ||||
11 | u16:16; | ||||
12 | u16 msb_count; | ||||
13 | u32 reserved[12]; | ||||
14 | } __packed; | ||||
15 | |||||
16 | #define ARQB_CMD_MOVE 1 | ||||
17 | |||||
18 | struct arsb { | ||||
19 | u16 fmt:4; | ||||
20 | u32:28; | ||||
21 | u8 ef; | ||||
22 | u8:8; | ||||
23 | u8 ecbi; | ||||
24 | u8:8; | ||||
25 | u8 fvf; | ||||
26 | u16:16; | ||||
27 | u8 eqc; | ||||
28 | u32:32; | ||||
29 | u64 fail_msb; | ||||
30 | u64 fail_aidaw; | ||||
31 | u64 fail_ms; | ||||
32 | u64 fail_scm; | ||||
33 | u32 reserved[4]; | ||||
34 | } __packed; | ||||
35 | |||||
36 | struct msb { | ||||
37 | u8 fmt:4; | ||||
38 | u8 oc:4; | ||||
39 | u8 flags; | ||||
40 | u16:12; | ||||
41 | u16 bs:4; | ||||
42 | u32 blk_count; | ||||
43 | u64 data_addr; | ||||
44 | u64 scm_addr; | ||||
45 | u64:64; | ||||
46 | } __packed; | ||||
47 | |||||
48 | struct aidaw { | ||||
49 | u8 flags; | ||||
50 | u32 :24; | ||||
51 | u32 :32; | ||||
52 | u64 data_addr; | ||||
53 | } __packed; | ||||
54 | |||||
55 | #define MSB_OC_CLEAR 0 | ||||
56 | #define MSB_OC_READ 1 | ||||
57 | #define MSB_OC_WRITE 2 | ||||
58 | #define MSB_OC_RELEASE 3 | ||||
59 | |||||
60 | #define MSB_FLAG_BNM 0x80 | ||||
61 | #define MSB_FLAG_IDA 0x40 | ||||
62 | |||||
63 | #define MSB_BS_4K 0 | ||||
64 | #define MSB_BS_1M 1 | ||||
65 | |||||
66 | #define AOB_NR_MSB 124 | ||||
67 | |||||
68 | struct aob { | ||||
69 | struct arqb request; | ||||
70 | struct arsb response; | ||||
71 | struct msb msb[AOB_NR_MSB]; | ||||
72 | } __packed __aligned(PAGE_SIZE); | ||||
73 | |||||
74 | #endif /* _ASM_S390_EADM_H */ |