Espresso 0.0.1a
This commit is contained in:
@ -1,35 +1,38 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include <drivers/pit.h>
|
||||
#include <port_io.h>
|
||||
|
||||
#include <drivers/ide.h>
|
||||
|
||||
|
||||
static void io_delay() {
|
||||
for (int32_t i = 0; i < 1000; i++) {
|
||||
outb(0x80, 0);
|
||||
static int32_t ide_wait(uint16_t io, int32_t check_drq)
|
||||
{
|
||||
for (int32_t i = 0; i < 5000; i++)
|
||||
{
|
||||
uint8_t status = inb(io + ATA_REG_STATUS);
|
||||
if (!(status & ATA_SR_BSY))
|
||||
{
|
||||
if (!check_drq || (status & ATA_SR_DRQ))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
pit_sleep(4);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static int32_t ide_wait(uint16_t io, int32_t check_drq) {
|
||||
for (int32_t i = 0; i < 5000; i++) {
|
||||
uint8_t status = inb(io + ATA_REG_STATUS);
|
||||
if (!(status & ATA_SR_BSY)) {
|
||||
if (!check_drq || (status & ATA_SR_DRQ))
|
||||
return 0;
|
||||
}
|
||||
io_delay(1);
|
||||
static int32_t ide_wait_ready(uint16_t io)
|
||||
{
|
||||
for (int32_t i = 0; i < 100000; i++)
|
||||
{
|
||||
uint8_t status = inb(io + ATA_REG_STATUS);
|
||||
if (!(status & ATA_SR_BSY))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int32_t ide_wait_ready(uint16_t io) {
|
||||
for (int32_t i = 0; i < 100000; i++) {
|
||||
uint8_t status = inb(io + ATA_REG_STATUS);
|
||||
if (!(status & ATA_SR_BSY)) return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user