This code is duplicated. Create a ahci_start_ports() function to handle
this and call it from both places.

Signed-off-by: Simon Glass <[email protected]>
---

 drivers/ata/ahci.c | 45 ++++++++++++++++++++++-----------------------
 1 file changed, 22 insertions(+), 23 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 2e51b49790..4830bcdca0 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -971,6 +971,25 @@ int scsi_exec(struct scsi_cmd *pccb)
 
 }
 
+static int ahci_start_ports(struct ahci_uc_priv *uc_priv)
+{
+       u32 linkmap;
+       int i;
+
+       linkmap = uc_priv->link_port_map;
+
+       for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
+               if (((linkmap >> i) & 0x01)) {
+                       if (ahci_port_start(uc_priv, (u8) i)) {
+                               printf("Can not start port %d\n", i);
+                               continue;
+                       }
+               }
+       }
+
+       return 0;
+}
+
 #if defined(CONFIG_DM_SCSI)
 void scsi_low_level_init(int busdevfunc, struct udevice *dev)
 #else
@@ -978,8 +997,6 @@ void scsi_low_level_init(int busdevfunc)
 #endif
 {
        struct ahci_uc_priv *uc_priv;
-       int i;
-       u32 linkmap;
 
 #ifndef CONFIG_SCSI_AHCI_PLAT
 # if defined(CONFIG_DM_PCI)
@@ -998,24 +1015,14 @@ void scsi_low_level_init(int busdevfunc)
 #endif
        uc_priv = probe_ent;
 
-       linkmap = uc_priv->link_port_map;
-
-       for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
-               if (((linkmap >> i) & 0x01)) {
-                       if (ahci_port_start(uc_priv, (u8) i)) {
-                               printf("Can not start port %d\n", i);
-                               continue;
-                       }
-               }
-       }
+       ahci_start_ports(uc_priv);
 }
 
 #ifdef CONFIG_SCSI_AHCI_PLAT
 int ahci_init(void __iomem *base)
 {
        struct ahci_uc_priv *uc_priv;
-       int i, rc = 0;
-       u32 linkmap;
+       int rc = 0;
 
        probe_ent = malloc(sizeof(struct ahci_uc_priv));
        if (!probe_ent) {
@@ -1043,16 +1050,8 @@ int ahci_init(void __iomem *base)
 
        ahci_print_info(uc_priv);
 
-       linkmap = uc_priv->link_port_map;
+       rc = ahci_start_ports(uc_priv);
 
-       for (i = 0; i < CONFIG_SYS_SCSI_MAX_SCSI_ID; i++) {
-               if (((linkmap >> i) & 0x01)) {
-                       if (ahci_port_start(uc_priv, (u8) i)) {
-                               printf("Can not start port %d\n", i);
-                               continue;
-                       }
-               }
-       }
 err_out:
        return rc;
 }
-- 
2.13.0.506.g27d5fe0cd-goog

_______________________________________________
U-Boot mailing list
[email protected]
https://lists.denx.de/listinfo/u-boot

Reply via email to