diff --git a/include/spdk/nvme.h b/include/spdk/nvme.h index 57b2fb0ad..3f0574061 100644 --- a/include/spdk/nvme.h +++ b/include/spdk/nvme.h @@ -163,6 +163,16 @@ int spdk_nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr); */ const struct spdk_nvme_ctrlr_data *spdk_nvme_ctrlr_get_data(struct spdk_nvme_ctrlr *ctrlr); +/** + * \brief Get the NVMe controller CAP (Capabilities) register. + */ +union spdk_nvme_cap_register spdk_nvme_ctrlr_get_regs_cap(struct spdk_nvme_ctrlr *ctrlr); + +/** + * \brief Get the NVMe controller VS (Version) register. + */ +union spdk_nvme_vs_register spdk_nvme_ctrlr_get_regs_vs(struct spdk_nvme_ctrlr *ctrlr); + /** * \brief Get the number of namespaces for the given NVMe controller. * diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index 381c46597..7b458fcf0 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -1175,6 +1175,22 @@ spdk_nvme_ctrlr_get_data(struct spdk_nvme_ctrlr *ctrlr) return &ctrlr->cdata; } +union spdk_nvme_cap_register spdk_nvme_ctrlr_get_regs_cap(struct spdk_nvme_ctrlr *ctrlr) +{ + union spdk_nvme_cap_register cap; + + cap.raw = nvme_mmio_read_8(ctrlr, cap.raw); + return cap; +} + +union spdk_nvme_vs_register spdk_nvme_ctrlr_get_regs_vs(struct spdk_nvme_ctrlr *ctrlr) +{ + union spdk_nvme_vs_register vs; + + vs.raw = nvme_mmio_read_4(ctrlr, vs.raw); + return vs; +} + uint32_t spdk_nvme_ctrlr_get_num_ns(struct spdk_nvme_ctrlr *ctrlr) {