Rev 4621 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4621 | Rev 4623 | ||
---|---|---|---|
Line 94... | Line 94... | ||
94 | 94 | ||
95 | if (ata_bd_init() != EOK) |
95 | if (ata_bd_init() != EOK) |
96 | return -1; |
96 | return -1; |
97 | 97 | ||
98 | /* Put drives to reset, disable interrupts. */ |
98 | /* Put drives to reset, disable interrupts. */ |
99 | printf("Reset drives...\n"); |
99 | printf("Reset drives... "); |
- | 100 | fflush(stdout); |
|
- | 101 | ||
100 | pio_write_8(&ctl->device_control, DCR_SRST); |
102 | pio_write_8(&ctl->device_control, DCR_SRST); |
101 | /* FIXME: Find out how to do this properly. */ |
103 | /* FIXME: Find out how to do this properly. */ |
102 | async_usleep(100); |
104 | async_usleep(100); |
103 | pio_write_8(&ctl->device_control, 0); |
105 | pio_write_8(&ctl->device_control, 0); |
104 | 106 | ||
105 | do { |
107 | do { |
106 | status = pio_read_8(&cmd->status); |
108 | status = pio_read_8(&cmd->status); |
107 | } while ((status & SR_BSY) != 0); |
109 | } while ((status & SR_BSY) != 0); |
108 | printf("Done\n"); |
110 | printf("Done\n"); |
109 | 111 | ||
110 | printf("Status = 0x%x\n", pio_read_8(&cmd->status)); |
- | |
111 | - | ||
112 | (void) drive_identify(0, &disk[0]); |
112 | (void) drive_identify(0, &disk[0]); |
113 | (void) drive_identify(1, &disk[1]); |
113 | (void) drive_identify(1, &disk[1]); |
114 | 114 | ||
115 | n_disks = 0; |
115 | n_disks = 0; |
116 | 116 | ||
Line 147... | Line 147... | ||
147 | { |
147 | { |
148 | uint16_t data; |
148 | uint16_t data; |
149 | uint8_t status; |
149 | uint8_t status; |
150 | size_t i; |
150 | size_t i; |
151 | 151 | ||
152 | printf("Identify drive %d\n", disk_id); |
152 | printf("Identify drive %d... ", disk_id); |
- | 153 | fflush(stdout); |
|
- | 154 | ||
153 | pio_write_8(&cmd->drive_head, ((disk_id != 0) ? DHR_DRV : 0)); |
155 | pio_write_8(&cmd->drive_head, ((disk_id != 0) ? DHR_DRV : 0)); |
154 | async_usleep(100); |
156 | async_usleep(100); |
155 | pio_write_8(&cmd->command, CMD_IDENTIFY_DRIVE); |
157 | pio_write_8(&cmd->command, CMD_IDENTIFY_DRIVE); |
156 | 158 | ||
157 | status = pio_read_8(&cmd->status); |
159 | status = pio_read_8(&cmd->status); |
158 | printf("Status = 0x%x\n", status); |
- | |
159 | 160 | ||
160 | d->present = false; |
161 | d->present = false; |
161 | 162 | ||
162 | /* |
163 | /* |
163 | * Detect if drive is present. This is Qemu only! Need to |
164 | * Detect if drive is present. This is Qemu only! Need to |