The HyperNews Linux KHG Discussion Pages

## reset the irq 0 timer after APM suspend

  Forum: The Linux Kernel Hackers' Guide
  Keywords: timer, APM
  Date: Fri, 20 Jun 1997 21:34:04 GMT
  From: Dong Chen <chen@ctp.mit.edu>

    Hello,

    On my AST J50 (P133) notebook, the timer on irq 0 resets itself from
    interrupting at 100 Hz to 18.3 Hz (DOS default) after a suspend/resume.

    What is the right way to re-initialize it back to 100 Hz without a reboot?
    Thanks,

    Dong Chen
    chen@ctp.mit.edu
    ---------------------------------------------------------------------
    BTW, I tried to modify

            linux/drivers/char/apm_bios.c

    in function suspend() at line 639 (kernel 2.0.30) from

            err = apm_set_power_state(APM_STATE_SUSPEND);
            if (err)
                    apm_error("suspend", err);
            set_time();

    to
            err = apm_set_power_state(APM_STATE_SUSPEND);
            if (err)
                    apm_error("suspend", err);

            save_flags(flags);
            cli();
            /* set the clock to 100 Hz */
            outb_p(0x34,0x43);              /* binary, mode 2, LSB/MSB, ch 0 */
            outb_p(LATCH & 0xff , 0x40);    /* LSB */
            outb(LATCH >> 8 , 0x40);        /* MSB */
            restore_flags(flags);

            set_time();

    But this does not work.  All programs crash after suspend() is called.