summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel/HALKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-03 09:58:24 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-03 09:58:24 +0100
commitcbfd279a1410e11d734edc99509a3e0c02dc6fcc (patch)
tree9fdda9fed9bd39f5f0ad8f2ba8bf0820d7495cff /dev/Kernel/HALKit
parent69b47cf75b49ffe571ab528497b30a2499d372cb (diff)
Worked on the AARCH64 HAL for TQ's boards, Add new spec in /doc/
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/HALKit')
-rw-r--r--dev/Kernel/HALKit/ARM64/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/ARM64/APM/.gitkeep0
-rw-r--r--dev/Kernel/HALKit/ARM64/APM/APM+IO.cc (renamed from dev/Kernel/HALKit/ARM64/APM/APM.cc)8
-rw-r--r--dev/Kernel/HALKit/ARM64/HalApplicationProcessor.cc (renamed from dev/Kernel/HALKit/ARM64/HalAP.cc)8
-rw-r--r--dev/Kernel/HALKit/ARM64/MBCI/.keepme0
-rw-r--r--dev/Kernel/HALKit/ARM64/MBCI/MBCI.cc7
-rw-r--r--dev/Kernel/HALKit/ARM64/Storage/HalMFlash.cc67
-rw-r--r--dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc84
8 files changed, 99 insertions, 75 deletions
diff --git a/dev/Kernel/HALKit/ARM64/.gitkeep b/dev/Kernel/HALKit/ARM64/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/ARM64/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/ARM64/APM/.gitkeep b/dev/Kernel/HALKit/ARM64/APM/.gitkeep
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/ARM64/APM/.gitkeep
+++ /dev/null
diff --git a/dev/Kernel/HALKit/ARM64/APM/APM.cc b/dev/Kernel/HALKit/ARM64/APM/APM+IO.cc
index 51ac14f3..d9b2512d 100644
--- a/dev/Kernel/HALKit/ARM64/APM/APM.cc
+++ b/dev/Kernel/HALKit/ARM64/APM/APM+IO.cc
@@ -9,7 +9,7 @@
using namespace Kernel;
-/// @brief Send a APM command into it's own IO space.
+/// @brief Send APM command to it's space.
/// @param base_dma the IO base port.
/// @param cmd the command.
/// @return status code.
@@ -19,15 +19,15 @@ EXTERN_C Int32 apm_send_io_command(UInt16 cmd, APMPowerCmd value)
{
case kAPMPowerCommandReboot: {
asm volatile(
- "ldr x0, =0x84000009\n"
- "hvc #0\n");
+ "ldr x0, =0x84000004\n"
+ "svc #0\n");
return kErrorSuccess;
}
case kAPMPowerCommandShutdown: {
asm volatile(
"ldr x0, =0x84000008\n"
- "hvc #0\n");
+ "svc #0\n");
return kErrorSuccess;
}
diff --git a/dev/Kernel/HALKit/ARM64/HalAP.cc b/dev/Kernel/HALKit/ARM64/HalApplicationProcessor.cc
index c74a83d0..fa62cf20 100644
--- a/dev/Kernel/HALKit/ARM64/HalAP.cc
+++ b/dev/Kernel/HALKit/ARM64/HalApplicationProcessor.cc
@@ -19,9 +19,9 @@ namespace Kernel::Detail
}
} // namespace Kernel::Detail
-/// @brief wakes up thread.
+/// @brief wakes up thread from it's hang state.
/// wakes up thread from hang.
-void mp_wakeup_thread(HAL::StackFramePtr stack)
+Void mp_wakeup_thread(HAL::StackFramePtr stack)
{
if (!stack)
return;
@@ -29,9 +29,9 @@ void mp_wakeup_thread(HAL::StackFramePtr stack)
hal_set_pc_to_hart(reinterpret_cast<HAL_HARDWARE_THREAD*>(stack->R15), reinterpret_cast<VoidPtr>(stack->BP));
}
-/// @brief makes thread sleep.
+/// @brief makes thread go to hang state.
/// hooks and hangs thread to prevent code from executing.
-void mp_hang_thread(HAL::StackFramePtr stack)
+Void mp_hang_thread(HAL::StackFramePtr stack)
{
if (!stack)
return;
diff --git a/dev/Kernel/HALKit/ARM64/MBCI/.keepme b/dev/Kernel/HALKit/ARM64/MBCI/.keepme
deleted file mode 100644
index e69de29b..00000000
--- a/dev/Kernel/HALKit/ARM64/MBCI/.keepme
+++ /dev/null
diff --git a/dev/Kernel/HALKit/ARM64/MBCI/MBCI.cc b/dev/Kernel/HALKit/ARM64/MBCI/MBCI.cc
new file mode 100644
index 00000000..e16845da
--- /dev/null
+++ b/dev/Kernel/HALKit/ARM64/MBCI/MBCI.cc
@@ -0,0 +1,7 @@
+/* -------------------------------------------
+
+ Copyright (C) 2025, Theater Quality Corp, all rights reserved.
+
+------------------------------------------- */
+
+#include <Mod/MBCI/MBCI.h> \ No newline at end of file
diff --git a/dev/Kernel/HALKit/ARM64/Storage/HalMFlash.cc b/dev/Kernel/HALKit/ARM64/Storage/HalMFlash.cc
deleted file mode 100644
index 2a764101..00000000
--- a/dev/Kernel/HALKit/ARM64/Storage/HalMFlash.cc
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -------------------------------------------
-
- Copyright (C) 2024, Theater Quality Corp, all rights reserved.
-
-------------------------------------------- */
-
-#ifdef ZKA_USE_MBCI_FLASH
-
-#include <NewKit/Defines.h>
-#include <ArchKit/ArchKit.h>
-#include <Mod/MFlash/MFlash.h>
-
-/// @file HalMFlash.cc
-/// @brief MBCI Flash builtin.
-
-#define kMaxFlash (4U)
-
-namespace Kernel
-{
- /// /Mount/Flash/n
- constexpr auto kFlashBridgeMagic = "FLSH";
- constexpr auto kFlashBridgeRevision = 1;
-
- STATIC CONST Boolean kFlashEnabled = No;
- STATIC SizeT kFlashSize[kMaxFlash] = {};
- STATIC SizeT kFlashSectorSz[kMaxFlash] = {};
-
- /// @brief Enable flash memory builtin.
- STATIC Void drv_enable_flash(Int32 slot);
-
- /// @brief Disable flash memory builtin.
- STATIC Void drv_disable_flash(Int32 slot);
-
- /// @brief get sector count.
- /// @return drive sector count.
- SizeT drv_get_sector_count(Int32 slot)
- {
- if (slot > kMaxFlash)
- return 0;
-
- return kFlashSectorSz[slot];
- }
-
- /// @brief get device size.
- /// @return drive size
- SizeT drv_get_size(Int32 slot)
- {
- if (slot > kMaxFlash)
- return 0;
-
- return kFlashSize[slot];
- }
-
- /// @brief Enable flash memory at slot.
- STATIC Void drv_enable_flash(Int32 arg)
- {
- kcout << "Enabled FLSH hardware.\r";
- }
-
- /// @brief Disable flash memory at slot.
- STATIC Void drv_disable_flash(Int32 arg)
- {
- kcout << "Disabled FLSH hardware.\r";
- }
-} // namespace Kernel
-
-#endif // if ZKA_USE_MBCI_FLASH (Bridge)
diff --git a/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc b/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc
new file mode 100644
index 00000000..2d556b96
--- /dev/null
+++ b/dev/Kernel/HALKit/ARM64/Storage/MFlash+IO.cc
@@ -0,0 +1,84 @@
+/* -------------------------------------------
+
+ Copyright (C) 2024-2025, Theater Quality Corp, all rights reserved.
+
+------------------------------------------- */
+
+#ifdef ZKA_USE_MBCI_FLASH
+
+#include <NewKit/Defines.h>
+#include <ArchKit/ArchKit.h>
+#include <Mod/MFlash/MFlash.h>
+#include <Mod/MBCI/MBCI.h>
+
+/// @file MFlash.cc
+/// @brief MBCI Flash support.
+
+#define kMaxFlashSlots (8U)
+
+namespace Kernel
+{
+ /// /Mount/Flash/n
+ constexpr auto kFlashBridgeMagic = "FLSH";
+ constexpr auto kFlashBridgeRevision = 1;
+
+ STATIC BOOL kFlashEnabled = NO;
+ STATIC SizeT kFlashSize[kMaxFlashSlots] = {};
+ STATIC SizeT kFlashSectorSz[kMaxFlashSlots] = {};
+ STATIC IMBCIHost* kFlashMetaPackets[kMaxFlashSlots] = {};
+ STATIC IMBCIHost* kFlashDataPackets[kMaxFlashSlots] = {};
+
+ /// @brief Enable flash memory builtin.
+ STATIC Void drv_enable_flash(Int32 slot);
+
+ /// @brief Disable flash memory builtin.
+ STATIC Void drv_disable_flash(Int32 slot);
+
+ /// @brief get slot sector count.
+ /// @return slot sector count.
+ SizeT drv_get_sector_count(Int32 slot)
+ {
+ if (slot > kMaxFlashSlots)
+ return 0;
+
+ return kFlashSectorSz[slot];
+ }
+
+ /// @brief get slot full size (in bytes).
+ /// @return drive slot size
+ SizeT drv_get_size(Int32 slot)
+ {
+ if (slot > kMaxFlashSlots)
+ return 0;
+
+ return kFlashSize[slot];
+ }
+
+ /// @brief Enable flash memory at slot.
+ BOOL drv_enable_at(Int32 slot)
+ {
+ if (slot > kMaxFlashSlots)
+ return NO;
+
+ kFlashMetaPackets[slot]->InterruptEnable = YES;
+
+ kcout << "Enabled hardware slot at: " << number(slot) << endl;
+
+ return YES;
+ }
+
+ /// @brief Disable flash memory at slot.
+ BOOL drv_disable_at(Int32 slot)
+ {
+ if (slot > kMaxFlashSlots)
+ return NO;
+
+ kFlashMetaPackets[slot]->InterruptEnable = NO;
+
+ kcout << "Disabled hardware slot at: " << number(slot) << endl;
+
+ return YES;
+ }
+} // namespace Kernel
+
+#endif // if ZKA_USE_MBCI_FLASH