diff options
author | simokawa <simokawa@FreeBSD.org> | 2002-02-21 11:58:47 +0000 |
---|---|---|
committer | simokawa <simokawa@FreeBSD.org> | 2002-02-21 11:58:47 +0000 |
commit | 3396fcf863c24b857ad0882b134338f8fe464a9f (patch) | |
tree | 07596e3fa35b3fa495d3321925492015ac927ee9 /sys | |
parent | a230636d24b4a64a7e24ca52f6aa9a02328fa47c (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/cam/scsi/scsi_all.c | 6 | ||||
-rw-r--r-- | sys/cam/scsi/scsi_da.c | 16 |
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; |