xref: /netbsd/sys/arch/arm/xscale/pxa2x0_apm.h (revision 5f819ca3)
1 /*	$NetBSD: pxa2x0_apm.h,v 1.3 2012/10/27 17:17:42 chs Exp $	*/
2 /*	$OpenBSD: pxa2x0_apm.h,v 1.7 2005/04/13 05:40:07 uwe Exp $	*/
3 
4 /*
5  * Copyright (c) 2005 Uwe Stuehler <uwe@bsdx.de>
6  *
7  * Permission to use, copy, modify, and distribute this software for any
8  * purpose with or without fee is hereby granted, provided that the above
9  * copyright notice and this permission notice appear in all copies.
10  *
11  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 #ifndef _PXA2X0_APM_H_
21 #define _PXA2X0_APM_H_
22 
23 #include <sys/event.h>
24 
25 #include <sys/bus.h>
26 #include <machine/apmvar.h>
27 
28 struct pxa2x0_apm_softc {
29 	device_t sc_dev;
30 	struct	proc *sc_thread;
31 	kmutex_t sc_lock;
32 	struct	klist sc_note;
33 	int	sc_flags;
34 	int	sc_wakeon;	/* enabled wakeup sources */
35 	int	sc_batt_life;
36 	bus_space_tag_t sc_iot;
37 	bus_space_handle_t sc_pm_ioh;
38 	bus_space_handle_t sc_memctl_ioh;
39 	int	(*sc_get_event)(struct pxa2x0_apm_softc *, u_int *);
40 	void	(*sc_power_info)(struct pxa2x0_apm_softc *,
41 	    struct apm_power_info *);
42 	void	(*sc_suspend)(struct pxa2x0_apm_softc *);
43 	int	(*sc_resume)(struct pxa2x0_apm_softc *);
44 };
45 
46 void	pxa2x0_apm_attach_sub(struct pxa2x0_apm_softc *);
47 void	pxa2x0_apm_sleep(struct pxa2x0_apm_softc *);
48 
49 #define PXA2X0_WAKEUP_POWERON	(1<<0)
50 #define PXA2X0_WAKEUP_GPIORST	(1<<1)
51 #define PXA2X0_WAKEUP_SD	(1<<2)
52 #define PXA2X0_WAKEUP_RC	(1<<3)
53 #define PXA2X0_WAKEUP_SYNC	(1<<4)
54 #define PXA2X0_WAKEUP_KEYNS0	(1<<5)
55 #define PXA2X0_WAKEUP_KEYNS1	(1<<6)
56 #define PXA2X0_WAKEUP_KEYNS2	(1<<7)
57 #define PXA2X0_WAKEUP_KEYNS3	(1<<8)
58 #define PXA2X0_WAKEUP_KEYNS4	(1<<9)
59 #define PXA2X0_WAKEUP_KEYNS5	(1<<10)
60 #define PXA2X0_WAKEUP_KEYNS6	(1<<11)
61 #define PXA2X0_WAKEUP_CF0	(1<<12)
62 #define PXA2X0_WAKEUP_CF1	(1<<13)
63 #define PXA2X0_WAKEUP_USBD	(1<<14)
64 #define PXA2X0_WAKEUP_LOCKSW	(1<<15)
65 #define PXA2X0_WAKEUP_JACKIN	(1<<16)
66 #define PXA2X0_WAKEUP_CHRGFULL	(1<<17)
67 #define PXA2X0_WAKEUP_RTC	(1<<18)
68 
69 #define PXA2X0_WAKEUP_KEYNS_ALL	(PXA2X0_WAKEUP_KEYNS0|			\
70     PXA2X0_WAKEUP_KEYNS1|PXA2X0_WAKEUP_KEYNS2|PXA2X0_WAKEUP_KEYNS3|	\
71     PXA2X0_WAKEUP_KEYNS4|PXA2X0_WAKEUP_KEYNS5|PXA2X0_WAKEUP_KEYNS6)
72 
73 #define PXA2X0_WAKEUP_CF_ALL	(PXA2X0_WAKEUP_CF0|PXA2X0_WAKEUP_CF1)
74 
75 #define PXA2X0_WAKEUP_ALL	(PXA2X0_WAKEUP_POWERON|			\
76     PXA2X0_WAKEUP_GPIORST|PXA2X0_WAKEUP_SD|PXA2X0_WAKEUP_RC|		\
77     PXA2X0_WAKEUP_SYNC|PXA2X0_WAKEUP_KEYNS_ALL|PXA2X0_WAKEUP_CF_ALL|	\
78     PXA2X0_WAKEUP_USBD|PXA2X0_WAKEUP_LOCKSW|PXA2X0_WAKEUP_JACKIN|	\
79     PXA2X0_WAKEUP_CHRGFULL|PXA2X0_WAKEUP_RTC)
80 
81 void	pxa2x0_wakeup_config(u_int, int);
82 u_int	pxa2x0_wakeup_status(void);
83 
84 #endif
85