[PATCH v3 2/2] scsi: hisi_sas: Add lldd_notify_enable_spinup callback for SAS devices

From: Xingui Yang

Date: Sun Aug 02 2026 - 22:06:16 EST


Register the lldd_notify_enable_spinup callback. The callback sends a
NOTIFY(ENABLE SPINUP) primitive via sl_notify_ssp() to trigger media spinup
on SAS devices in Active_Wait or Idle_Wait state.

Signed-off-by: Xingui Yang <yangxingui@xxxxxxxxxx>
---
drivers/scsi/hisi_sas/hisi_sas_main.c | 11 +++++++++++
1 file changed, 11 insertions(+)

diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
index 944ce19ae2fc..a726d6680386 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
@@ -2081,6 +2081,16 @@ static int hisi_sas_write_gpio(struct sas_ha_struct *sha, u8 reg_type,
reg_index, reg_count, write_data);
}

+static void hisi_sas_notify_enable_spinup(struct asd_sas_phy *phy)
+{
+ struct hisi_sas_phy *hisi_phy =
+ container_of(phy, struct hisi_sas_phy, sas_phy);
+ struct hisi_hba *hisi_hba = hisi_phy->hisi_hba;
+
+ hisi_hba->hw->sl_notify_ssp(hisi_hba, phy->id);
+ dev_info(hisi_hba->dev, "phy%d notify enable spinup\n", phy->id);
+}
+
static void hisi_sas_phy_disconnected(struct hisi_sas_phy *phy)
{
struct asd_sas_phy *sas_phy = &phy->sas_phy;
@@ -2180,6 +2190,7 @@ static struct sas_domain_function_template hisi_sas_transport_ops = {
.lldd_write_gpio = hisi_sas_write_gpio,
.lldd_tmf_aborted = hisi_sas_tmf_aborted,
.lldd_abort_timeout = hisi_sas_internal_abort_timeout,
+ .lldd_notify_enable_spinup = hisi_sas_notify_enable_spinup,
};

void hisi_sas_init_mem(struct hisi_hba *hisi_hba)
--
2.43.0