[PATCH v2 03/15] scsi: Move cmd_phase enum to the header

Simon Glass sjg at chromium.org
Wed Sep 21 16:21:35 CEST 2022


This can be used by common files, so move it to the SCSI header and rename
it.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

Changes in v2:
- Add a comment for the enum

 drivers/usb/emul/sandbox_flash.c | 24 +++++++++---------------
 include/scsi.h                   | 13 +++++++++++++
 2 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/drivers/usb/emul/sandbox_flash.c b/drivers/usb/emul/sandbox_flash.c
index 7de752100c8..806aed2ef2e 100644
--- a/drivers/usb/emul/sandbox_flash.c
+++ b/drivers/usb/emul/sandbox_flash.c
@@ -23,12 +23,6 @@ enum {
 	SANDBOX_FLASH_BLOCK_LEN		= 512,
 };
 
-enum cmd_phase {
-	PHASE_START,
-	PHASE_DATA,
-	PHASE_STATUS,
-};
-
 enum {
 	STRINGID_MANUFACTURER = 1,
 	STRINGID_PRODUCT,
@@ -56,7 +50,7 @@ struct sandbox_flash_priv {
 	int alloc_len;
 	int transfer_len;
 	int read_len;
-	enum cmd_phase phase;
+	enum scsi_cmd_phase phase;
 	u32 tag;
 	int fd;
 	loff_t file_size;
@@ -290,7 +284,7 @@ static int handle_ufi_command(struct sandbox_flash_plat *plat,
 		return -EPROTONOSUPPORT;
 	}
 
-	priv->phase = priv->transfer_len ? PHASE_DATA : PHASE_STATUS;
+	priv->phase = priv->transfer_len ? SCSIPH_DATA : SCSIPH_STATUS;
 	return 0;
 }
 
@@ -307,7 +301,7 @@ static int sandbox_flash_bulk(struct udevice *dev, struct usb_device *udev,
 	switch (ep) {
 	case SANDBOX_FLASH_EP_OUT:
 		switch (priv->phase) {
-		case PHASE_START:
+		case SCSIPH_START:
 			priv->alloc_len = 0;
 			priv->read_len = 0;
 			if (priv->error || len != UMASS_BBB_CBW_SIZE ||
@@ -322,7 +316,7 @@ static int sandbox_flash_bulk(struct udevice *dev, struct usb_device *udev,
 			priv->tag = cbw->dCBWTag;
 			return handle_ufi_command(plat, priv, cbw->CBWCDB,
 						  cbw->bCDBLength);
-		case PHASE_DATA:
+		case SCSIPH_DATA:
 			debug("data out\n");
 			break;
 		default:
@@ -330,7 +324,7 @@ static int sandbox_flash_bulk(struct udevice *dev, struct usb_device *udev,
 		}
 	case SANDBOX_FLASH_EP_IN:
 		switch (priv->phase) {
-		case PHASE_DATA:
+		case SCSIPH_DATA:
 			debug("data in, len=%x, alloc_len=%x, priv->read_len=%x\n",
 			      len, priv->alloc_len, priv->read_len);
 			if (priv->read_len) {
@@ -344,22 +338,22 @@ static int sandbox_flash_bulk(struct udevice *dev, struct usb_device *udev,
 					return -EIO;
 				priv->read_len -= len / SANDBOX_FLASH_BLOCK_LEN;
 				if (!priv->read_len)
-					priv->phase = PHASE_STATUS;
+					priv->phase = SCSIPH_STATUS;
 			} else {
 				if (priv->alloc_len && len > priv->alloc_len)
 					len = priv->alloc_len;
 				if (len > sizeof(priv->buff))
 					len = sizeof(priv->buff);
 				memcpy(buff, priv->buff, len);
-				priv->phase = PHASE_STATUS;
+				priv->phase = SCSIPH_STATUS;
 			}
 			return len;
-		case PHASE_STATUS:
+		case SCSIPH_STATUS:
 			debug("status in, len=%x\n", len);
 			if (len > sizeof(priv->status))
 				len = sizeof(priv->status);
 			memcpy(buff, &priv->status, len);
-			priv->phase = PHASE_START;
+			priv->phase = SCSIPH_START;
 			return len;
 		default:
 			break;
diff --git a/include/scsi.h b/include/scsi.h
index 99b00e26272..a4f99f0884b 100644
--- a/include/scsi.h
+++ b/include/scsi.h
@@ -187,6 +187,19 @@ struct scsi_cmd {
 #define SCSI_WRITE_LONG	0x3F		/* Write Long (O) */
 #define SCSI_WRITE_SAME	0x41		/* Write Same (O) */
 
+/**
+ * enum scsi_cmd_phase - current phase of the SCSI protocol
+ *
+ * @SCSIPH_START: Start phase
+ * @SCSIPH_DATA: Data phase
+ * @SCSIPH_STATUS: Status phase
+ */
+enum scsi_cmd_phase {
+	SCSIPH_START,
+	SCSIPH_DATA,
+	SCSIPH_STATUS,
+};
+
 /**
  * struct scsi_plat - stores information about SCSI controller
  *
-- 
2.37.3.968.ga6b4b080e4-goog



More information about the U-Boot mailing list