diff options
author | Ian McFarlane <i.mcfarlane2002@gmail.com> | 2025-04-20 15:01:19 -0400 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2025-04-20 23:44:39 -0400 |
commit | 2f0131770e2c967beac5d11a521c477b02371374 (patch) | |
tree | dacec8fdad8070f5db38dd1ab6c9247a4fe9bbec /kernel/drivers | |
parent | read BARs from PCI (diff) | |
download | comus-2f0131770e2c967beac5d11a521c477b02371374.tar.gz comus-2f0131770e2c967beac5d11a521c477b02371374.tar.bz2 comus-2f0131770e2c967beac5d11a521c477b02371374.zip |
add rudimentary sleeping function based on CMOS clock
Diffstat (limited to 'kernel/drivers')
-rw-r--r-- | kernel/drivers/ata.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/kernel/drivers/ata.c b/kernel/drivers/ata.c index 8d5bbe1..6b131b8 100644 --- a/kernel/drivers/ata.c +++ b/kernel/drivers/ata.c @@ -419,11 +419,13 @@ void ide_initialize(uint32_t BAR0, uint32_t BAR1, uint32_t BAR2, uint32_t BAR3, ide_channel_write(chan, ATA_REG_HDDEVSEL, 0xA0 | (drive_idx << 4)); // This function should be implemented in your OS. which waits for 1 ms. // it is based on System Timer Device Driver. - sleep(1); // Wait 1ms for drive select to work. + // sleep(1); // Wait 1ms for drive select to work. + kspin_sleep_seconds(1); // TODO: sleep 1ms, this is way too long // (II) Send ATA Identify Command: ide_channel_write(chan, ATA_REG_COMMAND, ATA_CMD_IDENTIFY); - sleep(1); + // sleep(1); + kspin_sleep_seconds(1); // TODO: sleep 1ms // (III) Polling: if (ide_channel_read(chan, ATA_REG_STATUS) == 0) { @@ -465,7 +467,8 @@ void ide_initialize(uint32_t BAR0, uint32_t BAR1, uint32_t BAR2, uint32_t BAR3, ide_channel_write(chan, ATA_REG_COMMAND, ATA_CMD_IDENTIFY_PACKET); - sleep(1); + // sleep(1); + kspin_sleep_seconds(1); // TODO: sleep one millisecond } static uint8_t id_space_buf[2048] = { 0 }; |