123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /*
- * GRUB -- GRand Unified Bootloader
- * Copyright (C) 2008 Free Software Foundation, Inc.
- *
- * GRUB is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GRUB is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
- */
- #ifndef KERNEL_CPU_PIT_HEADER
- #define KERNEL_CPU_PIT_HEADER 1
- #include <grub/types.h>
- #include <grub/err.h>
- enum
- {
- /* The PIT channel value ports. You can write to and read from them.
- Do not mess with timer 0 or 1. */
- GRUB_PIT_COUNTER_0 = 0x40,
- GRUB_PIT_COUNTER_1 = 0x41,
- GRUB_PIT_COUNTER_2 = 0x42,
- /* The PIT control port. You can only write to it. Do not mess with
- timer 0 or 1. */
- GRUB_PIT_CTRL = 0x43,
- /* The speaker port. */
- GRUB_PIT_SPEAKER_PORT = 0x61,
- };
- /* The speaker port. */
- enum
- {
- /* If 0, follow state of SPEAKER_DATA bit, otherwise enable output
- from timer 2. */
- GRUB_PIT_SPK_TMR2 = 0x01,
- /* If SPEAKER_TMR2 is not set, this provides direct input into the
- speaker. Otherwise, this enables or disables the output from the
- timer. */
- GRUB_PIT_SPK_DATA = 0x02,
- GRUB_PIT_SPK_TMR2_LATCH = 0x20
- };
- /* The PIT control port. You can only write to it. Do not mess with
- timer 0 or 1. */
- enum
- {
- GRUB_PIT_CTRL_SELECT_MASK = 0xc0,
- GRUB_PIT_CTRL_SELECT_0 = 0x00,
- GRUB_PIT_CTRL_SELECT_1 = 0x40,
- GRUB_PIT_CTRL_SELECT_2 = 0x80,
- /* Read and load control. */
- GRUB_PIT_CTRL_READLOAD_MASK= 0x30,
- GRUB_PIT_CTRL_COUNTER_LATCH = 0x00, /* Hold timer value until read. */
- GRUB_PIT_CTRL_READLOAD_LSB = 0x10, /* Read/load the LSB. */
- GRUB_PIT_CTRL_READLOAD_MSB = 0x20, /* Read/load the MSB. */
- GRUB_PIT_CTRL_READLOAD_WORD = 0x30, /* Read/load the LSB then the MSB. */
- /* Mode control. */
- GRUB_PIT_CTRL_MODE_MASK = 0x0e,
- /* Interrupt on terminal count. Setting the mode sets output to low.
- When counter is set and terminated, output is set to high. */
- GRUB_PIT_CTRL_INTR_ON_TERM = 0x00,
- /* Programmable one-shot. When loading counter, output is set to
- high. When counter terminated, output is set to low. Can be
- triggered again from that point on by setting the gate pin to
- high. */
- GRUB_PIT_CTRL_PROGR_ONE_SHOT = 0x02,
- /* Rate generator. Output is low for one period of the counter, and
- high for the other. */
- GRUB_PIT_CTRL_RATE_GEN = 0x04,
- /* Square wave generator. Output is low for one half of the period,
- and high for the other half. */
- GRUB_PIT_CTRL_SQUAREWAVE_GEN = 0x06,
- /* Software triggered strobe. Setting the mode sets output to high.
- When counter is set and terminated, output is set to low. */
- GRUB_PIT_CTRL_SOFTSTROBE = 0x08,
- /* Hardware triggered strobe. Like software triggered strobe, but
- only starts the counter when the gate pin is set to high. */
- GRUB_PIT_CTRL_HARDSTROBE = 0x0a,
- /* Count mode. */
- GRUB_PIT_CTRL_COUNT_MASK = 0x01,
- GRUB_PIT_CTRL_COUNT_BINARY = 0x00, /* 16-bit binary counter. */
- GRUB_PIT_CTRL_COUNT_BCD = 0x01 /* 4-decade BCD counter. */
- };
- #endif /* ! KERNEL_CPU_PIT_HEADER */
|