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