summaryrefslogtreecommitdiffhomepage
path: root/src/modules/XHCI
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-23 21:06:27 -0500
committerGitHub <noreply@github.com>2025-11-23 21:06:27 -0500
commit23040fad647634c08697451fc22ee2ca999629c8 (patch)
tree72888f88c7728c82f3f6df1f4f70591de15eab36 /src/modules/XHCI
parente5cc7351f0577b54c528fb827a7c7e6306c3e843 (diff)
parent83d870e58457a1d335a1d9b9966a6a1887cc297b (diff)
Merge pull request #81 from nekernel-org/dev
feat! breaking changes on kernel sources.
Diffstat (limited to 'src/modules/XHCI')
-rw-r--r--src/modules/XHCI/XHCI.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/modules/XHCI/XHCI.h b/src/modules/XHCI/XHCI.h
new file mode 100644
index 00000000..40387c1e
--- /dev/null
+++ b/src/modules/XHCI/XHCI.h
@@ -0,0 +1,66 @@
+/* ========================================
+
+ Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
+
+ File: Defines.h
+ Purpose: XHCI (and backwards) header.
+
+ Revision History:
+
+ 01/02/24: Added file (amlel)
+ 03/02/24: Update filename to Defines.h (amlel)
+
+======================================== */
+
+#pragma once
+
+#include <NeKit/Defines.h>
+
+#define kUSBCommand (UInt16) 0x0
+#define kUSBStatus (UInt16) 0x2
+#define kUSBInterruptEnable (UInt16) 0x4
+#define kUSBFrameNum (UInt16) 0x6
+#define kUSBFrameListBaseAddress (UInt16) 0x8
+#define kUSBFrameModifyStart (UInt16) 0xC
+#define kUSBPort1StatusCtrl (UInt16) 0x10
+#define kUSBPort2StatusCtrl (UInt16) 0x12
+
+namespace Kernel {
+typedef struct USBCommandRegister final {
+ UInt8 mReserved[8]; // Reserved
+ UInt8 mMaxPacket; // 0 = Max packet size 32 bits 1 = Max packet size 64 bits
+ UInt8 mConfigure;
+ UInt8 mSoftwareDebug;
+ UInt8 mGlobalResume;
+ UInt8 mGlobalSuspend;
+ UInt8 mHostCtrlReset;
+ UInt8 mRun; // 1 = Controller execute frame list entries
+} USBCommandRegister;
+
+typedef struct USBStatusRegister final {
+ UInt8 mReserved[8]; // Reserved
+ UInt8 mHalted; // 1 = bit 0 in CMD is zero 0 = bit 0 in CMD is 1
+ UInt8 mProcessError;
+ UInt8 mSystemError;
+ UInt8 mResumeDetected;
+ UInt8 mErrorInterrupt;
+ UInt8 mInterrupt;
+} USBStatusRegister;
+
+typedef struct USBInterruptEnableRegister final {
+ UInt8 mReserved[4]; // Reserved
+ UInt8 mShortPacket; // 1=Enable interrupt 0=Disable interrupt
+ UInt8 mComplete; // 1=Enable interrupt 0=Disable interrupt
+ UInt8 mResume; // 1=Enable interrupt 0=Disable interrupt
+ UInt8 mTimeoutCRC; // 1=Enable interrupt 0=Disable interrupt
+} USBInterruptEnableRegister;
+
+/*
+ Some terminology:
+
+ Frame Number: Number of processed entry of the Frame List.
+ Frame List Base Address:
+ 32-bit physical adress of Frame List. Remember that first 12 bytes are
+ always 0. The Frame List must contain 1024 entries.
+*/
+} // namespace Kernel \ No newline at end of file