From 02193d0df5c72bf3ed529b5ea14c8cd5a9cc5934 Mon Sep 17 00:00:00 2001 From: Marcus Overhagen Date: Sun, 13 Jan 2008 01:54:08 +0000 Subject: [PATCH] improved timeout handling git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23475 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/bus_managers/ata/ata.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/bus_managers/ata/ata.c b/src/add-ons/kernel/bus_managers/ata/ata.c index 8327e1b85f..6d3124f14a 100644 --- a/src/add-ons/kernel/bus_managers/ata/ata.c +++ b/src/add-ons/kernel/bus_managers/ata/ata.c @@ -21,6 +21,8 @@ static void ata_exec_dma_transfer(ata_request *request); static void ata_exec_pio_transfer(ata_request *request); +status_t ata_wait_idle(ide_bus_info *bus); +status_t ata_read_status(ide_device_info *device, uint8 *status); void @@ -812,7 +814,7 @@ ata_exec_pio_transfer(ata_request *request) { ide_device_info *device = request->device; ide_bus_info *bus = device->bus; - uint32 timeout = request->ccb->timeout > 0 ? + bigtime_t timeout = request->ccb->timeout > 0 ? request->ccb->timeout * 1000 : IDE_STD_TIMEOUT; // FLOW("ata_exec_pio_transfer: length %d, left_blocks %d, left_sg_elem %d, cur_sg_ofs %d\n", @@ -821,7 +823,7 @@ ata_exec_pio_transfer(ata_request *request) while (device->left_blocks > 0) { - if (ata_wait(bus, ide_status_drq, ide_status_bsy, 0, 4000000) != B_OK) { + if (ata_wait(bus, ide_status_drq, ide_status_bsy, 0, timeout) != B_OK) { TRACE("ata_exec_pio_transfer: wait failed\n"); goto error; }