diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-24 03:02:43 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-24 03:02:43 +0100 |
| commit | 83d870e58457a1d335a1d9b9966a6a1887cc297b (patch) | |
| tree | 72888f88c7728c82f3f6df1f4f70591de15eab36 /dev/modules/NVME | |
| parent | ab37adbacf0f33845804c788b39680cd754752a8 (diff) | |
feat! breaking changes on kernel sources.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/modules/NVME')
| -rw-r--r-- | dev/modules/NVME/NVME.h | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/dev/modules/NVME/NVME.h b/dev/modules/NVME/NVME.h deleted file mode 100644 index 9ad8a3ce..00000000 --- a/dev/modules/NVME/NVME.h +++ /dev/null @@ -1,104 +0,0 @@ -/* ======================================== - - Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. - - Revision History: - - ??/??/24: Added file (amlel) - 23 Jul 24: Update filename to Defines.h and using NE_ALIGN_NVME for NVME structs. (amlel) - -======================================== */ - -#ifndef __MODULE_NVME_H__ -#define __MODULE_NVME_H__ - -#include <NeKit/Defines.h> - -/// @file NVME.h -/// @brief Non Volatile Memory. - -#define NE_ALIGN_NVME ATTRIBUTE(aligned(sizeof(Kernel::UInt32))) - -namespace Kernel { -struct NE_ALIGN_NVME HAL_NVME_BAR_0 final { - UInt32 fCapabilities; - UInt32 fVersion; - UInt32 fIntMaskSet; - UInt32 fIntMaskClr; - UInt32 fContrlConf; - UInt32 fContrlStat; - UInt32 fAdminQueueAttr; - UInt32 fAdminSubmissionQueue; - UInt32 fAdminCompletionQueue; -}; - -struct NE_ALIGN_NVME HAL_NVME_QUEUE final { - UInt32 fOpcode; - UInt32 fNSID; - UInt32 fReserved[3]; - UInt32 fMetadataPtr[5]; - UInt32 fDataPtr[9]; - UInt32 CommandSpecific[15]; -}; - -enum { - kInvalidNVME = 0xFF, - kCreateCompletionQueueNVME = 0x05, - kCreateSubmissionQueueNVME = 0x01, - kIdentifyNVME = 0x06, - kReadNVME = 0x02, - kWriteNVME = 0x01, - kCountNVME = 5, -}; - -/// @brief Creates an admin command for a DMA operation. -template <Int32 Opcode> -inline Bool nvme_create_admin_command(HAL_NVME_QUEUE* entry, UInt32 nsid, UInt32 prpTransfer[3], - UInt32 startingLba[2], UInt32 lowTransferBlocks) { - if (entry == nullptr) return false; - - entry->CommandSpecific[9] = startingLba[0]; - entry->CommandSpecific[10] = startingLba[1]; - - entry->CommandSpecific[11] = lowTransferBlocks; - - entry->CommandSpecific[5] = prpTransfer[0]; - entry->CommandSpecific[6] = prpTransfer[1]; - entry->CommandSpecific[7] = prpTransfer[2]; - - entry->CommandSpecific[0] = nsid; - - return true; -} - -/// @brief Creates an I/O command for a DMA operation. -template <Int32 Opcode> -inline Bool nvme_create_io_command(HAL_NVME_QUEUE* entry, UInt64 baseAddress, - UInt32 identLoAndQueueSizeHi, UInt32 flagsLoAndQueueComplIdHi, - UInt32 identify, Bool provideIdentify = false, - Bool namespaceIdentify = false) { - if (entry == nullptr) return false; - - if (baseAddress == 0) return false; - - entry->fOpcode = Opcode; - - entry->CommandSpecific[5] = (baseAddress & 0xFF); - entry->CommandSpecific[6] = static_cast<UInt32>(baseAddress); - - if (!provideIdentify) { - entry->CommandSpecific[9] = identLoAndQueueSizeHi; - entry->CommandSpecific[10] = flagsLoAndQueueComplIdHi; - } else { - entry->CommandSpecific[9] = identify; - - if (namespaceIdentify) { - entry->CommandSpecific[0] = YES; - } - } - - return true; -} -} // namespace Kernel - -#endif // ifndef __MODULE_NVME_H__ |
