diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-04-05 06:27:18 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-04-05 06:30:10 +0200 |
| commit | 9b7a2a6461a463b08a120c660fcc64b46b65d417 (patch) | |
| tree | 0f29fbbe829f4d276b0bc3088138c81157fc4c73 /dev/modules | |
| parent | 1142eb1ca0b0323e5f01e55a16e690346a99f018 (diff) | |
kernel: storage, modules, mbci: implement mbci_read_auth_key, mbci_test_mmio, test DMA on AHCI too.
- Alongside fixes for BootNet, SysChk, and refactor for KernelScheduler, and
MemoryMgr.
- IMPORTANT: Add MBCI specs.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/modules')
| -rw-r--r-- | dev/modules/CoreGfx/CoreAccess.h | 6 | ||||
| -rw-r--r-- | dev/modules/CoreGfx/CoreGfx.h | 9 | ||||
| -rw-r--r-- | dev/modules/CoreGfx/MathGfx.h | 2 | ||||
| -rw-r--r-- | dev/modules/MBCI/MBCI.h | 43 | ||||
| -rw-r--r-- | dev/modules/NVME/NVME.h | 4 |
5 files changed, 46 insertions, 18 deletions
diff --git a/dev/modules/CoreGfx/CoreAccess.h b/dev/modules/CoreGfx/CoreAccess.h index adc9ed33..b3d17a59 100644 --- a/dev/modules/CoreGfx/CoreAccess.h +++ b/dev/modules/CoreGfx/CoreAccess.h @@ -4,8 +4,8 @@ ------------------------------------------- */ -#ifndef GFX_MGR_ACCESSIBILITY_H -#define GFX_MGR_ACCESSIBILITY_H +#ifndef CORE_GFX_ACCESSIBILITY_H +#define CORE_GFX_ACCESSIBILITY_H #include <NewKit/NewKit.h> #include <KernelKit/KPC.h> @@ -38,4 +38,4 @@ namespace FB }; } // namespace FB -#endif // !GFX_MGR_ACCESSIBILITY_H_ +#endif // !CORE_GFX_ACCESSIBILITY_H_ diff --git a/dev/modules/CoreGfx/CoreGfx.h b/dev/modules/CoreGfx/CoreGfx.h index df22fed0..eda52520 100644 --- a/dev/modules/CoreGfx/CoreGfx.h +++ b/dev/modules/CoreGfx/CoreGfx.h @@ -129,15 +129,13 @@ #define FBDrawInRegionA(clr, height, width, base_x, base_y) #endif // __NE_AMD64__ -#ifndef GFX_MGR_ACCESSIBILITY_H +#ifndef CORE_GFX_ACCESSIBILITY_H #include <modules/CoreGfx/CoreAccess.h> -#endif // ifndef GFX_MGR_ACCESSIBILITY_H +#endif // ifndef CORE_GFX_ACCESSIBILITY_H namespace FB { - struct FB_CONTROL_BLOCK; - - inline void fb_clear_video() noexcept + inline Void fb_clear_video() noexcept { fb_init(); @@ -146,5 +144,4 @@ namespace FB fb_clear(); } - } // namespace FB
\ No newline at end of file diff --git a/dev/modules/CoreGfx/MathGfx.h b/dev/modules/CoreGfx/MathGfx.h index 655903e2..f03e2f19 100644 --- a/dev/modules/CoreGfx/MathGfx.h +++ b/dev/modules/CoreGfx/MathGfx.h @@ -11,7 +11,7 @@ namespace UI { -#ifdef NE_GFX_MGR_USE_DOUBLE +#ifdef NE_CORE_GFX_USE_DOUBLE typedef double fb_real_t; #else typedef float fb_real_t; diff --git a/dev/modules/MBCI/MBCI.h b/dev/modules/MBCI/MBCI.h index 975fa7fe..ebc73f69 100644 --- a/dev/modules/MBCI/MBCI.h +++ b/dev/modules/MBCI/MBCI.h @@ -7,9 +7,13 @@ #ifndef _INC_MODULE_MBCI_H_ #define _INC_MODULE_MBCI_H_ +#include <hint/CompilerHint.h> #include <NewKit/Defines.h> #include <modules/ACPI/ACPI.h> +/// @file MBCI.h +/// @brief Mini Bus Controller Interface. + /** - VCC (IN) (OUT for MCU) - CLK (IN) (OUT for MCU) @@ -22,8 +26,9 @@ */ #define kMBCIZeroSz (8) +#define kMBCIESBSz (64) -namespace NeOS +namespace Kernel { struct IMBCIHost; @@ -53,14 +58,15 @@ namespace NeOS UInt64 BaseAddressRegister; UInt64 BaseAddressRegisterSize; UInt32 CommandIssue; - Char Zero[kMBCIZeroSz]; + UInt8 Esb[kMBCIESBSz]; // Extended Signature Block + UInt8 Zero[kMBCIZeroSz]; }; /// @brief MBCI host flags. enum MBCIHostFlags { kMBCIHostFlagsSupportsNothing, // Invalid MBCI device. - kMBCIHostFlagsSupportsAPM, // Advanced Power Management. + kMBCIHostFlagsSupportsAPM, // FW's Advanced Power Management. kMBCIHostFlagsSupportsDaisyChain, // Is daisy chained. kMBCIHostFlagsSupportsHWInterrupts, // Has HW interrupts. kMBCIHostFlagsSupportsDMA, // Has DMA. @@ -93,8 +99,33 @@ namespace NeOS kMBCIHostStateCount, }; - /// @brief An AuthKey is a context used to decrpy data from an MBCI packet. - typedef UInt64 MBCIAuthKeyType; -} // namespace NeOS + /// @brief An AuthKey is a context used to tokenize data for an MBCI packet. + typedef UInt32 MBCIAuthKeyType; + + /// @brief Read Auth key for MBCI host. + /// @param host the mbci host to get the key on. + /// @return the 24-bit key. + inline MBCIAuthKeyType mbci_read_auth_key(_Input volatile struct IMBCIHost* host) + { + constexpr auto const kChallengeMBCI = 0xdeadbeef; + + host->MMIOTest = kChallengeMBCI; + + if (host->MMIOTest == kChallengeMBCI) + { + return (host->Esb[kMBCIESBSz - 1] << 16) | (host->Esb[kMBCIESBSz - 2] << 8) | (host->Esb[kMBCIESBSz - 3] & 0xFF); + } + + return kChallengeMBCI; + } + + inline BOOL mbci_test_mmio(_Input volatile struct IMBCIHost* host) + { + constexpr auto const kChallengeMBCI = 0xdeadbeef; + + host->MMIOTest = kChallengeMBCI; + return host->MMIOTest == kChallengeMBCI; + } +} // namespace Kernel #endif // ifndef _INC_MODULE_MBCI_H_
\ No newline at end of file diff --git a/dev/modules/NVME/NVME.h b/dev/modules/NVME/NVME.h index 42edd149..f58aacf9 100644 --- a/dev/modules/NVME/NVME.h +++ b/dev/modules/NVME/NVME.h @@ -15,7 +15,7 @@ #include <NewKit/Defines.h> /// @file NVME.h -/// @brief NVME driver. +/// @brief Non Volatile Memory. #define NE_ALIGN_NVME ATTRIBUTE(aligned(sizeof(Kernel::UInt32))) @@ -46,7 +46,7 @@ namespace Kernel enum { - kInvalidNVME, + kInvalidNVME = 0xFF, kCreateCompletionQueueNVME = 0x05, kCreateSubmissionQueueNVME = 0x01, kIdentifyNVME = 0x06, |
