xref: /openbsd/sys/dev/acpi/acpivar.h (revision 8a0aee6c)
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