summaryrefslogtreecommitdiff
path: root/kernel/src/drivers
diff options
context:
space:
mode:
authorTyler Murphy <=>2023-07-17 19:34:52 -0400
committerTyler Murphy <=>2023-07-17 19:34:52 -0400
commit7a912d1b668ab86ffe088eca3ac7e6f78a04a0c5 (patch)
tree4e86ff20e73171285156631db043e12aaf63bf04 /kernel/src/drivers
parentpaging (diff)
downloadfinix-7a912d1b668ab86ffe088eca3ac7e6f78a04a0c5.tar.gz
finix-7a912d1b668ab86ffe088eca3ac7e6f78a04a0c5.tar.bz2
finix-7a912d1b668ab86ffe088eca3ac7e6f78a04a0c5.zip
refactoring
Diffstat (limited to '')
-rw-r--r--kernel/include/arch/i686/drivers/ps2ctrl.h (renamed from kernel/src/drivers/ps2ctrl.h)0
-rw-r--r--kernel/include/drivers/ps2kb.h (renamed from kernel/src/drivers/ps2kb.h)0
-rw-r--r--kernel/include/drivers/ps2mouse.h (renamed from kernel/src/drivers/ps2mouse.h)0
-rw-r--r--kernel/src/arch/i686/drivers/ps2ctrl.c (renamed from kernel/src/drivers/ps2ctrl.c)8
-rw-r--r--kernel/src/arch/i686/drivers/ps2kb.c (renamed from kernel/src/drivers/ps2kb.c)10
-rw-r--r--kernel/src/arch/i686/drivers/ps2mouse.c (renamed from kernel/src/drivers/ps2mouse.c)12
-rw-r--r--kernel/src/arch/i686/drivers/rtc.c (renamed from kernel/src/drivers/cmos.c)44
7 files changed, 40 insertions, 34 deletions
diff --git a/kernel/src/drivers/ps2ctrl.h b/kernel/include/arch/i686/drivers/ps2ctrl.h
index a674c57..a674c57 100644
--- a/kernel/src/drivers/ps2ctrl.h
+++ b/kernel/include/arch/i686/drivers/ps2ctrl.h
diff --git a/kernel/src/drivers/ps2kb.h b/kernel/include/drivers/ps2kb.h
index 1aaefb2..1aaefb2 100644
--- a/kernel/src/drivers/ps2kb.h
+++ b/kernel/include/drivers/ps2kb.h
diff --git a/kernel/src/drivers/ps2mouse.h b/kernel/include/drivers/ps2mouse.h
index 9cd4818..9cd4818 100644
--- a/kernel/src/drivers/ps2mouse.h
+++ b/kernel/include/drivers/ps2mouse.h
diff --git a/kernel/src/drivers/ps2ctrl.c b/kernel/src/arch/i686/drivers/ps2ctrl.c
index 05ef25d..794aabd 100644
--- a/kernel/src/drivers/ps2ctrl.c
+++ b/kernel/src/arch/i686/drivers/ps2ctrl.c
@@ -1,9 +1,7 @@
#include <panic.h>
-#include <sys.h>
-
-#include "print.h"
-#include "ps2ctrl.h"
-#include "interrupt/pic.h"
+#include <arch/i686/drivers/ps2ctrl.h>
+#include <arch/i686/pic.h>
+#include <arch/i686/asm.h>
#define STATUS_OUT_BUF ((uint8_t)0x01)
#define STATUS_IN_BUF ((uint8_t)0x02)
diff --git a/kernel/src/drivers/ps2kb.c b/kernel/src/arch/i686/drivers/ps2kb.c
index f6fc514..50bdfb6 100644
--- a/kernel/src/drivers/ps2kb.c
+++ b/kernel/src/arch/i686/drivers/ps2kb.c
@@ -1,10 +1,8 @@
#include <panic.h>
-#include <sys.h>
-
-#include "print.h"
-#include "ps2kb.h"
-#include "ps2ctrl.h"
-#include "interrupt/pic.h"
+#include <arch/i686/drivers/ps2ctrl.h>
+#include <arch/i686/pic.h>
+#include <arch/i686/asm.h>
+#include <drivers/ps2kb.h>
#define BUFFER_LEN 16
diff --git a/kernel/src/drivers/ps2mouse.c b/kernel/src/arch/i686/drivers/ps2mouse.c
index 1616cd6..d1082a1 100644
--- a/kernel/src/drivers/ps2mouse.c
+++ b/kernel/src/arch/i686/drivers/ps2mouse.c
@@ -1,12 +1,8 @@
#include <panic.h>
-#include <stdbool.h>
-#include <string.h>
-#include <sys.h>
-
-#include "print.h"
-#include "ps2mouse.h"
-#include "drivers/ps2ctrl.h"
-#include "interrupt/pic.h"
+#include <arch/i686/drivers/ps2ctrl.h>
+#include <arch/i686/pic.h>
+#include <arch/i686/asm.h>
+#include <drivers/ps2mouse.h>
static bool is_init = false;
diff --git a/kernel/src/drivers/cmos.c b/kernel/src/arch/i686/drivers/rtc.c
index 5ac12c3..ba69d15 100644
--- a/kernel/src/drivers/cmos.c
+++ b/kernel/src/arch/i686/drivers/rtc.c
@@ -1,7 +1,8 @@
-#include "print.h"
+#include "time.h"
#include <stdint.h>
#include <sys.h>
-#include <time.h>
+#include <arch/i686/drivers/rtc.h>
+#include <arch/i686/asm.h>
#define CMOS_WRITE_PORT 0x70
#define CMOS_READ_PORT 0x71
@@ -15,9 +16,16 @@
#define CMOS_REG_YEAR 0x09
#define CMOS_REG_CEN 0x32
+// Live buffers to work on data
static struct Time time;
static struct Time localtime;
-static int cur_offset = 0;
+
+// Front buffers so interupts dont request data that is half done
+static struct Time cur_time;
+static struct Time cur_localtime;
+
+// Current set Time Zone
+static enum Timezone last_timezone = UTC;
static uint8_t cmos_read(uint8_t reg) {
uint8_t hex, ret;
@@ -46,10 +54,12 @@ static void update_localtime(void) {
// set localtime
localtime = time;
- // do we acutally need to do anything
- if (cur_offset == 0) return;
- localtime.hour += cur_offset;
-
+ // if tz is UTC, we dont need to do anythin
+ if (last_timezone == UTC) {
+ cur_localtime = localtime;
+ return;
+ }
+
// check if day rolled over
change = localtime.hour < 0 ? -1 : localtime.hour >= 24 ? 1 : 0;
if (!change) return;
@@ -98,13 +108,11 @@ year:
localtime.yday = 0;
localtime.year -= 1900;
+
+ cur_localtime = localtime;
}
-void rtc_set_timezone(int offset) {
- cur_offset = offset;
-}
-
void rtc_update(void) {
time.sec = cmos_read(CMOS_REG_SEC);
time.min = cmos_read(CMOS_REG_MIN);
@@ -127,12 +135,18 @@ void rtc_update(void) {
time.year -= 1900;
update_localtime();
+
+ cur_time = time;
}
-struct Time *rtc_utctime(void) {
- return &time;
+struct Time rtc_utctime(void) {
+ return cur_time;
}
-struct Time *rtc_localtime(void) {
- return &localtime;
+struct Time rtc_localtime(enum Timezone tz) {
+ if (tz != last_timezone) {
+ last_timezone = tz;
+ update_localtime();
+ }
+ return cur_localtime;
}