@ -6,6 +6,7 @@
*/
*/
# include <common.h>
# include <common.h>
# include <ahci.h>
# include <dm.h>
# include <dm.h>
# include <fdtdec.h>
# include <fdtdec.h>
# include <asm/io.h>
# include <asm/io.h>
@ -208,6 +209,20 @@ static void bd82x6x_sata_enable(struct udevice *dev)
dm_pci_write_config16 ( dev , 0x90 , map ) ;
dm_pci_write_config16 ( dev , 0x90 , map ) ;
}
}
static int bd82x6x_sata_bind ( struct udevice * dev )
{
struct udevice * scsi_dev ;
int ret ;
if ( gd - > flags & GD_FLG_RELOC ) {
ret = ahci_bind_scsi ( dev , & scsi_dev ) ;
if ( ret )
return ret ;
}
return 0 ;
}
static int bd82x6x_sata_probe ( struct udevice * dev )
static int bd82x6x_sata_probe ( struct udevice * dev )
{
{
struct udevice * pch ;
struct udevice * pch ;
@ -219,8 +234,12 @@ static int bd82x6x_sata_probe(struct udevice *dev)
if ( ! ( gd - > flags & GD_FLG_RELOC ) )
if ( ! ( gd - > flags & GD_FLG_RELOC ) )
bd82x6x_sata_enable ( dev ) ;
bd82x6x_sata_enable ( dev ) ;
else
else {
bd82x6x_sata_init ( dev , pch ) ;
bd82x6x_sata_init ( dev , pch ) ;
ret = ahci_probe_scsi ( dev ) ;
if ( ret )
return ret ;
}
return 0 ;
return 0 ;
}
}
@ -234,5 +253,6 @@ U_BOOT_DRIVER(ahci_ivybridge_drv) = {
. name = " ahci_ivybridge " ,
. name = " ahci_ivybridge " ,
. id = UCLASS_AHCI ,
. id = UCLASS_AHCI ,
. of_match = bd82x6x_ahci_ids ,
. of_match = bd82x6x_ahci_ids ,
. bind = bd82x6x_sata_bind ,
. probe = bd82x6x_sata_probe ,
. probe = bd82x6x_sata_probe ,
} ;
} ;