[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [tyndur-devel] [PATCH] kernel2: PIT initialisieren
(2010年11月01日 15:03), Kevin Wolf wrote:
> + kernel2: PIT initialisieren
>
> Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
> ---
> src/kernel2/src/timer.c | 15 +++++++++++++++
> 1 files changed, 15 insertions(+), 0 deletions(-)
>
> diff --git a/src/kernel2/src/timer.c b/src/kernel2/src/timer.c
> index 6535e12..33d0dcb 100644
> --- a/src/kernel2/src/timer.c
> +++ b/src/kernel2/src/timer.c
> @@ -37,6 +37,7 @@
> #include <stdbool.h>
> #include <collections.h>
> #include <stdlib.h>
> +#include <ports.h>
>
> #include "timer.h"
> #include "syscall.h"
> @@ -61,12 +62,26 @@ struct timeout {
> uint64_t timeout;
> };
>
> +#define PIT_COUNTER_0 (0x0 << 6)
> +#define PIT_RW_LO_BYTE (0x1 << 4)
> +#define PIT_RW_HI_BYTE (0x2 << 4)
> +#define PIT_RW_FULL (0x3 << 4)
> +#define PIT_MODE_2_RATE_GEN (0x2 << 1)
> +
> /**
> * Initialisiert die Timerverwaltung
> */
> void timer_init(void)
> {
> + uint16_t reload_value;
> +
> timers = list_create();
> +
> + // PIT initialisieren
> + reload_value = 1193182 / CONFIG_TIMER_HZ;
> + outb(0x43, PIT_COUNTER_0 | PIT_RW_FULL | PIT_MODE_2_RATE_GEN);
> + outb(0x40, reload_value & 0xff);
> + outb(0x40, reload_value >> 8);
> }
>
> /**
Mein Wiki sagt zwar 1193180 statt 1193182, aber ansonsten sieht das soweit in Ordnung aus (ohne, dass man viel falsch machen könnte). *g*
Acked-by: Max Reitz <max@xxxxxxxxxx>