1*50b7f1f5Skettenis /* $OpenBSD: amltypes.h,v 1.50 2024/06/02 11:08:41 kettenis Exp $ */ 2f76b0469Sjordan /* 3f76b0469Sjordan * Copyright (c) 2005 Jordan Hargrave <jordan@openbsd.org> 4f76b0469Sjordan * 5f76b0469Sjordan * Permission to use, copy, modify, and distribute this software for any 6f76b0469Sjordan * purpose with or without fee is hereby granted, provided that the above 7f76b0469Sjordan * copyright notice and this permission notice appear in all copies. 8f76b0469Sjordan * 9f76b0469Sjordan * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10f76b0469Sjordan * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11f76b0469Sjordan * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12f76b0469Sjordan * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13f76b0469Sjordan * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14f76b0469Sjordan * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15f76b0469Sjordan * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16f76b0469Sjordan */ 17f76b0469Sjordan 183f15b72bSmarco #ifndef __DEV_ACPI_AMLTYPES_H__ 193f15b72bSmarco #define __DEV_ACPI_AMLTYPES_H__ 20f76b0469Sjordan 21f76b0469Sjordan /* AML Opcodes */ 22f76b0469Sjordan #define AMLOP_ZERO 0x00 23f76b0469Sjordan #define AMLOP_ONE 0x01 24f76b0469Sjordan #define AMLOP_ALIAS 0x06 25f76b0469Sjordan #define AMLOP_NAME 0x08 26f76b0469Sjordan #define AMLOP_BYTEPREFIX 0x0A 27f76b0469Sjordan #define AMLOP_WORDPREFIX 0x0B 28f76b0469Sjordan #define AMLOP_DWORDPREFIX 0x0C 29f76b0469Sjordan #define AMLOP_STRINGPREFIX 0x0D 30f76b0469Sjordan #define AMLOP_QWORDPREFIX 0x0E 31f76b0469Sjordan #define AMLOP_SCOPE 0x10 32f76b0469Sjordan #define AMLOP_BUFFER 0x11 33f76b0469Sjordan #define AMLOP_PACKAGE 0x12 34f76b0469Sjordan #define AMLOP_VARPACKAGE 0x13 35f76b0469Sjordan #define AMLOP_METHOD 0x14 36f76b0469Sjordan #define AMLOP_DUALNAMEPREFIX 0x2E 37f76b0469Sjordan #define AMLOP_MULTINAMEPREFIX 0x2F 38ebfe42f9Sjordan #define AMLOP_EXTPREFIX 0x5B 39f76b0469Sjordan #define AMLOP_MUTEX 0x5B01 40f76b0469Sjordan #define AMLOP_EVENT 0x5B02 41f76b0469Sjordan #define AMLOP_CONDREFOF 0x5B12 42f76b0469Sjordan #define AMLOP_CREATEFIELD 0x5B13 43f76b0469Sjordan #define AMLOP_LOADTABLE 0x5B1F 44f76b0469Sjordan #define AMLOP_LOAD 0x5B20 45f76b0469Sjordan #define AMLOP_STALL 0x5B21 46f76b0469Sjordan #define AMLOP_SLEEP 0x5B22 47f76b0469Sjordan #define AMLOP_ACQUIRE 0x5B23 48f76b0469Sjordan #define AMLOP_SIGNAL 0x5B24 49f76b0469Sjordan #define AMLOP_WAIT 0x5B25 50f76b0469Sjordan #define AMLOP_RESET 0x5B26 51f76b0469Sjordan #define AMLOP_RELEASE 0x5B27 52f76b0469Sjordan #define AMLOP_FROMBCD 0x5B28 53f76b0469Sjordan #define AMLOP_TOBCD 0x5B29 54f76b0469Sjordan #define AMLOP_UNLOAD 0x5B2A 55f76b0469Sjordan #define AMLOP_REVISION 0x5B30 56f76b0469Sjordan #define AMLOP_DEBUG 0x5B31 57f76b0469Sjordan #define AMLOP_FATAL 0x5B32 58ab5008fbSjordan #define AMLOP_TIMER 0x5B33 59f76b0469Sjordan #define AMLOP_OPREGION 0x5B80 60f76b0469Sjordan #define AMLOP_FIELD 0x5B81 61f76b0469Sjordan #define AMLOP_DEVICE 0x5B82 62f76b0469Sjordan #define AMLOP_PROCESSOR 0x5B83 63f76b0469Sjordan #define AMLOP_POWERRSRC 0x5B84 64f76b0469Sjordan #define AMLOP_THERMALZONE 0x5B85 65f76b0469Sjordan #define AMLOP_INDEXFIELD 0x5B86 66f76b0469Sjordan #define AMLOP_BANKFIELD 0x5B87 67f76b0469Sjordan #define AMLOP_DATAREGION 0x5B88 68f76b0469Sjordan #define AMLOP_ROOTCHAR 0x5C 69f76b0469Sjordan #define AMLOP_PARENTPREFIX 0x5E 70f76b0469Sjordan #define AMLOP_NAMECHAR 0x5F 71f76b0469Sjordan #define AMLOP_LOCAL0 0x60 72f76b0469Sjordan #define AMLOP_LOCAL1 0x61 73f76b0469Sjordan #define AMLOP_LOCAL2 0x62 74f76b0469Sjordan #define AMLOP_LOCAL3 0x63 75f76b0469Sjordan #define AMLOP_LOCAL4 0x64 76f76b0469Sjordan #define AMLOP_LOCAL5 0x65 77f76b0469Sjordan #define AMLOP_LOCAL6 0x66 78f76b0469Sjordan #define AMLOP_LOCAL7 0x67 79f76b0469Sjordan #define AMLOP_ARG0 0x68 80f76b0469Sjordan #define AMLOP_ARG1 0x69 81f76b0469Sjordan #define AMLOP_ARG2 0x6A 82f76b0469Sjordan #define AMLOP_ARG3 0x6B 83f76b0469Sjordan #define AMLOP_ARG4 0x6C 84f76b0469Sjordan #define AMLOP_ARG5 0x6D 85f76b0469Sjordan #define AMLOP_ARG6 0x6E 86f76b0469Sjordan #define AMLOP_STORE 0x70 87f76b0469Sjordan #define AMLOP_REFOF 0x71 88f76b0469Sjordan #define AMLOP_ADD 0x72 89f76b0469Sjordan #define AMLOP_CONCAT 0x73 90f76b0469Sjordan #define AMLOP_SUBTRACT 0x74 91f76b0469Sjordan #define AMLOP_INCREMENT 0x75 92f76b0469Sjordan #define AMLOP_DECREMENT 0x76 93f76b0469Sjordan #define AMLOP_MULTIPLY 0x77 94f76b0469Sjordan #define AMLOP_DIVIDE 0x78 95f76b0469Sjordan #define AMLOP_SHL 0x79 96f76b0469Sjordan #define AMLOP_SHR 0x7A 97f76b0469Sjordan #define AMLOP_AND 0x7B 98f76b0469Sjordan #define AMLOP_NAND 0x7C 99f76b0469Sjordan #define AMLOP_OR 0x7D 100f76b0469Sjordan #define AMLOP_NOR 0x7E 101f76b0469Sjordan #define AMLOP_XOR 0x7F 102f76b0469Sjordan #define AMLOP_NOT 0x80 103f76b0469Sjordan #define AMLOP_FINDSETLEFTBIT 0x81 104f76b0469Sjordan #define AMLOP_FINDSETRIGHTBIT 0x82 105f76b0469Sjordan #define AMLOP_DEREFOF 0x83 106f76b0469Sjordan #define AMLOP_CONCATRES 0x84 107f76b0469Sjordan #define AMLOP_MOD 0x85 108f76b0469Sjordan #define AMLOP_NOTIFY 0x86 109f76b0469Sjordan #define AMLOP_SIZEOF 0x87 110f76b0469Sjordan #define AMLOP_INDEX 0x88 111f76b0469Sjordan #define AMLOP_MATCH 0x89 112f76b0469Sjordan #define AMLOP_CREATEDWORDFIELD 0x8A 113f76b0469Sjordan #define AMLOP_CREATEWORDFIELD 0x8B 114f76b0469Sjordan #define AMLOP_CREATEBYTEFIELD 0x8C 115f76b0469Sjordan #define AMLOP_CREATEBITFIELD 0x8D 116f76b0469Sjordan #define AMLOP_OBJECTTYPE 0x8E 117f76b0469Sjordan #define AMLOP_CREATEQWORDFIELD 0x8F 118f76b0469Sjordan #define AMLOP_LAND 0x90 119f76b0469Sjordan #define AMLOP_LOR 0x91 120f76b0469Sjordan #define AMLOP_LNOT 0x92 121f76b0469Sjordan #define AMLOP_LNOTEQUAL 0x9293 122f76b0469Sjordan #define AMLOP_LLESSEQUAL 0x9294 123f76b0469Sjordan #define AMLOP_LGREATEREQUAL 0x9295 124f76b0469Sjordan #define AMLOP_LEQUAL 0x93 125f76b0469Sjordan #define AMLOP_LGREATER 0x94 126f76b0469Sjordan #define AMLOP_LLESS 0x95 127f76b0469Sjordan #define AMLOP_TOBUFFER 0x96 128f76b0469Sjordan #define AMLOP_TODECSTRING 0x97 129f76b0469Sjordan #define AMLOP_TOHEXSTRING 0x98 130f76b0469Sjordan #define AMLOP_TOINTEGER 0x99 131f76b0469Sjordan #define AMLOP_TOSTRING 0x9C 132f76b0469Sjordan #define AMLOP_COPYOBJECT 0x9D 133f76b0469Sjordan #define AMLOP_MID 0x9E 134f76b0469Sjordan #define AMLOP_CONTINUE 0x9F 135f76b0469Sjordan #define AMLOP_IF 0xA0 136f76b0469Sjordan #define AMLOP_ELSE 0xA1 137f76b0469Sjordan #define AMLOP_WHILE 0xA2 138f76b0469Sjordan #define AMLOP_NOP 0xA3 139f76b0469Sjordan #define AMLOP_RETURN 0xA4 140f76b0469Sjordan #define AMLOP_BREAK 0xA5 141f76b0469Sjordan #define AMLOP_BREAKPOINT 0xCC 142f76b0469Sjordan #define AMLOP_ONES 0xFF 143f76b0469Sjordan 144ac86860cSjordan #define AMLOP_FIELDUNIT 0xFE00 14530a01ff4Sjordan #define AML_ANYINT 0xFF00 146ac86860cSjordan 147f76b0469Sjordan /* 148f76b0469Sjordan * Comparison types for Match() 149f76b0469Sjordan * 150f76b0469Sjordan * true,==,<=,<,>=,> 151f76b0469Sjordan */ 152f76b0469Sjordan #define AML_MATCH_TR 0 153f76b0469Sjordan #define AML_MATCH_EQ 1 154f76b0469Sjordan #define AML_MATCH_LE 2 155f76b0469Sjordan #define AML_MATCH_LT 3 156f76b0469Sjordan #define AML_MATCH_GE 4 157f76b0469Sjordan #define AML_MATCH_GT 5 158f76b0469Sjordan 159f76b0469Sjordan /* Defined types for ObjectType() */ 160f76b0469Sjordan enum aml_objecttype { 161f76b0469Sjordan AML_OBJTYPE_UNINITIALIZED = 0, 162f76b0469Sjordan AML_OBJTYPE_INTEGER, 163f76b0469Sjordan AML_OBJTYPE_STRING, 164f76b0469Sjordan AML_OBJTYPE_BUFFER, 165f76b0469Sjordan AML_OBJTYPE_PACKAGE, 166f76b0469Sjordan AML_OBJTYPE_FIELDUNIT, 167f76b0469Sjordan AML_OBJTYPE_DEVICE, 168f76b0469Sjordan AML_OBJTYPE_EVENT, 169f76b0469Sjordan AML_OBJTYPE_METHOD, 170f76b0469Sjordan AML_OBJTYPE_MUTEX, 171f76b0469Sjordan AML_OBJTYPE_OPREGION, 172f76b0469Sjordan AML_OBJTYPE_POWERRSRC, 173f76b0469Sjordan AML_OBJTYPE_PROCESSOR, 174f76b0469Sjordan AML_OBJTYPE_THERMZONE, 175f76b0469Sjordan AML_OBJTYPE_BUFFERFIELD, 176f76b0469Sjordan AML_OBJTYPE_DDBHANDLE, 177033bb254Sjordan AML_OBJTYPE_DEBUGOBJ, 178033bb254Sjordan 179a1664966Sjordan AML_OBJTYPE_NAMEREF = 0x100, 18024e2239eSjordan AML_OBJTYPE_OBJREF, 18141b774f7Sjordan AML_OBJTYPE_SCOPE, 18241b774f7Sjordan AML_OBJTYPE_NOTARGET, 1832a12a229Sjordan AML_OBJTYPE_HEXSTRING, 1842a12a229Sjordan AML_OBJTYPE_DECSTRING, 185f76b0469Sjordan }; 186f76b0469Sjordan 187ebfe42f9Sjordan /* AML Opcode Arguments */ 188ebfe42f9Sjordan #define AML_ARG_INTEGER 'i' 189ebfe42f9Sjordan #define AML_ARG_BYTE 'b' 190ebfe42f9Sjordan #define AML_ARG_WORD 'w' 191ebfe42f9Sjordan #define AML_ARG_DWORD 'd' 192ebfe42f9Sjordan #define AML_ARG_QWORD 'q' 193c602d92cSjordan #define AML_ARG_IMPBYTE '!' 194ebfe42f9Sjordan #define AML_ARG_OBJLEN 'p' 195cda98319Smarco #define AML_ARG_STRING 'a' 196ebfe42f9Sjordan #define AML_ARG_BYTELIST 'B' 197ebfe42f9Sjordan #define AML_ARG_REVISION 'R' 198ebfe42f9Sjordan 199033bb254Sjordan #define AML_ARG_METHOD 'M' 200ebfe42f9Sjordan #define AML_ARG_NAMESTRING 'N' 201ebfe42f9Sjordan #define AML_ARG_NAMEREF 'n' 202ebfe42f9Sjordan #define AML_ARG_FIELDLIST 'F' 203a0179416Sjordan #define AML_ARG_FLAG 'f' 204ebfe42f9Sjordan 205cda98319Smarco #define AML_ARG_DATAOBJLIST 'O' 206cda98319Smarco #define AML_ARG_DATAOBJ 'o' 207cda98319Smarco 208cda98319Smarco #define AML_ARG_SIMPLENAME 's' 209cda98319Smarco #define AML_ARG_SUPERNAME 'S' 210cda98319Smarco 211ebfe42f9Sjordan #define AML_ARG_TERMOBJLIST 'T' 212ebfe42f9Sjordan #define AML_ARG_TERMOBJ 't' 213ebfe42f9Sjordan 21441b774f7Sjordan #define AML_ARG_IFELSE 'I' 21541b774f7Sjordan #define AML_ARG_BUFFER 'B' 21641b774f7Sjordan #define AML_ARG_SEARCHNAME 'n' 21741b774f7Sjordan #define AML_ARG_CREATENAME 'N' 21841b774f7Sjordan #define AML_ARG_STKARG 'A' 21941b774f7Sjordan #define AML_ARG_STKLOCAL 'L' 22041b774f7Sjordan #define AML_ARG_DEBUG 'D' 22141b774f7Sjordan #define AML_ARG_CONST 'c' 22241b774f7Sjordan #define AML_ARG_TARGET 'r' 22341b774f7Sjordan 224c602d92cSjordan #define AML_METHOD_ARGCOUNT(v) (((v) >> 0) & 0x7) 225c602d92cSjordan #define AML_METHOD_SERIALIZED(v) (((v) >> 3) & 0x1) 226c602d92cSjordan #define AML_METHOD_SYNCLEVEL(v) (((v) >> 4) & 0xF) 227c602d92cSjordan 228fbea8eebSjordan #define AML_FIELD_ACCESSMASK 0x0F 229a1664966Sjordan #define AML_FIELD_SETATTR(f,t,a) (((f) & 0xF0) | ((t) & 0xF) | ((a)<<8)) 230c602d92cSjordan #define AML_FIELD_ACCESS(v) (((v) >> 0) & 0xF) 231ab5008fbSjordan # define AML_FIELD_ANYACC 0x0 232ab5008fbSjordan # define AML_FIELD_BYTEACC 0x1 233ab5008fbSjordan # define AML_FIELD_WORDACC 0x2 234ab5008fbSjordan # define AML_FIELD_DWORDACC 0x3 235ab5008fbSjordan # define AML_FIELD_QWORDACC 0x4 236ab5008fbSjordan # define AML_FIELD_BUFFERACC 0x5 237c602d92cSjordan #define AML_FIELD_LOCK(v) (((v) >> 4) & 0x1) 238ab5008fbSjordan # define AML_FIELD_LOCK_OFF 0x0 239ab5008fbSjordan # define AML_FIELD_LOCK_ON 0x1 240c602d92cSjordan #define AML_FIELD_UPDATE(v) (((v) >> 5) & 0x3) 241ab5008fbSjordan # define AML_FIELD_PRESERVE 0x0 242ab5008fbSjordan # define AML_FIELD_WRITEASONES 0x1 243ab5008fbSjordan # define AML_FIELD_WRITEASZEROES 0x2 244a1664966Sjordan #define AML_FIELD_ATTR(v) ((v) >> 8) 245cda98319Smarco #define AML_FIELD_RESERVED 0x00 246cda98319Smarco /* XXX fix this name */ 247cda98319Smarco #define AML_FIELD_ATTR__ 0x01 248c602d92cSjordan 249048d6e7cSjordan struct aml_scope; 250c602d92cSjordan struct aml_node; 251c602d92cSjordan 2527302bb8fSderaadt struct aml_waitq { 25341b774f7Sjordan struct aml_scope *scope; 25441b774f7Sjordan SIMPLEQ_ENTRY(aml_waitq) link; 25541b774f7Sjordan }; 25641b774f7Sjordan SIMPLEQ_HEAD(aml_waitq_head, aml_waitq); 25741b774f7Sjordan 258c602d92cSjordan /* AML Object Value */ 2598c9695e2Sderaadt struct aml_value { 260c602d92cSjordan int type; 261c602d92cSjordan int length; 262a1664966Sjordan int refcnt; 26366304cccSjordan int stack; 26424e2239eSjordan struct aml_node *node; 265c602d92cSjordan union { 266c602d92cSjordan int64_t vinteger; 2672fed1ad9Sjordan char *vstring; 268d2eaebe9Skettenis uint8_t *vbuffer; 2692fed1ad9Sjordan struct aml_value **vpackage; 2702fed1ad9Sjordan struct { 271d2eaebe9Skettenis uint8_t iospace; 272d2eaebe9Skettenis uint64_t iobase; 273d2eaebe9Skettenis uint32_t iolen; 2743b455a03Smarco int flag; 2752fed1ad9Sjordan } vopregion; 276c602d92cSjordan struct { 277fbea8eebSjordan int flags; 278d2eaebe9Skettenis uint8_t *start; 279d2eaebe9Skettenis uint8_t *end; 280048d6e7cSjordan struct aml_value *(*fneval)(struct aml_scope *, struct aml_value *); 281d2eaebe9Skettenis uint8_t *base; 282c602d92cSjordan } vmethod; 283c602d92cSjordan struct { 284d2eaebe9Skettenis uint16_t type; 285d2eaebe9Skettenis uint16_t flags; 286d2eaebe9Skettenis uint32_t bitpos; 287d2eaebe9Skettenis uint32_t bitlen; 288fbea8eebSjordan struct aml_value *ref1; 289fbea8eebSjordan struct aml_value *ref2; 290fbea8eebSjordan int ref3; 291c602d92cSjordan } vfield; 292ab5008fbSjordan struct { 293d2eaebe9Skettenis uint8_t proc_id; 294d2eaebe9Skettenis uint32_t proc_addr; 295d2eaebe9Skettenis uint8_t proc_len; 296ab5008fbSjordan } vprocessor; 297ab5008fbSjordan struct { 29841b774f7Sjordan int type; 2992fed1ad9Sjordan int index; 300fbea8eebSjordan struct aml_value *ref; 301a1664966Sjordan } vobjref; 3022fed1ad9Sjordan struct { 303d2eaebe9Skettenis uint8_t pwr_level; 304d2eaebe9Skettenis uint16_t pwr_order; 305ab5008fbSjordan } vpowerrsrc; 306ad714237Smarco struct acpi_mutex *vmutex; 30741b774f7Sjordan struct { 308d2eaebe9Skettenis uint8_t *name; 30941b774f7Sjordan struct aml_node *node; 31041b774f7Sjordan } vnameref; 31141b774f7Sjordan struct { 31241b774f7Sjordan int synclvl; 31341b774f7Sjordan int savelvl; 31441b774f7Sjordan int count; 31541b774f7Sjordan char ownername[5]; 31641b774f7Sjordan struct aml_scope *owner; 31741b774f7Sjordan struct aml_waitq_head waiters; 31841b774f7Sjordan } Vmutex; 31941b774f7Sjordan struct { 32041b774f7Sjordan int state; 32141b774f7Sjordan struct aml_waitq_head waiters; 32241b774f7Sjordan } Vevent; 323c602d92cSjordan } _; 324c602d92cSjordan }; 3252fed1ad9Sjordan 3266ab98c39Sjordan #define v_nameref _.vbuffer 327a1664966Sjordan #define v_objref _.vobjref 328c602d92cSjordan #define v_integer _.vinteger 329c602d92cSjordan #define v_string _.vstring 330c602d92cSjordan #define v_buffer _.vbuffer 331c602d92cSjordan #define v_package _.vpackage 332c602d92cSjordan #define v_field _.vfield 333ab5008fbSjordan #define v_opregion _.vopregion 334c602d92cSjordan #define v_method _.vmethod 335ab5008fbSjordan #define v_processor _.vprocessor 336ab5008fbSjordan #define v_powerrsrc _.vpowerrsrc 337ad714237Smarco #define v_mutex _.vmutex 33841b774f7Sjordan #define v_mtx _.Vmutex 33941b774f7Sjordan #define v_evt _.Vevent 340c602d92cSjordan 34124e2239eSjordan #define xaml_intval(v) ((v)->v_integer) 3422fed1ad9Sjordan #define aml_strlen(v) ((v)->length) 343746a1e0eSmarco #define aml_strval(v) ((v)->v_string ? (v)->v_string : "bad string") 3442fed1ad9Sjordan #define aml_buflen(v) ((v)->length) 345033bb254Sjordan #define aml_bufval(v) ((v)->v_buffer) 3462fed1ad9Sjordan #define aml_pkglen(v) ((v)->length) 3472fed1ad9Sjordan #define aml_pkgval(v,i) (&(v)->v_package[(i)]) 348033bb254Sjordan 349311c37bcSjordan struct acpi_pci { 350311c37bcSjordan TAILQ_ENTRY(acpi_pci) next; 351311c37bcSjordan 352311c37bcSjordan struct aml_node *node; 353311c37bcSjordan struct device *device; 354311c37bcSjordan 355311c37bcSjordan int sub; 356311c37bcSjordan int seg; 357311c37bcSjordan int bus; 358311c37bcSjordan int dev; 359311c37bcSjordan int fun; 3600562dac2Skettenis 361*50b7f1f5Skettenis int _s0w; 3620562dac2Skettenis int _s3d; 3630562dac2Skettenis int _s3w; 3640562dac2Skettenis int _s4d; 3650562dac2Skettenis int _s4w; 366311c37bcSjordan }; 367311c37bcSjordan 368219e90e1Skettenis struct acpi_gpio { 369219e90e1Skettenis void *cookie; 370219e90e1Skettenis int (*read_pin)(void *, int); 3711b922435Skettenis void (*write_pin)(void *, int, int); 3725c79a181Sjsg void (*intr_establish)(void *, int, int, int (*)(void *), void *); 37315328e98Skettenis void (*intr_enable)(void *, int); 37415328e98Skettenis void (*intr_disable)(void *, int); 375219e90e1Skettenis }; 376219e90e1Skettenis 37711d486e4Skettenis struct i2c_controller; 37811d486e4Skettenis 3798c9695e2Sderaadt struct aml_node { 380c602d92cSjordan struct aml_node *parent; 381311c37bcSjordan 382311c37bcSjordan SIMPLEQ_HEAD(,aml_node) son; 383311c37bcSjordan SIMPLEQ_ENTRY(aml_node) sib; 384c602d92cSjordan 3854aaaf332Skettenis int attached; 3864aaaf332Skettenis 3876ab98c39Sjordan char name[5]; 388d2eaebe9Skettenis uint16_t opcode; 389d2eaebe9Skettenis uint8_t *start; 390d2eaebe9Skettenis uint8_t *end; 391c602d92cSjordan 3922fed1ad9Sjordan struct aml_value *value; 393311c37bcSjordan struct acpi_pci *pci; 394219e90e1Skettenis struct acpi_gpio *gpio; 39511d486e4Skettenis struct i2c_controller *i2c; 396c602d92cSjordan }; 397ebfe42f9Sjordan 398a1664966Sjordan #define aml_bitmask(n) (1L << ((n) & 0x7)) 399a1664966Sjordan #define aml_bitpos(n) ((n)&0x7) 400a1664966Sjordan #define aml_bytepos(n) ((n)>>3) 401a1664966Sjordan #define aml_bytelen(n) (((n)+7)>>3) 402a1664966Sjordan #define aml_bytealigned(x) !((x)&0x7) 403a1664966Sjordan 40467fadc30Skettenis #define AML_NO_TIMEOUT 0xffff 40567fadc30Skettenis 4063f15b72bSmarco #endif /* __DEV_ACPI_AMLTYPES_H__ */ 407