Index: sys/arch/i386/conf/files.i386 =================================================================== RCS file: /cvs/src/sys/arch/i386/conf/files.i386,v retrieving revision 1.167 diff -u -r1.167 files.i386 --- sys/arch/i386/conf/files.i386 16 Nov 2007 21:07:01 -0000 1.167 +++ sys/arch/i386/conf/files.i386 25 Nov 2007 14:51:33 -0000 @@ -300,6 +300,8 @@ file arch/i386/i386/apm.c apm needs-count file arch/i386/i386/apmcall.S apm +file arch/i386/i386/acpiapm.c apm | acpi + # Intel SMP specification 1.4 define mpbios file arch/i386/i386/mpbios.c mpbios needs-flag Index: sys/arch/i386/i386/acpi_machdep.c =================================================================== RCS file: /cvs/src/sys/arch/i386/i386/acpi_machdep.c,v retrieving revision 1.8 diff -u -r1.8 acpi_machdep.c --- sys/arch/i386/i386/acpi_machdep.c 16 Nov 2007 02:45:56 -0000 1.8 +++ sys/arch/i386/i386/acpi_machdep.c 25 Nov 2007 14:51:33 -0000 @@ -24,6 +24,7 @@ #include #include +#include #include #include @@ -172,4 +173,8 @@ { sc->sc_interrupt = isa_intr_establish(NULL, sc->sc_fadt->sci_int, IST_LEVEL, IPL_TTY, acpi_interrupt, sc, sc->sc_dev.dv_xname); + acpiapm_open = acpiopen; + acpiapm_close = acpiclose; + acpiapm_ioctl = acpiioctl; + acpiapm_kqfilter = acpikqfilter; } Index: sys/arch/i386/i386/apm.c =================================================================== RCS file: /cvs/src/sys/arch/i386/i386/apm.c,v retrieving revision 1.78 diff -u -r1.78 apm.c --- sys/arch/i386/i386/apm.c 3 Nov 2007 03:37:08 -0000 1.78 +++ sys/arch/i386/i386/apm.c 25 Nov 2007 14:51:33 -0000 @@ -66,6 +66,7 @@ #include #include +#include #include #include @@ -916,6 +917,10 @@ } /* All is well, let the rest of the world know */ + acpiapm_open = acpiopen; + acpiapm_close = acpiclose; + acpiapm_ioctl = acpiioctl; + acpiapm_kqfilter = acpikqfilter; apm_attached = 1; } } else { Index: sys/arch/i386/i386/conf.c =================================================================== RCS file: /cvs/src/sys/arch/i386/i386/conf.c,v retrieving revision 1.119 diff -u -r1.119 conf.c --- sys/arch/i386/i386/conf.c 18 Sep 2007 18:13:06 -0000 1.119 +++ sys/arch/i386/i386/conf.c 25 Nov 2007 14:51:33 -0000 @@ -151,8 +151,6 @@ #include "sequencer.h" cdev_decl(music); #include "joy.h" -#include "acpi.h" -#include "apm.h" #include "bthub.h" #include "pctr.h" #include "bios.h" @@ -224,7 +222,7 @@ cdev_disk_init(NCCD,ccd), /* 18: concatenated disk driver */ cdev_ss_init(NSS,ss), /* 19: SCSI scanner */ cdev_uk_init(NUK,uk), /* 20: unknown SCSI */ - cdev_apm_init(NAPM,apm), /* 21: Advanced Power Management */ + cdev_acpiapm_init(1,acpiapm), /* 21: Advanced Power Management */ cdev_fd_init(1,filedesc), /* 22: file descriptor pseudo-device */ cdev_bpftun_init(NBPFILTER,bpf),/* 23: Berkeley packet filter */ cdev_notdef(), /* 24 */ @@ -307,7 +305,7 @@ cdev_hotplug_init(NHOTPLUG,hotplug), /* 82: devices hot plugging */ cdev_gpio_init(NGPIO,gpio), /* 83: GPIO interface */ cdev_nvram_init(NNVRAM,nvram), /* 84: NVRAM interface */ - cdev_acpi_init(NACPI,acpi), /* 85: ACPI */ + cdev_notdef(), /* 85: ACPI (deprecated) */ cdev_bthub_init(NBTHUB,bthub), /* 86: bthub */ }; int nchrdev = sizeof(cdevsw) / sizeof(cdevsw[0]); Index: sys/arch/i386/i386/acpiapm.c =================================================================== RCS file: sys/arch/i386/i386/acpiapm.c diff -N sys/arch/i386/i386/acpiapm.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ sys/arch/i386/i386/acpiapm.c 25 Nov 2007 14:51:33 -0000 @@ -0,0 +1,58 @@ +/* $OpenBSD$ */ +/* + * Copyright (c) 2007 Ted Unangst + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include + + +int (*acpiapm_open)(dev_t, int, int, struct proc *); +int (*acpiapm_close)(dev_t, int, int, struct proc *); +int (*acpiapm_ioctl)(dev_t, u_long, caddr_t, int, struct proc *); +int (*acpiapm_kqfilter)(dev_t, struct knote *); + +int +acpiapmopen(dev_t dev, int flag, int mode, struct proc *p) +{ + if (!acpiapm_open) + return ENODEV; + return acpiapm_open(dev, flag, mode, p); +} + +int +acpiapmclose(dev_t dev, int flag, int mode, struct proc *p) +{ + if (!acpiapm_close) + return ENODEV; + return acpiapm_close(dev, flag, mode, p); +} + +int +acpiapmioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p) +{ + if (!acpiapm_ioctl) + return ENODEV; + return acpiapm_ioctl(dev, cmd, data, flag, p); +} + +int +acpiapmkqfilter(dev_t dev, struct knote *kn) +{ + if (!acpiapm_kqfilter) + return ENODEV; + return acpiapm_kqfilter(dev, kn); +} Index: sys/arch/i386/include/conf.h =================================================================== RCS file: /cvs/src/sys/arch/i386/include/conf.h,v retrieving revision 1.12 diff -u -r1.12 conf.h --- sys/arch/i386/include/conf.h 31 Dec 2005 21:22:34 -0000 1.12 +++ sys/arch/i386/include/conf.h 25 Nov 2007 14:51:33 -0000 @@ -49,13 +49,7 @@ cdev_decl(pc); -#define cdev_apm_init(c,n) {\ - dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \ - (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \ - (dev_type_stop((*))) enodev, 0, (dev_type_poll((*))) enodev, \ - (dev_type_mmap((*))) enodev, 0, D_KQFILTER, dev_init(c,n,kqfilter) } - -#define cdev_acpi_init(c,n) {\ +#define cdev_acpiapm_init(c,n) {\ dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \ (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \ (dev_type_stop((*))) enodev, 0, (dev_type_poll((*))) enodev, \ @@ -77,6 +71,8 @@ cdev_decl(acpi); cdev_decl(apm); + +cdev_decl(acpiapm); #define pctrpoll seltrue cdev_decl(pctr); Index: sys/arch/i386/include/acpiapm.h =================================================================== RCS file: sys/arch/i386/include/acpiapm.h diff -N sys/arch/i386/include/acpiapm.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ sys/arch/i386/include/acpiapm.h 25 Nov 2007 14:51:33 -0000 @@ -0,0 +1,30 @@ +/* $OpenBSD$ */ +/* + * Copyright (c) 2007 Ted Unangst + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +#ifndef _I386_ACPIAPM_H_ +#define _I386_ACPIAPM_H_ + +extern int (*acpiapm_open)(dev_t, int, int, struct proc *); +extern int (*acpiapm_close)(dev_t, int, int, struct proc *); +extern int (*acpiapm_ioctl)(dev_t, u_long, caddr_t, int, struct proc *); +extern int (*acpiapm_kqfilter)(dev_t, struct knote *); + +extern int acpiopen(dev_t dev, int flag, int mode, struct proc *p); +extern int acpiclose(dev_t dev, int flag, int mode, struct proc *p); +extern int acpiioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p); +extern int acpikqfilter(dev_t dev, struct knote *kn); + +#endif /* _I386_ACPIAPM_H_ */