summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/HALKit
diff options
context:
space:
mode:
authorAmlal <amlal@nekernel.org>2025-08-11 09:38:55 +0200
committerAmlal <amlal@nekernel.org>2025-08-11 09:38:55 +0200
commitf3c12b72db9e6983741c0d79fd7f8903c23d93d4 (patch)
tree856a822bef64548ec834392f8cbd23cb65cf21be /dev/kernel/HALKit
parentce35a08ce5624d80cb35c6b03a47fa7c83b560b5 (diff)
feat: Semaphore API has been documented, RTL driver improvements, and better help for fsck.hefs.
Signed-off-by: Amlal <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/HALKit')
-rw-r--r--dev/kernel/HALKit/AMD64/Network/Generic+Basic+RTL8139.cc30
1 files changed, 21 insertions, 9 deletions
diff --git a/dev/kernel/HALKit/AMD64/Network/Generic+Basic+RTL8139.cc b/dev/kernel/HALKit/AMD64/Network/Generic+Basic+RTL8139.cc
index 3ccbfa24..bf0731c6 100644
--- a/dev/kernel/HALKit/AMD64/Network/Generic+Basic+RTL8139.cc
+++ b/dev/kernel/HALKit/AMD64/Network/Generic+Basic+RTL8139.cc
@@ -13,10 +13,9 @@ using namespace Kernel::HAL;
STATIC UInt16 kRTLIOBase = 0xFFFF;
-STATIC BOOL kTXEnabled = NO;
-
-STATIC UInt32 kRXOffset = 0UL;
+STATIC BOOL kTXRXEnabled = NO;
+STATIC UInt32 kRXOffset = 0UL;
STATIC constexpr CONST UInt32 kRXBufferSize = 8192 + 16 + 1500;
STATIC UInt8* kRXUpperLayer = nullptr;
@@ -26,8 +25,8 @@ STATIC UInt8* kRXBuffer = nullptr;
///@brief RTL8139 Init routine.
/***********************************************************************************/
-EXTERN_C Void rtl_init_nic_rtl8139(UInt16 io_base) noexcept {
- if (kTXEnabled) return;
+EXTERN_C BOOL rtl_init_nic_rtl8139(UInt16 io_base) noexcept {
+ if (kTXRXEnabled) return NO;
kRTLIOBase = io_base;
@@ -49,8 +48,7 @@ EXTERN_C Void rtl_init_nic_rtl8139(UInt16 io_base) noexcept {
}
if (timeout <= 0x1000) {
- ke_panic(RUNTIME_CHECK_BAD_BEHAVIOR, "RTL8139: Reset failed");
- return;
+ return NO;
}
rt_out32(io_base + 0x30, (UInt32) (UIntPtr) kRXBuffer);
@@ -61,7 +59,9 @@ EXTERN_C Void rtl_init_nic_rtl8139(UInt16 io_base) noexcept {
rt_out16(io_base + 0x3C, 0x0005);
- kTXEnabled = YES;
+ kTXRXEnabled = YES;
+
+ return YES;
}
/***********************************************************************************/
@@ -69,7 +69,7 @@ EXTERN_C Void rtl_init_nic_rtl8139(UInt16 io_base) noexcept {
/// @note This function is called when the device interrupts to retrieve network data.
/***********************************************************************************/
-EXTERN_C void rtl_rtl8139_interrupt_handler() {
+EXTERN_C Void rtl_rtl8139_interrupt_handler(UIntPtr rsp) {
if (kRTLIOBase == 0xFFFF) return;
UInt16 status = rt_in16(kRTLIOBase + 0x3E);
@@ -111,4 +111,16 @@ EXTERN_C void rtl_rtl8139_interrupt_handler() {
EXTERN_C UInt8* rtl_rtl8139_get_upper_layer() {
return kRXUpperLayer;
+}
+
+/***********************************************************************************/
+/// @brief RTL8139 set upper layer function
+/// @param layer the upper layer.
+/***********************************************************************************/
+
+EXTERN_C BOOL rtl_rtl8139_set_upper_layer(UInt8* layer) {
+ if (!layer) return NO;
+ kRXUpperLayer = layer;
+
+ return YES;
} \ No newline at end of file