Advertisement
Guest User

fglrx 9-2 linux 2629

a guest
Feb 28th, 2009
742
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 62.59 KB | None | 0 0
  1.   patch fglrx 9-2 aka 8.582 to work with linux 2.6.29
  2.     **** new version ****
  3.    
  4.    contains files from acpica.org
  5.  
  6.     USE AT YOUR OWN RISK
  7.  
  8. diff -Naurp a/2.6.x/Makefile b/2.6.x/Makefile
  9. --- a/2.6.x/Makefile    2009-02-28 21:53:58.000000000 +0100
  10. +++ b/2.6.x/Makefile    2009-02-28 22:24:38.000000000 +0100
  11. @@ -55,7 +55,10 @@ fglrx-hdrs      += firegl_public.h      
  12.                     kcl_pci.h            \
  13.                     kcl_str.h            \
  14.                     kcl_type.h           \
  15. -                   kcl_wait.h
  16. +                   kcl_wait.h      \
  17. +          acpica-acconfig.h    \
  18. +          acpica-aclocal.h     \
  19. +          acpica-acobject.h    
  20.                    
  21.  drm-hdrs        += drm.h drmP.h drm_os_linux.h drm_proc.h drm_compat.h
  22.  
  23. diff -Naurp a/acpica-acconfig.h b/acpica-acconfig.h
  24. --- a/acpica-acconfig.h 1970-01-01 01:00:00.000000000 +0100
  25. +++ b/acpica-acconfig.h 2009-02-28 22:24:01.000000000 +0100
  26. @@ -0,0 +1,217 @@
  27. +/******************************************************************************
  28. + *
  29. + * Name: acconfig.h - Global configuration constants
  30. + *
  31. + *****************************************************************************/
  32. +
  33. +/*
  34. + * Copyright (C) 2000 - 2008, Intel Corp.
  35. + * All rights reserved.
  36. + *
  37. + * Redistribution and use in source and binary forms, with or without
  38. + * modification, are permitted provided that the following conditions
  39. + * are met:
  40. + * 1. Redistributions of source code must retain the above copyright
  41. + *    notice, this list of conditions, and the following disclaimer,
  42. + *    without modification.
  43. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
  44. + *    substantially similar to the "NO WARRANTY" disclaimer below
  45. + *    ("Disclaimer") and any redistribution must be conditioned upon
  46. + *    including a substantially similar Disclaimer requirement for further
  47. + *    binary redistribution.
  48. + * 3. Neither the names of the above-listed copyright holders nor the names
  49. + *    of any contributors may be used to endorse or promote products derived
  50. + *    from this software without specific prior written permission.
  51. + *
  52. + * Alternatively, this software may be distributed under the terms of the
  53. + * GNU General Public License ("GPL") version 2 as published by the Free
  54. + * Software Foundation.
  55. + *
  56. + * NO WARRANTY
  57. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  58. + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  59. + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
  60. + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  61. + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  62. + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  63. + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  64. + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  65. + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  66. + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  67. + * POSSIBILITY OF SUCH DAMAGES.
  68. + */
  69. +
  70. +#ifndef _ACCONFIG_H
  71. +#define _ACCONFIG_H
  72. +
  73. +/******************************************************************************
  74. + *
  75. + * Configuration options
  76. + *
  77. + *****************************************************************************/
  78. +
  79. +/*
  80. + * ACPI_DEBUG_OUTPUT    - This switch enables all the debug facilities of the
  81. + *                        ACPI subsystem.  This includes the DEBUG_PRINT output
  82. + *                        statements.  When disabled, all DEBUG_PRINT
  83. + *                        statements are compiled out.
  84. + *
  85. + * ACPI_APPLICATION     - Use this switch if the subsystem is going to be run
  86. + *                        at the application level.
  87. + *
  88. + */
  89. +
  90. +/*
  91. + * OS name, used for the _OS object.  The _OS object is essentially obsolete,
  92. + * but there is a large base of ASL/AML code in existing machines that check
  93. + * for the string below.  The use of this string usually guarantees that
  94. + * the ASL will execute down the most tested code path.  Also, there is some
  95. + * code that will not execute the _OSI method unless _OS matches the string
  96. + * below.  Therefore, change this string at your own risk.
  97. + */
  98. +#define ACPI_OS_NAME                    "Microsoft Windows NT"
  99. +
  100. +/* Maximum objects in the various object caches */
  101. +
  102. +#define ACPI_MAX_STATE_CACHE_DEPTH      96 /* State objects */
  103. +#define ACPI_MAX_PARSE_CACHE_DEPTH      96 /* Parse tree objects */
  104. +#define ACPI_MAX_EXTPARSE_CACHE_DEPTH   96 /* Parse tree objects */
  105. +#define ACPI_MAX_OBJECT_CACHE_DEPTH     96 /* Interpreter operand objects */
  106. +#define ACPI_MAX_NAMESPACE_CACHE_DEPTH  96 /* Namespace objects */
  107. +
  108. +/*
  109. + * Should the subsystem abort the loading of an ACPI table if the
  110. + * table checksum is incorrect?
  111. + */
  112. +#define ACPI_CHECKSUM_ABORT             FALSE
  113. +
  114. +/******************************************************************************
  115. + *
  116. + * Subsystem Constants
  117. + *
  118. + *****************************************************************************/
  119. +
  120. +/* Version of ACPI supported */
  121. +
  122. +#define ACPI_CA_SUPPORT_LEVEL           3
  123. +
  124. +/* Maximum count for a semaphore object */
  125. +
  126. +#define ACPI_MAX_SEMAPHORE_COUNT        256
  127. +
  128. +/* Maximum object reference count (detects object deletion issues) */
  129. +
  130. +#define ACPI_MAX_REFERENCE_COUNT        0x1000
  131. +
  132. +/* Size of cached memory mapping for system memory operation region */
  133. +
  134. +#define ACPI_SYSMEM_REGION_WINDOW_SIZE  4096
  135. +
  136. +/* owner_id tracking. 8 entries allows for 255 owner_ids */
  137. +
  138. +#define ACPI_NUM_OWNERID_MASKS          8
  139. +
  140. +/* Size of the root table array is increased by this increment */
  141. +
  142. +#define ACPI_ROOT_TABLE_SIZE_INCREMENT  4
  143. +
  144. +/* Maximum number of While() loop iterations before forced abort */
  145. +
  146. +#define ACPI_MAX_LOOP_ITERATIONS        0xFFFF
  147. +
  148. +/******************************************************************************
  149. + *
  150. + * ACPI Specification constants (Do not change unless the specification changes)
  151. + *
  152. + *****************************************************************************/
  153. +
  154. +/* Number of distinct GPE register blocks and register width */
  155. +
  156. +#define ACPI_MAX_GPE_BLOCKS             2
  157. +#define ACPI_GPE_REGISTER_WIDTH         8
  158. +
  159. +/* Method info (in WALK_STATE), containing local variables and argumetns */
  160. +
  161. +#define ACPI_METHOD_NUM_LOCALS          8
  162. +#define ACPI_METHOD_MAX_LOCAL           7
  163. +
  164. +#define ACPI_METHOD_NUM_ARGS            7
  165. +#define ACPI_METHOD_MAX_ARG             6
  166. +
  167. +/* Length of _HID, _UID, _CID, and UUID values */
  168. +
  169. +#define ACPI_DEVICE_ID_LENGTH           0x09
  170. +#define ACPI_MAX_CID_LENGTH             48
  171. +#define ACPI_UUID_LENGTH                16
  172. +
  173. +/*
  174. + * Operand Stack (in WALK_STATE), Must be large enough to contain METHOD_MAX_ARG
  175. + */
  176. +#define ACPI_OBJ_NUM_OPERANDS           8
  177. +#define ACPI_OBJ_MAX_OPERAND            7
  178. +
  179. +/* Number of elements in the Result Stack frame, can be an arbitrary value */
  180. +
  181. +#define ACPI_RESULTS_FRAME_OBJ_NUM      8
  182. +
  183. +/*
  184. + * Maximal number of elements the Result Stack can contain,
  185. + * it may be an arbitray value not exceeding the types of
  186. + * result_size and result_count (now u8).
  187. + */
  188. +#define ACPI_RESULTS_OBJ_NUM_MAX        255
  189. +
  190. +/* Names within the namespace are 4 bytes long */
  191. +
  192. +#define ACPI_NAME_SIZE                  4
  193. +#define ACPI_PATH_SEGMENT_LENGTH        5  /* 4 chars for name + 1 char for separator */
  194. +#define ACPI_PATH_SEPARATOR             '.'
  195. +
  196. +/* Sizes for ACPI table headers */
  197. +
  198. +#define ACPI_OEM_ID_SIZE                6
  199. +#define ACPI_OEM_TABLE_ID_SIZE          8
  200. +
  201. +/* Constants used in searching for the RSDP in low memory */
  202. +
  203. +#define ACPI_EBDA_PTR_LOCATION          0x0000040E /* Physical Address */
  204. +#define ACPI_EBDA_PTR_LENGTH            2
  205. +#define ACPI_EBDA_WINDOW_SIZE           1024
  206. +#define ACPI_HI_RSDP_WINDOW_BASE        0x000E0000 /* Physical Address */
  207. +#define ACPI_HI_RSDP_WINDOW_SIZE        0x00020000
  208. +#define ACPI_RSDP_SCAN_STEP             16
  209. +
  210. +/* Operation regions */
  211. +
  212. +#define ACPI_NUM_PREDEFINED_REGIONS     8
  213. +#define ACPI_USER_REGION_BEGIN          0x80
  214. +
  215. +/* Maximum space_ids for Operation Regions */
  216. +
  217. +#define ACPI_MAX_ADDRESS_SPACE          255
  218. +
  219. +/* Array sizes.  Used for range checking also */
  220. +
  221. +#define ACPI_MAX_MATCH_OPCODE           5
  222. +
  223. +/* RSDP checksums */
  224. +
  225. +#define ACPI_RSDP_CHECKSUM_LENGTH       20
  226. +#define ACPI_RSDP_XCHECKSUM_LENGTH      36
  227. +
  228. +/* SMBus bidirectional buffer size */
  229. +
  230. +#define ACPI_SMBUS_BUFFER_SIZE          34
  231. +
  232. +/******************************************************************************
  233. + *
  234. + * ACPI AML Debugger
  235. + *
  236. + *****************************************************************************/
  237. +
  238. +#define ACPI_DEBUGGER_MAX_ARGS          8  /* Must be max method args + 1 */
  239. +
  240. +#define ACPI_DEBUGGER_COMMAND_PROMPT    '-'
  241. +#define ACPI_DEBUGGER_EXECUTE_PROMPT    '%'
  242. +
  243. +#endif             /* _ACCONFIG_H */
  244. diff -Naurp a/acpica-aclocal.h b/acpica-aclocal.h
  245. --- a/acpica-aclocal.h  1970-01-01 01:00:00.000000000 +0100
  246. +++ b/acpica-aclocal.h  2009-02-28 21:35:32.000000000 +0100
  247. @@ -0,0 +1,990 @@
  248. +/******************************************************************************
  249. + *
  250. + * Name: aclocal.h - Internal data types used across the ACPI subsystem
  251. + *
  252. + *****************************************************************************/
  253. +
  254. +/*
  255. + * Copyright (C) 2000 - 2008, Intel Corp.
  256. + * All rights reserved.
  257. + *
  258. + * Redistribution and use in source and binary forms, with or without
  259. + * modification, are permitted provided that the following conditions
  260. + * are met:
  261. + * 1. Redistributions of source code must retain the above copyright
  262. + *    notice, this list of conditions, and the following disclaimer,
  263. + *    without modification.
  264. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
  265. + *    substantially similar to the "NO WARRANTY" disclaimer below
  266. + *    ("Disclaimer") and any redistribution must be conditioned upon
  267. + *    including a substantially similar Disclaimer requirement for further
  268. + *    binary redistribution.
  269. + * 3. Neither the names of the above-listed copyright holders nor the names
  270. + *    of any contributors may be used to endorse or promote products derived
  271. + *    from this software without specific prior written permission.
  272. + *
  273. + * Alternatively, this software may be distributed under the terms of the
  274. + * GNU General Public License ("GPL") version 2 as published by the Free
  275. + * Software Foundation.
  276. + *
  277. + * NO WARRANTY
  278. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  279. + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  280. + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
  281. + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  282. + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  283. + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  284. + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  285. + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  286. + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  287. + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  288. + * POSSIBILITY OF SUCH DAMAGES.
  289. + */
  290. +
  291. +#ifndef __ACLOCAL_H__
  292. +#define __ACLOCAL_H__
  293. +
  294. +/* acpisrc:struct_defs -- for acpisrc conversion */
  295. +
  296. +#define ACPI_SERIALIZED                 0xFF
  297. +
  298. +typedef u32 acpi_mutex_handle;
  299. +#define ACPI_GLOBAL_LOCK                (acpi_semaphore) (-1)
  300. +
  301. +/* Total number of aml opcodes defined */
  302. +
  303. +#define AML_NUM_OPCODES                 0x7F
  304. +
  305. +/* Forward declarations */
  306. +
  307. +struct acpi_walk_state;
  308. +struct acpi_obj_mutex;
  309. +union acpi_parse_object;
  310. +
  311. +/*****************************************************************************
  312. + *
  313. + * Mutex typedefs and structs
  314. + *
  315. + ****************************************************************************/
  316. +
  317. +/*
  318. + * Predefined handles for the mutex objects used within the subsystem
  319. + * All mutex objects are automatically created by acpi_ut_mutex_initialize.
  320. + *
  321. + * The acquire/release ordering protocol is implied via this list. Mutexes
  322. + * with a lower value must be acquired before mutexes with a higher value.
  323. + *
  324. + * NOTE: any changes here must be reflected in the acpi_gbl_mutex_names
  325. + * table below also!
  326. + */
  327. +#define ACPI_MTX_INTERPRETER            0  /* AML Interpreter, main lock */
  328. +#define ACPI_MTX_NAMESPACE              1  /* ACPI Namespace */
  329. +#define ACPI_MTX_TABLES                 2  /* Data for ACPI tables */
  330. +#define ACPI_MTX_EVENTS                 3  /* Data for ACPI events */
  331. +#define ACPI_MTX_CACHES                 4  /* Internal caches, general purposes */
  332. +#define ACPI_MTX_MEMORY                 5  /* Debug memory tracking lists */
  333. +#define ACPI_MTX_DEBUG_CMD_COMPLETE     6  /* AML debugger */
  334. +#define ACPI_MTX_DEBUG_CMD_READY        7  /* AML debugger */
  335. +
  336. +#define ACPI_MAX_MUTEX                  7
  337. +#define ACPI_NUM_MUTEX                  ACPI_MAX_MUTEX+1
  338. +
  339. +#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
  340. +#ifdef DEFINE_ACPI_GLOBALS
  341. +
  342. +/* Debug names for the mutexes above */
  343. +
  344. +static char *acpi_gbl_mutex_names[ACPI_NUM_MUTEX] = {
  345. +   "ACPI_MTX_Interpreter",
  346. +   "ACPI_MTX_Namespace",
  347. +   "ACPI_MTX_Tables",
  348. +   "ACPI_MTX_Events",
  349. +   "ACPI_MTX_Caches",
  350. +   "ACPI_MTX_Memory",
  351. +   "ACPI_MTX_CommandComplete",
  352. +   "ACPI_MTX_CommandReady"
  353. +};
  354. +
  355. +#endif
  356. +#endif
  357. +
  358. +/*
  359. + * Predefined handles for spinlocks used within the subsystem.
  360. + * These spinlocks are created by acpi_ut_mutex_initialize
  361. + */
  362. +#define ACPI_LOCK_GPES                  0
  363. +#define ACPI_LOCK_HARDWARE              1
  364. +
  365. +#define ACPI_MAX_LOCK                   1
  366. +#define ACPI_NUM_LOCK                   ACPI_MAX_LOCK+1
  367. +
  368. +/* This Thread ID means that the mutex is not in use (unlocked) */
  369. +
  370. +#define ACPI_MUTEX_NOT_ACQUIRED         (acpi_thread_id) 0
  371. +
  372. +/* Table for the global mutexes */
  373. +
  374. +struct acpi_mutex_info {
  375. +   acpi_mutex mutex;
  376. +   u32 use_count;
  377. +   acpi_thread_id thread_id;
  378. +};
  379. +
  380. +/* Lock flag parameter for various interfaces */
  381. +
  382. +#define ACPI_MTX_DO_NOT_LOCK            0
  383. +#define ACPI_MTX_LOCK                   1
  384. +
  385. +/* Field access granularities */
  386. +
  387. +#define ACPI_FIELD_BYTE_GRANULARITY     1
  388. +#define ACPI_FIELD_WORD_GRANULARITY     2
  389. +#define ACPI_FIELD_DWORD_GRANULARITY    4
  390. +#define ACPI_FIELD_QWORD_GRANULARITY    8
  391. +
  392. +#define ACPI_ENTRY_NOT_FOUND            NULL
  393. +
  394. +/*****************************************************************************
  395. + *
  396. + * Namespace typedefs and structs
  397. + *
  398. + ****************************************************************************/
  399. +
  400. +/* Operational modes of the AML interpreter/scanner */
  401. +
  402. +typedef enum {
  403. +   ACPI_IMODE_LOAD_PASS1 = 0x01,
  404. +   ACPI_IMODE_LOAD_PASS2 = 0x02,
  405. +   ACPI_IMODE_EXECUTE = 0x03
  406. +} acpi_interpreter_mode;
  407. +
  408. +/*
  409. + * The Namespace Node describes a named object that appears in the AML.
  410. + * descriptor_type is used to differentiate between internal descriptors.
  411. + *
  412. + * The node is optimized for both 32-bit and 64-bit platforms:
  413. + * 20 bytes for the 32-bit case, 32 bytes for the 64-bit case.
  414. + *
  415. + * Note: The descriptor_type and Type fields must appear in the identical
  416. + * position in both the struct acpi_namespace_node and union acpi_operand_object
  417. + * structures.
  418. + */
  419. +struct acpi_namespace_node {
  420. +   union acpi_operand_object *object;  /* Interpreter object */
  421. +   u8 descriptor_type; /* Differentiate object descriptor types */
  422. +   u8 type;        /* ACPI Type associated with this name */
  423. +   u8 flags;       /* Miscellaneous flags */
  424. +   acpi_owner_id owner_id; /* Node creator */
  425. +   union acpi_name_union name; /* ACPI Name, always 4 chars per ACPI spec */
  426. +   struct acpi_namespace_node *child;  /* First child */
  427. +   struct acpi_namespace_node *peer;   /* Peer. Parent if ANOBJ_END_OF_PEER_LIST set */
  428. +
  429. +   /*
  430. +    * The following fields are used by the ASL compiler and disassembler only
  431. +    */
  432. +#ifdef ACPI_LARGE_NAMESPACE_NODE
  433. +   union acpi_parse_object *op;
  434. +   u32 value;
  435. +   u32 length;
  436. +#endif
  437. +};
  438. +
  439. +/* Namespace Node flags */
  440. +
  441. +#define ANOBJ_END_OF_PEER_LIST          0x01   /* End-of-list, Peer field points to parent */
  442. +#define ANOBJ_TEMPORARY                 0x02   /* Node is create by a method and is temporary */
  443. +#define ANOBJ_METHOD_ARG                0x04   /* Node is a method argument */
  444. +#define ANOBJ_METHOD_LOCAL              0x08   /* Node is a method local */
  445. +#define ANOBJ_SUBTREE_HAS_INI           0x10   /* Used to optimize device initialization */
  446. +#define ANOBJ_EVALUATED                 0x20   /* Set on first evaluation of node */
  447. +
  448. +#define ANOBJ_IS_EXTERNAL               0x08   /* i_aSL only: This object created via External() */
  449. +#define ANOBJ_METHOD_NO_RETVAL          0x10   /* i_aSL only: Method has no return value */
  450. +#define ANOBJ_METHOD_SOME_NO_RETVAL     0x20   /* i_aSL only: Method has at least one return value */
  451. +#define ANOBJ_IS_BIT_OFFSET             0x40   /* i_aSL only: Reference is a bit offset */
  452. +#define ANOBJ_IS_REFERENCED             0x80   /* i_aSL only: Object was referenced */
  453. +
  454. +/* One internal RSDT for table management */
  455. +
  456. +struct acpi_internal_rsdt {
  457. +   struct acpi_table_desc *tables;
  458. +   u32 count;
  459. +   u32 size;
  460. +   u8 flags;
  461. +};
  462. +
  463. +/* Flags for above */
  464. +
  465. +#define ACPI_ROOT_ORIGIN_UNKNOWN        (0)    /* ~ORIGIN_ALLOCATED */
  466. +#define ACPI_ROOT_ORIGIN_ALLOCATED      (1)
  467. +#define ACPI_ROOT_ALLOW_RESIZE          (2)
  468. +
  469. +/* Predefined (fixed) table indexes */
  470. +
  471. +#define ACPI_TABLE_INDEX_DSDT           (0)
  472. +#define ACPI_TABLE_INDEX_FACS           (1)
  473. +
  474. +struct acpi_find_context {
  475. +   char *search_for;
  476. +   acpi_handle *list;
  477. +   u32 *count;
  478. +};
  479. +
  480. +struct acpi_ns_search_data {
  481. +   struct acpi_namespace_node *node;
  482. +};
  483. +
  484. +/* Object types used during package copies */
  485. +
  486. +#define ACPI_COPY_TYPE_SIMPLE           0
  487. +#define ACPI_COPY_TYPE_PACKAGE          1
  488. +
  489. +/* Info structure used to convert external<->internal namestrings */
  490. +
  491. +struct acpi_namestring_info {
  492. +   const char *external_name;
  493. +   const char *next_external_char;
  494. +   char *internal_name;
  495. +   u32 length;
  496. +   u32 num_segments;
  497. +   u32 num_carats;
  498. +   u8 fully_qualified;
  499. +};
  500. +
  501. +/* Field creation info */
  502. +
  503. +struct acpi_create_field_info {
  504. +   struct acpi_namespace_node *region_node;
  505. +   struct acpi_namespace_node *field_node;
  506. +   struct acpi_namespace_node *register_node;
  507. +   struct acpi_namespace_node *data_register_node;
  508. +   u32 bank_value;
  509. +   u32 field_bit_position;
  510. +   u32 field_bit_length;
  511. +   u8 field_flags;
  512. +   u8 attribute;
  513. +   u8 field_type;
  514. +};
  515. +
  516. +typedef
  517. +acpi_status(*ACPI_INTERNAL_METHOD) (struct acpi_walk_state * walk_state);
  518. +
  519. +/*
  520. + * Bitmapped ACPI types.  Used internally only
  521. + */
  522. +#define ACPI_BTYPE_ANY                  0x00000000
  523. +#define ACPI_BTYPE_INTEGER              0x00000001
  524. +#define ACPI_BTYPE_STRING               0x00000002
  525. +#define ACPI_BTYPE_BUFFER               0x00000004
  526. +#define ACPI_BTYPE_PACKAGE              0x00000008
  527. +#define ACPI_BTYPE_FIELD_UNIT           0x00000010
  528. +#define ACPI_BTYPE_DEVICE               0x00000020
  529. +#define ACPI_BTYPE_EVENT                0x00000040
  530. +#define ACPI_BTYPE_METHOD               0x00000080
  531. +#define ACPI_BTYPE_MUTEX                0x00000100
  532. +#define ACPI_BTYPE_REGION               0x00000200
  533. +#define ACPI_BTYPE_POWER                0x00000400
  534. +#define ACPI_BTYPE_PROCESSOR            0x00000800
  535. +#define ACPI_BTYPE_THERMAL              0x00001000
  536. +#define ACPI_BTYPE_BUFFER_FIELD         0x00002000
  537. +#define ACPI_BTYPE_DDB_HANDLE           0x00004000
  538. +#define ACPI_BTYPE_DEBUG_OBJECT         0x00008000
  539. +#define ACPI_BTYPE_REFERENCE            0x00010000
  540. +#define ACPI_BTYPE_RESOURCE             0x00020000
  541. +
  542. +#define ACPI_BTYPE_COMPUTE_DATA         (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER)
  543. +
  544. +#define ACPI_BTYPE_DATA                 (ACPI_BTYPE_COMPUTE_DATA  | ACPI_BTYPE_PACKAGE)
  545. +#define ACPI_BTYPE_DATA_REFERENCE       (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE)
  546. +#define ACPI_BTYPE_DEVICE_OBJECTS       (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR)
  547. +#define ACPI_BTYPE_OBJECTS_AND_REFS     0x0001FFFF /* ARG or LOCAL */
  548. +#define ACPI_BTYPE_ALL_OBJECTS          0x0000FFFF
  549. +
  550. +/*
  551. + * Information structure for ACPI predefined names.
  552. + * Each entry in the table contains the following items:
  553. + *
  554. + * Name                 - The ACPI reserved name
  555. + * param_count          - Number of arguments to the method
  556. + * expected_return_btypes - Allowed type(s) for the return value
  557. + */
  558. +struct acpi_name_info {
  559. +   char name[ACPI_NAME_SIZE];
  560. +   u8 param_count;
  561. +   u8 expected_btypes;
  562. +};
  563. +
  564. +/*
  565. + * Secondary information structures for ACPI predefined objects that return
  566. + * package objects. This structure appears as the next entry in the table
  567. + * after the NAME_INFO structure above.
  568. + *
  569. + * The reason for this is to minimize the size of the predefined name table.
  570. + */
  571. +
  572. +/*
  573. + * Used for ACPI_PTYPE1_FIXED, ACPI_PTYPE1_VAR, ACPI_PTYPE2,
  574. + * ACPI_PTYPE2_MIN, ACPI_PTYPE2_PKG_COUNT, ACPI_PTYPE2_COUNT
  575. + */
  576. +struct acpi_package_info {
  577. +   u8 type;
  578. +   u8 object_type1;
  579. +   u8 count1;
  580. +   u8 object_type2;
  581. +   u8 count2;
  582. +   u8 reserved;
  583. +};
  584. +
  585. +/* Used for ACPI_PTYPE2_FIXED */
  586. +
  587. +struct acpi_package_info2 {
  588. +   u8 type;
  589. +   u8 count;
  590. +   u8 object_type[4];
  591. +};
  592. +
  593. +/* Used for ACPI_PTYPE1_OPTION */
  594. +
  595. +struct acpi_package_info3 {
  596. +   u8 type;
  597. +   u8 count;
  598. +   u8 object_type[2];
  599. +   u8 tail_object_type;
  600. +   u8 reserved;
  601. +};
  602. +
  603. +union acpi_predefined_info {
  604. +   struct acpi_name_info info;
  605. +   struct acpi_package_info ret_info;
  606. +   struct acpi_package_info2 ret_info2;
  607. +   struct acpi_package_info3 ret_info3;
  608. +};
  609. +
  610. +/*
  611. + * Bitmapped return value types
  612. + * Note: the actual data types must be contiguous, a loop in nspredef.c
  613. + * depends on this.
  614. + */
  615. +#define ACPI_RTYPE_ANY                  0x00
  616. +#define ACPI_RTYPE_NONE                 0x01
  617. +#define ACPI_RTYPE_INTEGER              0x02
  618. +#define ACPI_RTYPE_STRING               0x04
  619. +#define ACPI_RTYPE_BUFFER               0x08
  620. +#define ACPI_RTYPE_PACKAGE              0x10
  621. +#define ACPI_RTYPE_REFERENCE            0x20
  622. +#define ACPI_RTYPE_ALL                  0x3F
  623. +
  624. +#define ACPI_NUM_RTYPES                 5  /* Number of actual object types */
  625. +
  626. +/*****************************************************************************
  627. + *
  628. + * Event typedefs and structs
  629. + *
  630. + ****************************************************************************/
  631. +
  632. +/* Dispatch info for each GPE -- either a method or handler, cannot be both */
  633. +
  634. +struct acpi_handler_info {
  635. +   acpi_event_handler address; /* Address of handler, if any */
  636. +   void *context;      /* Context to be passed to handler */
  637. +   struct acpi_namespace_node *method_node;    /* Method node for this GPE level (saved) */
  638. +};
  639. +
  640. +union acpi_gpe_dispatch_info {
  641. +   struct acpi_namespace_node *method_node;    /* Method node for this GPE level */
  642. +   struct acpi_handler_info *handler;
  643. +};
  644. +
  645. +/*
  646. + * Information about a GPE, one per each GPE in an array.
  647. + * NOTE: Important to keep this struct as small as possible.
  648. + */
  649. +struct acpi_gpe_event_info {
  650. +   union acpi_gpe_dispatch_info dispatch;  /* Either Method or Handler */
  651. +   struct acpi_gpe_register_info *register_info;   /* Backpointer to register info */
  652. +   u8 flags;       /* Misc info about this GPE */
  653. +   u8 gpe_number;      /* This GPE */
  654. +};
  655. +
  656. +/* Information about a GPE register pair, one per each status/enable pair in an array */
  657. +
  658. +struct acpi_gpe_register_info {
  659. +   struct acpi_generic_address status_address; /* Address of status reg */
  660. +   struct acpi_generic_address enable_address; /* Address of enable reg */
  661. +   u8 enable_for_wake; /* GPEs to keep enabled when sleeping */
  662. +   u8 enable_for_run;  /* GPEs to keep enabled when running */
  663. +   u8 base_gpe_number; /* Base GPE number for this register */
  664. +};
  665. +
  666. +/*
  667. + * Information about a GPE register block, one per each installed block --
  668. + * GPE0, GPE1, and one per each installed GPE Block Device.
  669. + */
  670. +struct acpi_gpe_block_info {
  671. +   struct acpi_namespace_node *node;
  672. +   struct acpi_gpe_block_info *previous;
  673. +   struct acpi_gpe_block_info *next;
  674. +   struct acpi_gpe_xrupt_info *xrupt_block;    /* Backpointer to interrupt block */
  675. +   struct acpi_gpe_register_info *register_info;   /* One per GPE register pair */
  676. +   struct acpi_gpe_event_info *event_info; /* One for each GPE */
  677. +   struct acpi_generic_address block_address;  /* Base address of the block */
  678. +   u32 register_count; /* Number of register pairs in block */
  679. +   u8 block_base_number;   /* Base GPE number for this block */
  680. +};
  681. +
  682. +/* Information about GPE interrupt handlers, one per each interrupt level used for GPEs */
  683. +
  684. +struct acpi_gpe_xrupt_info {
  685. +   struct acpi_gpe_xrupt_info *previous;
  686. +   struct acpi_gpe_xrupt_info *next;
  687. +   struct acpi_gpe_block_info *gpe_block_list_head;    /* List of GPE blocks for this xrupt */
  688. +   u32 interrupt_number;   /* System interrupt number */
  689. +};
  690. +
  691. +struct acpi_gpe_walk_info {
  692. +   struct acpi_namespace_node *gpe_device;
  693. +   struct acpi_gpe_block_info *gpe_block;
  694. +};
  695. +
  696. +struct acpi_gpe_device_info {
  697. +   u32 index;
  698. +   u32 next_block_base_index;
  699. +   acpi_status status;
  700. +   struct acpi_namespace_node *gpe_device;
  701. +};
  702. +
  703. +typedef acpi_status(*acpi_gpe_callback) (struct acpi_gpe_xrupt_info *gpe_xrupt_info,
  704. +       struct acpi_gpe_block_info *gpe_block, void *context);
  705. +
  706. +/* Information about each particular fixed event */
  707. +
  708. +struct acpi_fixed_event_handler {
  709. +   acpi_event_handler handler; /* Address of handler. */
  710. +   void *context;      /* Context to be passed to handler */
  711. +};
  712. +
  713. +struct acpi_fixed_event_info {
  714. +   u8 status_register_id;
  715. +   u8 enable_register_id;
  716. +   u16 status_bit_mask;
  717. +   u16 enable_bit_mask;
  718. +};
  719. +
  720. +/* Information used during field processing */
  721. +
  722. +struct acpi_field_info {
  723. +   u8 skip_field;
  724. +   u8 field_flag;
  725. +   u32 pkg_length;
  726. +};
  727. +
  728. +/*****************************************************************************
  729. + *
  730. + * Generic "state" object for stacks
  731. + *
  732. + ****************************************************************************/
  733. +
  734. +#define ACPI_CONTROL_NORMAL                  0xC0
  735. +#define ACPI_CONTROL_CONDITIONAL_EXECUTING   0xC1
  736. +#define ACPI_CONTROL_PREDICATE_EXECUTING     0xC2
  737. +#define ACPI_CONTROL_PREDICATE_FALSE         0xC3
  738. +#define ACPI_CONTROL_PREDICATE_TRUE          0xC4
  739. +
  740. +#define ACPI_STATE_COMMON \
  741. +   void                            *next; \
  742. +   u8                              descriptor_type; /* To differentiate various internal objs */\
  743. +   u8                              flags; \
  744. +   u16                             value; \
  745. +   u16                             state;
  746. +
  747. +   /* There are 2 bytes available here until the next natural alignment boundary */
  748. +
  749. +struct acpi_common_state {
  750. +ACPI_STATE_COMMON};
  751. +
  752. +/*
  753. + * Update state - used to traverse complex objects such as packages
  754. + */
  755. +struct acpi_update_state {
  756. +   ACPI_STATE_COMMON union acpi_operand_object *object;
  757. +};
  758. +
  759. +/*
  760. + * Pkg state - used to traverse nested package structures
  761. + */
  762. +struct acpi_pkg_state {
  763. +   ACPI_STATE_COMMON u16 index;
  764. +   union acpi_operand_object *source_object;
  765. +   union acpi_operand_object *dest_object;
  766. +   struct acpi_walk_state *walk_state;
  767. +   void *this_target_obj;
  768. +   u32 num_packages;
  769. +};
  770. +
  771. +/*
  772. + * Control state - one per if/else and while constructs.
  773. + * Allows nesting of these constructs
  774. + */
  775. +struct acpi_control_state {
  776. +   ACPI_STATE_COMMON u16 opcode;
  777. +   union acpi_parse_object *predicate_op;
  778. +   u8 *aml_predicate_start;    /* Start of if/while predicate */
  779. +   u8 *package_end;    /* End of if/while block */
  780. +   u32 loop_count;     /* While() loop counter */
  781. +};
  782. +
  783. +/*
  784. + * Scope state - current scope during namespace lookups
  785. + */
  786. +struct acpi_scope_state {
  787. +   ACPI_STATE_COMMON struct acpi_namespace_node *node;
  788. +};
  789. +
  790. +struct acpi_pscope_state {
  791. +   ACPI_STATE_COMMON u32 arg_count;    /* Number of fixed arguments */
  792. +   union acpi_parse_object *op;    /* Current op being parsed */
  793. +   u8 *arg_end;        /* Current argument end */
  794. +   u8 *pkg_end;        /* Current package end */
  795. +   u32 arg_list;       /* Next argument to parse */
  796. +};
  797. +
  798. +/*
  799. + * Thread state - one per thread across multiple walk states.  Multiple walk
  800. + * states are created when there are nested control methods executing.
  801. + */
  802. +struct acpi_thread_state {
  803. +   ACPI_STATE_COMMON u8 current_sync_level;    /* Mutex Sync (nested acquire) level */
  804. +   struct acpi_walk_state *walk_state_list;    /* Head of list of walk_states for this thread */
  805. +   union acpi_operand_object *acquired_mutex_list; /* List of all currently acquired mutexes */
  806. +   acpi_thread_id thread_id;   /* Running thread ID */
  807. +};
  808. +
  809. +/*
  810. + * Result values - used to accumulate the results of nested
  811. + * AML arguments
  812. + */
  813. +struct acpi_result_values {
  814. +   ACPI_STATE_COMMON
  815. +       union acpi_operand_object *obj_desc[ACPI_RESULTS_FRAME_OBJ_NUM];
  816. +};
  817. +
  818. +typedef
  819. +acpi_status(*acpi_parse_downwards) (struct acpi_walk_state * walk_state,
  820. +                   union acpi_parse_object ** out_op);
  821. +
  822. +typedef acpi_status(*acpi_parse_upwards) (struct acpi_walk_state * walk_state);
  823. +
  824. +/*
  825. + * Notify info - used to pass info to the deferred notify
  826. + * handler/dispatcher.
  827. + */
  828. +struct acpi_notify_info {
  829. +   ACPI_STATE_COMMON struct acpi_namespace_node *node;
  830. +   union acpi_operand_object *handler_obj;
  831. +};
  832. +
  833. +/* Generic state is union of structs above */
  834. +
  835. +union acpi_generic_state {
  836. +   struct acpi_common_state common;
  837. +   struct acpi_control_state control;
  838. +   struct acpi_update_state update;
  839. +   struct acpi_scope_state scope;
  840. +   struct acpi_pscope_state parse_scope;
  841. +   struct acpi_pkg_state pkg;
  842. +   struct acpi_thread_state thread;
  843. +   struct acpi_result_values results;
  844. +   struct acpi_notify_info notify;
  845. +};
  846. +
  847. +/*****************************************************************************
  848. + *
  849. + * Interpreter typedefs and structs
  850. + *
  851. + ****************************************************************************/
  852. +
  853. +typedef acpi_status(*ACPI_EXECUTE_OP) (struct acpi_walk_state * walk_state);
  854. +
  855. +/*****************************************************************************
  856. + *
  857. + * Parser typedefs and structs
  858. + *
  859. + ****************************************************************************/
  860. +
  861. +/*
  862. + * AML opcode, name, and argument layout
  863. + */
  864. +struct acpi_opcode_info {
  865. +#if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT)
  866. +   char *name;     /* Opcode name (disassembler/debug only) */
  867. +#endif
  868. +   u32 parse_args;     /* Grammar/Parse time arguments */
  869. +   u32 runtime_args;   /* Interpret time arguments */
  870. +   u16 flags;      /* Misc flags */
  871. +   u8 object_type;     /* Corresponding internal object type */
  872. +   u8 class;       /* Opcode class */
  873. +   u8 type;        /* Opcode type */
  874. +};
  875. +
  876. +union acpi_parse_value {
  877. +   acpi_integer integer;   /* Integer constant (Up to 64 bits) */
  878. +   struct uint64_struct integer64; /* Structure overlay for 2 32-bit Dwords */
  879. +   u32 size;       /* bytelist or field size */
  880. +   char *string;       /* NULL terminated string */
  881. +   u8 *buffer;     /* buffer or string */
  882. +   char *name;     /* NULL terminated string */
  883. +   union acpi_parse_object *arg;   /* arguments and contained ops */
  884. +};
  885. +
  886. +#ifdef ACPI_DISASSEMBLER
  887. +#define ACPI_DISASM_ONLY_MEMBERS(a)     a;
  888. +#else
  889. +#define ACPI_DISASM_ONLY_MEMBERS(a)
  890. +#endif
  891. +
  892. +#define ACPI_PARSE_COMMON \
  893. +   union acpi_parse_object         *parent;        /* Parent op */\
  894. +   u8                              descriptor_type; /* To differentiate various internal objs */\
  895. +   u8                              flags;          /* Type of Op */\
  896. +   u16                             aml_opcode;     /* AML opcode */\
  897. +   u32                             aml_offset;     /* Offset of declaration in AML */\
  898. +   union acpi_parse_object         *next;          /* Next op */\
  899. +   struct acpi_namespace_node      *node;          /* For use by interpreter */\
  900. +   union acpi_parse_value          value;          /* Value or args associated with the opcode */\
  901. +   u8                              arg_list_length; /* Number of elements in the arg list */\
  902. +   ACPI_DISASM_ONLY_MEMBERS (\
  903. +   u8                              disasm_flags;   /* Used during AML disassembly */\
  904. +   u8                              disasm_opcode;  /* Subtype used for disassembly */\
  905. +   char                            aml_op_name[16])    /* Op name (debug only) */
  906. +
  907. +#define ACPI_DASM_BUFFER                0x00
  908. +#define ACPI_DASM_RESOURCE              0x01
  909. +#define ACPI_DASM_STRING                0x02
  910. +#define ACPI_DASM_UNICODE               0x03
  911. +#define ACPI_DASM_EISAID                0x04
  912. +#define ACPI_DASM_MATCHOP               0x05
  913. +#define ACPI_DASM_LNOT_PREFIX           0x06
  914. +#define ACPI_DASM_LNOT_SUFFIX           0x07
  915. +#define ACPI_DASM_IGNORE                0x08
  916. +
  917. +/*
  918. + * Generic operation (for example:  If, While, Store)
  919. + */
  920. +struct acpi_parse_obj_common {
  921. +ACPI_PARSE_COMMON};
  922. +
  923. +/*
  924. + * Extended Op for named ops (Scope, Method, etc.), deferred ops (Methods and op_regions),
  925. + * and bytelists.
  926. + */
  927. +struct acpi_parse_obj_named {
  928. +   ACPI_PARSE_COMMON u8 *path;
  929. +   u8 *data;       /* AML body or bytelist data */
  930. +   u32 length;     /* AML length */
  931. +   u32 name;       /* 4-byte name or zero if no name */
  932. +};
  933. +
  934. +/* This version is used by the i_aSL compiler only */
  935. +
  936. +#define ACPI_MAX_PARSEOP_NAME   20
  937. +
  938. +struct acpi_parse_obj_asl {
  939. +   ACPI_PARSE_COMMON union acpi_parse_object *child;
  940. +   union acpi_parse_object *parent_method;
  941. +   char *filename;
  942. +   char *external_name;
  943. +   char *namepath;
  944. +   char name_seg[4];
  945. +   u32 extra_value;
  946. +   u32 column;
  947. +   u32 line_number;
  948. +   u32 logical_line_number;
  949. +   u32 logical_byte_offset;
  950. +   u32 end_line;
  951. +   u32 end_logical_line;
  952. +   u32 acpi_btype;
  953. +   u32 aml_length;
  954. +   u32 aml_subtree_length;
  955. +   u32 final_aml_length;
  956. +   u32 final_aml_offset;
  957. +   u32 compile_flags;
  958. +   u16 parse_opcode;
  959. +   u8 aml_opcode_length;
  960. +   u8 aml_pkg_len_bytes;
  961. +   u8 extra;
  962. +   char parse_op_name[ACPI_MAX_PARSEOP_NAME];
  963. +};
  964. +
  965. +union acpi_parse_object {
  966. +   struct acpi_parse_obj_common common;
  967. +   struct acpi_parse_obj_named named;
  968. +   struct acpi_parse_obj_asl asl;
  969. +};
  970. +
  971. +/*
  972. + * Parse state - one state per parser invocation and each control
  973. + * method.
  974. + */
  975. +struct acpi_parse_state {
  976. +   u8 *aml_start;      /* First AML byte */
  977. +   u8 *aml;        /* Next AML byte */
  978. +   u8 *aml_end;        /* (last + 1) AML byte */
  979. +   u8 *pkg_start;      /* Current package begin */
  980. +   u8 *pkg_end;        /* Current package end */
  981. +   union acpi_parse_object *start_op;  /* Root of parse tree */
  982. +   struct acpi_namespace_node *start_node;
  983. +   union acpi_generic_state *scope;    /* Current scope */
  984. +   union acpi_parse_object *start_scope;
  985. +   u32 aml_size;
  986. +};
  987. +
  988. +/* Parse object flags */
  989. +
  990. +#define ACPI_PARSEOP_GENERIC            0x01
  991. +#define ACPI_PARSEOP_NAMED              0x02
  992. +#define ACPI_PARSEOP_DEFERRED           0x04
  993. +#define ACPI_PARSEOP_BYTELIST           0x08
  994. +#define ACPI_PARSEOP_IN_STACK           0x10
  995. +#define ACPI_PARSEOP_TARGET             0x20
  996. +#define ACPI_PARSEOP_IN_CACHE           0x80
  997. +
  998. +/* Parse object disasm_flags */
  999. +
  1000. +#define ACPI_PARSEOP_IGNORE             0x01
  1001. +#define ACPI_PARSEOP_PARAMLIST          0x02
  1002. +#define ACPI_PARSEOP_EMPTY_TERMLIST     0x04
  1003. +#define ACPI_PARSEOP_SPECIAL            0x10
  1004. +
  1005. +/*****************************************************************************
  1006. + *
  1007. + * Hardware (ACPI registers) and PNP
  1008. + *
  1009. + ****************************************************************************/
  1010. +
  1011. +struct acpi_bit_register_info {
  1012. +   u8 parent_register;
  1013. +   u8 bit_position;
  1014. +   u16 access_bit_mask;
  1015. +};
  1016. +
  1017. +/*
  1018. + * Some ACPI registers have bits that must be ignored -- meaning that they
  1019. + * must be preserved.
  1020. + */
  1021. +#define ACPI_PM1_STATUS_PRESERVED_BITS          0x0800 /* Bit 11 */
  1022. +#define ACPI_PM1_CONTROL_PRESERVED_BITS         0x0200 /* Bit 9 (whatever) */
  1023. +
  1024. +/*
  1025. + * Register IDs
  1026. + * These are the full ACPI registers
  1027. + */
  1028. +#define ACPI_REGISTER_PM1_STATUS                0x01
  1029. +#define ACPI_REGISTER_PM1_ENABLE                0x02
  1030. +#define ACPI_REGISTER_PM1_CONTROL               0x03
  1031. +#define ACPI_REGISTER_PM1A_CONTROL              0x04
  1032. +#define ACPI_REGISTER_PM1B_CONTROL              0x05
  1033. +#define ACPI_REGISTER_PM2_CONTROL               0x06
  1034. +#define ACPI_REGISTER_PM_TIMER                  0x07
  1035. +#define ACPI_REGISTER_PROCESSOR_BLOCK           0x08
  1036. +#define ACPI_REGISTER_SMI_COMMAND_BLOCK         0x09
  1037. +
  1038. +/* Masks used to access the bit_registers */
  1039. +
  1040. +#define ACPI_BITMASK_TIMER_STATUS               0x0001
  1041. +#define ACPI_BITMASK_BUS_MASTER_STATUS          0x0010
  1042. +#define ACPI_BITMASK_GLOBAL_LOCK_STATUS         0x0020
  1043. +#define ACPI_BITMASK_POWER_BUTTON_STATUS        0x0100
  1044. +#define ACPI_BITMASK_SLEEP_BUTTON_STATUS        0x0200
  1045. +#define ACPI_BITMASK_RT_CLOCK_STATUS            0x0400
  1046. +#define ACPI_BITMASK_PCIEXP_WAKE_STATUS         0x4000 /* ACPI 3.0 */
  1047. +#define ACPI_BITMASK_WAKE_STATUS                0x8000
  1048. +
  1049. +#define ACPI_BITMASK_ALL_FIXED_STATUS           (\
  1050. +   ACPI_BITMASK_TIMER_STATUS          | \
  1051. +   ACPI_BITMASK_BUS_MASTER_STATUS     | \
  1052. +   ACPI_BITMASK_GLOBAL_LOCK_STATUS    | \
  1053. +   ACPI_BITMASK_POWER_BUTTON_STATUS   | \
  1054. +   ACPI_BITMASK_SLEEP_BUTTON_STATUS   | \
  1055. +   ACPI_BITMASK_RT_CLOCK_STATUS       | \
  1056. +   ACPI_BITMASK_WAKE_STATUS)
  1057. +
  1058. +#define ACPI_BITMASK_TIMER_ENABLE               0x0001
  1059. +#define ACPI_BITMASK_GLOBAL_LOCK_ENABLE         0x0020
  1060. +#define ACPI_BITMASK_POWER_BUTTON_ENABLE        0x0100
  1061. +#define ACPI_BITMASK_SLEEP_BUTTON_ENABLE        0x0200
  1062. +#define ACPI_BITMASK_RT_CLOCK_ENABLE            0x0400
  1063. +#define ACPI_BITMASK_PCIEXP_WAKE_DISABLE        0x4000 /* ACPI 3.0 */
  1064. +
  1065. +#define ACPI_BITMASK_SCI_ENABLE                 0x0001
  1066. +#define ACPI_BITMASK_BUS_MASTER_RLD             0x0002
  1067. +#define ACPI_BITMASK_GLOBAL_LOCK_RELEASE        0x0004
  1068. +#define ACPI_BITMASK_SLEEP_TYPE_X               0x1C00
  1069. +#define ACPI_BITMASK_SLEEP_ENABLE               0x2000
  1070. +
  1071. +#define ACPI_BITMASK_ARB_DISABLE                0x0001
  1072. +
  1073. +/* Raw bit position of each bit_register */
  1074. +
  1075. +#define ACPI_BITPOSITION_TIMER_STATUS           0x00
  1076. +#define ACPI_BITPOSITION_BUS_MASTER_STATUS      0x04
  1077. +#define ACPI_BITPOSITION_GLOBAL_LOCK_STATUS     0x05
  1078. +#define ACPI_BITPOSITION_POWER_BUTTON_STATUS    0x08
  1079. +#define ACPI_BITPOSITION_SLEEP_BUTTON_STATUS    0x09
  1080. +#define ACPI_BITPOSITION_RT_CLOCK_STATUS        0x0A
  1081. +#define ACPI_BITPOSITION_PCIEXP_WAKE_STATUS     0x0E   /* ACPI 3.0 */
  1082. +#define ACPI_BITPOSITION_WAKE_STATUS            0x0F
  1083. +
  1084. +#define ACPI_BITPOSITION_TIMER_ENABLE           0x00
  1085. +#define ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE     0x05
  1086. +#define ACPI_BITPOSITION_POWER_BUTTON_ENABLE    0x08
  1087. +#define ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE    0x09
  1088. +#define ACPI_BITPOSITION_RT_CLOCK_ENABLE        0x0A
  1089. +#define ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE    0x0E   /* ACPI 3.0 */
  1090. +
  1091. +#define ACPI_BITPOSITION_SCI_ENABLE             0x00
  1092. +#define ACPI_BITPOSITION_BUS_MASTER_RLD         0x01
  1093. +#define ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE    0x02
  1094. +#define ACPI_BITPOSITION_SLEEP_TYPE_X           0x0A
  1095. +#define ACPI_BITPOSITION_SLEEP_ENABLE           0x0D
  1096. +
  1097. +#define ACPI_BITPOSITION_ARB_DISABLE            0x00
  1098. +
  1099. +/*****************************************************************************
  1100. + *
  1101. + * Resource descriptors
  1102. + *
  1103. + ****************************************************************************/
  1104. +
  1105. +/* resource_type values */
  1106. +
  1107. +#define ACPI_ADDRESS_TYPE_MEMORY_RANGE          0
  1108. +#define ACPI_ADDRESS_TYPE_IO_RANGE              1
  1109. +#define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE      2
  1110. +
  1111. +/* Resource descriptor types and masks */
  1112. +
  1113. +#define ACPI_RESOURCE_NAME_LARGE                0x80
  1114. +#define ACPI_RESOURCE_NAME_SMALL                0x00
  1115. +
  1116. +#define ACPI_RESOURCE_NAME_SMALL_MASK           0x78   /* Bits 6:3 contain the type */
  1117. +#define ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK    0x07   /* Bits 2:0 contain the length */
  1118. +#define ACPI_RESOURCE_NAME_LARGE_MASK           0x7F   /* Bits 6:0 contain the type */
  1119. +
  1120. +/*
  1121. + * Small resource descriptor "names" as defined by the ACPI specification.
  1122. + * Note: Bits 2:0 are used for the descriptor length
  1123. + */
  1124. +#define ACPI_RESOURCE_NAME_IRQ                  0x20
  1125. +#define ACPI_RESOURCE_NAME_DMA                  0x28
  1126. +#define ACPI_RESOURCE_NAME_START_DEPENDENT      0x30
  1127. +#define ACPI_RESOURCE_NAME_END_DEPENDENT        0x38
  1128. +#define ACPI_RESOURCE_NAME_IO                   0x40
  1129. +#define ACPI_RESOURCE_NAME_FIXED_IO             0x48
  1130. +#define ACPI_RESOURCE_NAME_RESERVED_S1          0x50
  1131. +#define ACPI_RESOURCE_NAME_RESERVED_S2          0x58
  1132. +#define ACPI_RESOURCE_NAME_RESERVED_S3          0x60
  1133. +#define ACPI_RESOURCE_NAME_RESERVED_S4          0x68
  1134. +#define ACPI_RESOURCE_NAME_VENDOR_SMALL         0x70
  1135. +#define ACPI_RESOURCE_NAME_END_TAG              0x78
  1136. +
  1137. +/*
  1138. + * Large resource descriptor "names" as defined by the ACPI specification.
  1139. + * Note: includes the Large Descriptor bit in bit[7]
  1140. + */
  1141. +#define ACPI_RESOURCE_NAME_MEMORY24             0x81
  1142. +#define ACPI_RESOURCE_NAME_GENERIC_REGISTER     0x82
  1143. +#define ACPI_RESOURCE_NAME_RESERVED_L1          0x83
  1144. +#define ACPI_RESOURCE_NAME_VENDOR_LARGE         0x84
  1145. +#define ACPI_RESOURCE_NAME_MEMORY32             0x85
  1146. +#define ACPI_RESOURCE_NAME_FIXED_MEMORY32       0x86
  1147. +#define ACPI_RESOURCE_NAME_ADDRESS32            0x87
  1148. +#define ACPI_RESOURCE_NAME_ADDRESS16            0x88
  1149. +#define ACPI_RESOURCE_NAME_EXTENDED_IRQ         0x89
  1150. +#define ACPI_RESOURCE_NAME_ADDRESS64            0x8A
  1151. +#define ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64   0x8B
  1152. +#define ACPI_RESOURCE_NAME_LARGE_MAX            0x8B
  1153. +
  1154. +/*****************************************************************************
  1155. + *
  1156. + * Miscellaneous
  1157. + *
  1158. + ****************************************************************************/
  1159. +
  1160. +#define ACPI_ASCII_ZERO                 0x30
  1161. +
  1162. +/*****************************************************************************
  1163. + *
  1164. + * Debugger
  1165. + *
  1166. + ****************************************************************************/
  1167. +
  1168. +struct acpi_db_method_info {
  1169. +   acpi_handle main_thread_gate;
  1170. +   acpi_handle thread_complete_gate;
  1171. +   u32 *threads;
  1172. +   u32 num_threads;
  1173. +   u32 num_created;
  1174. +   u32 num_completed;
  1175. +
  1176. +   char *name;
  1177. +   u32 flags;
  1178. +   u32 num_loops;
  1179. +   char pathname[128];
  1180. +   char **args;
  1181. +
  1182. +   /*
  1183. +    * Arguments to be passed to method for the command
  1184. +    * Threads -
  1185. +    *   the Number of threads, ID of current thread and
  1186. +    *   Index of current thread inside all them created.
  1187. +    */
  1188. +   char init_args;
  1189. +   char *arguments[4];
  1190. +   char num_threads_str[11];
  1191. +   char id_of_thread_str[11];
  1192. +   char index_of_thread_str[11];
  1193. +};
  1194. +
  1195. +struct acpi_integrity_info {
  1196. +   u32 nodes;
  1197. +   u32 objects;
  1198. +};
  1199. +
  1200. +#define ACPI_DB_REDIRECTABLE_OUTPUT     0x01
  1201. +#define ACPI_DB_CONSOLE_OUTPUT          0x02
  1202. +#define ACPI_DB_DUPLICATE_OUTPUT        0x03
  1203. +
  1204. +/*****************************************************************************
  1205. + *
  1206. + * Debug
  1207. + *
  1208. + ****************************************************************************/
  1209. +
  1210. +/* Entry for a memory allocation (debug only) */
  1211. +
  1212. +#define ACPI_MEM_MALLOC                 0
  1213. +#define ACPI_MEM_CALLOC                 1
  1214. +#define ACPI_MAX_MODULE_NAME            16
  1215. +
  1216. +#define ACPI_COMMON_DEBUG_MEM_HEADER \
  1217. +   struct acpi_debug_mem_block     *previous; \
  1218. +   struct acpi_debug_mem_block     *next; \
  1219. +   u32                             size; \
  1220. +   u32                             component; \
  1221. +   u32                             line; \
  1222. +   char                            module[ACPI_MAX_MODULE_NAME]; \
  1223. +   u8                              alloc_type;
  1224. +
  1225. +struct acpi_debug_mem_header {
  1226. +ACPI_COMMON_DEBUG_MEM_HEADER};
  1227. +
  1228. +struct acpi_debug_mem_block {
  1229. +   ACPI_COMMON_DEBUG_MEM_HEADER u64 user_space;
  1230. +};
  1231. +
  1232. +#define ACPI_MEM_LIST_GLOBAL            0
  1233. +#define ACPI_MEM_LIST_NSNODE            1
  1234. +#define ACPI_MEM_LIST_MAX               1
  1235. +#define ACPI_NUM_MEM_LISTS              2
  1236. +
  1237. +#endif             /* __ACLOCAL_H__ */
  1238. diff -Naurp a/acpica-acobject.h b/acpica-acobject.h
  1239. --- a/acpica-acobject.h 1970-01-01 01:00:00.000000000 +0100
  1240. +++ b/acpica-acobject.h 2009-02-28 22:24:01.000000000 +0100
  1241. @@ -0,0 +1,446 @@
  1242. +
  1243. +/******************************************************************************
  1244. + *
  1245. + * Name: acobject.h - Definition of union acpi_operand_object  (Internal object only)
  1246. + *
  1247. + *****************************************************************************/
  1248. +
  1249. +/*
  1250. + * Copyright (C) 2000 - 2008, Intel Corp.
  1251. + * All rights reserved.
  1252. + *
  1253. + * Redistribution and use in source and binary forms, with or without
  1254. + * modification, are permitted provided that the following conditions
  1255. + * are met:
  1256. + * 1. Redistributions of source code must retain the above copyright
  1257. + *    notice, this list of conditions, and the following disclaimer,
  1258. + *    without modification.
  1259. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
  1260. + *    substantially similar to the "NO WARRANTY" disclaimer below
  1261. + *    ("Disclaimer") and any redistribution must be conditioned upon
  1262. + *    including a substantially similar Disclaimer requirement for further
  1263. + *    binary redistribution.
  1264. + * 3. Neither the names of the above-listed copyright holders nor the names
  1265. + *    of any contributors may be used to endorse or promote products derived
  1266. + *    from this software without specific prior written permission.
  1267. + *
  1268. + * Alternatively, this software may be distributed under the terms of the
  1269. + * GNU General Public License ("GPL") version 2 as published by the Free
  1270. + * Software Foundation.
  1271. + *
  1272. + * NO WARRANTY
  1273. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  1274. + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  1275. + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
  1276. + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  1277. + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  1278. + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  1279. + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  1280. + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  1281. + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  1282. + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  1283. + * POSSIBILITY OF SUCH DAMAGES.
  1284. + */
  1285. +
  1286. +#ifndef _ACOBJECT_H
  1287. +#define _ACOBJECT_H
  1288. +
  1289. +/* acpisrc:struct_defs -- for acpisrc conversion */
  1290. +
  1291. +/*
  1292. + * The union acpi_operand_object is used to pass AML operands from the dispatcher
  1293. + * to the interpreter, and to keep track of the various handlers such as
  1294. + * address space handlers and notify handlers. The object is a constant
  1295. + * size in order to allow it to be cached and reused.
  1296. + *
  1297. + * Note: The object is optimized to be aligned and will not work if it is
  1298. + * byte-packed.
  1299. + */
  1300. +#if ACPI_MACHINE_WIDTH == 64
  1301. +#pragma pack(8)
  1302. +#else
  1303. +#pragma pack(4)
  1304. +#endif
  1305. +
  1306. +/*******************************************************************************
  1307. + *
  1308. + * Common Descriptors
  1309. + *
  1310. + ******************************************************************************/
  1311. +
  1312. +/*
  1313. + * Common area for all objects.
  1314. + *
  1315. + * descriptor_type is used to differentiate between internal descriptors, and
  1316. + * must be in the same place across all descriptors
  1317. + *
  1318. + * Note: The descriptor_type and Type fields must appear in the identical
  1319. + * position in both the struct acpi_namespace_node and union acpi_operand_object
  1320. + * structures.
  1321. + */
  1322. +#define ACPI_OBJECT_COMMON_HEADER \
  1323. +   union acpi_operand_object       *next_object;       /* Objects linked to parent NS node */\
  1324. +   u8                              descriptor_type;    /* To differentiate various internal objs */\
  1325. +   u8                              type;               /* acpi_object_type */\
  1326. +   u16                             reference_count;    /* For object deletion management */\
  1327. +   u8                              flags;
  1328. +   /*
  1329. +    * Note: There are 3 bytes available here before the
  1330. +    * next natural alignment boundary (for both 32/64 cases)
  1331. +    */
  1332. +
  1333. +/* Values for Flag byte above */
  1334. +
  1335. +#define AOPOBJ_AML_CONSTANT         0x01
  1336. +#define AOPOBJ_STATIC_POINTER       0x02
  1337. +#define AOPOBJ_DATA_VALID           0x04
  1338. +#define AOPOBJ_OBJECT_INITIALIZED   0x08
  1339. +#define AOPOBJ_SETUP_COMPLETE       0x10
  1340. +#define AOPOBJ_SINGLE_DATUM         0x20
  1341. +#define AOPOBJ_INVALID              0x40   /* Used if host OS won't allow an op_region address */
  1342. +
  1343. +/******************************************************************************
  1344. + *
  1345. + * Basic data types
  1346. + *
  1347. + *****************************************************************************/
  1348. +
  1349. +struct acpi_object_common {
  1350. +ACPI_OBJECT_COMMON_HEADER};
  1351. +
  1352. +struct acpi_object_integer {
  1353. +   ACPI_OBJECT_COMMON_HEADER u8 fill[3];   /* Prevent warning on some compilers */
  1354. +   acpi_integer value;
  1355. +};
  1356. +
  1357. +/*
  1358. + * Note: The String and Buffer object must be identical through the Pointer
  1359. + * and length elements.  There is code that depends on this.
  1360. + *
  1361. + * Fields common to both Strings and Buffers
  1362. + */
  1363. +#define ACPI_COMMON_BUFFER_INFO(_type) \
  1364. +   _type                           *pointer; \
  1365. +   u32                             length;
  1366. +
  1367. +struct acpi_object_string {    /* Null terminated, ASCII characters only */
  1368. +   ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_BUFFER_INFO(char) /* String in AML stream or allocated string */
  1369. +};
  1370. +
  1371. +struct acpi_object_buffer {
  1372. +   ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_BUFFER_INFO(u8)   /* Buffer in AML stream or allocated buffer */
  1373. +   u32 aml_length;
  1374. +   u8 *aml_start;
  1375. +   struct acpi_namespace_node *node;   /* Link back to parent node */
  1376. +};
  1377. +
  1378. +struct acpi_object_package {
  1379. +   ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *node; /* Link back to parent node */
  1380. +   union acpi_operand_object **elements;   /* Array of pointers to acpi_objects */
  1381. +   u8 *aml_start;
  1382. +   u32 aml_length;
  1383. +   u32 count;      /* # of elements in package */
  1384. +};
  1385. +
  1386. +/******************************************************************************
  1387. + *
  1388. + * Complex data types
  1389. + *
  1390. + *****************************************************************************/
  1391. +
  1392. +struct acpi_object_event {
  1393. +   ACPI_OBJECT_COMMON_HEADER acpi_semaphore os_semaphore;  /* Actual OS synchronization object */
  1394. +};
  1395. +
  1396. +struct acpi_object_mutex {
  1397. +   ACPI_OBJECT_COMMON_HEADER u8 sync_level;    /* 0-15, specified in Mutex() call */
  1398. +   u16 acquisition_depth;  /* Allow multiple Acquires, same thread */
  1399. +   acpi_mutex os_mutex;    /* Actual OS synchronization object */
  1400. +   acpi_thread_id thread_id;   /* Current owner of the mutex */
  1401. +   struct acpi_thread_state *owner_thread; /* Current owner of the mutex */
  1402. +   union acpi_operand_object *prev;    /* Link for list of acquired mutexes */
  1403. +   union acpi_operand_object *next;    /* Link for list of acquired mutexes */
  1404. +   struct acpi_namespace_node *node;   /* Containing namespace node */
  1405. +   u8 original_sync_level; /* Owner's original sync level (0-15) */
  1406. +};
  1407. +
  1408. +struct acpi_object_region {
  1409. +   ACPI_OBJECT_COMMON_HEADER u8 space_id;
  1410. +   struct acpi_namespace_node *node;   /* Containing namespace node */
  1411. +   union acpi_operand_object *handler; /* Handler for region access */
  1412. +   union acpi_operand_object *next;
  1413. +   acpi_physical_address address;
  1414. +   u32 length;
  1415. +};
  1416. +
  1417. +struct acpi_object_method {
  1418. +   ACPI_OBJECT_COMMON_HEADER u8 method_flags;
  1419. +   u8 param_count;
  1420. +   u8 sync_level;
  1421. +   union acpi_operand_object *mutex;
  1422. +   u8 *aml_start;
  1423. +   ACPI_INTERNAL_METHOD implementation;
  1424. +   u32 aml_length;
  1425. +   u8 thread_count;
  1426. +   acpi_owner_id owner_id;
  1427. +};
  1428. +
  1429. +/******************************************************************************
  1430. + *
  1431. + * Objects that can be notified.  All share a common notify_info area.
  1432. + *
  1433. + *****************************************************************************/
  1434. +
  1435. +/*
  1436. + * Common fields for objects that support ASL notifications
  1437. + */
  1438. +#define ACPI_COMMON_NOTIFY_INFO \
  1439. +   union acpi_operand_object       *system_notify;     /* Handler for system notifies */\
  1440. +   union acpi_operand_object       *device_notify;     /* Handler for driver notifies */\
  1441. +   union acpi_operand_object       *handler;   /* Handler for Address space */
  1442. +
  1443. +struct acpi_object_notify_common { /* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */
  1444. +ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO};
  1445. +
  1446. +struct acpi_object_device {
  1447. +   ACPI_OBJECT_COMMON_HEADER
  1448. +       ACPI_COMMON_NOTIFY_INFO struct acpi_gpe_block_info *gpe_block;
  1449. +};
  1450. +
  1451. +struct acpi_object_power_resource {
  1452. +   ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO u32 system_level;
  1453. +   u32 resource_order;
  1454. +};
  1455. +
  1456. +struct acpi_object_processor {
  1457. +   ACPI_OBJECT_COMMON_HEADER
  1458. +       /* The next two fields take advantage of the 3-byte space before NOTIFY_INFO */
  1459. +   u8 proc_id;
  1460. +   u8 length;
  1461. +   ACPI_COMMON_NOTIFY_INFO acpi_io_address address;
  1462. +};
  1463. +
  1464. +struct acpi_object_thermal_zone {
  1465. +ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO};
  1466. +
  1467. +/******************************************************************************
  1468. + *
  1469. + * Fields.  All share a common header/info field.
  1470. + *
  1471. + *****************************************************************************/
  1472. +
  1473. +/*
  1474. + * Common bitfield for the field objects
  1475. + * "Field Datum"  -- a datum from the actual field object
  1476. + * "Buffer Datum" -- a datum from a user buffer, read from or to be written to the field
  1477. + */
  1478. +#define ACPI_COMMON_FIELD_INFO \
  1479. +   u8                              field_flags;        /* Access, update, and lock bits */\
  1480. +   u8                              attribute;          /* From access_as keyword */\
  1481. +   u8                              access_byte_width;  /* Read/Write size in bytes */\
  1482. +   struct acpi_namespace_node      *node;              /* Link back to parent node */\
  1483. +   u32                             bit_length;         /* Length of field in bits */\
  1484. +   u32                             base_byte_offset;   /* Byte offset within containing object */\
  1485. +   u32                             value;              /* Value to store into the Bank or Index register */\
  1486. +   u8                              start_field_bit_offset;/* Bit offset within first field datum (0-63) */\
  1487. +   u8                              access_bit_width;   /* Read/Write size in bits (8-64) */
  1488. +
  1489. +struct acpi_object_field_common {  /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */
  1490. +   ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Parent Operation Region object (REGION/BANK fields only) */
  1491. +};
  1492. +
  1493. +struct acpi_object_region_field {
  1494. +   ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Containing op_region object */
  1495. +};
  1496. +
  1497. +struct acpi_object_bank_field {
  1498. +   ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Containing op_region object */
  1499. +   union acpi_operand_object *bank_obj;    /* bank_select Register object */
  1500. +};
  1501. +
  1502. +struct acpi_object_index_field {
  1503. +   ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO
  1504. +       /*
  1505. +        * No "RegionObj" pointer needed since the Index and Data registers
  1506. +        * are each field definitions unto themselves.
  1507. +        */
  1508. +   union acpi_operand_object *index_obj;   /* Index register */
  1509. +   union acpi_operand_object *data_obj;    /* Data register */
  1510. +};
  1511. +
  1512. +/* The buffer_field is different in that it is part of a Buffer, not an op_region */
  1513. +
  1514. +struct acpi_object_buffer_field {
  1515. +   ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *buffer_obj; /* Containing Buffer object */
  1516. +};
  1517. +
  1518. +/******************************************************************************
  1519. + *
  1520. + * Objects for handlers
  1521. + *
  1522. + *****************************************************************************/
  1523. +
  1524. +struct acpi_object_notify_handler {
  1525. +   ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *node; /* Parent device */
  1526. +   acpi_notify_handler handler;
  1527. +   void *context;
  1528. +};
  1529. +
  1530. +struct acpi_object_addr_handler {
  1531. +   ACPI_OBJECT_COMMON_HEADER u8 space_id;
  1532. +   u8 handler_flags;
  1533. +   acpi_adr_space_handler handler;
  1534. +   struct acpi_namespace_node *node;   /* Parent device */
  1535. +   void *context;
  1536. +   acpi_adr_space_setup setup;
  1537. +   union acpi_operand_object *region_list; /* regions using this handler */
  1538. +   union acpi_operand_object *next;
  1539. +};
  1540. +
  1541. +/* Flags for address handler (handler_flags) */
  1542. +
  1543. +#define ACPI_ADDR_HANDLER_DEFAULT_INSTALLED  0x01
  1544. +
  1545. +/******************************************************************************
  1546. + *
  1547. + * Special internal objects
  1548. + *
  1549. + *****************************************************************************/
  1550. +
  1551. +/*
  1552. + * The Reference object is used for these opcodes:
  1553. + * Arg[0-6], Local[0-7], index_op, name_op, ref_of_op, load_op, load_table_op, debug_op
  1554. + * The Reference.Class differentiates these types.
  1555. + */
  1556. +struct acpi_object_reference {
  1557. +   ACPI_OBJECT_COMMON_HEADER u8 class; /* Reference Class */
  1558. +   u8 target_type;     /* Used for Index Op */
  1559. +   u8 reserved;
  1560. +   void *object;       /* name_op=>HANDLE to obj, index_op=>union acpi_operand_object */
  1561. +   struct acpi_namespace_node *node;   /* ref_of or Namepath */
  1562. +   union acpi_operand_object **where;  /* Target of Index */
  1563. +   u32 value;      /* Used for Local/Arg/Index/ddb_handle */
  1564. +};
  1565. +
  1566. +/* Values for Reference.Class above */
  1567. +
  1568. +typedef enum {
  1569. +   ACPI_REFCLASS_LOCAL = 0,    /* Method local */
  1570. +   ACPI_REFCLASS_ARG = 1,  /* Method argument */
  1571. +   ACPI_REFCLASS_REFOF = 2,    /* Result of ref_of() TBD: Split to Ref/Node and Ref/operand_obj? */
  1572. +   ACPI_REFCLASS_INDEX = 3,    /* Result of Index() */
  1573. +   ACPI_REFCLASS_TABLE = 4,    /* ddb_handle - Load(), load_table() */
  1574. +   ACPI_REFCLASS_NAME = 5, /* Reference to a named object */
  1575. +   ACPI_REFCLASS_DEBUG = 6,    /* Debug object */
  1576. +
  1577. +   ACPI_REFCLASS_MAX = 6
  1578. +} ACPI_REFERENCE_CLASSES;
  1579. +
  1580. +/*
  1581. + * Extra object is used as additional storage for types that
  1582. + * have AML code in their declarations (term_args) that must be
  1583. + * evaluated at run time.
  1584. + *
  1585. + * Currently: Region and field_unit types
  1586. + */
  1587. +struct acpi_object_extra {
  1588. +   ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *method_REG;   /* _REG method for this region (if any) */
  1589. +   void *region_context;   /* Region-specific data */
  1590. +   u8 *aml_start;
  1591. +   u32 aml_length;
  1592. +};
  1593. +
  1594. +/* Additional data that can be attached to namespace nodes */
  1595. +
  1596. +struct acpi_object_data {
  1597. +   ACPI_OBJECT_COMMON_HEADER acpi_object_handler handler;
  1598. +   void *pointer;
  1599. +};
  1600. +
  1601. +/* Structure used when objects are cached for reuse */
  1602. +
  1603. +struct acpi_object_cache_list {
  1604. +   ACPI_OBJECT_COMMON_HEADER union acpi_operand_object *next;  /* Link for object cache and internal lists */
  1605. +};
  1606. +
  1607. +/******************************************************************************
  1608. + *
  1609. + * union acpi_operand_object Descriptor - a giant union of all of the above
  1610. + *
  1611. + *****************************************************************************/
  1612. +
  1613. +union acpi_operand_object {
  1614. +   struct acpi_object_common common;
  1615. +   struct acpi_object_integer integer;
  1616. +   struct acpi_object_string string;
  1617. +   struct acpi_object_buffer buffer;
  1618. +   struct acpi_object_package package;
  1619. +   struct acpi_object_event event;
  1620. +   struct acpi_object_method method;
  1621. +   struct acpi_object_mutex mutex;
  1622. +   struct acpi_object_region region;
  1623. +   struct acpi_object_notify_common common_notify;
  1624. +   struct acpi_object_device device;
  1625. +   struct acpi_object_power_resource power_resource;
  1626. +   struct acpi_object_processor processor;
  1627. +   struct acpi_object_thermal_zone thermal_zone;
  1628. +   struct acpi_object_field_common common_field;
  1629. +   struct acpi_object_region_field field;
  1630. +   struct acpi_object_buffer_field buffer_field;
  1631. +   struct acpi_object_bank_field bank_field;
  1632. +   struct acpi_object_index_field index_field;
  1633. +   struct acpi_object_notify_handler notify;
  1634. +   struct acpi_object_addr_handler address_space;
  1635. +   struct acpi_object_reference reference;
  1636. +   struct acpi_object_extra extra;
  1637. +   struct acpi_object_data data;
  1638. +   struct acpi_object_cache_list cache;
  1639. +
  1640. +   /*
  1641. +    * Add namespace node to union in order to simplify code that accepts both
  1642. +    * ACPI_OPERAND_OBJECTs and ACPI_NAMESPACE_NODEs. The structures share
  1643. +    * a common descriptor_type field in order to differentiate them.
  1644. +    */
  1645. +   struct acpi_namespace_node node;
  1646. +};
  1647. +
  1648. +/******************************************************************************
  1649. + *
  1650. + * union acpi_descriptor - objects that share a common descriptor identifier
  1651. + *
  1652. + *****************************************************************************/
  1653. +
  1654. +/* Object descriptor types */
  1655. +
  1656. +#define ACPI_DESC_TYPE_CACHED           0x01   /* Used only when object is cached */
  1657. +#define ACPI_DESC_TYPE_STATE            0x02
  1658. +#define ACPI_DESC_TYPE_STATE_UPDATE     0x03
  1659. +#define ACPI_DESC_TYPE_STATE_PACKAGE    0x04
  1660. +#define ACPI_DESC_TYPE_STATE_CONTROL    0x05
  1661. +#define ACPI_DESC_TYPE_STATE_RPSCOPE    0x06
  1662. +#define ACPI_DESC_TYPE_STATE_PSCOPE     0x07
  1663. +#define ACPI_DESC_TYPE_STATE_WSCOPE     0x08
  1664. +#define ACPI_DESC_TYPE_STATE_RESULT     0x09
  1665. +#define ACPI_DESC_TYPE_STATE_NOTIFY     0x0A
  1666. +#define ACPI_DESC_TYPE_STATE_THREAD     0x0B
  1667. +#define ACPI_DESC_TYPE_WALK             0x0C
  1668. +#define ACPI_DESC_TYPE_PARSER           0x0D
  1669. +#define ACPI_DESC_TYPE_OPERAND          0x0E
  1670. +#define ACPI_DESC_TYPE_NAMED            0x0F
  1671. +#define ACPI_DESC_TYPE_MAX              0x0F
  1672. +
  1673. +struct acpi_common_descriptor {
  1674. +   void *common_pointer;
  1675. +   u8 descriptor_type; /* To differentiate various internal objs */
  1676. +};
  1677. +
  1678. +union acpi_descriptor {
  1679. +   struct acpi_common_descriptor common;
  1680. +   union acpi_operand_object object;
  1681. +   struct acpi_namespace_node node;
  1682. +   union acpi_parse_object op;
  1683. +};
  1684. +
  1685. +#pragma pack()
  1686. +
  1687. +#endif             /* _ACOBJECT_H */
  1688. diff -Naurp a/firegl_public.c b/firegl_public.c
  1689. --- a/firegl_public.c   2009-02-28 22:31:33.000000000 +0100
  1690. +++ b/firegl_public.c   2009-02-28 22:30:23.000000000 +0100
  1691. @@ -1402,7 +1402,7 @@ KCL_TYPE_Pid ATI_API_CALL KCL_GetTgid(vo
  1692.   */
  1693.  KCL_TYPE_Uid ATI_API_CALL KCL_GetEffectiveUid(void)
  1694.  {
  1695. -    return current->euid;
  1696. +    return current->cred->euid;
  1697.  }
  1698.  
  1699.  /** /brief Delay execution for the specified number of microseconds
  1700. @@ -1774,14 +1774,15 @@ int ATI_API_CALL KCL_PosixSecurityCapChe
  1701.   */
  1702.  void ATI_API_CALL KCL_PosixSecurityCapSetIPCLock(unsigned int lock)
  1703.  {
  1704. +    struct cred* currentCred = (struct cred*)get_current_cred();
  1705.      if (lock == 0 )
  1706.      {
  1707. -        cap_lower(current->cap_effective, CAP_IPC_LOCK);
  1708. +        cap_lower(currentCred->cap_effective, CAP_IPC_LOCK);
  1709.      }
  1710.      else
  1711.      {
  1712. -        cap_raise(current->cap_effective, CAP_IPC_LOCK);
  1713. -    }    
  1714. +        cap_raise(currentCred->cap_effective, CAP_IPC_LOCK);
  1715. +    }
  1716.      return;
  1717.  }
  1718.  
  1719. diff -Naurp a/firegl_public.h b/firegl_public.h
  1720. --- a/firegl_public.h   2009-03-01 00:21:56.000000000 +0100
  1721. +++ b/firegl_public.h   2009-03-01 00:21:17.000000000 +0100
  1722. @@ -589,13 +589,13 @@ extern unsigned long        KCL_SYSINFO_
  1723.  #define cpu_has_pge test_bit(X86_FEATURE_PGE, &boot_cpu_data.x86_capability)
  1724.  #endif
  1725.  
  1726. -#ifndef pgprot_writecombine
  1727. +/* #ifndef pgprot_writecombine */
  1728.  #define pgprot_writecombine(prot) __pgprot((pgprot_val(prot) & ~(_PAGE_PCD)) | _PAGE_PWT)
  1729. -#endif
  1730. +/* #endif */
  1731.  
  1732. -#ifndef pgprot_noncached
  1733. +/* #ifndef pgprot_noncached */
  1734.  #define pgprot_noncached(prot) __pgprot(pgprot_val(prot) | _PAGE_PCD | _PAGE_PWT)
  1735. -#endif
  1736. +/* #endif */
  1737.  
  1738.  #endif //FIREGL_USWC_SUPPORT
  1739.  
  1740. diff -Naurp a/kcl_acpi.c b/kcl_acpi.c
  1741. --- a/kcl_acpi.c    2009-02-28 21:39:21.000000000 +0100
  1742. +++ b/kcl_acpi.c    2009-02-28 22:25:29.000000000 +0100
  1743. @@ -17,6 +17,9 @@
  1744.  #include <linux/version.h>
  1745.  #include <linux/autoconf.h>
  1746.  #include <linux/acpi.h>
  1747. +#include "acpica-acconfig.h"
  1748. +#include "acpica-aclocal.h"
  1749. +#include "acpica-acobject.h"
  1750.  
  1751.  #include "kcl_config.h"
  1752.  #include "kcl_type.h"
  1753.  
  1754.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement