Rev 4537 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4537 | Rev 4668 | ||
|---|---|---|---|
| Line 34... | Line 34... | ||
| 34 | 34 | ||
| 35 | #ifndef __ATA_BD_H__ |
35 | #ifndef __ATA_BD_H__ |
| 36 | #define __ATA_BD_H__ |
36 | #define __ATA_BD_H__ |
| 37 | 37 | ||
| 38 | #include <sys/types.h> |
38 | #include <sys/types.h> |
| - | 39 | #include <fibril_sync.h> |
|
| 39 | 40 | ||
| 40 | enum { |
41 | enum { |
| 41 | CTL_READ_START = 0, |
42 | CTL_READ_START = 0, |
| 42 | CTL_WRITE_START = 1, |
43 | CTL_WRITE_START = 1, |
| 43 | }; |
44 | }; |
| Line 48... | Line 49... | ||
| 48 | 49 | ||
| 49 | enum { |
50 | enum { |
| 50 | MAX_DISKS = 2 |
51 | MAX_DISKS = 2 |
| 51 | }; |
52 | }; |
| 52 | 53 | ||
| - | 54 | /** ATA Command Register Block. */ |
|
| 53 | typedef union { |
55 | typedef union { |
| 54 | /* Read */ |
56 | /* Read/Write */ |
| 55 | struct { |
57 | struct { |
| 56 | uint8_t data_port; |
58 | uint16_t data_port; |
| 57 | uint8_t error; |
- | |
| 58 | uint8_t sector_count; |
59 | uint8_t sector_count; |
| 59 | uint8_t sector_number; |
60 | uint8_t sector_number; |
| 60 | uint8_t cylinder_low; |
61 | uint8_t cylinder_low; |
| 61 | uint8_t cylinder_high; |
62 | uint8_t cylinder_high; |
| 62 | uint8_t drive_head; |
63 | uint8_t drive_head; |
| - | 64 | uint8_t pad_rw0; |
|
| - | 65 | }; |
|
| - | 66 | ||
| - | 67 | /* Read Only */ |
|
| - | 68 | struct { |
|
| - | 69 | uint8_t pad_ro0; |
|
| - | 70 | uint8_t error; |
|
| - | 71 | uint8_t pad_ro1[5]; |
|
| 63 | uint8_t status; |
72 | uint8_t status; |
| 64 | }; |
73 | }; |
| 65 | 74 | ||
| 66 | /* Write */ |
75 | /* Write Only */ |
| 67 | struct { |
76 | struct { |
| 68 | uint8_t pad0[7]; |
77 | uint8_t pad_wo0; |
| - | 78 | uint8_t features; |
|
| - | 79 | uint8_t pad_wo1[5]; |
|
| 69 | uint8_t command; |
80 | uint8_t command; |
| 70 | }; |
81 | }; |
| 71 | } ata_cmd_t; |
82 | } ata_cmd_t; |
| 72 | 83 | ||
| 73 | typedef union { |
84 | typedef union { |
| Line 127... | Line 138... | ||
| 127 | bool present; |
138 | bool present; |
| 128 | unsigned heads; |
139 | unsigned heads; |
| 129 | unsigned cylinders; |
140 | unsigned cylinders; |
| 130 | unsigned sectors; |
141 | unsigned sectors; |
| 131 | uint64_t blocks; |
142 | uint64_t blocks; |
| - | 143 | ||
| - | 144 | fibril_mutex_t lock; |
|
| - | 145 | dev_handle_t dev_handle; |
|
| 132 | } disk_t; |
146 | } disk_t; |
| 133 | 147 | ||
| 134 | #endif |
148 | #endif |
| 135 | 149 | ||
| 136 | /** @} |
150 | /** @} |