@ -431,7 +431,7 @@ static void ahci_print_info(struct ahci_uc_priv *uc_priv)
cap2 & ( 1 < < 0 ) ? " boh " : " " ) ;
}
# ifndef CONFIG_SCSI_AHCI_PLAT
# if defined(CONFIG_DM_SCSI) || !defined(CONFIG_SCSI_AHCI_PLAT)
# if defined(CONFIG_DM_PCI) || defined(CONFIG_DM_SCSI)
static int ahci_init_one ( struct ahci_uc_priv * uc_priv , struct udevice * dev )
# else
@ -1158,11 +1158,8 @@ int ahci_bind_scsi(struct udevice *ahci_dev, struct udevice **devp)
return 0 ;
}
int ahci_probe_scsi ( struct udevice * ahci_dev )
int ahci_probe_scsi ( struct udevice * ahci_dev , ulong base )
{
# ifdef CONFIG_SCSI_AHCI_PLAT
return - ENOSYS ; /* TODO(sjg@chromium.org): Support non-PCI AHCI */
# else
struct ahci_uc_priv * uc_priv ;
struct scsi_platdata * uc_plat ;
struct udevice * dev ;
@ -1172,22 +1169,33 @@ int ahci_probe_scsi(struct udevice *ahci_dev)
if ( ! dev )
return - ENODEV ;
uc_plat = dev_get_uclass_platdata ( dev ) ;
uc_plat - > base = ( ulong ) dm_pci_map_bar ( ahci_dev , PCI_BASE_ADDRESS_5 ,
PCI_REGION_MEM ) ;
uc_plat - > base = base ;
uc_plat - > max_lun = 1 ;
uc_plat - > max_id = 2 ;
uc_priv = dev_get_uclass_priv ( dev ) ;
uc_priv = dev_get_uclass_priv ( ahci_dev ) ;
ret = ahci_init_one ( uc_priv , dev ) ;
if ( ret )
return ret ;
ret = ahci_start_ports ( uc_priv ) ;
if ( ret )
return ret ;
# endif
return 0 ;
}
# ifdef CONFIG_DM_PCI
int ahci_probe_scsi_pci ( struct udevice * ahci_dev )
{
ulong base ;
base = ( ulong ) dm_pci_map_bar ( ahci_dev , PCI_BASE_ADDRESS_5 ,
PCI_REGION_MEM ) ;
return ahci_probe_scsi ( ahci_dev , base ) ;
}
# endif
struct scsi_ops scsi_ops = {
. exec = ahci_scsi_exec ,
. bus_reset = ahci_scsi_bus_reset ,