|
@@ -1675,6 +1675,31 @@ int isci_port_perform_hard_reset(struct isci_host *ihost, struct isci_port *ipor
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
+int isci_ata_check_ready(struct domain_device *dev)
|
|
|
+{
|
|
|
+ struct isci_port *iport = dev->port->lldd_port;
|
|
|
+ struct isci_host *ihost = dev_to_ihost(dev);
|
|
|
+ struct isci_remote_device *idev;
|
|
|
+ unsigned long flags;
|
|
|
+ int rc = 0;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&ihost->scic_lock, flags);
|
|
|
+ idev = isci_lookup_device(dev);
|
|
|
+ spin_unlock_irqrestore(&ihost->scic_lock, flags);
|
|
|
+
|
|
|
+ if (!idev)
|
|
|
+ goto out;
|
|
|
+
|
|
|
+ if (test_bit(IPORT_RESET_PENDING, &iport->state))
|
|
|
+ goto out;
|
|
|
+
|
|
|
+ rc = !!iport->active_phy_mask;
|
|
|
+ out:
|
|
|
+ isci_put_device(idev);
|
|
|
+
|
|
|
+ return rc;
|
|
|
+}
|
|
|
+
|
|
|
void isci_port_deformed(struct asd_sas_phy *phy)
|
|
|
{
|
|
|
struct isci_host *ihost = phy->ha->lldd_ha;
|