Compare commits

..

25 Commits

Author SHA1 Message Date
fa47237ddb
kernel/ATA: Route interrupts to the correct drive
All checks were successful
continuous-integration/drone/pr Build is passing
2023-06-03 21:02:37 +02:00
2722bd73af
kernel: Start reading the MBR partition table from the ATAPI drive 2023-06-03 21:02:37 +02:00
b8541747c2
ATA: Mark the CDROM as a block device 2023-06-03 21:02:37 +02:00
37a3f13de7
kernel/ATA: Pass extra information to DeviceRegistry
This is needed since merging e7d482e from main.
2023-06-03 21:02:37 +02:00
d69e75eb5a
kernel+init: Create a device node in /dev to access the CDROM from userspace!
Still using PIO, though.
2023-06-03 21:02:37 +02:00
1b141da3a2
kernel/ATA: Read the CDROM's first sector using ATAPI PIO!!
Sadly, for some reason, DMA is not working right now.
This is a problem, as PIO is inconvenient. But hey, it works for now!
2023-06-03 21:02:36 +02:00
d79560a531
kernel/x86_64: Implement writing to PCI fields 2023-06-03 21:02:36 +02:00
4a5929f880
kernel/PCI: Add bit enum for the Command field 2023-06-03 21:02:36 +02:00
8f4052210e
kernel: Actually register interrupt handlers properly 2023-06-03 21:02:36 +02:00
7d49f1d172
kernel/ATA: Calculate block sizes for ATA devices as well 2023-06-03 21:02:36 +02:00
a5ddc17dc5
kernel/ATA: Send a READ CAPACITY packet to an ATA drive on initialization 2023-06-03 21:02:36 +02:00
b847655058
kernel/ATA: Read the PCI Busmaster registers and start preparing for DMA 2023-06-03 21:02:35 +02:00
5b906f8dfd
kernel/ATA: Read the Busmaster base port and verify it 2023-06-03 21:02:35 +02:00
5cf1dea121
kernel: Handle device BARs properly 2023-06-03 21:02:35 +02:00
88c3a031fb
kernel/ATA: Read ATA strings properly instead of backwards
Now we can see the model string. What does it say...

"QEMU DVD-ROM". Let's go!
2023-06-03 21:02:35 +02:00
2cdb36b904
kernel/ATA: Implement enough to send an IDENTIFY command and read the model number :) 2023-06-03 21:02:35 +02:00
cf7527cb03
kernel/ATA: Handle drive IRQs in compatibility mode 2023-06-03 21:02:34 +02:00
6fcf059da0
kernel/CPU: Allow passing arbitrary data to interrupt handlers 2023-06-03 21:02:34 +02:00
91c14ba093
kernel/ATA: Start reading/writing registers and detecting drives 2023-06-03 21:02:34 +02:00
4d1ed6c48b
kernel: Warn if no ATA controller is found 2023-06-03 21:02:34 +02:00
bb3d11e03b
kernel: Add a KMutex class and use that for ATA::Controller locking 2023-06-03 21:02:34 +02:00
74a772f780
kernel/x86_64: Add basic ATA controller and channel identification 2023-06-03 21:02:33 +02:00
aa24dce06a
kernel/PCI: Add more PCI field types 2023-06-03 21:02:33 +02:00
79d00dafff
kernel/x86_64: Add a way to register IRQ handlers from other kernel subsystems 2023-06-03 21:02:33 +02:00
3283991ec6
kernel: Keep the old Timer::ticks_ms() API.
All checks were successful
continuous-integration/drone/push Build is passing
Removing this API broke the ATA branch.
2023-06-03 21:02:18 +02:00
2 changed files with 7 additions and 0 deletions

View File

@ -62,6 +62,11 @@ namespace Timer
timespecadd(&s_realtime_clock, &s_interval, &s_realtime_clock);
}
usize ticks_ms()
{
return (s_monotonic_clock.tv_sec * 1000) + (s_monotonic_clock.tv_nsec / 1'000'000);
}
struct timespec* monotonic_clock()
{
return &s_monotonic_clock;

View File

@ -16,6 +16,8 @@ namespace Timer
{
void tick();
usize ticks_ms();
struct timespec* monotonic_clock();
struct timespec* realtime_clock();