diff options
Diffstat (limited to 'Kernel/Modules')
| -rw-r--r-- | Kernel/Modules/ACPI/ACPI.hxx | 2 | ||||
| -rw-r--r-- | Kernel/Modules/ACPI/ACPIFactoryInterface.hxx | 17 | ||||
| -rw-r--r-- | Kernel/Modules/AHCI/AHCI.hxx | 164 | ||||
| -rw-r--r-- | Kernel/Modules/ATA/ATA.hxx | 2 | ||||
| -rw-r--r-- | Kernel/Modules/CoreCG/Accessibility.hxx | 7 | ||||
| -rw-r--r-- | Kernel/Modules/CoreCG/CoreCG.hxx | 89 | ||||
| -rw-r--r-- | Kernel/Modules/CoreCG/CoreIMG.hxx | 13 | ||||
| -rw-r--r-- | Kernel/Modules/CoreCG/Lerp.hxx | 2 | ||||
| -rw-r--r-- | Kernel/Modules/Flash/Flash.hxx | 2 | ||||
| -rw-r--r-- | Kernel/Modules/HPET/Defines.hxx | 2 | ||||
| -rw-r--r-- | Kernel/Modules/LTE/IO.hxx | 4 | ||||
| -rw-r--r-- | Kernel/Modules/MBCI/Interface.hxx | 2 | ||||
| -rw-r--r-- | Kernel/Modules/MBCI/MBCI.hxx | 72 | ||||
| -rw-r--r-- | Kernel/Modules/MBCI/compile_flags.txt | 4 | ||||
| -rw-r--r-- | Kernel/Modules/NVME/Defines.hxx | 116 | ||||
| -rw-r--r-- | Kernel/Modules/PS2/PS2MouseInterface.hxx | 2 | ||||
| -rw-r--r-- | Kernel/Modules/ReadMe.md | 12 | ||||
| -rw-r--r-- | Kernel/Modules/ReadMe.txt | 19 | ||||
| -rw-r--r-- | Kernel/Modules/SCSI/SCSI.hxx | 2 | ||||
| -rw-r--r-- | Kernel/Modules/XHCI/Defines.hxx | 2 |
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. |
