xref: /illumos-gate/usr/src/lib/libnvme/common/libnvme_kioxia.c (revision 5b080c3aadfabef156c72cedee796d7b3bac5180)
1*5b080c3aSRobert Mustacchi /*
2*5b080c3aSRobert Mustacchi  * This file and its contents are supplied under the terms of the
3*5b080c3aSRobert Mustacchi  * Common Development and Distribution License ("CDDL"), version 1.0.
4*5b080c3aSRobert Mustacchi  * You may only use this file in accordance with the terms of version
5*5b080c3aSRobert Mustacchi  * 1.0 of the CDDL.
6*5b080c3aSRobert Mustacchi  *
7*5b080c3aSRobert Mustacchi  * A full copy of the text of the CDDL should have accompanied this
8*5b080c3aSRobert Mustacchi  * source.  A copy of the CDDL is also available via the Internet at
9*5b080c3aSRobert Mustacchi  * http://www.illumos.org/license/CDDL.
10*5b080c3aSRobert Mustacchi  */
11*5b080c3aSRobert Mustacchi 
12*5b080c3aSRobert Mustacchi /*
13*5b080c3aSRobert Mustacchi  * Copyright 2024 Oxide Computer Company
14*5b080c3aSRobert Mustacchi  */
15*5b080c3aSRobert Mustacchi 
16*5b080c3aSRobert Mustacchi /*
17*5b080c3aSRobert Mustacchi  * libnvme logic specific to Kioxia devices. This currently supports the Kioxia
18*5b080c3aSRobert Mustacchi  * CD8 and CD8P.
19*5b080c3aSRobert Mustacchi  */
20*5b080c3aSRobert Mustacchi 
21*5b080c3aSRobert Mustacchi #include <sys/sysmacros.h>
22*5b080c3aSRobert Mustacchi #include <sys/debug.h>
23*5b080c3aSRobert Mustacchi #include <sys/nvme/kioxia.h>
24*5b080c3aSRobert Mustacchi 
25*5b080c3aSRobert Mustacchi #include "libnvme_impl.h"
26*5b080c3aSRobert Mustacchi 
27*5b080c3aSRobert Mustacchi static const nvme_vsd_ident_t kioxia_cd8_idents[] = {
28*5b080c3aSRobert Mustacchi 	{
29*5b080c3aSRobert Mustacchi 		.nvdi_vid = KIOXIA_PCI_VID,
30*5b080c3aSRobert Mustacchi 		.nvdi_did = KIOXIA_CD8_DID,
31*5b080c3aSRobert Mustacchi 		.nvdi_human = "Kioxia CD8"
32*5b080c3aSRobert Mustacchi 	}, {
33*5b080c3aSRobert Mustacchi 		.nvdi_vid = KIOXIA_PCI_VID,
34*5b080c3aSRobert Mustacchi 		.nvdi_did = KIOXIA_CD8P_DID,
35*5b080c3aSRobert Mustacchi 		.nvdi_human = "Kioxia CD8P"
36*5b080c3aSRobert Mustacchi 	}
37*5b080c3aSRobert Mustacchi };
38*5b080c3aSRobert Mustacchi 
39*5b080c3aSRobert Mustacchi static const nvme_log_page_info_t kioxia_cd8_log_extsmart = {
40*5b080c3aSRobert Mustacchi 	.nlpi_short = "kioxia/extsmart",
41*5b080c3aSRobert Mustacchi 	.nlpi_human = "Extended SMART",
42*5b080c3aSRobert Mustacchi 	.nlpi_lid = KIOXIA_CD8_LOG_EXTSMART,
43*5b080c3aSRobert Mustacchi 	.nlpi_csi = NVME_CSI_NVM,
44*5b080c3aSRobert Mustacchi 	.nlpi_kind = NVME_LOG_ID_VENDOR_SPECIFIC,
45*5b080c3aSRobert Mustacchi 	.nlpi_source = NVME_LOG_DISC_S_DB,
46*5b080c3aSRobert Mustacchi 	.nlpi_scope = NVME_LOG_SCOPE_CTRL,
47*5b080c3aSRobert Mustacchi 	.nlpi_len = sizeof (kioxia_vul_cd8_smart_t)
48*5b080c3aSRobert Mustacchi };
49*5b080c3aSRobert Mustacchi 
50*5b080c3aSRobert Mustacchi static const nvme_log_page_info_t *kioxia_cd8_log_pages[] = {
51*5b080c3aSRobert Mustacchi 	&ocp_log_smart, &ocp_log_errrec, &ocp_log_fwact, &ocp_log_lat,
52*5b080c3aSRobert Mustacchi 	&ocp_log_devcap, &ocp_log_unsup, &kioxia_cd8_log_extsmart
53*5b080c3aSRobert Mustacchi };
54*5b080c3aSRobert Mustacchi 
55*5b080c3aSRobert Mustacchi const nvme_vsd_t kioxia_cd8 = {
56*5b080c3aSRobert Mustacchi 	.nvd_ident = kioxia_cd8_idents,
57*5b080c3aSRobert Mustacchi 	.nvd_nident = ARRAY_SIZE(kioxia_cd8_idents),
58*5b080c3aSRobert Mustacchi 	.nvd_logs = kioxia_cd8_log_pages,
59*5b080c3aSRobert Mustacchi 	.nvd_nlogs = ARRAY_SIZE(kioxia_cd8_log_pages)
60*5b080c3aSRobert Mustacchi };
61