Updating folders name's (1)
This should help merging into dev branch
This commit is contained in:
		
							
								
								
									
										54
									
								
								source/kernel/drivers/pit/pit.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								source/kernel/drivers/pit/pit.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,54 @@
 | 
			
		||||
#include "pit.h"
 | 
			
		||||
#include "../../tty/kterm.h"
 | 
			
		||||
uint32_t pit_tick = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void pit_initialise()
 | 
			
		||||
{
 | 
			
		||||
    asm volatile("CLI");
 | 
			
		||||
 | 
			
		||||
#ifdef __VERBOSE__
 | 
			
		||||
    printf("Init PIT!\n");
 | 
			
		||||
#endif
 | 
			
		||||
    // clear mask for IRQ 0 
 | 
			
		||||
    uint8_t value = inb(0x21) & ~(1<< 0);
 | 
			
		||||
    outb(0x21, value);
 | 
			
		||||
 | 
			
		||||
    io_wait();
 | 
			
		||||
 | 
			
		||||
    const int freq = 500;
 | 
			
		||||
 | 
			
		||||
    uint32_t divisor = 1193180 / freq;
 | 
			
		||||
 | 
			
		||||
    outb(PIT_COMMAND, 0x36);
 | 
			
		||||
 | 
			
		||||
    uint8_t l = (uint8_t) (divisor & 0xFF);
 | 
			
		||||
    uint8_t h = (uint8_t) ( (divisor>>8) & 0xff);
 | 
			
		||||
 | 
			
		||||
    outb(PIT_DATA_0, l);
 | 
			
		||||
    outb(PIT_DATA_0,h);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    asm volatile("STI");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void get_pit_count()
 | 
			
		||||
{
 | 
			
		||||
    asm volatile ("CLI");
 | 
			
		||||
 | 
			
		||||
    outb(PIT_COMMAND, 0);
 | 
			
		||||
    uint16_t count = inb(PIT_DATA_0);
 | 
			
		||||
    count |= inb(PIT_DATA_0) << 8;
 | 
			
		||||
 | 
			
		||||
    printf("PIT count: 0x%x\n", count); 
 | 
			
		||||
 | 
			
		||||
    asm volatile("STI");   
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void set_pit_count()
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										18
									
								
								source/kernel/drivers/pit/pit.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								source/kernel/drivers/pit/pit.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
			
		||||
#pragma once 
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include "../IO/io.h"
 | 
			
		||||
#define PIT_DATA_0 0x40
 | 
			
		||||
#define PIT_DATA_1 0x41
 | 
			
		||||
#define PIT_DATA_2 0x42
 | 
			
		||||
#define PIT_COMMAND 0x43
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
extern uint32_t pit_tick;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void pit_initialise();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void get_pit_count();
 | 
			
		||||
 | 
			
		||||
void set_pit_count();
 | 
			
		||||
		Reference in New Issue
	
	Block a user