|
@@ -2519,12 +2519,13 @@ static int ata_dev_set_mode(struct ata_device *dev)
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * ata_set_mode - Program timings and issue SET FEATURES - XFER
|
|
|
+ * ata_do_set_mode - Program timings and issue SET FEATURES - XFER
|
|
|
* @ap: port on which timings will be programmed
|
|
|
* @r_failed_dev: out paramter for failed device
|
|
|
*
|
|
|
- * Set ATA device disk transfer mode (PIO3, UDMA6, etc.). If
|
|
|
- * ata_set_mode() fails, pointer to the failing device is
|
|
|
+ * Standard implementation of the function used to tune and set
|
|
|
+ * ATA device disk transfer mode (PIO3, UDMA6, etc.). If
|
|
|
+ * ata_dev_set_mode() fails, pointer to the failing device is
|
|
|
* returned in @r_failed_dev.
|
|
|
*
|
|
|
* LOCKING:
|
|
@@ -2533,14 +2534,12 @@ static int ata_dev_set_mode(struct ata_device *dev)
|
|
|
* RETURNS:
|
|
|
* 0 on success, negative errno otherwise
|
|
|
*/
|
|
|
-int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev)
|
|
|
+
|
|
|
+int ata_do_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)
|
|
|
- return ap->ops->set_mode(ap, r_failed_dev);
|
|
|
|
|
|
/* step 1: calculate xfer_mask */
|
|
|
for (i = 0; i < ATA_MAX_DEVICES; i++) {
|
|
@@ -2624,6 +2623,29 @@ int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev)
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * ata_set_mode - Program timings and issue SET FEATURES - XFER
|
|
|
+ * @ap: port on which timings will be programmed
|
|
|
+ * @r_failed_dev: out paramter for failed device
|
|
|
+ *
|
|
|
+ * Set ATA device disk transfer mode (PIO3, UDMA6, etc.). If
|
|
|
+ * ata_set_mode() fails, pointer to the failing device is
|
|
|
+ * returned in @r_failed_dev.
|
|
|
+ *
|
|
|
+ * LOCKING:
|
|
|
+ * PCI/etc. bus probe sem.
|
|
|
+ *
|
|
|
+ * RETURNS:
|
|
|
+ * 0 on success, negative errno otherwise
|
|
|
+ */
|
|
|
+int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev)
|
|
|
+{
|
|
|
+ /* has private set_mode? */
|
|
|
+ if (ap->ops->set_mode)
|
|
|
+ return ap->ops->set_mode(ap, r_failed_dev);
|
|
|
+ return ata_do_set_mode(ap, r_failed_dev);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* ata_tf_to_host - issue ATA taskfile to host controller
|
|
|
* @ap: port to which command is being issued
|
|
@@ -6413,6 +6435,7 @@ EXPORT_SYMBOL_GPL(ata_altstatus);
|
|
|
EXPORT_SYMBOL_GPL(ata_exec_command);
|
|
|
EXPORT_SYMBOL_GPL(ata_port_start);
|
|
|
EXPORT_SYMBOL_GPL(ata_interrupt);
|
|
|
+EXPORT_SYMBOL_GPL(ata_do_set_mode);
|
|
|
EXPORT_SYMBOL_GPL(ata_data_xfer);
|
|
|
EXPORT_SYMBOL_GPL(ata_data_xfer_noirq);
|
|
|
EXPORT_SYMBOL_GPL(ata_qc_prep);
|