summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2023-02-26 01:31:00 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-02-26 09:58:22 +0100
commitd268bf0e3d31e1df96d4972cd0130b176c4d5165 (patch)
tree1b6f2c7f8b054f08ee92fc17616c9316efd0413b
parent5842b6b72ae0242b792f0e28193309ea12909f34 (diff)
pit: Fix shadowed hz variable && define modes correctly
Message-Id: <20230226013052.50577-1-damien@zamaudio.com>
-rw-r--r--i386/i386/pit.c14
-rw-r--r--i386/i386/pit.h3
2 files changed, 9 insertions, 8 deletions
diff --git a/i386/i386/pit.c b/i386/i386/pit.c
index 7373a38e..6c006a98 100644
--- a/i386/i386/pit.c
+++ b/i386/i386/pit.c
@@ -66,18 +66,18 @@ int pit0_mode = PIT_C0|PIT_SQUAREMODE|PIT_READMODE ;
unsigned int clknumb = CLKNUM; /* interrupt interval for timer 0 */
void
-pit_prepare_sleep(int hz)
+pit_prepare_sleep(int persec)
{
- /* Prepare to sleep for 1/hz seconds */
- int val = 0;
- int lsb, msb;
+ /* Prepare to sleep for 1/persec seconds */
+ uint32_t val = 0;
+ uint8_t lsb, msb;
val = inb(PITAUX_PORT);
val &= ~PITAUX_OUT2;
val |= PITAUX_GATE2;
outb (PITAUX_PORT, val);
- outb (PITCTL_PORT, PIT_C2 | PIT_LOADMODE | PIT_RATEMODE);
- val = CLKNUM / hz;
+ outb (PITCTL_PORT, PIT_C2 | PIT_LOADMODE | PIT_ONESHOTMODE);
+ val = CLKNUM / persec;
lsb = val & 0xff;
msb = val >> 8;
outb (PITCTR2_PORT, lsb);
@@ -88,7 +88,7 @@ pit_prepare_sleep(int hz)
void
pit_sleep(void)
{
- int val;
+ uint8_t val;
/* Start counting down */
val = inb(PITAUX_PORT);
diff --git a/i386/i386/pit.h b/i386/i386/pit.h
index 51c4111d..b14c4c84 100644
--- a/i386/i386/pit.h
+++ b/i386/i386/pit.h
@@ -73,7 +73,8 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
* followed by most significant byte */
#define PIT_SQUAREMODE 0x06 /* square-wave mode */
-#define PIT_RATEMODE 0x02 /* rate generator mode */
+#define PIT_RATEMODE 0x04 /* rate generator mode */
+#define PIT_ONESHOTMODE 0x02 /* one-shot mode */
/* Used for Timer 2. */
#define PIT_C2 0x80 /* select counter 2 */