aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Cox <alan@lxorguk.ukuu.org.uk>2006-03-27 12:46:37 -0500
committerJeff Garzik <jeff@garzik.org>2006-03-29 19:30:27 -0500
commite35a9e01f2a504871e70576a9e11dbe4d8dee456 (patch)
tree4761c2d8b9d827d95cc531376e5c02666734ecf6
parent4e5ec5dba22ea509b1a004f9815751f0ffc815e5 (diff)
[PATCH] libata: Add ->set_mode hook for odd drivers
Some hardware doesn't want the usual mode setup logic running. This allows the hardware driver to replace it for special cases in the least invasive way possible. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--drivers/scsi/libata-core.c6
-rw-r--r--include/linux/libata.h1
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index 86310562da8b..10933cb722e6 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -1409,7 +1409,11 @@ static int ata_bus_probe(struct ata_port *ap)
1409 if (!found) 1409 if (!found)
1410 goto err_out_disable; 1410 goto err_out_disable;
1411 1411
1412 ata_set_mode(ap); 1412 if (ap->ops->set_mode)
1413 ap->ops->set_mode(ap);
1414 else
1415 ata_set_mode(ap);
1416
1413 if (ap->flags & ATA_FLAG_PORT_DISABLED) 1417 if (ap->flags & ATA_FLAG_PORT_DISABLED)
1414 goto err_out_disable; 1418 goto err_out_disable;
1415 1419
diff --git a/include/linux/libata.h b/include/linux/libata.h
index a5c213ce97c9..6a9316cbb70b 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -433,6 +433,7 @@ struct ata_port_operations {
433 void (*dev_select)(struct ata_port *ap, unsigned int device); 433 void (*dev_select)(struct ata_port *ap, unsigned int device);
434 434
435 void (*phy_reset) (struct ata_port *ap); /* obsolete */ 435 void (*phy_reset) (struct ata_port *ap); /* obsolete */
436 void (*set_mode) (struct ata_port *ap);
436 int (*probe_reset) (struct ata_port *ap, unsigned int *classes); 437 int (*probe_reset) (struct ata_port *ap, unsigned int *classes);
437 438
438 void (*post_set_mode) (struct ata_port *ap); 439 void (*post_set_mode) (struct ata_port *ap);