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