Damien Zammit, le mar. 30 mars 2021 13:58:30 +1100, a ecrit: > + val = (inb(PITAUX_PORT) & 0xfd) | 0x1;
Rather use val &= ~PITAUX_OUT2; val |= PITAUX_GATE2; > + outb(PITAUX_PORT, val); > + outb(PITCTL_PORT, 0xb2); Use PIT_C2|PIT_LOADMODE|PIT_RATEMODE. > + val = CLKNUM / hz; > + lsb = val & 0xff; > + msb = val >> 8; > + outb(PITCTR2_PORT, lsb); > + val = inb(0x60); Why 0x60? That's the PS/2 port. Did you mean 0x80? > + outb(PITCTR2_PORT, msb); > > + /* Start counting down */ > + val = inb(PITAUX_PORT) & 0xfe; Use val &= ~PITAUX_GATE2; > + outb(PITAUX_PORT, val); /* Gate low */ > + val |= 0x1; Use |= PITAUX_GATE2; > + outb(PITAUX_PORT, val); /* Gate high */ > +} > + > +void > +pit_sleep(void) > +{ > + /* Wait until counter reaches zero */ > + while ((inb(PITAUX_PORT) & 0x20) == 0); Use PITAUX_VAL. Samuel