summaryrefslogtreecommitdiffhomepage
path: root/Kernel/Modules
diff options
context:
space:
mode:
authorAmlal <amlalelmahrouss@icloud.com>2024-07-28 16:11:46 +0000
committerAmlal <amlalelmahrouss@icloud.com>2024-07-28 16:11:46 +0000
commitc4023005e029ae092dad2689564c490580dd5c28 (patch)
tree3080ba07a6b552bf3d7591574cf69b2a3c8fd0fd /Kernel/Modules
parent8c8822fff78f9ff9cd640271da9b3634c4c2f97f (diff)
parent4db57a2d646b1538783a0675b38bada7a0f903ae (diff)
Merged in MHR-36 (pull request #17)
MHR-36
Diffstat (limited to 'Kernel/Modules')
-rw-r--r--Kernel/Modules/ACPI/ACPI.hxx2
-rw-r--r--Kernel/Modules/ACPI/ACPIFactoryInterface.hxx17
-rw-r--r--Kernel/Modules/AHCI/AHCI.hxx164
-rw-r--r--Kernel/Modules/ATA/ATA.hxx2
-rw-r--r--Kernel/Modules/CoreCG/Accessibility.hxx7
-rw-r--r--Kernel/Modules/CoreCG/CoreCG.hxx89
-rw-r--r--Kernel/Modules/CoreCG/CoreIMG.hxx13
-rw-r--r--Kernel/Modules/CoreCG/Lerp.hxx2
-rw-r--r--Kernel/Modules/Flash/Flash.hxx2
-rw-r--r--Kernel/Modules/HPET/Defines.hxx2
-rw-r--r--Kernel/Modules/LTE/IO.hxx4
-rw-r--r--Kernel/Modules/MBCI/Interface.hxx2
-rw-r--r--Kernel/Modules/MBCI/MBCI.hxx72
-rw-r--r--Kernel/Modules/MBCI/compile_flags.txt4
-rw-r--r--Kernel/Modules/NVME/Defines.hxx116
-rw-r--r--Kernel/Modules/PS2/PS2MouseInterface.hxx2
-rw-r--r--Kernel/Modules/ReadMe.md12
-rw-r--r--Kernel/Modules/ReadMe.txt19
-rw-r--r--Kernel/Modules/SCSI/SCSI.hxx2
-rw-r--r--Kernel/Modules/XHCI/Defines.hxx2
20 files changed, 341 insertions, 194 deletions
diff --git a/Kernel/Modules/ACPI/ACPI.hxx b/Kernel/Modules/ACPI/ACPI.hxx
index 70e2effc..590d36d7 100644
--- a/Kernel/Modules/ACPI/ACPI.hxx
+++ b/Kernel/Modules/ACPI/ACPI.hxx
@@ -1,6 +1,6 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
------------------------------------------- */
diff --git a/Kernel/Modules/ACPI/ACPIFactoryInterface.hxx b/Kernel/Modules/ACPI/ACPIFactoryInterface.hxx
index e5def104..8372e1d7 100644
--- a/Kernel/Modules/ACPI/ACPIFactoryInterface.hxx
+++ b/Kernel/Modules/ACPI/ACPIFactoryInterface.hxx
@@ -1,19 +1,24 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
------------------------------------------- */
-#ifndef __ACPI_MANAGER__
-#define __ACPI_MANAGER__
+#ifndef __MOD_ACPI_HXX__
+#define __MOD_ACPI_HXX__
-#include <Modules/ACPI/ACPI.hxx>
#include <KernelKit/DebugOutput.hpp>
+#include <Modules/ACPI/ACPI.hxx>
+#include <NewKit/ErrorOr.hpp>
#include <NewKit/Defines.hpp>
-#include <NewKit/Ref.hpp>
+#include <NewKit/Ref.hxx>
namespace Kernel
{
+ class ACPIFactoryInterface;
+
+ typedef ACPIFactoryInterface PowerFactoryInterface;
+
class ACPIFactoryInterface final
{
public:
@@ -52,4 +57,4 @@ namespace Kernel
};
} // namespace Kernel
-#endif // !__ACPI_MANAGER__
+#endif // !__MOD_ACPI_HXX__
diff --git a/Kernel/Modules/AHCI/AHCI.hxx b/Kernel/Modules/AHCI/AHCI.hxx
index c616cae3..ee233e4b 100644
--- a/Kernel/Modules/AHCI/AHCI.hxx
+++ b/Kernel/Modules/AHCI/AHCI.hxx
@@ -1,6 +1,6 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
File: Defines.hxx
Purpose: AHCI header.
@@ -50,30 +50,30 @@ typedef struct FisRegH2D final
// DWORD 0
Kernel::UInt8 FisType; // FIS_TYPE_REG_H2D
- Kernel::UInt8 PortMul : 4; // Port multiplier
+ Kernel::UInt8 PortMul : 4; // Port multiplier
Kernel::UInt8 Reserved0 : 3; // Reserved
Kernel::UInt8 CmdOrCtrl : 1; // 1: Command, 0: Control
- Kernel::UInt8 Command; // Command register
+ Kernel::UInt8 Command; // Command register
Kernel::UInt8 Featurel; // Feature register, 7:0
// DWORD 1
- Kernel::UInt8 Lba0; // LBA low register, 7:0
- Kernel::UInt8 Lba1; // LBA mid register, 15:8
- Kernel::UInt8 Lba2; // LBA high register, 23:16
+ Kernel::UInt8 Lba0; // LBA low register, 7:0
+ Kernel::UInt8 Lba1; // LBA mid register, 15:8
+ Kernel::UInt8 Lba2; // LBA high register, 23:16
Kernel::UInt8 Device; // Device register
// DWORD 2
- Kernel::UInt8 Lba3; // LBA register, 31:24
- Kernel::UInt8 Lba4; // LBA register, 39:32
- Kernel::UInt8 Lba5; // LBA register, 47:40
+ Kernel::UInt8 Lba3; // LBA register, 31:24
+ Kernel::UInt8 Lba4; // LBA register, 39:32
+ Kernel::UInt8 Lba5; // LBA register, 47:40
Kernel::UInt8 FeatureHigh; // Feature register, 15:8
// DWORD 3
- Kernel::UInt8 CountLow; // Count register, 7:0
+ Kernel::UInt8 CountLow; // Count register, 7:0
Kernel::UInt8 CountHigh; // Count register, 15:8
- Kernel::UInt8 Icc; // Isochronous command completion
- Kernel::UInt8 Control; // Control register
+ Kernel::UInt8 Icc; // Isochronous command completion
+ Kernel::UInt8 Control; // Control register
// DWORD 4
Kernel::UInt8 Reserved1[4]; // Reserved
@@ -84,18 +84,18 @@ typedef struct FisRegD2H final
// DWORD 0
Kernel::UInt8 FisType; // FIS_TYPE_REG_D2H
- Kernel::UInt8 PortMul : 4; // Port multiplier
- Kernel::UInt8 Reserved0 : 2; // Reserved
+ Kernel::UInt8 PortMul : 4; // Port multiplier
+ Kernel::UInt8 Reserved0 : 2; // Reserved
Kernel::UInt8 InterruptBit : 1; // Interrupt bit
- Kernel::UInt8 Reserved1 : 1; // Reserved
+ Kernel::UInt8 Reserved1 : 1; // Reserved
Kernel::UInt8 Status; // Status register
- Kernel::UInt8 Rrror; // Error register
+ Kernel::UInt8 Rrror; // Error register
// DWORD 1
- Kernel::UInt8 Lba0; // LBA low register, 7:0
- Kernel::UInt8 Lba1; // LBA mid register, 15:8
- Kernel::UInt8 Lba2; // LBA high register, 23:16
+ Kernel::UInt8 Lba0; // LBA low register, 7:0
+ Kernel::UInt8 Lba1; // LBA mid register, 15:8
+ Kernel::UInt8 Lba2; // LBA high register, 23:16
Kernel::UInt8 Device; // Device register
// DWORD 2
@@ -105,9 +105,9 @@ typedef struct FisRegD2H final
Kernel::UInt8 Rsv2; // Reserved
// DWORD 3
- Kernel::UInt8 CountLow; // Count register, 7:0
+ Kernel::UInt8 CountLow; // Count register, 7:0
Kernel::UInt8 CountHigh; // Count register, 15:8
- Kernel::UInt8 Rsv3[2]; // Reserved
+ Kernel::UInt8 Rsv3[2]; // Reserved
// DWORD 4
Kernel::UInt8 Rsv4[4]; // Reserved
@@ -118,7 +118,7 @@ typedef struct FisData final
// DWORD 0
Kernel::UInt8 FisType; // FIS_TYPE_DATA
- Kernel::UInt8 PortMul : 4; // Port multiplier
+ Kernel::UInt8 PortMul : 4; // Port multiplier
Kernel::UInt8 Reserved0 : 4; // Reserved
Kernel::UInt8 Reserved1[2]; // Reserved
@@ -132,19 +132,19 @@ typedef struct FisPioSetup final
// DWORD 0
Kernel::UInt8 FisType; // FIS_TYPE_PIO_SETUP
- Kernel::UInt8 PortMul : 4; // Port multiplier
- Kernel::UInt8 Reserved0 : 1; // Reserved
- Kernel::UInt8 DTD : 1; // Data transfer direction, 1 - device to host
+ Kernel::UInt8 PortMul : 4; // Port multiplier
+ Kernel::UInt8 Reserved0 : 1; // Reserved
+ Kernel::UInt8 DTD : 1; // Data transfer direction, 1 - device to host
Kernel::UInt8 InterruptBit : 1; // Interrupt bit
Kernel::UInt8 Reserved1 : 1;
Kernel::UInt8 Status; // Status register
- Kernel::UInt8 Error; // Error register
+ Kernel::UInt8 Error; // Error register
// DWORD 1
- Kernel::UInt8 Lba0; // LBA low register, 7:0
- Kernel::UInt8 Lba1; // LBA mid register, 15:8
- Kernel::UInt8 Lba2; // LBA high register, 23:16
+ Kernel::UInt8 Lba0; // LBA low register, 7:0
+ Kernel::UInt8 Lba1; // LBA mid register, 15:8
+ Kernel::UInt8 Lba2; // LBA high register, 23:16
Kernel::UInt8 Device; // Device register
// DWORD 2
@@ -154,14 +154,14 @@ typedef struct FisPioSetup final
Kernel::UInt8 Rsv2; // Reserved
// DWORD 3
- Kernel::UInt8 CountLow; // Count register, 7:0
+ Kernel::UInt8 CountLow; // Count register, 7:0
Kernel::UInt8 CountHigh; // Count register, 15:8
- Kernel::UInt8 Rsv3; // Reserved
- Kernel::UInt8 EStatus; // New value of status register
+ Kernel::UInt8 Rsv3; // Reserved
+ Kernel::UInt8 EStatus; // New value of status register
// DWORD 4
Kernel::UInt16 TranferCount; // Transfer count
- Kernel::UInt8 Rsv4[2]; // Reserved
+ Kernel::UInt8 Rsv4[2]; // Reserved
} FisPioSetup;
typedef struct FisDmaSetup final
@@ -169,18 +169,18 @@ typedef struct FisDmaSetup final
// DWORD 0
Kernel::UInt8 FisType; // FIS_TYPE_DMA_SETUP
- Kernel::UInt8 PortMul : 4; // Port multiplier
- Kernel::UInt8 Reserved0 : 1; // Reserved
- Kernel::UInt8 DTD : 1; // Data transfer direction, 1 - device to host
+ Kernel::UInt8 PortMul : 4; // Port multiplier
+ Kernel::UInt8 Reserved0 : 1; // Reserved
+ Kernel::UInt8 DTD : 1; // Data transfer direction, 1 - device to host
Kernel::UInt8 InterruptBit : 1; // Interrupt bit
- Kernel::UInt8 AutoEnable : 1; // Auto-activate. Specifies if DMA Activate FIS is needed
+ Kernel::UInt8 AutoEnable : 1; // Auto-activate. Specifies if DMA Activate FIS is needed
Kernel::UInt8 Reserved1[2]; // Reserved
// DWORD 1&2
Kernel::UInt64 DmaBufferId; // DMA Buffer Identifier. Used to Identify DMA buffer in
- // host memory. SATA Spec says host specific and not in
- // Spec. Trying AHCI spec might work.
+ // host memory. SATA Spec says host specific and not in
+ // Spec. Trying AHCI spec might work.
// DWORD 3
Kernel::UInt32 Rsvd; // More reserved
@@ -223,41 +223,41 @@ typedef struct FisDevBits final
typedef struct HbaPort final
{
- Kernel::UInt32 Clb; // 0x00, command list base address, 1K-byte aligned
- Kernel::UInt32 Clbu; // 0x04, command list base address upper 32 bits
- Kernel::UInt32 Fb; // 0x08, FIS base address, 256-byte aligned
- Kernel::UInt32 Fbu; // 0x0C, FIS base address upper 32 bits
- Kernel::UInt32 Is; // 0x10, interrupt status
- Kernel::UInt32 Ie; // 0x14, interrupt enable
- Kernel::UInt32 Cmd; // 0x18, command and status
- Kernel::UInt32 Reserved0; // 0x1C, Reserved
- Kernel::UInt32 Tfd; // 0x20, task file data
- Kernel::UInt32 Sig; // 0x24, signature
- Kernel::UInt32 Ssts; // 0x28, SATA status (SCR0:SStatus)
- Kernel::UInt32 Sctl; // 0x2C, SATA control (SCR2:SControl)
- Kernel::UInt32 Serr; // 0x30, SATA error (SCR1:SError)
- Kernel::UInt32 Sact; // 0x34, SATA active (SCR3:SActive)
- Kernel::UInt32 Ci; // 0x38, command issue
- Kernel::UInt32 Sntf; // 0x20, SATA notification (SCR4:SNotification)
- Kernel::UInt32 Fbs; // 0x40, FIS-based switch control
+ Kernel::UInt32 Clb; // 0x00, command list base address, 1K-byte aligned
+ Kernel::UInt32 Clbu; // 0x04, command list base address upper 32 bits
+ Kernel::UInt32 Fb; // 0x08, FIS base address, 256-byte aligned
+ Kernel::UInt32 Fbu; // 0x0C, FIS base address upper 32 bits
+ Kernel::UInt32 Is; // 0x10, interrupt status
+ Kernel::UInt32 Ie; // 0x14, interrupt enable
+ Kernel::UInt32 Cmd; // 0x18, command and status
+ Kernel::UInt32 Reserved0; // 0x1C, Reserved
+ Kernel::UInt32 Tfd; // 0x20, task file data
+ Kernel::UInt32 Sig; // 0x24, signature
+ Kernel::UInt32 Ssts; // 0x28, SATA status (SCR0:SStatus)
+ Kernel::UInt32 Sctl; // 0x2C, SATA control (SCR2:SControl)
+ Kernel::UInt32 Serr; // 0x30, SATA error (SCR1:SError)
+ Kernel::UInt32 Sact; // 0x34, SATA active (SCR3:SActive)
+ Kernel::UInt32 Ci; // 0x38, command issue
+ Kernel::UInt32 Sntf; // 0x20, SATA notification (SCR4:SNotification)
+ Kernel::UInt32 Fbs; // 0x40, FIS-based switch control
Kernel::UInt32 Reserved1[11]; // 0x44 ~ 0x6F, Reserved
- Kernel::UInt32 Vendor[4]; // 0x70 ~ 0x7F, vendor specific
+ Kernel::UInt32 Vendor[4]; // 0x70 ~ 0x7F, vendor specific
} HbaPort;
typedef struct HbaMem final
{
// 0x00 - 0x2B, Generic Host Control
- Kernel::UInt32 Cap; // 0x00, Host capability
- Kernel::UInt32 Ghc; // 0x04, Global host control
- Kernel::UInt32 Is; // 0x08, Interrupt status
- Kernel::UInt32 Pi; // 0x0C, Port implemented
- Kernel::UInt32 Vs; // 0x10, Version
+ Kernel::UInt32 Cap; // 0x00, Host capability
+ Kernel::UInt32 Ghc; // 0x04, Global host control
+ Kernel::UInt32 Is; // 0x08, Interrupt status
+ Kernel::UInt32 Pi; // 0x0C, Port implemented
+ Kernel::UInt32 Vs; // 0x10, Version
Kernel::UInt32 Ccc_ctl; // 0x14, Command completion coalescing control
Kernel::UInt32 Ccc_pts; // 0x18, Command completion coalescing ports
- Kernel::UInt32 Em_loc; // 0x1C, Enclosure management location
- Kernel::UInt32 Em_ctl; // 0x20, Enclosure management control
- Kernel::UInt32 Cap2; // 0x24, Host capabilities extended
- Kernel::UInt32 Bohc; // 0x28, BIOS/OS handoff control and status
+ Kernel::UInt32 Em_loc; // 0x1C, Enclosure management location
+ Kernel::UInt32 Em_ctl; // 0x20, Enclosure management control
+ Kernel::UInt32 Cap2; // 0x24, Host capabilities extended
+ Kernel::UInt32 Bohc; // 0x28, BIOS/OS handoff control and status
Kernel::UInt16 Resv0;
Kernel::UInt32 Resv2;
@@ -268,21 +268,21 @@ typedef struct HbaMem final
typedef struct HbaCmdHeader final
{
// DW0
- Kernel::UInt8 Cfl : 5; // Command FIS length in DWORDS, 2 ~ 16
- Kernel::UInt8 Atapi : 1; // ATAPI
- Kernel::UInt8 Write : 1; // Write, 1: H2D, 0: D2H
+ Kernel::UInt8 Cfl : 5; // Command FIS length in DWORDS, 2 ~ 16
+ Kernel::UInt8 Atapi : 1; // ATAPI
+ Kernel::UInt8 Write : 1; // Write, 1: H2D, 0: D2H
Kernel::UInt8 Prefetchable : 1; // Prefetchable
- Kernel::UInt8 Reset : 1; // Reset
- Kernel::UInt8 BIST : 1; // BIST
- Kernel::UInt8 Clear : 1; // Clear busy upon R_OK
+ Kernel::UInt8 Reset : 1; // Reset
+ Kernel::UInt8 BIST : 1; // BIST
+ Kernel::UInt8 Clear : 1; // Clear busy upon R_OK
Kernel::UInt8 Reserved0 : 1; // Reserved
- Kernel::UInt8 Pmp : 4; // Port multiplier port
+ Kernel::UInt8 Pmp : 4; // Port multiplier port
- Kernel::UInt16 Prdtl; // Physical region descriptor table length in entries
+ Kernel::UInt16 Prdtl; // Physical region descriptor table length in entries
volatile Kernel::UInt32 Prdbc; // Physical region descriptor byte count transferred
- Kernel::UInt32 Ctba; // Command table descriptor base address
+ Kernel::UInt32 Ctba; // Command table descriptor base address
Kernel::UInt32 Ctbau; // Command table descriptor base address upper 32 bits
Kernel::UInt32 Reserved1[4]; // Reserved
@@ -291,13 +291,13 @@ typedef struct HbaCmdHeader final
typedef struct HbaFis final
{
// 0x00
- FisDmaSetup Dsfis; // DMA Setup FIS
+ FisDmaSetup Dsfis; // DMA Setup FIS
Kernel::UInt8 Pad0[4];
// 0x20
- FisPioSetup Psfis; // PIO Setup FIS
+ FisPioSetup Psfis; // PIO Setup FIS
Kernel::UInt8 Pad1[12];
// 0x40
- FisRegD2H Rfis; // Register – Device to Host FIS
+ FisRegD2H Rfis; // Register – Device to Host FIS
Kernel::UInt8 Pad2[4];
// 0x58
FisDevBits Sdbfis; // Set Device Bit FIS
@@ -309,12 +309,12 @@ typedef struct HbaFis final
typedef struct HbaPrdtEntry final
{
- Kernel::UInt32 Dba; // Data base address
- Kernel::UInt32 Dbau; // Data base address upper 32 bits
+ Kernel::UInt32 Dba; // Data base address
+ Kernel::UInt32 Dbau; // Data base address upper 32 bits
Kernel::UInt32 Reserved0; // Reserved
// DW3
- Kernel::UInt32 Dbc : 22; // Byte count, 4M max
- Kernel::UInt32 Reserved1 : 9; // Reserved
+ Kernel::UInt32 Dbc : 22; // Byte count, 4M max
+ Kernel::UInt32 Reserved1 : 9; // Reserved
Kernel::UInt32 InterruptBit : 1; // Interrupt on completion
} HbaPrdtEntry;
diff --git a/Kernel/Modules/ATA/ATA.hxx b/Kernel/Modules/ATA/ATA.hxx
index 9a65c065..1ebaa657 100644
--- a/Kernel/Modules/ATA/ATA.hxx
+++ b/Kernel/Modules/ATA/ATA.hxx
@@ -1,6 +1,6 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
File: Defines.hxx
Purpose: ATA header.
diff --git a/Kernel/Modules/CoreCG/Accessibility.hxx b/Kernel/Modules/CoreCG/Accessibility.hxx
index 7878de4f..849adece 100644
--- a/Kernel/Modules/CoreCG/Accessibility.hxx
+++ b/Kernel/Modules/CoreCG/Accessibility.hxx
@@ -1,10 +1,11 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
------------------------------------------- */
-#pragma once
+#ifndef __CORECG_ACCESS_HXX__
+#define __CORECG_ACCESS_HXX__
#include <NewKit/NewKit.hpp>
#include <KernelKit/HError.hpp>
@@ -44,3 +45,5 @@ namespace Kernel
}
};
} // namespace Kernel
+
+#endif // !__CORECG_ACCESS_HXX__
diff --git a/Kernel/Modules/CoreCG/CoreCG.hxx b/Kernel/Modules/CoreCG/CoreCG.hxx
index 013cb08a..4894d150 100644
--- a/Kernel/Modules/CoreCG/CoreCG.hxx
+++ b/Kernel/Modules/CoreCG/CoreCG.hxx
@@ -1,6 +1,6 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
------------------------------------------- */
@@ -8,75 +8,72 @@
#include <NewKit/Defines.hpp>
-#define GXInit() Kernel::SizeT __GXCursor = 0
+#define CGInit() Kernel::SizeT __GXCursor = 0
-#define GXRgba(R, G, B) (UInt32)(R | G | B)
+#define CGColor(R, G, B) RGB(R, G, B)
-#define gxClearClr RGB(9d, 9d, 9d)
+#define cCGClearClr CGColor(0x0, 0x0, 0x0)
-#define GXFini() __GXCursor = 0
+#define CGFini() __GXCursor = 0
/// @brief Performs OR drawing on the framebuffer.
-#define GXDrawAlphaImg(ImgPtr, _Height, _Width, BaseX, BaseY) \
- __GXCursor = 0; \
- \
+#define CGDrawBitMapInRegionA(ImgPtr, _Height, _Width, BaseX, BaseY) \
+ __GXCursor = 0; \
+ \
for (Kernel::SizeT i = BaseX; i < (_Height + BaseX); ++i) \
- { \
+ { \
for (Kernel::SizeT u = BaseY; u < (_Width + BaseY); ++u) \
- { \
+ { \
*(((volatile Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
- 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
- i + \
- 4 * u))) |= ImgPtr[__GXCursor]; \
- \
- ++__GXCursor; \
- } \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ i + \
+ 4 * u))) |= (ImgPtr)[__GXCursor]; \
+ \
+ ++__GXCursor; \
+ } \
}
/// @brief Draws a resource.
-#define GXDrawImg(ImgPtr, _Height, _Width, BaseX, BaseY) \
- __GXCursor = 0; \
- \
+#define CGDrawBitMapInRegion(ImgPtr, _Height, _Width, BaseX, BaseY) \
+ __GXCursor = 0; \
+ \
for (Kernel::SizeT i = BaseX; i < (_Height + BaseX); ++i) \
- { \
+ { \
for (Kernel::SizeT u = BaseY; u < (_Width + BaseY); ++u) \
- { \
+ { \
*(((volatile Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
- 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
- i + \
- 4 * u))) = ImgPtr[__GXCursor]; \
- \
- ++__GXCursor; \
- } \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ i + \
+ 4 * u))) = (ImgPtr)[__GXCursor]; \
+ \
+ ++__GXCursor; \
+ } \
}
/// @brief Cleans a resource.
-#define GXClear(_Height, _Width, BaseX, BaseY) \
- \
+#define CGClearRegion(_Height, _Width, BaseX, BaseY) \
+ \
for (Kernel::SizeT i = BaseX; i < _Height + BaseX; ++i) \
- { \
+ { \
for (Kernel::SizeT u = BaseY; u < _Width + BaseY; ++u) \
- { \
+ { \
*(((volatile Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
- 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
- i + \
- 4 * u))) = gxClearClr; \
- } \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ i + \
+ 4 * u))) = cCGClearClr; \
+ } \
}
/// @brief Draws inside a zone.
-#define GXDraw(_Clr, _Height, _Width, BaseX, BaseY) \
- \
+#define CGDrawInRegion(_Clr, _Height, _Width, BaseX, BaseY) \
+ \
for (Kernel::SizeT i = BaseX; i < (_Width + BaseX); ++i) \
- { \
+ { \
for (Kernel::SizeT u = BaseY; u < (_Height + BaseY); ++u) \
- { \
+ { \
*(((volatile Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The + \
- 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
- i + \
- 4 * u))) = _Clr; \
- } \
+ 4 * kHandoverHeader->f_GOP.f_PixelPerLine * \
+ i + \
+ 4 * u))) = _Clr; \
+ } \
}
-
-
-
diff --git a/Kernel/Modules/CoreCG/CoreIMG.hxx b/Kernel/Modules/CoreCG/CoreIMG.hxx
new file mode 100644
index 00000000..f51c1255
--- /dev/null
+++ b/Kernel/Modules/CoreCG/CoreIMG.hxx
@@ -0,0 +1,13 @@
+#ifndef __CORECG_IMG_HXX__
+#define __CORECG_IMG_HXX__
+
+#include <NewKit/Defines.hpp>
+
+namespace Kernel
+{
+ struct IMGContainerHeader;
+ struct IMGMetadataHeader;
+
+} // namespace Kernel
+
+#endif // ifndef __CORECG_IMG_HXX__
diff --git a/Kernel/Modules/CoreCG/Lerp.hxx b/Kernel/Modules/CoreCG/Lerp.hxx
index b62a8266..932f70c5 100644
--- a/Kernel/Modules/CoreCG/Lerp.hxx
+++ b/Kernel/Modules/CoreCG/Lerp.hxx
@@ -1,6 +1,6 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
------------------------------------------- */
diff --git a/Kernel/Modules/Flash/Flash.hxx b/Kernel/Modules/Flash/Flash.hxx
index 10c3d520..3c2275ea 100644
--- a/Kernel/Modules/Flash/Flash.hxx
+++ b/Kernel/Modules/Flash/Flash.hxx
@@ -1,6 +1,6 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
------------------------------------------- */
diff --git a/Kernel/Modules/HPET/Defines.hxx b/Kernel/Modules/HPET/Defines.hxx
index 6bd097c5..8361485b 100644
--- a/Kernel/Modules/HPET/Defines.hxx
+++ b/Kernel/Modules/HPET/Defines.hxx
@@ -1,6 +1,6 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
File: HPET.hxx
Purpose: HPET builtin.
diff --git a/Kernel/Modules/LTE/IO.hxx b/Kernel/Modules/LTE/IO.hxx
index 1aaee7bf..fb75c270 100644
--- a/Kernel/Modules/LTE/IO.hxx
+++ b/Kernel/Modules/LTE/IO.hxx
@@ -1,6 +1,6 @@
/* -------------------------------------------
-Copyright Zeta Electronics Corporation.
+Copyright ZKA Technologies.
File: LTE\IO.hxx.
Purpose: LTE I/O.
@@ -23,6 +23,6 @@ Kernel::Boolean lte_turn_off_slot(Kernel::Int32 slot);
/// @brief Send AT command.
Kernel::Boolean lte_send_at_command(Kernel::Char* buf,
- Kernel::Size bufSz);
+ Kernel::Size bufSz);
#endif // ifndef _INC_NETWORK_LTE_IO_HXX_
diff --git a/Kernel/Modules/MBCI/Interface.hxx b/Kernel/Modules/MBCI/Interface.hxx
index fa6f479b..f40cc9cb 100644
--- a/Kernel/Modules/MBCI/Interface.hxx
+++ b/Kernel/Modules/MBCI/Interface.hxx
@@ -1,6 +1,6 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
------------------------------------------- */
diff --git a/Kernel/Modules/MBCI/MBCI.hxx b/Kernel/Modules/MBCI/MBCI.hxx
index e8b48501..ab423be2 100644
--- a/Kernel/Modules/MBCI/MBCI.hxx
+++ b/Kernel/Modules/MBCI/MBCI.hxx
@@ -1,10 +1,11 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
------------------------------------------- */
-#pragma once
+#ifndef _INC_MODULE_MBCI_HXX_
+#define _INC_MODULE_MBCI_HXX_
#include <NewKit/Defines.hpp>
#include <Modules/ACPI/ACPI.hxx>
@@ -13,32 +14,42 @@
- VCC (IN) (OUT for MCU)
- CLK (IN) (OUT for MCU)
- ACK (BI) (Contains an Acknowledge Packet Frame)
-- D0- (IN) (Starts with the Host Imterface Packet Frame)
-- D1- (IN) (Starts with the Host Imterface Packet Frame)
-- D0+ (OUT) (Starts with the Host Imterface Packet Frame)
-- D1+ (OUT) (Starts with the Host Imterface Packet Frame)
+- D0- (IN) (Starts with the Host Interface Packet Frame)
+- D1- (IN) (Starts with the Host Interface Packet Frame)
+- D0+ (OUT) (Starts with the Host Interface Packet Frame)
+- D1+ (OUT) (Starts with the Host Interface Packet Frame)
- GND (IN) (OUT for MCU)
*/
#define cMBCIZeroSz (8)
-#define cMBCIMagic "MBCI "
+#define cMBCIMagic "MBCI "
namespace Kernel
{
struct MBCIHostInterface;
- struct MBCIPacketACK;
+ struct MBCIHostInterfacePacketFrame;
- /// @brief MBCI Acknowledge header.
- struct PACKED MBCIPacketACK final
+ /// @brief MBCI Packet frame header
+ struct PACKED MBCIHostInterfacePacketFrame final
{
UInt32 Magic;
UInt32 HostId;
- UInt16 VendorId;
- UInt16 DeviceId;
- Bool Acknowleged;
+ UInt32 Flags;
+ UInt32 VendorId;
+ UInt32 DeviceId;
+ UInt32 DeviceSpeed;
+ Bool Acknowledge;
Char Zero[cMBCIZeroSz];
};
+ enum
+ {
+ eMBCISpeedDeviceInvalid,
+ eMBCILowSpeedDevice,
+ eMBCIHighSpeedDevice,
+ eMBCISpeedDeviceCount,
+ };
+
/// @brief MBCI Host Interface header.
struct PACKED MBCIHostInterface final
{
@@ -60,24 +71,29 @@ namespace Kernel
/// @brief MBCI host flags.
enum MBCIHostFlags
{
- kMBCIHostFlagsSupportsPageProtection, /// Page protected.
- kMBCIHostFlagsSupportsAPM, /// Advanced Power Management.
- kMBCIHostFlagsSupportsDaisyChain, /// Is daisy chained.
- kMBCIHostFlagsSupportsHWInterrupts, /// Has HW interrupts.
- kMBCIHostFlagsSupportsDMA, /// Has DMA.
- kMBCIHostFlagsExtended = __UINT16_MAX__, // Extended flags table.
+ eMBCIHostFlagsSupportsNothing, // Invalid MBCI device.
+ eMBCIHostFlagsSupportsAPM, // Advanced Power Management.
+ eMBCIHostFlagsSupportsDaisyChain, // Is daisy chained.
+ eMBCIHostFlagsSupportsHWInterrupts, // Has HW interrupts.
+ eMBCIHostFlagsSupportsDMA, // Has DMA.
+ eMBCIHostFlagsExtended = __UINT16_MAX__, // Extended flags table.
};
enum MBCIHostKind
{
- kMBCIHostKindHardDisk,
- kMBCIHostKindOpticalDisk,
- kMBCIHostKindKeyboardLow,
- kMBCIHostKindMouseLow,
- kMBCIHostKindMouseHigh,
- kMBCIHostKindKeyboardHigh,
- kMBCIHostKindNetworkInterface,
- kMBCIHostKindDaisyChain,
- kMBCIHostKindStartExtended = __UINT16_MAX__, /// Extended vendor table.
+ eMBCIHostKindHardDisk,
+ eMBCIHostKindOpticalDisk,
+ eMBCIHostKindKeyboardLow,
+ eMBCIHostKindMouseLow,
+ eMBCIHostKindMouseHigh,
+ eMBCIHostKindKeyboardHigh,
+ eMBCIHostKindNetworkInterface,
+ eMBCIHostKindDaisyChain,
+ eMBCIHostKindStartExtended = __UINT16_MAX__, // Extended vendor table.
};
+
+ /// @brief An AuthKey is a context used to decrpy data from an MBCI packet.
+ typedef UInt64 MBCIAuthyKeyType;
} // namespace Kernel
+
+#endif // ifndef _INC_MODULE_MBCI_HXX_
diff --git a/Kernel/Modules/MBCI/compile_flags.txt b/Kernel/Modules/MBCI/compile_flags.txt
new file mode 100644
index 00000000..df83bf4c
--- /dev/null
+++ b/Kernel/Modules/MBCI/compile_flags.txt
@@ -0,0 +1,4 @@
+-I./
+-I../../
+-I../../Kernel
+-std=c++20
diff --git a/Kernel/Modules/NVME/Defines.hxx b/Kernel/Modules/NVME/Defines.hxx
new file mode 100644
index 00000000..50960ed5
--- /dev/null
+++ b/Kernel/Modules/NVME/Defines.hxx
@@ -0,0 +1,116 @@
+/* -------------------------------------------
+
+ Copyright ZKA Technologies
+
+ Revision History:
+
+ ??/??/24: Added file (amlel)
+ 23 Jul 24: Update filename to Defines.hxx and using ALIGN_NVME for NVME structs. (amlel)
+
+------------------------------------------- */
+
+#ifndef __MODULE_NVME_HXX__
+#define __MODULE_NVME_HXX__
+
+#include <NewKit/Defines.hpp>
+
+/// TODO: checklist in: https://wiki.osdev.org/NVMe
+
+#define ALIGN_NVME ATTRIBUTE(aligned(sizeof(Kernel::NVMEInt32)))
+
+namespace Kernel
+{
+ typedef UInt32 NVMEInt32;
+
+ struct ALIGN_NVME NVMEBar0 final
+ {
+ NVMEInt32 fCap;
+ NVMEInt32 fVer;
+ NVMEInt32 fIntMaskSet;
+ NVMEInt32 fIntMaskClr;
+ NVMEInt32 fContrlConf;
+ NVMEInt32 fContrlStat;
+ NVMEInt32 fAdminQueueAttr;
+ NVMEInt32 fAdminSubmissionQueue;
+ NVMEInt32 fAdminCompletionQueue;
+ };
+
+ struct ALIGN_NVME NVMEQueue final
+ {
+ NVMEInt32 fOpcode;
+ NVMEInt32 fNSID;
+ NVMEInt32 fReserved[3];
+ NVMEInt32 fMetadataPtr[5];
+ NVMEInt32 fDataPtr[9];
+ NVMEInt32 CommandSpecific[15];
+ };
+
+ enum
+ {
+ eCreateCompletionQueueNVME = 0x05,
+ eCreateSubmissionQueueNVME = 0x01,
+ eIdentifyNVME = 0x06,
+ eReadNVME = 0x02,
+ eWriteNVME = 0x01,
+ };
+
+ template <Int32 Opcode>
+ inline Bool nvme_create_admin_command(NVMEQueue* 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;
+ }
+
+ template <Int32 Opcode>
+ inline Bool nvme_create_io_command(NVMEQueue* 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] = 1;
+ }
+ }
+
+ // use (1 << 0) as contigunous is better supported.
+
+ return true;
+ }
+} // namespace Kernel
+
+#endif // ifndef __MODULE_NVME_HXX__
diff --git a/Kernel/Modules/PS2/PS2MouseInterface.hxx b/Kernel/Modules/PS2/PS2MouseInterface.hxx
index 62104a49..167f3c62 100644
--- a/Kernel/Modules/PS2/PS2MouseInterface.hxx
+++ b/Kernel/Modules/PS2/PS2MouseInterface.hxx
@@ -1,6 +1,6 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
File: PS2MouseInterface.hxx
Purpose: PS/2 mouse.
diff --git a/Kernel/Modules/ReadMe.md b/Kernel/Modules/ReadMe.md
new file mode 100644
index 00000000..dde14fe4
--- /dev/null
+++ b/Kernel/Modules/ReadMe.md
@@ -0,0 +1,12 @@
+# Kernel modules
+
+Pluggable modules for builtin hardware support within the kernel.
+
+## Maintainers
+
+ACPI: Amlal EL Mahrouss.
+AHCI: Amlal EL Mahrouss.
+CoreCG: Amlal EL Mahrouss.
+PS2: Amlal EL Mahrouss.
+ATA: Amlal EL Mahrouss.
+MBCI: Amlal El Mahrouss.
diff --git a/Kernel/Modules/ReadMe.txt b/Kernel/Modules/ReadMe.txt
deleted file mode 100644
index ea2bab42..00000000
--- a/Kernel/Modules/ReadMe.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-==============
-Kernel Modules
-==============
-
-===============
-What are these?
-===============
-
-These are like modules for the kernel.
-
-===================
-Maintainers/Authors
-===================
-
-ACPI: Amlal EL Mahrouss.
-AHCI: Amlal EL Mahrouss.
-CoreCG: Amlal EL Mahrouss.
-PS2: Amlal EL Mahrouss.
-ATA: Amlal EL Mahrouss.
diff --git a/Kernel/Modules/SCSI/SCSI.hxx b/Kernel/Modules/SCSI/SCSI.hxx
index ed291ae7..458087ba 100644
--- a/Kernel/Modules/SCSI/SCSI.hxx
+++ b/Kernel/Modules/SCSI/SCSI.hxx
@@ -1,6 +1,6 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
------------------------------------------- */
diff --git a/Kernel/Modules/XHCI/Defines.hxx b/Kernel/Modules/XHCI/Defines.hxx
index 00c41851..1558ecc1 100644
--- a/Kernel/Modules/XHCI/Defines.hxx
+++ b/Kernel/Modules/XHCI/Defines.hxx
@@ -1,6 +1,6 @@
/* -------------------------------------------
- Copyright Zeta Electronics Corporation
+ Copyright ZKA Technologies
File: Defines.hxx
Purpose: XHCI (and backwards) header.