diff options
Diffstat (limited to 'sys/modules/syscons/blank/blank_saver.c')
-rw-r--r-- | sys/modules/syscons/blank/blank_saver.c | 53 |
1 files changed, 29 insertions, 24 deletions
diff --git a/sys/modules/syscons/blank/blank_saver.c b/sys/modules/syscons/blank/blank_saver.c index 89dd199815f5b..1bb73233e7906 100644 --- a/sys/modules/syscons/blank/blank_saver.c +++ b/sys/modules/syscons/blank/blank_saver.c @@ -25,26 +25,29 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: blank_saver.c,v 1.14 1998/11/04 03:49:38 peter Exp $ + * $Id: blank_saver.c,v 1.12 1998/09/15 18:16:38 sos Exp $ */ #include <sys/param.h> #include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/module.h> - -#include <dev/fb/vgareg.h> +#include <sys/exec.h> +#include <sys/sysent.h> +#include <sys/lkm.h> #include <i386/isa/isa.h> #include <saver.h> -static int -blank_saver(video_adapter_t *adp, int blank) +MOD_MISC(blank_saver); + +static void +blank_saver(int blank) { u_char val; if (blank) { - switch (adp->va_type) { + scrn_blanked = 1; + cur_console->status |= SAVER_RUNNING; + switch (crtc_type) { case KD_VGA: outb(TSIDX, 0x01); val = inb(TSREG); outb(TSIDX, 0x01); outb(TSREG, val | 0x20); @@ -53,18 +56,18 @@ blank_saver(video_adapter_t *adp, int blank) /* not yet done XXX */ break; case KD_CGA: - outb(adp->va_crtc_addr + 4, 0x25); + outb(crtc_addr + 4, 0x25); break; case KD_MONO: case KD_HERCULES: - outb(adp->va_crtc_addr + 4, 0x21); + outb(crtc_addr + 4, 0x21); break; default: break; } } else { - switch (adp->va_type) { + switch (crtc_type) { case KD_VGA: outb(TSIDX, 0x01); val = inb(TSREG); outb(TSIDX, 0x01); outb(TSREG, val & 0xDF); @@ -73,23 +76,24 @@ blank_saver(video_adapter_t *adp, int blank) /* not yet done XXX */ break; case KD_CGA: - outb(adp->va_crtc_addr + 4, 0x2d); + outb(crtc_addr + 4, 0x2d); break; case KD_MONO: case KD_HERCULES: - outb(adp->va_crtc_addr + 4, 0x29); + outb(crtc_addr + 4, 0x29); break; default: break; } + cur_console->status &= ~SAVER_RUNNING; + scrn_blanked = 0; } - return 0; } static int -blank_init(video_adapter_t *adp) +blank_saver_load(struct lkm_table *lkmtp, int cmd) { - switch (adp->va_type) { + switch (crtc_type) { case KD_MONO: case KD_HERCULES: case KD_CGA: @@ -100,17 +104,18 @@ blank_init(video_adapter_t *adp) default: return ENODEV; } - return 0; + return add_scrn_saver(blank_saver); } static int -blank_term(video_adapter_t *adp) +blank_saver_unload(struct lkm_table *lkmtp, int cmd) { - return 0; + return remove_scrn_saver(blank_saver); } -static scrn_saver_t blank_module = { - "blank_saver", blank_init, blank_term, blank_saver, NULL, -}; - -SAVER_MODULE(blank_saver, blank_module); +int +blank_saver_mod(struct lkm_table *lkmtp, int cmd, int ver) +{ + MOD_DISPATCH(blank_saver, lkmtp, cmd, ver, + blank_saver_load, blank_saver_unload, lkm_nullcmd); +} |