MicrOS
harddisk_header.h
Go to the documentation of this file.
1 #ifndef HARDDISK_HEADER_H
2 #define HARDDISK_HEADER_H
3 
4 #include <stdint.h>
5 #include <stddef.h>
6 #include "assembly/io.h"
7 #include "cpu/timer/timer.h"
10 
12 #define HARDDISK_BSY_ERROR_DELAY_MS 10000
13 
16 {
20 
23 {
27 
29 typedef enum HARDDISK_STATE
30 {
38 
40 typedef struct harddisk_states
41 {
59 
61 typedef struct harddisk_configuration
62 {
66 
68 
72 int8_t __harddisk_soft_reset_port(uint16_t control_port);
73 
75 
79 void __harddisk_400ns_delay(uint16_t control_port);
80 
82 
87 int8_t __harddisk_bsy_poll(uint16_t control_port);
88 
90 
98 
99 #endif
Error.
Definition: harddisk_header.h:31
Secondary bus.
Definition: harddisk_header.h:18
ATAPI device present.
Definition: harddisk_header.h:34
void __harddisk_get_pointers(HARDDISK_ATA_MASTER_SLAVE type, HARDDISK_ATA_BUS_TYPE bus, const HARDDISK_STATE **state, const harddisk_identify_device_data **data)
Gets pointers to hard disk data.
Definition: harddisk_header.c:62
HARDDISK_STATE secondary_master
Presence of secondary master.
Definition: harddisk_header.h:51
Defines configuration of harddisk driver.
Definition: harddisk_header.h:61
SATA device present.
Definition: harddisk_header.h:35
Primary bus.
Definition: harddisk_header.h:17
Defines status of hard disks in system.
Definition: harddisk_header.h:40
int8_t __harddisk_soft_reset_port(uint16_t control_port)
Perform soft reset for given control_port.
Definition: harddisk_header.c:8
HARDDISK_STATE
Enum represent hard disk status.
Definition: harddisk_header.h:29
Hard disk Identify Device Data.
Definition: harddisk_identify_device_data.h:999
Slave hard disk.
Definition: harddisk_header.h:25
harddisk_identify_device_data secondary_slave_data
Data of secondary slave.
Definition: harddisk_header.h:57
HARDDISK_STATE secondary_slave
Presence of secondary slave.
Definition: harddisk_header.h:55
bool delay_by_reading_port
Indicates if 400 ns delay should be made by reading port (if true) or by timer (if false) ...
Definition: harddisk_header.h:64
HARDDISK_STATE primary_slave
Presence of primary slave.
Definition: harddisk_header.h:47
Master hard disk.
Definition: harddisk_header.h:24
Not present.
Definition: harddisk_header.h:32
SATAPI device present.
Definition: harddisk_header.h:36
harddisk_identify_device_data primary_slave_data
Data of primary slave.
Definition: harddisk_header.h:49
void __harddisk_400ns_delay(uint16_t control_port)
Makes 400ns delay.
Definition: harddisk_header.c:28
HARDDISK_ATA_BUS_TYPE
Enum represent bus type.
Definition: harddisk_header.h:15
ATA device present.
Definition: harddisk_header.h:33
int8_t __harddisk_bsy_poll(uint16_t control_port)
Pools BSY bit until clears.
Definition: harddisk_header.c:43
harddisk_identify_device_data primary_master_data
Data of primary master.
Definition: harddisk_header.h:45
HARDDISK_ATA_MASTER_SLAVE
Enum represent hard disk type.
Definition: harddisk_header.h:22
HARDDISK_STATE primary_master
Presence of primary master.
Definition: harddisk_header.h:43
harddisk_identify_device_data secondary_master_data
Data of secondary master.
Definition: harddisk_header.h:53