summaryrefslogtreecommitdiff
path: root/kernel/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/drivers')
-rw-r--r--kernel/drivers/ata.c9
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 };