Commit Graph

130 Commits

Author SHA1 Message Date
phk
05fcfd3993 Remove unneeded #include <sys/proc.h> lines. 2000-10-29 13:57:19 +00:00
iwasaki
84b350e1cf Add Timer device driver for power management events.
The code for suspend/resume is derived from APM device driver.

Some people suggested the original code is somewhat buggy, but I'd
like to just move it from apm.c without any major changes for the
initial version.  This code should be refined later.

To use pmtimer to adjust time at resume time, add
	device	pmtimer
in your kernel config file, and add
	hint.pmtimer.0.at="isa"
in your device.hints

Reviewed by:	-current, bde
2000-09-14 22:34:57 +00:00
ume
a1222ebd62 Add output of per battery information to apm(1).
New ioctl APMIO_GETPWSTATUS is introduced.

Reviewed by:	-mobile and -current folks (no objection)
2000-08-13 17:05:27 +00:00
iwasaki
19f7c2daf1 Cleanup debug messages and Add some enhancements from linux on
display control by apm -d.
 - Remove APM_DEBUG to avoid re-build kernel with such a unspported optioin.
 - Introduce new denug flag `debug.apm_debug' which can be controlled by
   sysctl interface and loader by setting like "debug.apm_debug=1", you
   will get debug messages from APM driver.
 - Add some enhancements from linux on display control by apm -d.  I'm
   expecting that we can see some improvements on some laptops where
   apm -d doesn't work correctly so far.

Reviewed by:	-mobile and -current folks (no objection)
Suggested by:	Susumu WAKABAYASHI <susumu@wakabaya.net>
2000-08-04 20:28:53 +00:00
imp
9d9955179f Except for the information gathering IOCTLs, require apm device be
opened for write.  This should make the apm device read only safe.
2000-07-19 06:32:00 +00:00
n_hibma
5447bd3579 Correctly handle suspend and resume in APM.
Up to now, errors from DEVICE_SUSPEND(root_bus) were ignored. The fix for
this problem (the introduction of defaults for device methods) has been
committed months ago by Doug Rabson.

Second, the suspended devices were not always properly resumed on error.

Third, swapped the order for calling restore hooks and restore methods, to
be in line with the cases above.

Reviewed by:	Doug Rabson
Approved by:	jhk
2000-02-06 14:57:05 +00:00
jlemon
5a97c96dd1 Remove code to select APM version with flags to the apm0 device. This
code has been disabled for the last 4 months.

Prodded into action by:	 n_hibma
1999-12-02 03:13:11 +00:00
peter
39b76d9a75 Use DRIVER_MODULE(), apm.c already takes care of it's devices with
make_dev().
1999-11-08 07:44:26 +00:00
iwasaki
4776ce43f9 i8254_restore is called from apm_default_resume() to reload
the countdown register.
this should not be necessary but there are broken laptops that
do not restore the countdown register on resume.
when it happnes, it messes up the hardclock interval and system clock,
which leads to the infamous "calcru: negative time" problem.

Submitted by:	kjc, iwasaki
Reviewed by:	Steve O'Hara-Smith <steveo@eircom.net> and committers.
Obtained from:	PAO3
1999-10-30 14:56:01 +00:00
nsayer
2d328cd6b7 Fix APM's make_devs:
1. chown root:operator, chmod 660

2. Add /dev/apmctl as well as /dev/apm
1999-10-12 15:00:06 +00:00
nsayer
5cef311b40 Prepare for the apm_saver screen saver module.
1. Break out the definition of the soft state structure into an include
file.

2. un-static the soft state and apm_display(), and group them under a
comment that notes the dependency.
1999-10-02 03:34:15 +00:00
phk
6315220fe7 Remove five now unused fields from struct cdevsw. They should never
have been there in the first place.  A GENERIC kernel shrinks almost 1k.

Add a slightly different safetybelt under nostop for tty drivers.

Add some missing FreeBSD tags
1999-09-25 18:24:47 +00:00
iwasaki
7719756221 Return immediately from apm_suspend() when APM BIOS wasn't initialized.
Pressing Alt-Pause key will cause machine to reboot with apm disabled.

PR:		i386/13817
Submitted by:	yokota
1999-09-20 15:29:23 +00:00
iwasaki
bf1b4f1923 Handle CAPABILITIESCHANGE event.
Document USERSTANDBYREQ and CAPABILITIESCHANGE events to apmd manpage.
1999-09-11 16:00:28 +00:00
nsayer
3493e3d155 Handle UserStandbyRequests as well as the other 3 members of the
{,USER}{STANDBY,SUSPEND}REQ matrix.
1999-09-11 15:12:31 +00:00
peter
e4b04a2b21 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
phk
cc9c903eaf Convert DEVFS hooks in (most) drivers to make_dev().
Diskslice/label code not yet handled.

Vinum, i4b, alpha, pc98 not dealt with (left to respective Maintainers)

Add the correct hook for devfs to kern_conf.c

The net result of this excercise is that a lot less files depends on DEVFS,
and devtoname() gets more sensible output in many cases.

A few drivers had minor additional cleanups performed relating to cdevsw
registration.

A few drivers don't register a cdevsw{} anymore, but only use make_dev().
1999-08-23 20:59:21 +00:00
peter
0c28caaafa Add an identify method to allow apm to attach itself to the nexus
without hooks in there.
1999-08-22 19:51:33 +00:00
iwasaki
6cee0f7e9a Fix `key release event prevent suspend' problem. We don't need
`sleep 1; zzz' trick now.

- APM BIOS Call for suspend/standby now should be issued with delay.
- Delay for suspend/standby can be adjusted by using sysctl(8) interface
  (eg. sysctl -w machdep.apm_suspend_delay=3).
1999-08-22 14:48:00 +00:00
msmith
c2bc14bbac Implement a new generic mechanism for attaching handler functions to
events, in order to pave the way for removing a number of the ad-hoc
implementations currently in use.

Retire the at_shutdown family of functions and replace them with
new event handler lists.

Rework kern_shutdown.c to take greater advantage of the use of event
handlers.

Reviewed by:	green
1999-08-21 06:24:40 +00:00
iwasaki
20383da90e - Add apm_check_function_supported() and call it from
apm_bioscall() to check requested BIOS is supported or not.

- Add workaround in apm_driver_version() for the buggy BIOSes which
  don't return the connection version in %ax.

PR:		i386/13028
Reviewed by:	sanpei@sanpei.org and Warner Losh.
1999-08-14 18:39:40 +00:00
msmith
1acf1cc6e7 Don't trust the segment limits that the BIOS reports; instead give it
as much space as possible to avoid lossage due to sloppy BIOS
programming.
1999-08-02 18:46:34 +00:00
msmith
7f5eec3273 Reenable the APMIO_BIOS ioctl and translate arguments into the new format
(which is more like the old than I thought).

Requested-by:	imp
1999-07-30 19:35:03 +00:00
msmith
707b93227a Remove all vestiges of APMIO_BIOS
Submitted by:	N. Dudorov <nnd@mail.nsk.ru>
1999-07-30 08:24:23 +00:00
iwasaki
802b8b8f67 No more apm_errno. It breaks the build with APM_DEBUG,
uses (sc->bios.r.eax >> 8) & 0xff instead.
1999-07-29 18:15:33 +00:00
msmith
59cde2434f Nuke this, it's not used anymore. 1999-07-29 01:52:13 +00:00
msmith
4d0b2995c8 Major update to the kernel's BIOS-calling ability.
- Add support for calling 32-bit code in other segments
 - Add support for calling 16-bit protected mode code

Update APM to use this facility.

Submitted by:	jlemon
1999-07-29 01:49:19 +00:00
msmith
f9d4818d0a Remove unused real-mode APM setup support. We've been using the vm86
mode initialiser for a while now, and it's looking happy.
1999-07-28 20:20:31 +00:00
msmith
19d917c820 Remove unused real-mode APM init functions. 1999-07-28 20:07:12 +00:00
msmith
6352576895 Remove some erroneous comments about how APM is initialised. 1999-07-28 19:37:32 +00:00
iwasaki
303a403ef5 Add braces to make if-else statement clearer.
PR:		12663
Submitted by:	Adam Wight <adamw@holonet.net>
1999-07-22 14:45:22 +00:00
iwasaki
49cb8a52af Add apmd support code. 1999-07-10 18:08:57 +00:00
phk
9c4969ea5b Remove cmaj and bmaj args from DEV_DRIVER_MODULE. 1999-07-04 14:58:56 +00:00
jlemon
504c44caaf Unifdef VM86
Reviewed by:	silence on on -current
1999-06-01 18:17:50 +00:00
phk
8def0eb3c8 This commit should be a extensive NO-OP:
Reformat and initialize correctly all "struct cdevsw".

        Initialize the d_maj and d_bmaj fields.

        The d_reset field was not removed, although it is never used.

I used a program to do most of this, so all the files now use the
same consistent format.  Please keep it that way.

Vinum and i4b not modified, patches emailed to respective authors.
1999-05-30 16:53:49 +00:00
phk
0ce4fc47d3 Divorce "dev_t" from the "major|minor" bitmap, which is now called
udev_t in the kernel but still called dev_t in userland.

Provide functions to manipulate both types:
        major()         umajor()
        minor()         uminor()
        makedev()       umakedev()
        dev2udev()      udev2dev()

For now they're functions, they will become in-line functions
after one of the next two steps in this process.

Return major/minor/makedev to macro-hood for userland.

Register a name in cdevsw[] for the "filedescriptor" driver.

In the kernel the udev_t appears in places where we have the
major/minor number combination, (ie: a potential device: we
may not have the driver nor the device), like in inodes, vattr,
cdevsw registration and so on, whereas the dev_t appears where
we carry around a reference to a actual device.

In the future the cdevsw and the aliased-from vnode will be hung
directly from the dev_t, along with up to two softc pointers for
the device driver and a few houskeeping bits.  This will essentially
replace the current "alias" check code (same buck, bigger bang).

A little stunt has been provided to try to catch places where the
wrong type is being used (dev_t vs udev_t), if you see something
not working, #undef DEVT_FASCIST in kern/kern_conf.c and see if
it makes a difference.  If it does, please try to track it down
(many hands make light work) or at least try to reproduce it
as simply as possible, and describe how to do that.

Without DEVT_FASCIST I belive this patch is a no-op.

Stylistic/posixoid comments about the userland view of the <sys/*.h>
files welcome now, from userland they now contain the end result.

Next planned step: make all dev_t's refer to the same devsw[] which
means convert BLK's to CHR's at the perimeter of the vnodes and
other places where they enter the game (bootdev, mknod, sysctl).
1999-05-11 19:55:07 +00:00
phk
c667de5e40 Unconfuse DEV_MODULE() and DEV_DRIVER_MODULE() about the difference between
a major number for a dev_t.
1999-05-09 13:00:50 +00:00
yokota
2cd17c5d4e Make apm_probe() properly return an error code when APM BIOS calls
failed, so that the apm driver won't be attached.
1999-05-09 04:58:13 +00:00
dfr
5229d3887a Move the declaration of the interrupt type from the driver structure
to the BUS_SETUP_INTR call.
1999-05-08 21:59:43 +00:00
phk
032245568a Continue where Julian left off in July 1998:
Virtualize bdevsw[] from cdevsw.  bdevsw() is now an (inline)
        function.

        Join CDEV_MODULE and BDEV_MODULE to DEV_MODULE (please pay attention
        to the order of the cmaj/bmaj arguments!)

        Join CDEV_DRIVER_MODULE and BDEV_DRIVER_MODULE to DEV_DRIVER_MODULE
        (ditto!)

(Next step will be to convert all bdev dev_t's to cdev dev_t's
before they get to do any damage^H^H^H^H^H^Hwork in the kernel.)
1999-05-07 10:11:40 +00:00
luoqi
d5ea549b69 Now that each cpu has its own gdt table, we need to setup apm gdt entries in
all the tables.
1999-05-06 01:07:03 +00:00
imp
ca4240bb3a DEVICE_SUSPEND was always returning ENXIO for reasons unknown. For
now we noisily ignore this (and all errors).  DEVICE_SUSPEND should be
corrected, but I wanted to unbreak suspend until that happens.
1999-04-21 07:57:55 +00:00
dfr
d7d6b0c8e2 Add support for 'disabled' probe hint. 1999-04-18 15:10:58 +00:00
peter
dc1b9002a0 Bring the 'new-bus' to the i386. This extensively changes the way the
i386 platform boots, it is no longer ISA-centric, and is fully dynamic.
Most old drivers compile and run without modification via 'compatability
shims' to enable a smoother transition.  eisa, isapnp and pccard* are
not yet using the new resource manager.  Once fully converted, all drivers
will be loadable, including PCI and ISA.

(Some other changes appear to have snuck in, including a port of Soren's
 ATA driver to the Alpha.  Soren, back this out if you need to.)

This is a checkpoint of work-in-progress, but is quite functional.

The bulk of the work was done over the last few years by Doug Rabson and
Garrett Wollman.

Approved by:	core
1999-04-16 21:22:55 +00:00
msmith
1936711459 Perform APM power-off on power-off request, not halt request. 1998-12-10 23:36:14 +00:00
archie
e4ea613821 Fix typo: "==" should have been "="
PR:		8280 (1/3 patches contained in this PR)
Reviewed by:	Nate Williams <nate@mt.sri.com>
Submitted by:	Sakari Jalovaara <sja@tekla.fi>
1998-12-04 21:28:39 +00:00
msmith
87024ae330 Add the ability to specify where on the at_shutdown queue a handler is
installed.

Remove cpu_power_down, and replace it with an entry at the end of the
SHUTDOWN_FINAL queue in the only place it's used (APM).

Submitted by:	Some ideas from Bruce Walter <walter@fortean.com>
1998-10-30 05:41:15 +00:00
jlemon
8fd3665a92 Use defines APM_BIOS and SYSTEM_BIOS instead of hardcoding 0x53 and 0x15. 1998-09-28 03:41:12 +00:00
imp
59a7b60a01 Add the ability to suspend as well as hibernate to the system. This
is the kernel part of my commits, the userlevel stuff will be done in
a separate commit.  Add the ability to suspend as well as hibernate to
syscons.  Create a new virtual key like hibernate for suspend.  Update
apm_bios.h to define more apm bios goodies.
1998-07-06 06:29:07 +00:00
dfr
92449ad5fa This commit fixes various 64bit portability problems required for
FreeBSD/alpha.  The most significant item is to change the command
argument to ioctl functions from int to u_long.  This change brings us
inline with various other BSD versions.  Driver writers may like to
use (__FreeBSD_version == 300003) to detect this change.

The prototype FreeBSD/alpha machdep will follow in a couple of days
time.
1998-06-07 17:13:14 +00:00