diff mbox

[U-Boot,v1,4/5] scsi: Change scsi_scan() to be able to return value

Message ID f1e9b4a13e8964d5760425f84c276c9d0cf1d74c.1480538807.git.michal.simek@xilinx.com
State Accepted
Delegated to: Michal Simek
Headers show

Commit Message

Michal Simek Nov. 30, 2016, 8:46 p.m. UTC
With DM_SCSI this function will return more than one return value to
cover errors.

Suggested-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---

 cmd/scsi.c     | 14 ++++++++++----
 common/scsi.c  |  3 ++-
 include/scsi.h |  2 +-
 3 files changed, 13 insertions(+), 6 deletions(-)

Comments

Tom Rini Dec. 1, 2016, 1:03 a.m. UTC | #1
On Wed, Nov 30, 2016 at 09:46:50PM +0100, Michal Simek wrote:

> With DM_SCSI this function will return more than one return value to
> cover errors.
> 
> Suggested-by: Simon Glass <sjg@chromium.org>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>

Reviewed-by: Tom Rini <trini@konsulko.com>
Simon Glass Dec. 1, 2016, 2:20 a.m. UTC | #2
On 30 November 2016 at 13:46, Michal Simek <michal.simek@xilinx.com> wrote:
> With DM_SCSI this function will return more than one return value to
> cover errors.
>
> Suggested-by: Simon Glass <sjg@chromium.org>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
>
>  cmd/scsi.c     | 14 ++++++++++----
>  common/scsi.c  |  3 ++-
>  include/scsi.h |  2 +-
>  3 files changed, 13 insertions(+), 6 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>
diff mbox

Patch

diff --git a/cmd/scsi.c b/cmd/scsi.c
index a9c954a82f3d..4213ec867751 100644
--- a/cmd/scsi.c
+++ b/cmd/scsi.c
@@ -27,6 +27,8 @@  static int do_scsiboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
  */
 static int do_scsi(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 {
+	int ret;
+
 	switch (argc) {
 	case 0:
 	case 1:
@@ -35,8 +37,10 @@  static int do_scsi(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 		if (strncmp(argv[1], "res", 3) == 0) {
 			printf("\nReset SCSI\n");
 			scsi_bus_reset();
-			scsi_scan(1);
-			return 0;
+			ret = scsi_scan(1);
+			if (ret)
+				return CMD_RET_FAILURE;
+			return ret;
 		}
 		if (strncmp(argv[1], "inf", 3) == 0) {
 			blk_list_devices(IF_TYPE_SCSI);
@@ -51,8 +55,10 @@  static int do_scsi(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 			return 0;
 		}
 		if (strncmp(argv[1], "scan", 4) == 0) {
-			scsi_scan(1);
-			return 0;
+			ret = scsi_scan(1);
+			if (ret)
+				return CMD_RET_FAILURE;
+			return ret;
 		}
 		if (strncmp(argv[1], "part", 4) == 0) {
 			if (blk_list_part(IF_TYPE_SCSI))
diff --git a/common/scsi.c b/common/scsi.c
index ba6561605810..839b30b9bb8e 100644
--- a/common/scsi.c
+++ b/common/scsi.c
@@ -524,7 +524,7 @@  removable:
  * (re)-scan the scsi bus and reports scsi device info
  * to the user if mode = 1
  */
-void scsi_scan(int mode)
+int scsi_scan(int mode)
 {
 	unsigned char i, lun;
 	int ret;
@@ -558,6 +558,7 @@  void scsi_scan(int mode)
 #ifndef CONFIG_SPL_BUILD
 	setenv_ulong("scsidevs", scsi_max_devs);
 #endif
+	return 0;
 }
 
 #ifdef CONFIG_BLK
diff --git a/include/scsi.h b/include/scsi.h
index eed8ff971731..c8796785a465 100644
--- a/include/scsi.h
+++ b/include/scsi.h
@@ -173,7 +173,7 @@  void scsi_low_level_init(int busdevfunc);
  * functions residing inside cmd_scsi.c
  */
 void scsi_init(void);
-void scsi_scan(int mode);
+int scsi_scan(int mode);
 
 #define SCSI_IDENTIFY					0xC0  /* not used */