UFSHCD_CAN_QUEUE        = 32,
 };
 
-/* UFSHCD states */
-enum {
-       UFSHCD_STATE_RESET,
-       UFSHCD_STATE_ERROR,
-       UFSHCD_STATE_OPERATIONAL,
-       UFSHCD_STATE_EH_SCHEDULED_FATAL,
-       UFSHCD_STATE_EH_SCHEDULED_NON_FATAL,
-};
-
 /* UFSHCD error handling flags */
 enum {
        UFSHCD_EH_IN_PROGRESS = (1 << 0),
                set_host_byte(cmd, DID_ERROR);
                cmd->scsi_done(cmd);
                goto out;
-       default:
-               dev_WARN_ONCE(hba->dev, 1, "%s: invalid state %d\n",
-                               __func__, hba->ufshcd_state);
-               set_host_byte(cmd, DID_BAD_TARGET);
-               cmd->scsi_done(cmd);
-               goto out;
        }
 
        hba->req_abort_count = 0;
 
        struct ufs_event_hist event[UFS_EVT_CNT];
 };
 
+/**
+ * enum ufshcd_state - UFS host controller state
+ * @UFSHCD_STATE_RESET: Link is not operational. Postpone SCSI command
+ *     processing.
+ * @UFSHCD_STATE_OPERATIONAL: The host controller is operational and can process
+ *     SCSI commands.
+ * @UFSHCD_STATE_EH_SCHEDULED_NON_FATAL: The error handler has been scheduled.
+ *     SCSI commands may be submitted to the controller.
+ * @UFSHCD_STATE_EH_SCHEDULED_FATAL: The error handler has been scheduled. Fail
+ *     newly submitted SCSI commands with error code DID_BAD_TARGET.
+ * @UFSHCD_STATE_ERROR: An unrecoverable error occurred, e.g. link recovery
+ *     failed. Fail all SCSI commands with error code DID_ERROR.
+ */
+enum ufshcd_state {
+       UFSHCD_STATE_RESET,
+       UFSHCD_STATE_OPERATIONAL,
+       UFSHCD_STATE_EH_SCHEDULED_NON_FATAL,
+       UFSHCD_STATE_EH_SCHEDULED_FATAL,
+       UFSHCD_STATE_ERROR,
+};
+
 enum ufshcd_quirks {
        /* Interrupt aggregation support is broken */
        UFSHCD_QUIRK_BROKEN_INTR_AGGR                   = 1 << 0,
  * @tmf_tag_set: TMF tag set.
  * @tmf_queue: Used to allocate TMF tags.
  * @pwr_done: completion for power mode change
- * @ufshcd_state: UFSHCD states
+ * @ufshcd_state: UFSHCD state
  * @eh_flags: Error handling flags
  * @intr_mask: Interrupt Mask Bits
  * @ee_ctrl_mask: Exception event control mask
        struct mutex uic_cmd_mutex;
        struct completion *uic_async_done;
 
-       u32 ufshcd_state;
+       enum ufshcd_state ufshcd_state;
        u32 eh_flags;
        u32 intr_mask;
        u16 ee_ctrl_mask; /* Exception event mask */