Split out the code that scans a single SCSI bus into a separate function.
This will allow it to be used from driver model.

Signed-off-by: Simon Glass <s...@chromium.org>
---

 drivers/scsi/scsi.c | 35 +++++++++++++++++++++++------------
 include/scsi.h      |  8 ++++++++
 2 files changed, 31 insertions(+), 12 deletions(-)

diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 80c5ce699e..2b87548bd3 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -601,9 +601,30 @@ static int do_scsi_scan_one(struct udevice *dev, int id, 
int lun, bool verbose)
        return 0;
 }
 
+int scsi_scan_dev(struct udevice *dev, bool verbose)
+{
+       struct scsi_platdata *uc_plat; /* scsi controller platdata */
+       int ret;
+       int i;
+       int lun;
+
+       /* probe SCSI controller driver */
+       ret = device_probe(dev);
+       if (ret)
+               return ret;
+
+       /* Get controller platdata */
+       uc_plat = dev_get_uclass_platdata(dev);
+
+       for (i = 0; i < uc_plat->max_id; i++)
+               for (lun = 0; lun < uc_plat->max_lun; lun++)
+                       do_scsi_scan_one(dev, i, lun, verbose);
+
+       return 0;
+}
+
 int scsi_scan(bool verbose)
 {
-       unsigned char i, lun;
        struct uclass *uc;
        struct udevice *dev; /* SCSI controller */
        int ret;
@@ -618,19 +639,9 @@ int scsi_scan(bool verbose)
                return ret;
 
        uclass_foreach_dev(dev, uc) {
-               struct scsi_platdata *plat; /* scsi controller platdata */
-
-               /* probe SCSI controller driver */
-               ret = device_probe(dev);
+               ret = scsi_scan_dev(dev, verbose);
                if (ret)
                        return ret;
-
-               /* Get controller platdata */
-               plat = dev_get_uclass_platdata(dev);
-
-               for (i = 0; i < plat->max_id; i++)
-                       for (lun = 0; lun < plat->max_lun; lun++)
-                               do_scsi_scan_one(dev, i, lun, verbose);
        }
 
        return 0;
diff --git a/include/scsi.h b/include/scsi.h
index 9cdd13c795..7173912de4 100644
--- a/include/scsi.h
+++ b/include/scsi.h
@@ -219,6 +219,14 @@ int scsi_bus_reset(struct udevice *dev);
  */
 int scsi_scan(bool verbose);
 
+/**
+ * scsi_scan_dev() - scan a SCSI bus and create devices
+ *
+ * @dev:       SCSI bus
+ * @verbose:   true to show information about each device found
+ */
+int scsi_scan_dev(struct udevice *dev, bool verbose);
+
 #ifndef CONFIG_DM_SCSI
 void scsi_low_level_init(int busdevfunc);
 void scsi_init(void);
-- 
2.13.0.506.g27d5fe0cd-goog

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to