dm: ahci: Move common code for starting ports into a function
This code is duplicated. Create a ahci_start_ports() function to handle this and call it from both places. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
099c239d68
commit
62b4ec8e30
@ -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)
|
#if defined(CONFIG_DM_SCSI)
|
||||||
void scsi_low_level_init(int busdevfunc, struct udevice *dev)
|
void scsi_low_level_init(int busdevfunc, struct udevice *dev)
|
||||||
#else
|
#else
|
||||||
@ -978,8 +997,6 @@ void scsi_low_level_init(int busdevfunc)
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
struct ahci_uc_priv *uc_priv;
|
struct ahci_uc_priv *uc_priv;
|
||||||
int i;
|
|
||||||
u32 linkmap;
|
|
||||||
|
|
||||||
#ifndef CONFIG_SCSI_AHCI_PLAT
|
#ifndef CONFIG_SCSI_AHCI_PLAT
|
||||||
# if defined(CONFIG_DM_PCI)
|
# if defined(CONFIG_DM_PCI)
|
||||||
@ -998,24 +1015,14 @@ void scsi_low_level_init(int busdevfunc)
|
|||||||
#endif
|
#endif
|
||||||
uc_priv = probe_ent;
|
uc_priv = probe_ent;
|
||||||
|
|
||||||
linkmap = uc_priv->link_port_map;
|
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SCSI_AHCI_PLAT
|
#ifdef CONFIG_SCSI_AHCI_PLAT
|
||||||
int ahci_init(void __iomem *base)
|
int ahci_init(void __iomem *base)
|
||||||
{
|
{
|
||||||
struct ahci_uc_priv *uc_priv;
|
struct ahci_uc_priv *uc_priv;
|
||||||
int i, rc = 0;
|
int rc = 0;
|
||||||
u32 linkmap;
|
|
||||||
|
|
||||||
probe_ent = malloc(sizeof(struct ahci_uc_priv));
|
probe_ent = malloc(sizeof(struct ahci_uc_priv));
|
||||||
if (!probe_ent) {
|
if (!probe_ent) {
|
||||||
@ -1043,16 +1050,8 @@ int ahci_init(void __iomem *base)
|
|||||||
|
|
||||||
ahci_print_info(uc_priv);
|
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:
|
err_out:
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user