]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
scsi: pm80xx: Add helper function to get the local phy id
authorNiklas Cassel <cassel@kernel.org>
Thu, 14 Aug 2025 17:32:23 +0000 (19:32 +0200)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 19 Aug 2025 02:08:30 +0000 (22:08 -0400)
Avoid duplicated code by adding a helper to get the local phy id.

No functional changes intended.

Signed-off-by: Niklas Cassel <cassel@kernel.org>
Link: https://lore.kernel.org/r/20250814173215.1765055-20-cassel@kernel.org
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/pm8001/pm8001_hwi.c
drivers/scsi/pm8001/pm8001_sas.c
drivers/scsi/pm8001/pm8001_sas.h
drivers/scsi/pm8001/pm80xx_hwi.c

index fb4913547b00fc9c2f44d7b5ac77188d16878ac2..8005995a317c1ebd123090dbf9923ef5a9041494 100644 (file)
@@ -4184,10 +4184,9 @@ static int pm8001_chip_reg_dev_req(struct pm8001_hba_info *pm8001_ha,
                        dev_is_expander(pm8001_dev->dev_type))
                        stp_sspsmp_sata = 0x01; /*ssp or smp*/
        }
-       if (dev_parent_is_expander(dev))
-               phy_id = dev->parent->ex_dev.ex_phy->phy_id;
-       else
-               phy_id = pm8001_dev->attached_phy;
+
+       phy_id = pm80xx_get_local_phy_id(dev);
+
        opc = OPC_INB_REG_DEV;
        linkrate = (pm8001_dev->sas_device->linkrate < dev->port->linkrate) ?
                        pm8001_dev->sas_device->linkrate : dev->port->linkrate;
index 2bdeace6c6bfeb3c031a7f3b1b9d85ed5f643ec9..5595913eb7fc15ea9cdf3a1c9584027daf418af5 100644 (file)
@@ -130,6 +130,16 @@ static void pm80xx_get_tag_opcodes(struct sas_task *task, int *ata_op,
        }
 }
 
+u32 pm80xx_get_local_phy_id(struct domain_device *dev)
+{
+       struct pm8001_device *pm8001_dev = dev->lldd_dev;
+
+       if (dev_parent_is_expander(dev))
+               return dev->parent->ex_dev.ex_phy->phy_id;
+
+       return pm8001_dev->attached_phy;
+}
+
 void pm80xx_show_pending_commands(struct pm8001_hba_info *pm8001_ha,
                                  struct pm8001_device *target_pm8001_dev)
 {
index 334485bb2c12d3aeabbcb36ca623cb6c690c01ed..91b2cdf3535cdd6ad176925710f8df8bbda6cfb0 100644 (file)
@@ -798,6 +798,7 @@ void pm8001_setds_completion(struct domain_device *dev);
 void pm8001_tmf_aborted(struct sas_task *task);
 void pm80xx_show_pending_commands(struct pm8001_hba_info *pm8001_ha,
                                  struct pm8001_device *dev);
+u32 pm80xx_get_local_phy_id(struct domain_device *dev);
 
 #endif
 
index 546d0d26f7a1710e527311a2445665ea8b9bb2ca..31960b72c1e92cd191256b0f6bf6b45327c94da1 100644 (file)
@@ -4797,10 +4797,8 @@ static int pm80xx_chip_reg_dev_req(struct pm8001_hba_info *pm8001_ha,
                        dev_is_expander(pm8001_dev->dev_type))
                        stp_sspsmp_sata = 0x01; /*ssp or smp*/
        }
-       if (dev_parent_is_expander(dev))
-               phy_id = dev->parent->ex_dev.ex_phy->phy_id;
-       else
-               phy_id = pm8001_dev->attached_phy;
+
+       phy_id = pm80xx_get_local_phy_id(dev);
 
        opc = OPC_INB_REG_DEV;