actbl1.h 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284
  1. /******************************************************************************
  2. *
  3. * Name: actbl1.h - Additional ACPI table definitions
  4. *
  5. *****************************************************************************/
  6. /*
  7. * Copyright (C) 2000 - 2008, Intel Corp.
  8. * All rights reserved.
  9. *
  10. * Redistribution and use in source and binary forms, with or without
  11. * modification, are permitted provided that the following conditions
  12. * are met:
  13. * 1. Redistributions of source code must retain the above copyright
  14. * notice, this list of conditions, and the following disclaimer,
  15. * without modification.
  16. * 2. Redistributions in binary form must reproduce at minimum a disclaimer
  17. * substantially similar to the "NO WARRANTY" disclaimer below
  18. * ("Disclaimer") and any redistribution must be conditioned upon
  19. * including a substantially similar Disclaimer requirement for further
  20. * binary redistribution.
  21. * 3. Neither the names of the above-listed copyright holders nor the names
  22. * of any contributors may be used to endorse or promote products derived
  23. * from this software without specific prior written permission.
  24. *
  25. * Alternatively, this software may be distributed under the terms of the
  26. * GNU General Public License ("GPL") version 2 as published by the Free
  27. * Software Foundation.
  28. *
  29. * NO WARRANTY
  30. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  31. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  32. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
  33. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  34. * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  35. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  36. * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  37. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  38. * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  39. * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  40. * POSSIBILITY OF SUCH DAMAGES.
  41. */
  42. #ifndef __ACTBL1_H__
  43. #define __ACTBL1_H__
  44. /*******************************************************************************
  45. *
  46. * Additional ACPI Tables
  47. *
  48. * These tables are not consumed directly by the ACPICA subsystem, but are
  49. * included here to support device drivers and the AML disassembler.
  50. *
  51. ******************************************************************************/
  52. /*
  53. * Values for description table header signatures. Useful because they make
  54. * it more difficult to inadvertently type in the wrong signature.
  55. */
  56. #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */
  57. #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */
  58. #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
  59. #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */
  60. #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */
  61. #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */
  62. #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */
  63. #define ACPI_SIG_EINJ "EINJ" /* Error Injection table */
  64. #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */
  65. #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */
  66. #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */
  67. #define ACPI_SIG_IBFT "IBFT" /* i_sCSI Boot Firmware Table */
  68. #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */
  69. #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */
  70. #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */
  71. #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */
  72. #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */
  73. #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */
  74. #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */
  75. #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */
  76. #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */
  77. #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */
  78. #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */
  79. #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */
  80. /*
  81. * All tables must be byte-packed to match the ACPI specification, since
  82. * the tables are provided by the system BIOS.
  83. */
  84. #pragma pack(1)
  85. /*
  86. * Note about bitfields: The u8 type is used for bitfields in ACPI tables.
  87. * This is the only type that is even remotely portable. Anything else is not
  88. * portable, so do not use any other bitfield types.
  89. */
  90. /* Common Subtable header (used in MADT, SRAT, etc.) */
  91. struct acpi_subtable_header {
  92. u8 type;
  93. u8 length;
  94. };
  95. /* Common Subtable header for WHEA tables (EINJ, ERST, WDAT) */
  96. struct acpi_whea_header {
  97. u8 action;
  98. u8 instruction;
  99. u8 flags;
  100. u8 reserved;
  101. struct acpi_generic_address register_region;
  102. u64 value; /* Value used with Read/Write register */
  103. u64 mask; /* Bitmask required for this register instruction */
  104. };
  105. /*******************************************************************************
  106. *
  107. * ASF - Alert Standard Format table (Signature "ASF!")
  108. *
  109. * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
  110. *
  111. ******************************************************************************/
  112. struct acpi_table_asf {
  113. struct acpi_table_header header; /* Common ACPI table header */
  114. };
  115. /* ASF subtable header */
  116. struct acpi_asf_header {
  117. u8 type;
  118. u8 reserved;
  119. u16 length;
  120. };
  121. /* Values for Type field above */
  122. enum acpi_asf_type {
  123. ACPI_ASF_TYPE_INFO = 0,
  124. ACPI_ASF_TYPE_ALERT = 1,
  125. ACPI_ASF_TYPE_CONTROL = 2,
  126. ACPI_ASF_TYPE_BOOT = 3,
  127. ACPI_ASF_TYPE_ADDRESS = 4,
  128. ACPI_ASF_TYPE_RESERVED = 5
  129. };
  130. /*
  131. * ASF subtables
  132. */
  133. /* 0: ASF Information */
  134. struct acpi_asf_info {
  135. struct acpi_asf_header header;
  136. u8 min_reset_value;
  137. u8 min_poll_interval;
  138. u16 system_id;
  139. u32 mfg_id;
  140. u8 flags;
  141. u8 reserved2[3];
  142. };
  143. /* 1: ASF Alerts */
  144. struct acpi_asf_alert {
  145. struct acpi_asf_header header;
  146. u8 assert_mask;
  147. u8 deassert_mask;
  148. u8 alerts;
  149. u8 data_length;
  150. };
  151. struct acpi_asf_alert_data {
  152. u8 address;
  153. u8 command;
  154. u8 mask;
  155. u8 value;
  156. u8 sensor_type;
  157. u8 type;
  158. u8 offset;
  159. u8 source_type;
  160. u8 severity;
  161. u8 sensor_number;
  162. u8 entity;
  163. u8 instance;
  164. };
  165. /* 2: ASF Remote Control */
  166. struct acpi_asf_remote {
  167. struct acpi_asf_header header;
  168. u8 controls;
  169. u8 data_length;
  170. u16 reserved2;
  171. };
  172. struct acpi_asf_control_data {
  173. u8 function;
  174. u8 address;
  175. u8 command;
  176. u8 value;
  177. };
  178. /* 3: ASF RMCP Boot Options */
  179. struct acpi_asf_rmcp {
  180. struct acpi_asf_header header;
  181. u8 capabilities[7];
  182. u8 completion_code;
  183. u32 enterprise_id;
  184. u8 command;
  185. u16 parameter;
  186. u16 boot_options;
  187. u16 oem_parameters;
  188. };
  189. /* 4: ASF Address */
  190. struct acpi_asf_address {
  191. struct acpi_asf_header header;
  192. u8 eprom_address;
  193. u8 devices;
  194. };
  195. /*******************************************************************************
  196. *
  197. * BERT - Boot Error Record Table
  198. *
  199. ******************************************************************************/
  200. struct acpi_table_bert {
  201. struct acpi_table_header header; /* Common ACPI table header */
  202. u32 region_length; /* Length of the boot error region */
  203. u64 address; /* Physical addresss of the error region */
  204. };
  205. /* Boot Error Region */
  206. struct acpi_bert_region {
  207. u32 block_status;
  208. u32 raw_data_offset;
  209. u32 raw_data_length;
  210. u32 data_length;
  211. u32 error_severity;
  212. };
  213. /* block_status Flags */
  214. #define ACPI_BERT_UNCORRECTABLE (1)
  215. #define ACPI_BERT_CORRECTABLE (2)
  216. #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (4)
  217. #define ACPI_BERT_MULTIPLE_CORRECTABLE (8)
  218. /*******************************************************************************
  219. *
  220. * BOOT - Simple Boot Flag Table
  221. *
  222. ******************************************************************************/
  223. struct acpi_table_boot {
  224. struct acpi_table_header header; /* Common ACPI table header */
  225. u8 cmos_index; /* Index in CMOS RAM for the boot register */
  226. u8 reserved[3];
  227. };
  228. /*******************************************************************************
  229. *
  230. * CPEP - Corrected Platform Error Polling table
  231. *
  232. ******************************************************************************/
  233. struct acpi_table_cpep {
  234. struct acpi_table_header header; /* Common ACPI table header */
  235. u64 reserved;
  236. };
  237. /* Subtable */
  238. struct acpi_cpep_polling {
  239. u8 type;
  240. u8 length;
  241. u8 id; /* Processor ID */
  242. u8 eid; /* Processor EID */
  243. u32 interval; /* Polling interval (msec) */
  244. };
  245. /*******************************************************************************
  246. *
  247. * DBGP - Debug Port table
  248. *
  249. ******************************************************************************/
  250. struct acpi_table_dbgp {
  251. struct acpi_table_header header; /* Common ACPI table header */
  252. u8 type; /* 0=full 16550, 1=subset of 16550 */
  253. u8 reserved[3];
  254. struct acpi_generic_address debug_port;
  255. };
  256. /*******************************************************************************
  257. *
  258. * DMAR - DMA Remapping table
  259. *
  260. ******************************************************************************/
  261. struct acpi_table_dmar {
  262. struct acpi_table_header header; /* Common ACPI table header */
  263. u8 width; /* Host Address Width */
  264. u8 flags;
  265. u8 reserved[10];
  266. };
  267. /* DMAR subtable header */
  268. struct acpi_dmar_header {
  269. u16 type;
  270. u16 length;
  271. };
  272. /* Values for subtable type in struct acpi_dmar_header */
  273. enum acpi_dmar_type {
  274. ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
  275. ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
  276. ACPI_DMAR_TYPE_ATSR = 2,
  277. ACPI_DMAR_TYPE_RESERVED = 3 /* 3 and greater are reserved */
  278. };
  279. struct acpi_dmar_device_scope {
  280. u8 entry_type;
  281. u8 length;
  282. u16 reserved;
  283. u8 enumeration_id;
  284. u8 bus;
  285. };
  286. /* Values for entry_type in struct acpi_dmar_device_scope */
  287. enum acpi_dmar_scope_type {
  288. ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
  289. ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,
  290. ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
  291. ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
  292. ACPI_DMAR_SCOPE_TYPE_HPET = 4,
  293. ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */
  294. };
  295. struct acpi_dmar_pci_path {
  296. u8 dev;
  297. u8 fn;
  298. };
  299. /*
  300. * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header
  301. */
  302. /* 0: Hardware Unit Definition */
  303. struct acpi_dmar_hardware_unit {
  304. struct acpi_dmar_header header;
  305. u8 flags;
  306. u8 reserved;
  307. u16 segment;
  308. u64 address; /* Register Base Address */
  309. };
  310. /* Flags */
  311. #define ACPI_DMAR_INCLUDE_ALL (1)
  312. /* 1: Reserved Memory Defininition */
  313. struct acpi_dmar_reserved_memory {
  314. struct acpi_dmar_header header;
  315. u16 reserved;
  316. u16 segment;
  317. u64 base_address; /* 4_k aligned base address */
  318. u64 end_address; /* 4_k aligned limit address */
  319. };
  320. /* Flags */
  321. #define ACPI_DMAR_ALLOW_ALL (1)
  322. /*******************************************************************************
  323. *
  324. * ECDT - Embedded Controller Boot Resources Table
  325. *
  326. ******************************************************************************/
  327. struct acpi_table_ecdt {
  328. struct acpi_table_header header; /* Common ACPI table header */
  329. struct acpi_generic_address control; /* Address of EC command/status register */
  330. struct acpi_generic_address data; /* Address of EC data register */
  331. u32 uid; /* Unique ID - must be same as the EC _UID method */
  332. u8 gpe; /* The GPE for the EC */
  333. u8 id[1]; /* Full namepath of the EC in the ACPI namespace */
  334. };
  335. /*******************************************************************************
  336. *
  337. * EINJ - Error Injection Table
  338. *
  339. ******************************************************************************/
  340. struct acpi_table_einj {
  341. struct acpi_table_header header; /* Common ACPI table header */
  342. u32 header_length;
  343. u32 reserved;
  344. u32 entries;
  345. };
  346. /* EINJ Injection Instruction Entries (actions) */
  347. struct acpi_einj_entry {
  348. struct acpi_whea_header whea_header; /* Common header for WHEA tables */
  349. };
  350. /* Values for Action field above */
  351. enum acpi_einj_actions {
  352. ACPI_EINJ_BEGIN_OPERATION = 0,
  353. ACPI_EINJ_GET_TRIGGER_TABLE = 1,
  354. ACPI_EINJ_SET_ERROR_TYPE = 2,
  355. ACPI_EINJ_GET_ERROR_TYPE = 3,
  356. ACPI_EINJ_END_OPERATION = 4,
  357. ACPI_EINJ_EXECUTE_OPERATION = 5,
  358. ACPI_EINJ_CHECK_BUSY_STATUS = 6,
  359. ACPI_EINJ_GET_COMMAND_STATUS = 7,
  360. ACPI_EINJ_ACTION_RESERVED = 8, /* 8 and greater are reserved */
  361. ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */
  362. };
  363. /* Values for Instruction field above */
  364. enum acpi_einj_instructions {
  365. ACPI_EINJ_READ_REGISTER = 0,
  366. ACPI_EINJ_READ_REGISTER_VALUE = 1,
  367. ACPI_EINJ_WRITE_REGISTER = 2,
  368. ACPI_EINJ_WRITE_REGISTER_VALUE = 3,
  369. ACPI_EINJ_NOOP = 4,
  370. ACPI_EINJ_INSTRUCTION_RESERVED = 5 /* 5 and greater are reserved */
  371. };
  372. /* EINJ Trigger Error Action Table */
  373. struct acpi_einj_trigger {
  374. u32 header_size;
  375. u32 revision;
  376. u32 table_size;
  377. u32 entry_count;
  378. };
  379. /*******************************************************************************
  380. *
  381. * ERST - Error Record Serialization Table
  382. *
  383. ******************************************************************************/
  384. struct acpi_table_erst {
  385. struct acpi_table_header header; /* Common ACPI table header */
  386. u32 header_length;
  387. u32 reserved;
  388. u32 entries;
  389. };
  390. /* ERST Serialization Entries (actions) */
  391. struct acpi_erst_entry {
  392. struct acpi_whea_header whea_header; /* Common header for WHEA tables */
  393. };
  394. /* Values for Action field above */
  395. enum acpi_erst_actions {
  396. ACPI_ERST_BEGIN_WRITE_OPERATION = 0,
  397. ACPI_ERST_BEGIN_READ_OPERATION = 1,
  398. ACPI_ERST_BETGIN_CLEAR_OPERATION = 2,
  399. ACPI_ERST_END_OPERATION = 3,
  400. ACPI_ERST_SET_RECORD_OFFSET = 4,
  401. ACPI_ERST_EXECUTE_OPERATION = 5,
  402. ACPI_ERST_CHECK_BUSY_STATUS = 6,
  403. ACPI_ERST_GET_COMMAND_STATUS = 7,
  404. ACPI_ERST_GET_RECORD_IDENTIFIER = 8,
  405. ACPI_ERST_SET_RECORD_IDENTIFIER = 9,
  406. ACPI_ERST_GET_RECORD_COUNT = 10,
  407. ACPI_ERST_BEGIN_DUMMY_WRIITE = 11,
  408. ACPI_ERST_NOT_USED = 12,
  409. ACPI_ERST_GET_ERROR_RANGE = 13,
  410. ACPI_ERST_GET_ERROR_LENGTH = 14,
  411. ACPI_ERST_GET_ERROR_ATTRIBUTES = 15,
  412. ACPI_ERST_ACTION_RESERVED = 16 /* 16 and greater are reserved */
  413. };
  414. /* Values for Instruction field above */
  415. enum acpi_erst_instructions {
  416. ACPI_ERST_READ_REGISTER = 0,
  417. ACPI_ERST_READ_REGISTER_VALUE = 1,
  418. ACPI_ERST_WRITE_REGISTER = 2,
  419. ACPI_ERST_WRITE_REGISTER_VALUE = 3,
  420. ACPI_ERST_NOOP = 4,
  421. ACPI_ERST_LOAD_VAR1 = 5,
  422. ACPI_ERST_LOAD_VAR2 = 6,
  423. ACPI_ERST_STORE_VAR1 = 7,
  424. ACPI_ERST_ADD = 8,
  425. ACPI_ERST_SUBTRACT = 9,
  426. ACPI_ERST_ADD_VALUE = 10,
  427. ACPI_ERST_SUBTRACT_VALUE = 11,
  428. ACPI_ERST_STALL = 12,
  429. ACPI_ERST_STALL_WHILE_TRUE = 13,
  430. ACPI_ERST_SKIP_NEXT_IF_TRUE = 14,
  431. ACPI_ERST_GOTO = 15,
  432. ACPI_ERST_SET_SRC_ADDRESS_BASE = 16,
  433. ACPI_ERST_SET_DST_ADDRESS_BASE = 17,
  434. ACPI_ERST_MOVE_DATA = 18,
  435. ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */
  436. };
  437. /*******************************************************************************
  438. *
  439. * HEST - Hardware Error Source Table
  440. *
  441. ******************************************************************************/
  442. struct acpi_table_hest {
  443. struct acpi_table_header header; /* Common ACPI table header */
  444. u32 error_source_count;
  445. };
  446. /* HEST subtable header */
  447. struct acpi_hest_header {
  448. u16 type;
  449. };
  450. /* Values for Type field above for subtables */
  451. enum acpi_hest_types {
  452. ACPI_HEST_TYPE_XPF_MACHINE_CHECK = 0,
  453. ACPI_HEST_TYPE_XPF_CORRECTED_MACHINE_CHECK = 1,
  454. ACPI_HEST_TYPE_XPF_UNUSED = 2,
  455. ACPI_HEST_TYPE_XPF_NON_MASKABLE_INTERRUPT = 3,
  456. ACPI_HEST_TYPE_IPF_CORRECTED_MACHINE_CHECK = 4,
  457. ACPI_HEST_TYPE_IPF_CORRECTED_PLATFORM_ERROR = 5,
  458. ACPI_HEST_TYPE_AER_ROOT_PORT = 6,
  459. ACPI_HEST_TYPE_AER_ENDPOINT = 7,
  460. ACPI_HEST_TYPE_AER_BRIDGE = 8,
  461. ACPI_HEST_TYPE_GENERIC_HARDWARE_ERROR_SOURCE = 9,
  462. ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */
  463. };
  464. /*
  465. * HEST Sub-subtables
  466. */
  467. /* XPF Machine Check Error Bank */
  468. struct acpi_hest_xpf_error_bank {
  469. u8 bank_number;
  470. u8 clear_status_on_init;
  471. u8 status_format;
  472. u8 config_write_enable;
  473. u32 control_register;
  474. u64 control_init_data;
  475. u32 status_register;
  476. u32 address_register;
  477. u32 misc_register;
  478. };
  479. /* Generic Error Status */
  480. struct acpi_hest_generic_status {
  481. u32 block_status;
  482. u32 raw_data_offset;
  483. u32 raw_data_length;
  484. u32 data_length;
  485. u32 error_severity;
  486. };
  487. /* Generic Error Data */
  488. struct acpi_hest_generic_data {
  489. u8 section_type[16];
  490. u32 error_severity;
  491. u16 revision;
  492. u8 validation_bits;
  493. u8 flags;
  494. u32 error_data_length;
  495. u8 fru_id[16];
  496. u8 fru_text[20];
  497. };
  498. /* Common HEST structure for PCI/AER types below (6,7,8) */
  499. struct acpi_hest_aer_common {
  500. u16 source_id;
  501. u16 config_write_enable;
  502. u8 flags;
  503. u8 enabled;
  504. u32 records_to_pre_allocate;
  505. u32 max_sections_per_record;
  506. u32 bus;
  507. u16 device;
  508. u16 function;
  509. u16 device_control;
  510. u16 reserved;
  511. u32 uncorrectable_error_mask;
  512. u32 uncorrectable_error_severity;
  513. u32 correctable_error_mask;
  514. u32 advanced_error_cababilities;
  515. };
  516. /* Hardware Error Notification */
  517. struct acpi_hest_notify {
  518. u8 type;
  519. u8 length;
  520. u16 config_write_enable;
  521. u32 poll_interval;
  522. u32 vector;
  523. u32 polling_threshold_value;
  524. u32 polling_threshold_window;
  525. u32 error_threshold_value;
  526. u32 error_threshold_window;
  527. };
  528. /* Values for Notify Type field above */
  529. enum acpi_hest_notify_types {
  530. ACPI_HEST_NOTIFY_POLLED = 0,
  531. ACPI_HEST_NOTIFY_EXTERNAL = 1,
  532. ACPI_HEST_NOTIFY_LOCAL = 2,
  533. ACPI_HEST_NOTIFY_SCI = 3,
  534. ACPI_HEST_NOTIFY_NMI = 4,
  535. ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */
  536. };
  537. /*
  538. * HEST subtables
  539. *
  540. * From WHEA Design Document, 16 May 2007.
  541. * Note: There is no subtable type 2 in this version of the document,
  542. * and there are two different subtable type 3s.
  543. */
  544. /* 0: XPF Machine Check Exception */
  545. struct acpi_hest_xpf_machine_check {
  546. struct acpi_hest_header header;
  547. u16 source_id;
  548. u16 config_write_enable;
  549. u8 flags;
  550. u8 reserved1;
  551. u32 records_to_pre_allocate;
  552. u32 max_sections_per_record;
  553. u64 global_capability_data;
  554. u64 global_control_data;
  555. u8 num_hardware_banks;
  556. u8 reserved2[7];
  557. };
  558. /* 1: XPF Corrected Machine Check */
  559. struct acpi_table_hest_xpf_corrected {
  560. struct acpi_hest_header header;
  561. u16 source_id;
  562. u16 config_write_enable;
  563. u8 flags;
  564. u8 enabled;
  565. u32 records_to_pre_allocate;
  566. u32 max_sections_per_record;
  567. struct acpi_hest_notify notify;
  568. u8 num_hardware_banks;
  569. u8 reserved[3];
  570. };
  571. /* 3: XPF Non-Maskable Interrupt */
  572. struct acpi_hest_xpf_nmi {
  573. struct acpi_hest_header header;
  574. u16 source_id;
  575. u32 reserved;
  576. u32 records_to_pre_allocate;
  577. u32 max_sections_per_record;
  578. u32 max_raw_data_length;
  579. };
  580. /* 4: IPF Corrected Machine Check */
  581. struct acpi_hest_ipf_corrected {
  582. struct acpi_hest_header header;
  583. u8 enabled;
  584. u8 reserved;
  585. };
  586. /* 5: IPF Corrected Platform Error */
  587. struct acpi_hest_ipf_corrected_platform {
  588. struct acpi_hest_header header;
  589. u8 enabled;
  590. u8 reserved;
  591. };
  592. /* 6: PCI Express Root Port AER */
  593. struct acpi_hest_aer_root {
  594. struct acpi_hest_header header;
  595. struct acpi_hest_aer_common aer;
  596. u32 root_error_command;
  597. };
  598. /* 7: PCI Express AER (AER Endpoint) */
  599. struct acpi_hest_aer {
  600. struct acpi_hest_header header;
  601. struct acpi_hest_aer_common aer;
  602. };
  603. /* 8: PCI Express/PCI-X Bridge AER */
  604. struct acpi_hest_aer_bridge {
  605. struct acpi_hest_header header;
  606. struct acpi_hest_aer_common aer;
  607. u32 secondary_uncorrectable_error_mask;
  608. u32 secondary_uncorrectable_error_severity;
  609. u32 secondary_advanced_capabilities;
  610. };
  611. /* 9: Generic Hardware Error Source */
  612. struct acpi_hest_generic {
  613. struct acpi_hest_header header;
  614. u16 source_id;
  615. u16 related_source_id;
  616. u8 config_write_enable;
  617. u8 enabled;
  618. u32 records_to_pre_allocate;
  619. u32 max_sections_per_record;
  620. u32 max_raw_data_length;
  621. struct acpi_generic_address error_status_address;
  622. struct acpi_hest_notify notify;
  623. u32 error_status_block_length;
  624. };
  625. /*******************************************************************************
  626. *
  627. * HPET - High Precision Event Timer table
  628. *
  629. ******************************************************************************/
  630. struct acpi_table_hpet {
  631. struct acpi_table_header header; /* Common ACPI table header */
  632. u32 id; /* Hardware ID of event timer block */
  633. struct acpi_generic_address address; /* Address of event timer block */
  634. u8 sequence; /* HPET sequence number */
  635. u16 minimum_tick; /* Main counter min tick, periodic mode */
  636. u8 flags;
  637. };
  638. /*! Flags */
  639. #define ACPI_HPET_PAGE_PROTECT (1) /* 00: No page protection */
  640. #define ACPI_HPET_PAGE_PROTECT_4 (1<<1) /* 01: 4KB page protected */
  641. #define ACPI_HPET_PAGE_PROTECT_64 (1<<2) /* 02: 64KB page protected */
  642. /*! [End] no source code translation !*/
  643. /*******************************************************************************
  644. *
  645. * IBFT - Boot Firmware Table
  646. *
  647. ******************************************************************************/
  648. struct acpi_table_ibft {
  649. struct acpi_table_header header; /* Common ACPI table header */
  650. u8 reserved[12];
  651. };
  652. /* IBFT common subtable header */
  653. struct acpi_ibft_header {
  654. u8 type;
  655. u8 version;
  656. u16 length;
  657. u8 index;
  658. u8 flags;
  659. };
  660. /* Values for Type field above */
  661. enum acpi_ibft_type {
  662. ACPI_IBFT_TYPE_NOT_USED = 0,
  663. ACPI_IBFT_TYPE_CONTROL = 1,
  664. ACPI_IBFT_TYPE_INITIATOR = 2,
  665. ACPI_IBFT_TYPE_NIC = 3,
  666. ACPI_IBFT_TYPE_TARGET = 4,
  667. ACPI_IBFT_TYPE_EXTENSIONS = 5,
  668. ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */
  669. };
  670. /* IBFT subtables */
  671. struct acpi_ibft_control {
  672. struct acpi_ibft_header header;
  673. u16 extensions;
  674. u16 initiator_offset;
  675. u16 nic0_offset;
  676. u16 target0_offset;
  677. u16 nic1_offset;
  678. u16 target1_offset;
  679. };
  680. struct acpi_ibft_initiator {
  681. struct acpi_ibft_header header;
  682. u8 sns_server[16];
  683. u8 slp_server[16];
  684. u8 primary_server[16];
  685. u8 secondary_server[16];
  686. u16 name_length;
  687. u16 name_offset;
  688. };
  689. struct acpi_ibft_nic {
  690. struct acpi_ibft_header header;
  691. u8 ip_address[16];
  692. u8 subnet_mask_prefix;
  693. u8 origin;
  694. u8 gateway[16];
  695. u8 primary_dns[16];
  696. u8 secondary_dns[16];
  697. u8 dhcp[16];
  698. u16 vlan;
  699. u8 mac_address[6];
  700. u16 pci_address;
  701. u16 name_length;
  702. u16 name_offset;
  703. };
  704. struct acpi_ibft_target {
  705. struct acpi_ibft_header header;
  706. u8 target_ip_address[16];
  707. u16 target_ip_socket;
  708. u8 target_boot_lun[8];
  709. u8 chap_type;
  710. u8 nic_association;
  711. u16 target_name_length;
  712. u16 target_name_offset;
  713. u16 chap_name_length;
  714. u16 chap_name_offset;
  715. u16 chap_secret_length;
  716. u16 chap_secret_offset;
  717. u16 reverse_chap_name_length;
  718. u16 reverse_chap_name_offset;
  719. u16 reverse_chap_secret_length;
  720. u16 reverse_chap_secret_offset;
  721. };
  722. /*******************************************************************************
  723. *
  724. * MADT - Multiple APIC Description Table
  725. *
  726. ******************************************************************************/
  727. struct acpi_table_madt {
  728. struct acpi_table_header header; /* Common ACPI table header */
  729. u32 address; /* Physical address of local APIC */
  730. u32 flags;
  731. };
  732. /* Flags */
  733. #define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */
  734. /* Values for PCATCompat flag */
  735. #define ACPI_MADT_DUAL_PIC 0
  736. #define ACPI_MADT_MULTIPLE_APIC 1
  737. /* Values for subtable type in struct acpi_subtable_header */
  738. enum acpi_madt_type {
  739. ACPI_MADT_TYPE_LOCAL_APIC = 0,
  740. ACPI_MADT_TYPE_IO_APIC = 1,
  741. ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2,
  742. ACPI_MADT_TYPE_NMI_SOURCE = 3,
  743. ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4,
  744. ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5,
  745. ACPI_MADT_TYPE_IO_SAPIC = 6,
  746. ACPI_MADT_TYPE_LOCAL_SAPIC = 7,
  747. ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8,
  748. ACPI_MADT_TYPE_RESERVED = 9 /* 9 and greater are reserved */
  749. };
  750. /*
  751. * MADT Sub-tables, correspond to Type in struct acpi_subtable_header
  752. */
  753. /* 0: Processor Local APIC */
  754. struct acpi_madt_local_apic {
  755. struct acpi_subtable_header header;
  756. u8 processor_id; /* ACPI processor id */
  757. u8 id; /* Processor's local APIC id */
  758. u32 lapic_flags;
  759. };
  760. /* 1: IO APIC */
  761. struct acpi_madt_io_apic {
  762. struct acpi_subtable_header header;
  763. u8 id; /* I/O APIC ID */
  764. u8 reserved; /* Reserved - must be zero */
  765. u32 address; /* APIC physical address */
  766. u32 global_irq_base; /* Global system interrupt where INTI lines start */
  767. };
  768. /* 2: Interrupt Override */
  769. struct acpi_madt_interrupt_override {
  770. struct acpi_subtable_header header;
  771. u8 bus; /* 0 - ISA */
  772. u8 source_irq; /* Interrupt source (IRQ) */
  773. u32 global_irq; /* Global system interrupt */
  774. u16 inti_flags;
  775. };
  776. /* 3: NMI Source */
  777. struct acpi_madt_nmi_source {
  778. struct acpi_subtable_header header;
  779. u16 inti_flags;
  780. u32 global_irq; /* Global system interrupt */
  781. };
  782. /* 4: Local APIC NMI */
  783. struct acpi_madt_local_apic_nmi {
  784. struct acpi_subtable_header header;
  785. u8 processor_id; /* ACPI processor id */
  786. u16 inti_flags;
  787. u8 lint; /* LINTn to which NMI is connected */
  788. };
  789. /* 5: Address Override */
  790. struct acpi_madt_local_apic_override {
  791. struct acpi_subtable_header header;
  792. u16 reserved; /* Reserved, must be zero */
  793. u64 address; /* APIC physical address */
  794. };
  795. /* 6: I/O Sapic */
  796. struct acpi_madt_io_sapic {
  797. struct acpi_subtable_header header;
  798. u8 id; /* I/O SAPIC ID */
  799. u8 reserved; /* Reserved, must be zero */
  800. u32 global_irq_base; /* Global interrupt for SAPIC start */
  801. u64 address; /* SAPIC physical address */
  802. };
  803. /* 7: Local Sapic */
  804. struct acpi_madt_local_sapic {
  805. struct acpi_subtable_header header;
  806. u8 processor_id; /* ACPI processor id */
  807. u8 id; /* SAPIC ID */
  808. u8 eid; /* SAPIC EID */
  809. u8 reserved[3]; /* Reserved, must be zero */
  810. u32 lapic_flags;
  811. u32 uid; /* Numeric UID - ACPI 3.0 */
  812. char uid_string[1]; /* String UID - ACPI 3.0 */
  813. };
  814. /* 8: Platform Interrupt Source */
  815. struct acpi_madt_interrupt_source {
  816. struct acpi_subtable_header header;
  817. u16 inti_flags;
  818. u8 type; /* 1=PMI, 2=INIT, 3=corrected */
  819. u8 id; /* Processor ID */
  820. u8 eid; /* Processor EID */
  821. u8 io_sapic_vector; /* Vector value for PMI interrupts */
  822. u32 global_irq; /* Global system interrupt */
  823. u32 flags; /* Interrupt Source Flags */
  824. };
  825. /* Flags field above */
  826. #define ACPI_MADT_CPEI_OVERRIDE (1)
  827. /*
  828. * Common flags fields for MADT subtables
  829. */
  830. /* MADT Local APIC flags (lapic_flags) */
  831. #define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */
  832. /* MADT MPS INTI flags (inti_flags) */
  833. #define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */
  834. #define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */
  835. /* Values for MPS INTI flags */
  836. #define ACPI_MADT_POLARITY_CONFORMS 0
  837. #define ACPI_MADT_POLARITY_ACTIVE_HIGH 1
  838. #define ACPI_MADT_POLARITY_RESERVED 2
  839. #define ACPI_MADT_POLARITY_ACTIVE_LOW 3
  840. #define ACPI_MADT_TRIGGER_CONFORMS (0)
  841. #define ACPI_MADT_TRIGGER_EDGE (1<<2)
  842. #define ACPI_MADT_TRIGGER_RESERVED (2<<2)
  843. #define ACPI_MADT_TRIGGER_LEVEL (3<<2)
  844. /*******************************************************************************
  845. *
  846. * MCFG - PCI Memory Mapped Configuration table and sub-table
  847. *
  848. ******************************************************************************/
  849. struct acpi_table_mcfg {
  850. struct acpi_table_header header; /* Common ACPI table header */
  851. u8 reserved[8];
  852. };
  853. /* Subtable */
  854. struct acpi_mcfg_allocation {
  855. u64 address; /* Base address, processor-relative */
  856. u16 pci_segment; /* PCI segment group number */
  857. u8 start_bus_number; /* Starting PCI Bus number */
  858. u8 end_bus_number; /* Final PCI Bus number */
  859. u32 reserved;
  860. };
  861. /*******************************************************************************
  862. *
  863. * SBST - Smart Battery Specification Table
  864. *
  865. ******************************************************************************/
  866. struct acpi_table_sbst {
  867. struct acpi_table_header header; /* Common ACPI table header */
  868. u32 warning_level;
  869. u32 low_level;
  870. u32 critical_level;
  871. };
  872. /*******************************************************************************
  873. *
  874. * SLIT - System Locality Distance Information Table
  875. *
  876. ******************************************************************************/
  877. struct acpi_table_slit {
  878. struct acpi_table_header header; /* Common ACPI table header */
  879. u64 locality_count;
  880. u8 entry[1]; /* Real size = localities^2 */
  881. };
  882. /*******************************************************************************
  883. *
  884. * SPCR - Serial Port Console Redirection table
  885. *
  886. ******************************************************************************/
  887. struct acpi_table_spcr {
  888. struct acpi_table_header header; /* Common ACPI table header */
  889. u8 interface_type; /* 0=full 16550, 1=subset of 16550 */
  890. u8 reserved[3];
  891. struct acpi_generic_address serial_port;
  892. u8 interrupt_type;
  893. u8 pc_interrupt;
  894. u32 interrupt;
  895. u8 baud_rate;
  896. u8 parity;
  897. u8 stop_bits;
  898. u8 flow_control;
  899. u8 terminal_type;
  900. u8 reserved1;
  901. u16 pci_device_id;
  902. u16 pci_vendor_id;
  903. u8 pci_bus;
  904. u8 pci_device;
  905. u8 pci_function;
  906. u32 pci_flags;
  907. u8 pci_segment;
  908. u32 reserved2;
  909. };
  910. /*******************************************************************************
  911. *
  912. * SPMI - Server Platform Management Interface table
  913. *
  914. ******************************************************************************/
  915. struct acpi_table_spmi {
  916. struct acpi_table_header header; /* Common ACPI table header */
  917. u8 reserved;
  918. u8 interface_type;
  919. u16 spec_revision; /* Version of IPMI */
  920. u8 interrupt_type;
  921. u8 gpe_number; /* GPE assigned */
  922. u8 reserved1;
  923. u8 pci_device_flag;
  924. u32 interrupt;
  925. struct acpi_generic_address ipmi_register;
  926. u8 pci_segment;
  927. u8 pci_bus;
  928. u8 pci_device;
  929. u8 pci_function;
  930. };
  931. /*******************************************************************************
  932. *
  933. * SRAT - System Resource Affinity Table
  934. *
  935. ******************************************************************************/
  936. struct acpi_table_srat {
  937. struct acpi_table_header header; /* Common ACPI table header */
  938. u32 table_revision; /* Must be value '1' */
  939. u64 reserved; /* Reserved, must be zero */
  940. };
  941. /* Values for subtable type in struct acpi_subtable_header */
  942. enum acpi_srat_type {
  943. ACPI_SRAT_TYPE_CPU_AFFINITY = 0,
  944. ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
  945. ACPI_SRAT_TYPE_RESERVED = 2
  946. };
  947. /* SRAT sub-tables */
  948. struct acpi_srat_cpu_affinity {
  949. struct acpi_subtable_header header;
  950. u8 proximity_domain_lo;
  951. u8 apic_id;
  952. u32 flags;
  953. u8 local_sapic_eid;
  954. u8 proximity_domain_hi[3];
  955. u32 reserved; /* Reserved, must be zero */
  956. };
  957. /* Flags */
  958. #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */
  959. struct acpi_srat_mem_affinity {
  960. struct acpi_subtable_header header;
  961. u32 proximity_domain;
  962. u16 reserved; /* Reserved, must be zero */
  963. u64 base_address;
  964. u64 length;
  965. u32 memory_type; /* See acpi_address_range_id */
  966. u32 flags;
  967. u64 reserved1; /* Reserved, must be zero */
  968. };
  969. /* Flags */
  970. #define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */
  971. #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */
  972. #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */
  973. /*******************************************************************************
  974. *
  975. * TCPA - Trusted Computing Platform Alliance table
  976. *
  977. ******************************************************************************/
  978. struct acpi_table_tcpa {
  979. struct acpi_table_header header; /* Common ACPI table header */
  980. u16 reserved;
  981. u32 max_log_length; /* Maximum length for the event log area */
  982. u64 log_address; /* Address of the event log area */
  983. };
  984. /*******************************************************************************
  985. *
  986. * UEFI - UEFI Boot optimization Table
  987. *
  988. ******************************************************************************/
  989. struct acpi_table_uefi {
  990. struct acpi_table_header header; /* Common ACPI table header */
  991. u8 identifier[16]; /* UUID identifier */
  992. u16 data_offset; /* Offset of remaining data in table */
  993. u8 data;
  994. };
  995. /*******************************************************************************
  996. *
  997. * WDAT - Watchdog Action Table
  998. *
  999. ******************************************************************************/
  1000. struct acpi_table_wdat {
  1001. struct acpi_table_header header; /* Common ACPI table header */
  1002. u32 header_length; /* Watchdog Header Length */
  1003. u16 pci_segment; /* PCI Segment number */
  1004. u8 pci_bus; /* PCI Bus number */
  1005. u8 pci_device; /* PCI Device number */
  1006. u8 pci_function; /* PCI Function number */
  1007. u8 reserved[3];
  1008. u32 timer_period; /* Period of one timer count (msec) */
  1009. u32 max_count; /* Maximum counter value supported */
  1010. u32 min_count; /* Minimum counter value */
  1011. u8 flags;
  1012. u8 reserved2[3];
  1013. u32 entries; /* Number of watchdog entries that follow */
  1014. };
  1015. /* WDAT Instruction Entries (actions) */
  1016. struct acpi_wdat_entry {
  1017. struct acpi_whea_header whea_header; /* Common header for WHEA tables */
  1018. };
  1019. /* Values for Action field above */
  1020. enum acpi_wdat_actions {
  1021. ACPI_WDAT_RESET = 1,
  1022. ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4,
  1023. ACPI_WDAT_GET_COUNTDOWN = 5,
  1024. ACPI_WDAT_SET_COUNTDOWN = 6,
  1025. ACPI_WDAT_GET_RUNNING_STATE = 8,
  1026. ACPI_WDAT_SET_RUNNING_STATE = 9,
  1027. ACPI_WDAT_GET_STOPPED_STATE = 10,
  1028. ACPI_WDAT_SET_STOPPED_STATE = 11,
  1029. ACPI_WDAT_GET_REBOOT = 16,
  1030. ACPI_WDAT_SET_REBOOT = 17,
  1031. ACPI_WDAT_GET_SHUTDOWN = 18,
  1032. ACPI_WDAT_SET_SHUTDOWN = 19,
  1033. ACPI_WDAT_GET_STATUS = 32,
  1034. ACPI_WDAT_SET_STATUS = 33,
  1035. ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */
  1036. };
  1037. /* Values for Instruction field above */
  1038. enum acpi_wdat_instructions {
  1039. ACPI_WDAT_READ_VALUE = 0,
  1040. ACPI_WDAT_READ_COUNTDOWN = 1,
  1041. ACPI_WDAT_WRITE_VALUE = 2,
  1042. ACPI_WDAT_WRITE_COUNTDOWN = 3,
  1043. ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */
  1044. ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */
  1045. };
  1046. /*******************************************************************************
  1047. *
  1048. * WDRT - Watchdog Resource Table
  1049. *
  1050. ******************************************************************************/
  1051. struct acpi_table_wdrt {
  1052. struct acpi_table_header header; /* Common ACPI table header */
  1053. u32 header_length; /* Watchdog Header Length */
  1054. u8 pci_segment; /* PCI Segment number */
  1055. u8 pci_bus; /* PCI Bus number */
  1056. u8 pci_device; /* PCI Device number */
  1057. u8 pci_function; /* PCI Function number */
  1058. u32 timer_period; /* Period of one timer count (msec) */
  1059. u32 max_count; /* Maximum counter value supported */
  1060. u32 min_count; /* Minimum counter value */
  1061. u8 flags;
  1062. u8 reserved[3];
  1063. u32 entries; /* Number of watchdog entries that follow */
  1064. };
  1065. /* Flags */
  1066. #define ACPI_WDRT_TIMER_ENABLED (1) /* 00: Timer enabled */
  1067. /* Reset to default packing */
  1068. #pragma pack()
  1069. #endif /* __ACTBL1_H__ */