git: cd95f18c477c - main - camcontrol: add support for Toshiba drive firmware update

From: Kenneth D. Merry <ken_at_FreeBSD.org>
Date: Fri, 29 Dec 2023 19:25:42 UTC
The branch main has been updated by ken:

URL: https://cgit.FreeBSD.org/src/commit/?id=cd95f18c477ca30c3ba6f98577d321f56b1e8439

commit cd95f18c477ca30c3ba6f98577d321f56b1e8439
Author:     Kenneth D. Merry <ken@FreeBSD.org>
AuthorDate: 2023-12-29 19:23:51 +0000
Commit:     Kenneth D. Merry <ken@FreeBSD.org>
CommitDate: 2023-12-29 19:23:51 +0000

    camcontrol: add support for Toshiba drive firmware update
    
    Thanks to Toshiba for providing the SCSI spec for their latest
    generation drives so I could confirm how they operate.
    
    The firmware download works in a pretty standard way, so this
    is a straightforward table addition.
    
    sbin/camcontrol/camcontrol.8:
            Document that Toshiba drives are supported for fwdownload,
            and that it was tested on TOSHIBA MG10SFA22TE 22TB drives.
    
    sbin/camcontrol/fwdownload.c:
            Add TOSHIBA to the known SCSI vendors list for fwdownload.
    
    Sponsored by:   Spectra Logic
    MFC after:      3 days
---
 sbin/camcontrol/camcontrol.8 | 2 ++
 sbin/camcontrol/fwdownload.c | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/sbin/camcontrol/camcontrol.8 b/sbin/camcontrol/camcontrol.8
index 0151376ff39f..ae6d896752fc 100644
--- a/sbin/camcontrol/camcontrol.8
+++ b/sbin/camcontrol/camcontrol.8
@@ -1700,6 +1700,8 @@ Tested with Constellation ES (ST32000444SS), ES.2 (ST33000651SS) and
 ES.3 (ST1000NM0023) drives.
 .It SmrtStor
 Tested with 400GB Optimus SSDs (TXA2D20400GA6001).
+.It TOSHIBA
+Tested with 22TB MG10SFA22TE SAS drives.
 .El
 .Pp
 .Em WARNING! WARNING! WARNING!
diff --git a/sbin/camcontrol/fwdownload.c b/sbin/camcontrol/fwdownload.c
index 2ab18c93392b..569021c2bfc1 100644
--- a/sbin/camcontrol/fwdownload.c
+++ b/sbin/camcontrol/fwdownload.c
@@ -83,6 +83,7 @@ typedef enum {
 	VENDOR_SAMSUNG,
 	VENDOR_SEAGATE,
 	VENDOR_SMART,
+	VENDOR_TOSHIBA,
 	VENDOR_ATA,
 	VENDOR_UNKNOWN
 } fw_vendor_t;
@@ -212,6 +213,8 @@ static struct fw_vendor vendors_list[] = {
 	0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
 	{VENDOR_SMART,		"SmrtStor",	T_DIRECT,
 	0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
+	{VENDOR_TOSHIBA,	"TOSHIBA",	T_DIRECT,
+	0x8000, 0x07, 0x07, 0, 1, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
 	{VENDOR_HGST,	 	"WD",		T_DIRECT,
 	0x1000, 0x07, 0x07, 1, 0, FW_TUR_READY, WB_TIMEOUT, FW_TIMEOUT_DEFAULT},
 	{VENDOR_HGST,	 	"WDC",		T_DIRECT,