
From: Simon Glass <sjg@chromium.org> Rather than open-coding the SCSI-inquiry-response flags, add an enum and use that. Signed-off-by: Simon Glass <sjg@chromium.org> --- disk/part.c | 5 +++-- drivers/block/ide.c | 3 ++- drivers/scsi/scsi.c | 4 ++-- include/scsi.h | 8 ++++++++ 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/disk/part.c b/disk/part.c index d922fddb415..7a3b87825be 100644 --- a/disk/part.c +++ b/disk/part.c @@ -14,6 +14,7 @@ #include <log.h> #include <malloc.h> #include <part.h> +#include <scsi.h> #include <ubifs_uboot.h> #include <dm/uclass.h> @@ -221,7 +222,7 @@ void dev_print(struct blk_desc *desc) puts (" Type: "); if (desc->removable) puts ("Removable "); - switch (desc->type & 0x1F) { + switch (desc->type & SCSIRF_TYPE_MASK) { case DEV_TYPE_HARDDISK: puts ("Hard Disk"); break; @@ -235,7 +236,7 @@ void dev_print(struct blk_desc *desc) puts ("Tape"); break; default: - printf("# %02X #", desc->type & 0x1F); + printf("# %02X #", desc->type & SCSIRF_TYPE_MASK); break; } puts ("\n"); diff --git a/drivers/block/ide.c b/drivers/block/ide.c index cab5e1bc92b..85d7c1f9720 100644 --- a/drivers/block/ide.c +++ b/drivers/block/ide.c @@ -13,6 +13,7 @@ #include <ide.h> #include <log.h> #include <part.h> +#include <scsi.h> #include <watchdog.h> #include <asm/io.h> #include <linux/delay.h> @@ -476,7 +477,7 @@ static void atapi_inquiry(struct blk_desc *desc) desc->lba = 0; desc->blksz = 0; desc->log2blksz = LOG2_INVALID(typeof(desc->log2blksz)); - desc->type = iobuf[0] & 0x1f; + desc->type = iobuf[0] & SCSIRF_TYPE_MASK; if (iobuf[1] & 0x80) desc->removable = 1; diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index fee0471c2e4..ea4e3e6a2d2 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c @@ -478,9 +478,9 @@ static int scsi_detect_dev(struct udevice *dev, int target, int lun, } perq = tempbuff[0]; modi = tempbuff[1]; - if ((perq & 0x1f) == 0x1f) + if ((perq & SCSIRF_TYPE_MASK) == SCSIRF_TYPE_UNKNOWN) return -ENODEV; /* skip unknown devices */ - if ((modi & 0x80) == 0x80) /* drive is removable */ + if (modi & SCSIRF_FLAGS_REMOVABLE) /* drive is removable */ dev_desc->removable = true; /* get info for this device */ scsi_ident_cpy((unsigned char *)dev_desc->vendor, diff --git a/include/scsi.h b/include/scsi.h index b81bc762677..da4f1ed08b7 100644 --- a/include/scsi.h +++ b/include/scsi.h @@ -8,6 +8,7 @@ #include <asm/cache.h> #include <bouncebuf.h> +#include <linux/bitops.h> #include <linux/dma-direction.h> struct udevice; @@ -199,6 +200,13 @@ enum scsi_cmd_phase { SCSIPH_STATUS, }; +enum scsi_resp_t { + SCSIRF_TYPE_MASK = 0x1f, + SCSIRF_TYPE_UNKNOWN = 0x1f, + + SCSIRF_FLAGS_REMOVABLE = BIT(8), +}; + /** * struct scsi_inquiry_resp - holds a SCSI inquiry command * -- 2.43.0