|
@@ -1426,20 +1426,7 @@ static int ata_bus_probe(struct ata_port *ap)
|
|
|
}
|
|
|
|
|
|
/* configure transfer mode */
|
|
|
- if (ap->ops->set_mode) {
|
|
|
- /* FIXME: make ->set_mode handle no device case and
|
|
|
- * return error code and failing device on failure as
|
|
|
- * ata_set_mode() does.
|
|
|
- */
|
|
|
- for (i = 0; i < ATA_MAX_DEVICES; i++)
|
|
|
- if (ata_dev_enabled(&ap->device[i])) {
|
|
|
- ap->ops->set_mode(ap);
|
|
|
- break;
|
|
|
- }
|
|
|
- rc = 0;
|
|
|
- } else
|
|
|
- rc = ata_set_mode(ap, &dev);
|
|
|
-
|
|
|
+ rc = ata_set_mode(ap, &dev);
|
|
|
if (rc) {
|
|
|
down_xfermask = 1;
|
|
|
goto fail;
|
|
@@ -1997,6 +1984,20 @@ int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev)
|
|
|
struct ata_device *dev;
|
|
|
int i, rc = 0, used_dma = 0, found = 0;
|
|
|
|
|
|
+ /* has private set_mode? */
|
|
|
+ if (ap->ops->set_mode) {
|
|
|
+ /* FIXME: make ->set_mode handle no device case and
|
|
|
+ * return error code and failing device on failure.
|
|
|
+ */
|
|
|
+ for (i = 0; i < ATA_MAX_DEVICES; i++) {
|
|
|
+ if (ata_dev_enabled(&ap->device[i])) {
|
|
|
+ ap->ops->set_mode(ap);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
/* step 1: calculate xfer_mask */
|
|
|
for (i = 0; i < ATA_MAX_DEVICES; i++) {
|
|
|
unsigned int pio_mask, dma_mask;
|