hwc.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:4k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  *  drivers/s390/char/hwc.h
  3.  * 
  4.  *
  5.  *  S390 version
  6.  *    Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
  7.  *    Author(s): Martin Peschke <mpeschke@de.ibm.com>
  8.  *
  9.  * 
  10.  * 
  11.  */
  12. #ifndef __HWC_H__
  13. #define __HWC_H__
  14. #define HWC_EXT_INT_PARAM_ADDR 0xFFFFFFF8
  15. #define HWC_EXT_INT_PARAM_PEND 0x00000001
  16. #define ET_OpCmd 0x01
  17. #define ET_Msg 0x02
  18. #define ET_StateChange 0x08
  19. #define ET_PMsgCmd 0x09
  20. #define ET_CntlProgOpCmd 0x20
  21. #define ET_CntlProgIdent 0x0B
  22. #define ET_SigQuiesce 0x1D
  23. #define ET_OpCmd_Mask 0x80000000
  24. #define ET_Msg_Mask 0x40000000
  25. #define ET_StateChange_Mask 0x01000000
  26. #define ET_PMsgCmd_Mask 0x00800000
  27. #define ET_CtlProgOpCmd_Mask 0x00000001
  28. #define ET_CtlProgIdent_Mask 0x00200000
  29. #define ET_SigQuiesce_Mask 0x00000008
  30. #define GMF_DOM 0x8000
  31. #define GMF_SndAlrm 0x4000
  32. #define GMF_HoldMsg 0x2000
  33. #define LTF_CntlText 0x8000
  34. #define LTF_LabelText 0x4000
  35. #define LTF_DataText 0x2000
  36. #define LTF_EndText 0x1000
  37. #define LTF_PromptText 0x0800
  38. #define HWC_COMMAND_INITIATED 0
  39. #define HWC_BUSY 2
  40. #define HWC_NOT_OPERATIONAL 3
  41. #define hwc_cmdw_t u32;
  42. #define HWC_CMDW_READDATA 0x00770005
  43. #define HWC_CMDW_WRITEDATA 0x00760005
  44. #define HWC_CMDW_WRITEMASK 0x00780005
  45. #define GDS_ID_MDSMU 0x1310
  46. #define GDS_ID_MDSRouteInfo 0x1311
  47. #define GDS_ID_AgUnWrkCorr 0x1549
  48. #define GDS_ID_SNACondReport 0x1532
  49. #define GDS_ID_CPMSU 0x1212
  50. #define GDS_ID_RoutTargInstr 0x154D
  51. #define GDS_ID_OpReq 0x8070
  52. #define GDS_ID_TextCmd 0x1320
  53. #define GDS_KEY_SelfDefTextMsg 0x31
  54. #define _HWCB_HEADER u16 length; 
  55. u8 function_code; 
  56. u8 control_mask[3]; 
  57. u16 response_code;
  58. #define _EBUF_HEADER  u16 length; 
  59. u8 type; 
  60. u8 flags; 
  61. u16 _reserved;
  62. typedef struct {
  63. _EBUF_HEADER
  64. } __attribute__ ((packed)) 
  65. evbuf_t;
  66. #define _MDB_HEADER u16 length; 
  67. u16 type; 
  68. u32 tag; 
  69. u32 revision_code;
  70. #define _GO_HEADER u16 length; 
  71. u16 type; 
  72. u32 domid; 
  73. u8 hhmmss_time[8]; 
  74. u8 th_time[3]; 
  75. u8 _reserved_0; 
  76. u8 dddyyyy_date[7]; 
  77. u8 _reserved_1; 
  78. u16 general_msg_flags; 
  79. u8 _reserved_2[10]; 
  80. u8 originating_system_name[8]; 
  81. u8 job_guest_name[8];
  82. #define _MTO_HEADER u16 length; 
  83. u16 type; 
  84. u16 line_type_flags; 
  85. u8 alarm_control; 
  86. u8 _reserved[3];
  87. typedef struct {
  88. _GO_HEADER
  89. } __attribute__ ((packed)) 
  90. go_t;
  91. typedef struct {
  92. go_t go;
  93. } __attribute__ ((packed)) 
  94. mdb_body_t;
  95. typedef struct {
  96. _MDB_HEADER
  97. mdb_body_t mdb_body;
  98. } __attribute__ ((packed)) 
  99. mdb_t;
  100. typedef struct {
  101. _EBUF_HEADER
  102. mdb_t mdb;
  103. } __attribute__ ((packed)) 
  104. msgbuf_t;
  105. typedef struct {
  106. _HWCB_HEADER
  107. msgbuf_t msgbuf;
  108. } __attribute__ ((packed)) 
  109. write_hwcb_t;
  110. typedef struct {
  111. _MTO_HEADER
  112. } __attribute__ ((packed)) 
  113. mto_t;
  114. static write_hwcb_t write_hwcb_template =
  115. {
  116. sizeof (write_hwcb_t),
  117. 0x00,
  118. {
  119. 0x00,
  120. 0x00,
  121. 0x00
  122. },
  123. 0x0000,
  124. {
  125. sizeof (msgbuf_t),
  126. ET_Msg,
  127. 0x00,
  128. 0x0000,
  129. {
  130. sizeof (mdb_t),
  131. 0x0001,
  132. 0xD4C4C240,
  133. 0x00000001,
  134. {
  135. {
  136. sizeof (go_t),
  137. 0x0001
  138. }
  139. }
  140. }
  141. }
  142. };
  143. static mto_t mto_template =
  144. {
  145. sizeof (mto_t),
  146. 0x0004,
  147. LTF_EndText,
  148. 0x00
  149. };
  150. typedef u32 _hwcb_mask_t;
  151. typedef struct {
  152. _HWCB_HEADER
  153. u16 _reserved;
  154. u16 mask_length;
  155. _hwcb_mask_t cp_receive_mask;
  156. _hwcb_mask_t cp_send_mask;
  157. _hwcb_mask_t hwc_receive_mask;
  158. _hwcb_mask_t hwc_send_mask;
  159. } __attribute__ ((packed)) 
  160. init_hwcb_t;
  161. static init_hwcb_t init_hwcb_template =
  162. {
  163. sizeof (init_hwcb_t),
  164. 0x00,
  165. {
  166. 0x00,
  167. 0x00,
  168. 0x00
  169. },
  170. 0x0000,
  171. 0x0000,
  172. sizeof (_hwcb_mask_t),
  173. ET_OpCmd_Mask | ET_PMsgCmd_Mask |
  174. ET_StateChange_Mask | ET_SigQuiesce_Mask,
  175. ET_Msg_Mask | ET_PMsgCmd_Mask | ET_CtlProgIdent_Mask
  176. };
  177. typedef struct {
  178. _EBUF_HEADER
  179. u8 validity_hwc_active_facility_mask:1;
  180. u8 validity_hwc_receive_mask:1;
  181. u8 validity_hwc_send_mask:1;
  182. u8 validity_read_data_function_mask:1;
  183. u16 _zeros:12;
  184. u16 mask_length;
  185. u64 hwc_active_facility_mask;
  186. _hwcb_mask_t hwc_receive_mask;
  187. _hwcb_mask_t hwc_send_mask;
  188. u32 read_data_function_mask;
  189. } __attribute__ ((packed)) 
  190. statechangebuf_t;
  191. #define _GDS_VECTOR_HEADER u16 length; 
  192. u16 gds_id;
  193. #define _GDS_SUBVECTOR_HEADER u8 length; 
  194. u8 key;
  195. typedef struct {
  196. _GDS_VECTOR_HEADER
  197. } __attribute__ ((packed)) 
  198. gds_vector_t;
  199. typedef struct {
  200. _GDS_SUBVECTOR_HEADER
  201. } __attribute__ ((packed)) 
  202. gds_subvector_t;
  203. typedef struct {
  204. _HWCB_HEADER
  205. } __attribute__ ((packed)) 
  206. read_hwcb_t;
  207. static read_hwcb_t read_hwcb_template =
  208. {
  209. PAGE_SIZE,
  210. 0x00,
  211. {
  212. 0x00,
  213. 0x00,
  214. 0x80
  215. }
  216. };
  217. #endif /* __HWC_H__ */