hwc.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:4k
源码类别:

嵌入式Linux

开发平台:

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