Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/nvme/nvme_ctrlr.c
Show First 20 Lines • Show All 383 Lines • ▼ Show 20 Lines | nvme_ctrlr_enable(struct nvme_controller *ctrlr) | ||||
cc |= 1 << NVME_CC_REG_EN_SHIFT; | cc |= 1 << NVME_CC_REG_EN_SHIFT; | ||||
cc |= 0 << NVME_CC_REG_CSS_SHIFT; | cc |= 0 << NVME_CC_REG_CSS_SHIFT; | ||||
cc |= 0 << NVME_CC_REG_AMS_SHIFT; | cc |= 0 << NVME_CC_REG_AMS_SHIFT; | ||||
cc |= 0 << NVME_CC_REG_SHN_SHIFT; | cc |= 0 << NVME_CC_REG_SHN_SHIFT; | ||||
cc |= 6 << NVME_CC_REG_IOSQES_SHIFT; /* SQ entry size == 64 == 2^6 */ | cc |= 6 << NVME_CC_REG_IOSQES_SHIFT; /* SQ entry size == 64 == 2^6 */ | ||||
cc |= 4 << NVME_CC_REG_IOCQES_SHIFT; /* CQ entry size == 16 == 2^4 */ | cc |= 4 << NVME_CC_REG_IOCQES_SHIFT; /* CQ entry size == 16 == 2^4 */ | ||||
/* This evaluates to 0, which is according to spec. */ | /* This evaluates to 0, which is according to spec. */ | ||||
cc |= (PAGE_SIZE >> 13) << NVME_CC_REG_MPS_SHIFT; | cc |= (PAGE_SHIFT - NVME_BASE_SHIFT) << NVME_CC_REG_MPS_SHIFT; | ||||
nvme_ctrlr_barrier(ctrlr, BUS_SPACE_BARRIER_WRITE); | nvme_ctrlr_barrier(ctrlr, BUS_SPACE_BARRIER_WRITE); | ||||
nvme_mmio_write_4(ctrlr, cc, cc); | nvme_mmio_write_4(ctrlr, cc, cc); | ||||
return (nvme_ctrlr_wait_for_ready(ctrlr, 1)); | return (nvme_ctrlr_wait_for_ready(ctrlr, 1)); | ||||
} | } | ||||
static void | static void | ||||
▲ Show 20 Lines • Show All 1,319 Lines • Show Last 20 Lines |