1*8a0aee6cSkettenis /* $OpenBSD: acpivar.h,v 1.127 2024/05/13 19:56:37 kettenis Exp $ */ 27934d707Stholo /* 37934d707Stholo * Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com> 47934d707Stholo * 57934d707Stholo * Permission to use, copy, modify, and distribute this software for any 67934d707Stholo * purpose with or without fee is hereby granted, provided that the above 77934d707Stholo * copyright notice and this permission notice appear in all copies. 87934d707Stholo * 97934d707Stholo * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 107934d707Stholo * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 117934d707Stholo * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 127934d707Stholo * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 137934d707Stholo * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 147934d707Stholo * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 157934d707Stholo * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 167934d707Stholo */ 177934d707Stholo 18d2e44dfbSgrange #ifndef _DEV_ACPI_ACPIVAR_H_ 19d2e44dfbSgrange #define _DEV_ACPI_ACPIVAR_H_ 20d2e44dfbSgrange 21031569f1Smlarkin #define ACPI_TRAMPOLINE (19 * NBPG) 22555e6295Smlarkin #define ACPI_TRAMP_DATA (20 * NBPG) 23553edafeSmlarkin 24553edafeSmlarkin #ifndef _ACPI_WAKECODE 25553edafeSmlarkin 269890585bSvisa #include <sys/event.h> 277934d707Stholo #include <sys/timeout.h> 28ad714237Smarco #include <sys/rwlock.h> 29f2cc48b5Skettenis 30f2cc48b5Skettenis #include <machine/bus.h> 317934d707Stholo 322c626a9bSkettenis #include <dev/pci/pcivar.h> 332c626a9bSkettenis 34b08441edSmpi #include "acpipwrres.h" 35b08441edSmpi 362fed1ad9Sjordan /* #define ACPI_DEBUG */ 373f15b72bSmarco #ifdef ACPI_DEBUG 3835b6a4e1Stedu extern int acpi_debug; 393f15b72bSmarco #define dprintf(x...) do { if (acpi_debug) printf(x); } while (0) 403f15b72bSmarco #define dnprintf(n,x...) do { if (acpi_debug > (n)) printf(x); } while (0) 413f15b72bSmarco #else 423f15b72bSmarco #define dprintf(x...) 433f15b72bSmarco #define dnprintf(n,x...) 443f15b72bSmarco #endif 453f15b72bSmarco 468b9a27e5Sgwk extern int acpi_hasprocfvs; 47a6e4dcfbSkettenis extern int acpi_haspci; 488b9a27e5Sgwk 49ee9aaac4Scanacar struct acpiec_softc; 50b08441edSmpi struct acpipwrres_softc; 517934d707Stholo 5276adbdb1Spirofti struct acpivideo_softc { 5376adbdb1Spirofti struct device sc_dev; 5476adbdb1Spirofti 5576adbdb1Spirofti struct acpi_softc *sc_acpi; 5676adbdb1Spirofti struct aml_node *sc_devnode; 5776adbdb1Spirofti }; 5876adbdb1Spirofti 59a5d79199Skettenis #define ACPIDEVCF_ADDR 0 60a5d79199Skettenis #define acpidevcf_addr cf_loc[ACPIDEVCF_ADDR] 61a5d79199Skettenis #define ACPIDEVCF_ADDR_UNK -1 62a5d79199Skettenis 637934d707Stholo struct acpi_attach_args { 647934d707Stholo char *aaa_name; 657934d707Stholo bus_space_tag_t aaa_iot; 667934d707Stholo bus_space_tag_t aaa_memt; 67fd6cf807Skettenis bus_dma_tag_t aaa_dmat; 687934d707Stholo void *aaa_table; 6949fe235dSjordan struct aml_node *aaa_node; 70155ddd61Smarco const char *aaa_dev; 715c83c9d5Skettenis const char *aaa_cdev; 72f3530e5aSjsg uint64_t aaa_addr[8]; 73f3530e5aSjsg uint64_t aaa_size[8]; 74f3530e5aSjsg bus_space_tag_t aaa_bst[8]; 75f09f3dbfSkettenis int aaa_naddr; 76abd9722eSkettenis uint32_t aaa_irq[8]; 77abd9722eSkettenis uint32_t aaa_irq_flags[8]; 78f09f3dbfSkettenis int aaa_nirq; 797934d707Stholo }; 807934d707Stholo 817934d707Stholo struct acpi_mem_map { 827934d707Stholo vaddr_t baseva; 83d2eaebe9Skettenis uint8_t *va; 847934d707Stholo size_t vsize; 857934d707Stholo paddr_t pa; 867934d707Stholo }; 877934d707Stholo 887934d707Stholo struct acpi_q { 897934d707Stholo SIMPLEQ_ENTRY(acpi_q) q_next; 90e480f2ffSjordan int q_id; 917934d707Stholo void *q_table; 92d2eaebe9Skettenis uint8_t q_data[0]; 937934d707Stholo }; 947934d707Stholo 9590680e5dSjordan struct acpi_taskq { 9690680e5dSjordan SIMPLEQ_ENTRY(acpi_taskq) next; 9790680e5dSjordan void (*handler)(void *, int); 9890680e5dSjordan void *arg0; 9990680e5dSjordan int arg1; 10090680e5dSjordan }; 10190680e5dSjordan 1028925a8a2Sjordan struct acpi_wakeq { 1038925a8a2Sjordan SIMPLEQ_ENTRY(acpi_wakeq) q_next; 1048925a8a2Sjordan struct aml_node *q_node; 1058925a8a2Sjordan struct aml_value *q_wakepkg; 1068925a8a2Sjordan int q_gpe; 1078925a8a2Sjordan int q_state; 108d8f86d59Sdv int q_enabled; 1098925a8a2Sjordan }; 1108925a8a2Sjordan 111b08441edSmpi #if NACPIPWRRES > 0 112b08441edSmpi struct acpi_pwrres { 113b08441edSmpi SIMPLEQ_ENTRY(acpi_pwrres) p_next; 114b08441edSmpi struct aml_node *p_node; /* device's node */ 115b08441edSmpi int p_state; /* current state */ 116b08441edSmpi 117b08441edSmpi int p_res_state; 118b08441edSmpi struct acpipwrres_softc *p_res_sc; 119b08441edSmpi }; 120b08441edSmpi 121b08441edSmpi typedef SIMPLEQ_HEAD(, acpi_pwrres) acpi_pwrreshead_t; 122b08441edSmpi #endif /* NACPIPWRRES > 0 */ 123b08441edSmpi 1247934d707Stholo typedef SIMPLEQ_HEAD(, acpi_q) acpi_qhead_t; 1258925a8a2Sjordan typedef SIMPLEQ_HEAD(, acpi_wakeq) acpi_wakeqhead_t; 1267934d707Stholo 127f7afc720Sjordan #define ACPIREG_PM1A_STS 0x00 128f7afc720Sjordan #define ACPIREG_PM1A_EN 0x01 129f7afc720Sjordan #define ACPIREG_PM1A_CNT 0x02 130f7afc720Sjordan #define ACPIREG_PM1B_STS 0x03 131f7afc720Sjordan #define ACPIREG_PM1B_EN 0x04 132f7afc720Sjordan #define ACPIREG_PM1B_CNT 0x05 133f7afc720Sjordan #define ACPIREG_PM2_CNT 0x06 134f7afc720Sjordan #define ACPIREG_PM_TMR 0x07 135f7afc720Sjordan #define ACPIREG_GPE0_STS 0x08 136f7afc720Sjordan #define ACPIREG_GPE0_EN 0x09 137f7afc720Sjordan #define ACPIREG_GPE1_STS 0x0A 138f7afc720Sjordan #define ACPIREG_GPE1_EN 0x0B 139f7afc720Sjordan #define ACPIREG_SMICMD 0x0C 140f7afc720Sjordan #define ACPIREG_MAXREG 0x0D 141f7afc720Sjordan 142f7afc720Sjordan /* Special registers */ 143f7afc720Sjordan #define ACPIREG_PM1_STS 0x0E 144f7afc720Sjordan #define ACPIREG_PM1_EN 0x0F 145f7afc720Sjordan #define ACPIREG_PM1_CNT 0x10 1466459a320Sjordan #define ACPIREG_GPE_STS 0x11 1476459a320Sjordan #define ACPIREG_GPE_EN 0x12 148f7afc720Sjordan 14933cd1acdSmlarkin /* System status (_SST) codes */ 15033cd1acdSmlarkin #define ACPI_SST_INDICATOR_OFF 0 15133cd1acdSmlarkin #define ACPI_SST_WORKING 1 15233cd1acdSmlarkin #define ACPI_SST_WAKING 2 15333cd1acdSmlarkin #define ACPI_SST_SLEEPING 3 15433cd1acdSmlarkin #define ACPI_SST_SLEEP_CONTEXT 4 15533cd1acdSmlarkin 1567241774bSderaadt struct acpi_parsestate { 157d2eaebe9Skettenis uint8_t *start; 158d2eaebe9Skettenis uint8_t *end; 159d2eaebe9Skettenis uint8_t *pos; 16049fe235dSjordan }; 16149fe235dSjordan 162f7afc720Sjordan struct acpi_reg_map { 163f7afc720Sjordan bus_space_handle_t ioh; 164f7afc720Sjordan int addr; 165f7afc720Sjordan int size; 166e9e14bdaSkettenis int access; 167f7afc720Sjordan const char *name; 168f7afc720Sjordan }; 169f7afc720Sjordan 17060b1d201Smarco struct acpi_thread { 17160b1d201Smarco struct acpi_softc *sc; 17260b1d201Smarco volatile int running; 17360b1d201Smarco }; 17460b1d201Smarco 175ad714237Smarco struct acpi_mutex { 176ad714237Smarco struct rwlock amt_lock; 177ad714237Smarco #define ACPI_MTX_MAXNAME 5 178ad714237Smarco char amt_name[ACPI_MTX_MAXNAME + 3]; /* only 4 used */ 179ad714237Smarco int amt_ref_count; 180ad714237Smarco int amt_timeout; 181ad714237Smarco int amt_synclevel; 182ad714237Smarco }; 183ad714237Smarco 184a296d278Sjordan struct gpe_block { 185a296d278Sjordan int (*handler)(struct acpi_softc *, int, void *); 186a296d278Sjordan void *arg; 187a296d278Sjordan int active; 1886e53388aSjcs int flags; 189a296d278Sjordan }; 190a296d278Sjordan 191487d8ee6Sjordan struct acpi_devlist { 192487d8ee6Sjordan struct aml_node *dev_node; 193487d8ee6Sjordan TAILQ_ENTRY(acpi_devlist) dev_link; 194487d8ee6Sjordan }; 195487d8ee6Sjordan 196487d8ee6Sjordan TAILQ_HEAD(acpi_devlist_head, acpi_devlist); 197487d8ee6Sjordan 19890b9003dSmarco struct acpi_ac { 19990b9003dSmarco struct acpiac_softc *aac_softc; 20090b9003dSmarco SLIST_ENTRY(acpi_ac) aac_link; 20190b9003dSmarco }; 20290b9003dSmarco 20390b9003dSmarco SLIST_HEAD(acpi_ac_head, acpi_ac); 20490b9003dSmarco 20590b9003dSmarco struct acpi_bat { 20690b9003dSmarco struct acpibat_softc *aba_softc; 20790b9003dSmarco SLIST_ENTRY(acpi_bat) aba_link; 20890b9003dSmarco }; 20990b9003dSmarco 21090b9003dSmarco SLIST_HEAD(acpi_bat_head, acpi_bat); 21190b9003dSmarco 212a7e2cbadSjcs struct acpi_sbs { 213a7e2cbadSjcs struct acpisbs_softc *asbs_softc; 214a7e2cbadSjcs SLIST_ENTRY(acpi_sbs) asbs_link; 215a7e2cbadSjcs }; 216a7e2cbadSjcs 217a7e2cbadSjcs SLIST_HEAD(acpi_sbs_head, acpi_sbs); 218a7e2cbadSjcs 2197934d707Stholo struct acpi_softc { 2207934d707Stholo struct device sc_dev; 2217934d707Stholo 2227934d707Stholo bus_space_tag_t sc_iot; 2237934d707Stholo bus_space_tag_t sc_memt; 2247d6fad0aSkettenis bus_dma_tag_t sc_cc_dmat; 2257d6fad0aSkettenis bus_dma_tag_t sc_ci_dmat; 2267934d707Stholo 2277934d707Stholo /* 2287934d707Stholo * First-level ACPI tables 2297934d707Stholo */ 2307934d707Stholo struct acpi_fadt *sc_fadt; 2317934d707Stholo acpi_qhead_t sc_tables; 2328925a8a2Sjordan acpi_wakeqhead_t sc_wakedevs; 233b08441edSmpi #if NACPIPWRRES > 0 234b08441edSmpi acpi_pwrreshead_t sc_pwrresdevs; 235b08441edSmpi #endif /* NACPIPWRRES > 0 */ 2367b9723b3Skettenis int sc_hw_reduced; 2377934d707Stholo 2387934d707Stholo /* 2397934d707Stholo * Second-level information from FADT 2407934d707Stholo */ 2417934d707Stholo struct acpi_facs *sc_facs; /* Shared with firmware! */ 2427934d707Stholo 2439890585bSvisa struct klist sc_note; 244f7afc720Sjordan struct acpi_reg_map sc_pmregs[ACPIREG_MAXREG]; 2457934d707Stholo bus_space_handle_t sc_ioh_pm1a_evt; 2467934d707Stholo 2477934d707Stholo void *sc_interrupt; 2487934d707Stholo 249de171754Skettenis struct rwlock sc_lck; 250de171754Skettenis 251c1170821Sgrange struct { 252c1170821Sgrange int slp_typa; 253c1170821Sgrange int slp_typb; 25409c4959cSjordan } sc_sleeptype[6]; 255a296d278Sjordan int sc_lastgpe; 256a296d278Sjordan 257a296d278Sjordan struct gpe_block *gpe_table; 25860b1d201Smarco 259ebd9b974Sderaadt int sc_threadwaiting; 260d2eaebe9Skettenis uint32_t sc_gpe_sts; 261d2eaebe9Skettenis uint32_t sc_gpe_en; 26260b1d201Smarco struct acpi_thread *sc_thread; 263be66194eSjordan 2649108e412Spatrick struct aml_node *sc_root; 265482a69a6Sgwk struct aml_node *sc_tts; 266482a69a6Sgwk struct aml_node *sc_pts; 267482a69a6Sgwk struct aml_node *sc_bfs; 268482a69a6Sgwk struct aml_node *sc_gts; 26965a561a0Smlarkin struct aml_node *sc_sst; 270482a69a6Sgwk struct aml_node *sc_wak; 271482a69a6Sgwk int sc_state; 272*8a0aee6cSkettenis time_t sc_resume_time; 273ee9aaac4Scanacar struct acpiec_softc *sc_ec; /* XXX assume single EC */ 27490b9003dSmarco 27590b9003dSmarco struct acpi_ac_head sc_ac; 27690b9003dSmarco struct acpi_bat_head sc_bat; 277a7e2cbadSjcs struct acpi_sbs_head sc_sbs; 2786715140aSjcs int sc_havesbs; 27925ae5cf1Smarco 28025ae5cf1Smarco struct timeout sc_dev_timeout; 2815f1004c0Sderaadt 282f8753e49Skettenis int sc_major; 283f8753e49Skettenis int sc_minor; 2845bdf07b2Sjordan 2855bdf07b2Sjordan int sc_pse; /* passive cooling enabled */ 28632512613Skettenis 28732512613Skettenis int sc_flags; 28864fc6eebSjmatthew 28964fc6eebSjmatthew int sc_skip_processor; 2907934d707Stholo }; 2917934d707Stholo 292db50dd2eSderaadt extern struct acpi_softc *acpi_softc; 293db50dd2eSderaadt 29432512613Skettenis #define SCFLAG_OREAD 0x0000001 29532512613Skettenis #define SCFLAG_OWRITE 0x0000002 29632512613Skettenis #define SCFLAG_OPEN (SCFLAG_OREAD|SCFLAG_OWRITE) 29732512613Skettenis 29860b1d201Smarco #define GPE_NONE 0x00 29960b1d201Smarco #define GPE_LEVEL 0x01 30060b1d201Smarco #define GPE_EDGE 0x02 30160b1d201Smarco 3027934d707Stholo struct acpi_table { 3037934d707Stholo int offset; 3047934d707Stholo size_t size; 3057934d707Stholo void *table; 3067934d707Stholo }; 3077934d707Stholo 30846c410e9Spirofti struct acpi_dev_rank { 30946c410e9Spirofti struct device *dev; 31046c410e9Spirofti int rank; 31146c410e9Spirofti TAILQ_ENTRY(acpi_dev_rank) link; 31246c410e9Spirofti }; 31346c410e9Spirofti 3147934d707Stholo #define ACPI_IOC_GETFACS _IOR('A', 0, struct acpi_facs) 3157934d707Stholo #define ACPI_IOC_GETTABLE _IOWR('A', 1, struct acpi_table) 316f7afc720Sjordan #define ACPI_IOC_SETSLEEPSTATE _IOW('A', 2, int) 3177934d707Stholo 3187934d707Stholo #if defined(_KERNEL) 319f2cc48b5Skettenis 320b61ce84dSjordan struct acpi_gas; 321f2cc48b5Skettenis int acpi_map_address(struct acpi_softc *, struct acpi_gas *, bus_addr_t, 322f2cc48b5Skettenis bus_size_t, bus_space_handle_t *, bus_space_tag_t *); 323b61ce84dSjordan 3247934d707Stholo int acpi_map(paddr_t, size_t, struct acpi_mem_map *); 3257934d707Stholo void acpi_unmap(struct acpi_mem_map *); 326f2cc48b5Skettenis 327f2cc48b5Skettenis int acpi_bus_space_map(bus_space_tag_t, bus_addr_t, bus_size_t, int, 328f2cc48b5Skettenis bus_space_handle_t *); 329f2cc48b5Skettenis void acpi_bus_space_unmap(bus_space_tag_t, bus_space_handle_t, bus_size_t); 330f2cc48b5Skettenis 331f2cc48b5Skettenis struct bios_attach_args; 332f63689adSderaadt int acpi_probe(struct device *, struct cfdata *, struct bios_attach_args *); 3337934d707Stholo u_int acpi_checksum(const void *, size_t); 334f2cc48b5Skettenis void acpi_attach_common(struct acpi_softc *, paddr_t); 3357934d707Stholo void acpi_attach_machdep(struct acpi_softc *); 3367934d707Stholo int acpi_interrupt(void *); 33717c2a2daSjordan void acpi_powerdown(void); 338cdcf7f1dSjsg void acpi_reset(void); 339c63fde91Snatano 3401e4b376cSderaadt int acpi_sleep_cpu(struct acpi_softc *, int); 3411e4b376cSderaadt void acpi_sleep_pm(struct acpi_softc *, int); 3421e4b376cSderaadt void acpi_resume_pm(struct acpi_softc *, int); 343228cb976Sderaadt void acpi_resume_cpu(struct acpi_softc *, int); 344*8a0aee6cSkettenis int acpi_resuming(struct acpi_softc *); 345fbb4bab4Smarco 346ac86860cSjordan #define ACPI_IOREAD 0 347ac86860cSjordan #define ACPI_IOWRITE 1 348ac86860cSjordan 34930cdf572Sderaadt void acpi_wakeup(void *); 35030cdf572Sderaadt 351fbea8eebSjordan int acpi_gasio(struct acpi_softc *, int, int, uint64_t, int, int, void *); 352ac86860cSjordan 35394e0b117Skettenis void acpi_register_gpio(struct acpi_softc *, struct aml_node *); 35411d486e4Skettenis void acpi_register_gsb(struct acpi_softc *, struct aml_node *); 35594e0b117Skettenis 3567241774bSderaadt int acpi_set_gpehandler(struct acpi_softc *, int, 3574fd192ceSderaadt int (*)(struct acpi_softc *, int, void *), void *, int); 358ee9aaac4Scanacar 359d2eaebe9Skettenis void acpiec_read(struct acpiec_softc *, uint8_t, int, uint8_t *); 360d2eaebe9Skettenis void acpiec_write(struct acpiec_softc *, uint8_t, int, uint8_t *); 361ee776520Sjordan 362b08441edSmpi #if NACPIPWRRES > 0 363b08441edSmpi int acpipwrres_ref_incr(struct acpipwrres_softc *, struct aml_node *); 364b08441edSmpi int acpipwrres_ref_decr(struct acpipwrres_softc *, struct aml_node *); 365b08441edSmpi #endif /* NACPIPWRRES > 0 */ 366b08441edSmpi 367ee776520Sjordan int acpi_read_pmreg(struct acpi_softc *, int, int); 368ee776520Sjordan void acpi_write_pmreg(struct acpi_softc *, int, int, int); 36925ae5cf1Smarco 37025ae5cf1Smarco void acpi_poll(void *); 37178ac519aSderaadt void acpi_sleep(int, char *); 3723cd93248Sgwk 373e3ba7f78Skettenis int acpi_matchcls(struct acpi_attach_args *, int, int, int); 3747df90d51Smarco int acpi_matchhids(struct acpi_attach_args *, const char *[], const char *); 375b037e2e6Sjcs int acpi_parsehid(struct aml_node *, void *, char *, char *, size_t); 376db21afacStb void acpi_parse_crs(struct acpi_softc *, struct acpi_attach_args *); 377b6eb6364Skettenis int64_t acpi_getsta(struct acpi_softc *sc, struct aml_node *); 3787df90d51Smarco 37929527e8bSkettenis int acpi_getprop(struct aml_node *, const char *, void *, int); 3804582e297Spatrick uint64_t acpi_getpropint(struct aml_node *, const char *, uint64_t); 3818c921c7bSkettenis 382ad814436Sderaadt void acpi_indicator(struct acpi_softc *, int); 383ad814436Sderaadt void acpi_disable_allgpes(struct acpi_softc *); 384ad814436Sderaadt void acpi_enable_wakegpes(struct acpi_softc *, int); 385ad814436Sderaadt 3863e37c391Sclaudio int acpi_batcount(struct acpi_softc *); 387093f7b02Skettenis struct apm_power_info; 388093f7b02Skettenis int acpi_apminfo(struct apm_power_info *); 389093f7b02Skettenis 39032512613Skettenis int acpi_record_event(struct acpi_softc *, u_int); 39132512613Skettenis 39290680e5dSjordan void acpi_addtask(struct acpi_softc *, void (*)(void *, int), void *, int); 39390680e5dSjordan int acpi_dotask(struct acpi_softc *); 39490680e5dSjordan 39590680e5dSjordan void acpi_powerdown_task(void *, int); 39690680e5dSjordan void acpi_sleep_task(void *, int); 39790680e5dSjordan 398b63dc4f6Spirofti /* Section 5.2.10.1: global lock acquire/release functions */ 399b63dc4f6Spirofti #define GL_BIT_PENDING 0x01 400b63dc4f6Spirofti #define GL_BIT_OWNED 0x02 401b63dc4f6Spirofti int acpi_acquire_glk(uint32_t *); 402b63dc4f6Spirofti int acpi_release_glk(uint32_t *); 403b63dc4f6Spirofti 404e9cca399Sehrhardt void acpi_pciroots_attach(struct device *, void *, cfprint_t); 405ba58ad3dSstsp void acpi_attach_deps(struct acpi_softc *, struct aml_node *); 406e9cca399Sehrhardt 4076550c394Skettenis struct aml_node *acpi_find_pci(pci_chipset_tag_t, pcitag_t); 4086550c394Skettenis 409fefd105dSkettenis void *acpi_intr_establish(int, int, int, int (*)(void *), void *, 410fefd105dSkettenis const char *); 411dd7b8789Skettenis void acpi_intr_disestablish(void *); 412fefd105dSkettenis 413df988fb6Sderaadt struct acpi_q *acpi_maptable(struct acpi_softc *sc, paddr_t, 414df988fb6Sderaadt const char *, const char *, const char *, int); 415df988fb6Sderaadt 416c375c363Spatrick bus_dma_tag_t acpi_iommu_device_map(struct aml_node *, bus_dma_tag_t); 417c375c363Spatrick 418d8f86d59Sdv int acpi_toggle_wakedev(struct acpi_softc *, struct aml_node *, int); 419d8f86d59Sdv 4207934d707Stholo #endif 421d2e44dfbSgrange 422553edafeSmlarkin #endif /* !_ACPI_WAKECODE */ 423d2e44dfbSgrange #endif /* !_DEV_ACPI_ACPIVAR_H_ */ 424