1 /* 2 * This file and its contents are supplied under the terms of the 3 * Common Development and Distribution License ("CDDL"), version 1.0. 4 * You may only use this file in accordance with the terms of version 5 * 1.0 of the CDDL. 6 * 7 * A full copy of the text of the CDDL should have accompanied this 8 * source. A copy of the CDDL is also available via the Internet at 9 * http://www.illumos.org/license/CDDL. 10 */ 11 12 /* 13 * Copyright 2024 Oxide Computer Company 14 */ 15 16 /* 17 * libnvme logic specific to Micron device families. Currently this has support 18 * for the Micron 7300, 7400, and 7450 device generations. Right now we only 19 * have support for some of the device-specific log pages. 20 */ 21 22 #include <sys/sysmacros.h> 23 #include <sys/nvme/micron.h> 24 25 #include "libnvme_impl.h" 26 27 static const nvme_log_page_info_t micron_7300_log_pages[] = { { 28 .nlpi_short = "micron/smart", 29 .nlpi_human = "Vendor Unique SMART", 30 .nlpi_lid = MICRON_7300_LOG_SMART, 31 .nlpi_csi = NVME_CSI_NVM, 32 .nlpi_kind = NVME_LOG_ID_VENDOR_SPECIFIC, 33 .nlpi_source = NVME_LOG_DISC_S_DB, 34 .nlpi_scope = NVME_LOG_SCOPE_CTRL, 35 .nlpi_len = sizeof (micron_vul_smart_t) 36 }, { 37 .nlpi_short = "micron/extsmart", 38 .nlpi_human = "Extended SMART", 39 .nlpi_lid = MICRON_7300_LOG_EXT_SMART, 40 .nlpi_csi = NVME_CSI_NVM, 41 .nlpi_kind = NVME_LOG_ID_VENDOR_SPECIFIC, 42 .nlpi_source = NVME_LOG_DISC_S_DB, 43 .nlpi_scope = NVME_LOG_SCOPE_CTRL, 44 .nlpi_len = sizeof (micron_vul_ext_smart_t) 45 } }; 46 47 static const nvme_log_page_info_t micron_74x0_log_pages[] = { { 48 .nlpi_short = "micron/extsmart", 49 .nlpi_human = "Extended SMART", 50 .nlpi_lid = MICRON_74x0_LOG_EXT_SMART, 51 .nlpi_csi = NVME_CSI_NVM, 52 .nlpi_kind = NVME_LOG_ID_VENDOR_SPECIFIC, 53 .nlpi_source = NVME_LOG_DISC_S_DB, 54 .nlpi_scope = NVME_LOG_SCOPE_CTRL, 55 .nlpi_len = sizeof (micron_vul_ext_smart_t) 56 } }; 57 58 const nvme_vsd_t micron_7300_pro = { 59 .nvd_vid = MICRON_PCI_VID, 60 .nvd_did = MICRON_7300_PRO_DID, 61 .nvd_human = "Micron 7300 Pro", 62 .nvd_logs = micron_7300_log_pages, 63 .nvd_nlogs = ARRAY_SIZE(micron_7300_log_pages) 64 }; 65 66 const nvme_vsd_t micron_7300_max = { 67 .nvd_vid = MICRON_PCI_VID, 68 .nvd_did = MICRON_7300_MAX_DID, 69 .nvd_human = "Micron 7300 Max", 70 .nvd_logs = micron_7300_log_pages, 71 .nvd_nlogs = ARRAY_SIZE(micron_7300_log_pages) 72 }; 73 74 const nvme_vsd_t micron_7400_pro = { 75 .nvd_vid = MICRON_PCI_VID, 76 .nvd_did = MICRON_7400_PRO_DID, 77 .nvd_human = "Micron 7400 Pro", 78 .nvd_logs = micron_74x0_log_pages, 79 .nvd_nlogs = ARRAY_SIZE(micron_74x0_log_pages) 80 }; 81 82 const nvme_vsd_t micron_7400_max = { 83 .nvd_vid = MICRON_PCI_VID, 84 .nvd_did = MICRON_7400_MAX_DID, 85 .nvd_human = "Micron 7400 Max", 86 .nvd_logs = micron_74x0_log_pages, 87 .nvd_nlogs = ARRAY_SIZE(micron_74x0_log_pages) 88 }; 89 90 const nvme_vsd_t micron_7450_pro = { 91 .nvd_vid = MICRON_PCI_VID, 92 .nvd_did = MICRON_7450_PRO_DID, 93 .nvd_human = "Micron 7450 Pro", 94 .nvd_logs = micron_74x0_log_pages, 95 .nvd_nlogs = ARRAY_SIZE(micron_74x0_log_pages) 96 }; 97 98 const nvme_vsd_t micron_7450_max = { 99 .nvd_vid = MICRON_PCI_VID, 100 .nvd_did = MICRON_7450_MAX_DID, 101 .nvd_human = "Micron 7450 Max", 102 .nvd_logs = micron_74x0_log_pages, 103 .nvd_nlogs = ARRAY_SIZE(micron_74x0_log_pages) 104 }; 105