diff options
author | Tejun Heo <htejun@gmail.com> | 2006-05-31 18:28:24 +0900 |
---|---|---|
committer | Tejun Heo <htejun@gmail.com> | 2006-05-31 18:28:24 +0900 |
commit | d87fa38e70853a9607dc34a02d15cf5f149f49f2 (patch) | |
tree | 6afc6f8b9ff9c2c441efd61829d5d6fa6eb5698d /drivers/scsi/libata-eh.c | |
parent | 52783c5dcc8d317bc8c3e2692d366e8a305abada (diff) | |
download | lwn-d87fa38e70853a9607dc34a02d15cf5f149f49f2.tar.gz lwn-d87fa38e70853a9607dc34a02d15cf5f149f49f2.zip |
[PATCH] libata-hp: move ata_do_reset() to libata-eh.c
With ops->probe_init() gone, no user is left in libata-core.c. Move
ata_do_reset() to libata-eh.c and make it static.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Diffstat (limited to 'drivers/scsi/libata-eh.c')
-rw-r--r-- | drivers/scsi/libata-eh.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/scsi/libata-eh.c b/drivers/scsi/libata-eh.c index 30a83a57a12f..d4b80b64342c 100644 --- a/drivers/scsi/libata-eh.c +++ b/drivers/scsi/libata-eh.c @@ -1355,6 +1355,34 @@ static void ata_eh_report(struct ata_port *ap) } } +static int ata_do_reset(struct ata_port *ap, ata_reset_fn_t reset, + unsigned int *classes) +{ + int i, rc; + + for (i = 0; i < ATA_MAX_DEVICES; i++) + classes[i] = ATA_DEV_UNKNOWN; + + rc = reset(ap, classes); + if (rc) + return rc; + + /* If any class isn't ATA_DEV_UNKNOWN, consider classification + * is complete and convert all ATA_DEV_UNKNOWN to + * ATA_DEV_NONE. + */ + for (i = 0; i < ATA_MAX_DEVICES; i++) + if (classes[i] != ATA_DEV_UNKNOWN) + break; + + if (i < ATA_MAX_DEVICES) + for (i = 0; i < ATA_MAX_DEVICES; i++) + if (classes[i] == ATA_DEV_UNKNOWN) + classes[i] = ATA_DEV_NONE; + + return 0; +} + static int ata_eh_followup_srst_needed(int rc, int classify, const unsigned int *classes) { |