Kintsugi OS 0.5.0
x86 Monolithic OS
Loading...
Searching...
No Matches
ata_pio.c File Reference
#include "ata_pio.h"
#include "../kklibc/kklibc.h"
#include "lowlevel_io.h"

Macros

#define ATA_CONTROL   0x3f6
 
#define ATA_TIMEOUT   1000000
 

Functions

static void ata_delay (void)
 
static int ata_poll (int data)
 
static void ata_select (u8 drive, u32 lba)
 
int ata_pio_wait (void)
 Ожидание готовности диска
 
int ata_pio_identify (u8 drive, ata_disk_info_t *info)
 Определение типа и параметров диска
 
void ata_pio_init (void)
 Инициализация драйвера ATA PIO.
 
static int ata_transfer (u8 drive, u32 lba, u8 num, u16 *buffer, int write)
 
int ata_pio_read_sectors (u8 drive, u32 lba, u8 num, u16 *buffer)
 Чтение секторов с диска
 
int ata_pio_write_sectors (u8 drive, u32 lba, u8 num, u16 *buffer)
 Запись секторов на диск
 

Variables

ata_disk_info_t ata_disks [2]
 

Macro Definition Documentation

◆ ATA_CONTROL

#define ATA_CONTROL   0x3f6

◆ ATA_TIMEOUT

#define ATA_TIMEOUT   1000000

Function Documentation

◆ ata_delay()

static void ata_delay ( void  )
static

◆ ata_pio_identify()

int ata_pio_identify ( u8  drive,
ata_disk_info_t *  info 
)

Определение типа и параметров диска

Parameters
driveТип диска (ATA_MASTER/ATA_SLAVE)
infoУказатель на структуру для информации
Returns
0 в случае успеха, код ошибки в противном случае

◆ ata_pio_init()

void ata_pio_init ( void  )

Инициализация драйвера ATA PIO.

◆ ata_pio_read_sectors()

int ata_pio_read_sectors ( u8  drive,
u32  lba,
u8  num,
u16 *  buffer 
)

Чтение секторов с диска

Parameters
driveТип диска (ATA_MASTER/ATA_SLAVE)
lbaНачальный LBA адрес
numКоличество секторов для чтения
bufferБуфер для данных
Returns
0 в случае успеха, код ошибки в противном случае

◆ ata_pio_wait()

int ata_pio_wait ( )

Ожидание готовности диска

Returns
0 если диск готов, код ошибки в противном случае

◆ ata_pio_write_sectors()

int ata_pio_write_sectors ( u8  drive,
u32  lba,
u8  num,
u16 *  buffer 
)

Запись секторов на диск

Parameters
driveТип диска (ATA_MASTER/ATA_SLAVE)
lbaНачальный LBA адрес
numКоличество секторов для записи
bufferБуфер с данными
Returns
0 в случае успеха, код ошибки в противном случае

◆ ata_poll()

static int ata_poll ( int  data)
static

◆ ata_select()

static void ata_select ( u8  drive,
u32  lba 
)
static

◆ ata_transfer()

static int ata_transfer ( u8  drive,
u32  lba,
u8  num,
u16 *  buffer,
int  write 
)
static

Variable Documentation

◆ ata_disks

ata_disk_info_t ata_disks[2]