summaryrefslogtreecommitdiffstats
path: root/sys/cam
diff options
context:
space:
mode:
authorsimokawa <simokawa@FreeBSD.org>2002-02-21 11:58:47 +0000
committersimokawa <simokawa@FreeBSD.org>2002-02-21 11:58:47 +0000
commit3396fcf863c24b857ad0882b134338f8fe464a9f (patch)
tree07596e3fa35b3fa495d3321925492015ac927ee9 /sys/cam
parenta230636d24b4a64a7e24ca52f6aa9a02328fa47c (diff)
downloadFreeBSD-src-3396fcf863c24b857ad0882b134338f8fe464a9f.zip
FreeBSD-src-3396fcf863c24b857ad0882b134338f8fe464a9f.tar.gz
- Add support for Simplified Direct Access Device, mostly for
Firewire/SBP-II devices. - Add quirk for Logitec USB/Firewire HDD. MFC after: 3 days.
Diffstat (limited to 'sys/cam')
-rw-r--r--sys/cam/scsi/scsi_all.c6
-rw-r--r--sys/cam/scsi/scsi_da.c16
2 files changed, 21 insertions, 1 deletions
diff --git a/sys/cam/scsi/scsi_all.c b/sys/cam/scsi/scsi_all.c
index 46fe7e6..12cfa19 100644
--- a/sys/cam/scsi/scsi_all.c
+++ b/sys/cam/scsi/scsi_all.c
@@ -2220,6 +2220,12 @@ scsi_print_inquiry(struct scsi_inquiry_data *inq_data)
case T_ENCLOSURE:
dtype = "Enclosure Services";
break;
+ case T_RBC:
+ dtype = "Simplified Direct Access";
+ break;
+ case T_OCRW:
+ dtype = "Optical Card Read/Write";
+ break;
case T_NODEVICE:
dtype = "Uninstalled";
default:
diff --git a/sys/cam/scsi/scsi_da.c b/sys/cam/scsi/scsi_da.c
index dee1692..b58ba9a 100644
--- a/sys/cam/scsi/scsi_da.c
+++ b/sys/cam/scsi/scsi_da.c
@@ -141,6 +141,19 @@ static const char microp[] = "MICROP";
static struct da_quirk_entry da_quirk_table[] =
{
+ /*
+ * Logitec USB/Firewire LHD-P30FU
+ */
+ {
+ /* USB part */
+ {T_DIRECT, SIP_MEDIA_FIXED, "HITACHI_", "DK23DA*", "*"},
+ /*quirks*/ DA_Q_NO_6_BYTE
+ },
+ {
+ /* Firewire part */
+ {T_DIRECT, SIP_MEDIA_FIXED, "LSILogic", "SYM13FW*", "*"},
+ /*quirks*/ DA_Q_NO_6_BYTE
+ },
{
/*
* Fujitsu M2513A MO drives.
@@ -1032,6 +1045,7 @@ daasync(void *callback_arg, u_int32_t code,
break;
if (SID_TYPE(&cgd->inq_data) != T_DIRECT
+ && SID_TYPE(&cgd->inq_data) != T_RBC
&& SID_TYPE(&cgd->inq_data) != T_OPTICAL)
break;
@@ -1131,7 +1145,7 @@ daregister(struct cam_periph *periph, void *arg)
else
softc->quirks = DA_Q_NONE;
- if (softc->quirks & DA_Q_NO_6_BYTE)
+ if (softc->quirks & DA_Q_NO_6_BYTE || SID_TYPE(&cgd->inq_data) == T_RBC)
softc->minimum_cmd_size = 10;
else
softc->minimum_cmd_size = 6;
OpenPOWER on IntegriCloud