return 0;
 }
 
+static int mvebu_ahci_bind(struct udevice *dev)
+{
+       struct udevice *scsi_dev;
+       int ret;
+
+       ret = ahci_bind_scsi(dev, &scsi_dev);
+       if (ret) {
+               debug("%s: Failed to bind (err=%d\n)", __func__, ret);
+               return ret;
+       }
+
+       return 0;
+}
+
 static int mvebu_ahci_probe(struct udevice *dev)
 {
        /*
         */
        board_ahci_enable();
 
-       ahci_init(devfdt_get_addr_ptr(dev));
+       ahci_probe_scsi(dev, (ulong)devfdt_get_addr_ptr(dev));
 
        return 0;
 }
        .name           = "ahci_mvebu",
        .id             = UCLASS_AHCI,
        .of_match       = mvebu_ahci_ids,
+       .bind           = mvebu_ahci_bind,
        .probe          = mvebu_ahci_probe,
 };