diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 2e51b49..4830bcd 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; }