Commit Graph

870 Commits

Author SHA1 Message Date
Bananymous 1c1fc65c7c Kernel: Add API to reserve GSI instead of irq
This also fixes a bug with IOAPIC gsi_base != 0
2025-04-01 23:09:30 +03:00
Bananymous 0474ac4262 Kernel: Expose ACPI resolve_package_element to outside 2025-04-01 23:09:30 +03:00
Bananymous aba49cc93f Kernel: Add API to get ACPI reference paths 2025-04-01 23:09:30 +03:00
Bananymous 0e085b30cc Kernel: ACPI add easier API for calling methods with arguments 2025-04-01 23:09:30 +03:00
Bananymous 35149b6960 Kernel: Add helper functions to create AML String and Buffer 2025-04-01 23:09:30 +03:00
Bananymous 3800d5420e Kernel: Collect created AML nodes in add_{named,alias}...
This makes it harder to miss adding scoped objects. Before I was not
deleting all types of nodes on method return
2025-04-01 23:09:25 +03:00
Bananymous b145c1ab64 Kernel: Add easier api for evaluating ACPI nodes 2025-04-01 23:09:20 +03:00
Bananymous b8a3439219 Kernel: Add getter for ACPI namespace 2025-04-01 23:09:15 +03:00
Bananymous 088f77a226 Kernel: Add super basic support for USB keyboard LEDs
This is very hacky but it seems to mostly work. Also for some reason
this fixed my Razer Mamba mouse????
2025-02-11 02:18:50 +02:00
Bananymous 4dd6c85df2 Kernel: Fix USB keyboard Scroll lock
I was using 8 bit modifier and ScrollLock bit does not fit this. Also I
was not generating ScrollLock keypresses
2025-02-11 02:16:38 +02:00
Bananymous d0452a3510 Kernel: Fix xHCI controller destruction
Port updater task was not actually able to exit without a kernel panic.
This patch makes controller wait until port updater exits itself :D
2025-02-10 22:58:57 +02:00
Bananymous 22b32a0fe5 Kernel: Expose PCI interrupt mechanism from PCIDevice 2025-02-10 22:57:25 +02:00
Bananymous ad143c184f Kernel: Add basic support for USB hubs
This is still buggy and some hubs lead to usb transaction errors. I'll
have to debug this but this shouldn't prevent any already working device
from working
2025-02-10 22:56:25 +02:00
Bananymous 267fdf9fa1 Kernel: Remove storage devices after unplugging them 2025-02-07 18:04:54 +02:00
Bananymous 7de689055c Kernel: Pass xHCI device information in structs
This makes code more readable and extendable
2025-02-06 23:18:14 +02:00
Bananymous 63b15a8855 Kernel: Rename USB initialize_endpoint -> configure_endpoint
This makes more sense as the USB command is CONFIGURE_ENDPOINT

Also configure_endpoint can be called multiple times on the same
endpoint. There was no reason to limit this to only one call.
2025-02-06 22:10:00 +02:00
Bananymous a2a7302964 Kernel: Make sure USB class driver is deinitialized before xhci device 2025-02-06 22:00:26 +02:00
Bananymous 6768a18475 Kernel: Don't parse xHCI custom slot_types
xHCI spec mandates that slot_type for USB protocol is 0.
2025-02-06 21:41:44 +02:00
Bananymous 242ed4a3c2 Kernel: Remove support for custom xHCI speed_ids
This gets really weird with hubs and I don't think even linux handles
them.
2025-02-06 21:38:30 +02:00
Bananymous f9b70d1b5b Kernel: Don't enter infinite loop on unexpected serial behaviour 2025-02-06 20:59:17 +02:00
Bananymous faa5252191 Kernel: Fix TTY ANSI CSI m and prevent crash :) 2025-02-06 20:58:03 +02:00
Bananymous ee078fc638 Kernel: Fix fd status/descriptor flag handling
I was not sharing status and offset on fork and I was sharing descriptor
flags on dup/dup2
2025-01-17 20:12:04 +02:00
Bananymous 9893c90e74 Kernel: Remove SYS_DUP and implement it using fcntl F_DUPFD 2025-01-17 19:29:47 +02:00
Bananymous a5cf92b2ff Kernel: Use uint64_t instead of size_t for AML node conversion
This allows 32 bit to compile again :)
2024-12-30 06:27:49 +02:00
Bananymous 69137cddab Kernel: Implement TIOCSWINSZ for pseudo terminals
I have no idea how I had forgotten this
2024-12-21 03:22:48 +02:00
Bananymous 3a6cdfff45 Kernel: Fix ACPI namespace initialization
Now _REG, _STA, _INI are called in the order my laptop expects them to
be called. This was kinda weird because what uACPI was doing did not
work.

\_SB_.PCI0.LPC0.EC0_.BAT0._STA required \_SB_.PCI0.LPC0.EC0_._REG to be
called
\_SB_.PCI0.LPC0.EC0_._REG required \_SB_.PCI0._STA to be called

Now I call all the _REG methods of a device after calling _STA/_INI and
after performing the whole _STA/_INI sequence i call rest of missing
_REG functions
2024-12-18 18:30:45 +02:00
Bananymous 1b94957b07 Kernel: Copy AML NameString base when moving it :) 2024-12-18 18:28:16 +02:00
Bananymous 4e364bd2f6 Kernel: Add support for ACPI Control Method Batteries
The implementation is kinda weird but it exposes some battery
information to userspace!
2024-12-18 14:06:32 +02:00
Bananymous 437fa45ca2 Kernel: Add helper to find ACPI devices with EISA id 2024-12-18 01:45:00 +02:00
Bananymous 7eb186dad4 Kernel: Add to_sv() helper for AML String 2024-12-18 01:43:46 +02:00
Bananymous 2259614640 Kernel: Remove unused function from ACPI namespace 2024-12-18 01:43:04 +02:00
Bananymous 869f4011a1 Kernel: Replace the old AML interpreter by a new, better one
The old AML interpreter was trash and did not follow value/reference
semantics at all. It was also super slow, one of my machines taking over
7 seconds to parse ACPI namespace and call _INI and _STA.
2024-12-17 03:36:33 +02:00
Bananymous 12a37500b0 Kernel: Fix triple-fault in vitual tty
This was happening when printing non-utf8 data while having virtual tty
as the debug console.
2024-12-09 03:35:51 +02:00
Bananymous 2d0690ae2d Kernel: Cleanup most of syscalls dealing with files 2024-12-07 05:33:04 +02:00
Bananymous 713daf6cd3 Kernel/LibC: Add support for creating hardlinks 2024-12-03 16:12:26 +02:00
Bananymous d58ca5f37a Kernel/LibC: Implement symlink{,at} 2024-12-02 20:13:38 +02:00
Bananymous a10ca47657 Kernel/LibC: Implement {,f}statvfs 2024-12-02 20:13:37 +02:00
Bananymous ad1f175a39 Kernel/LibC: Implement getppid 2024-12-02 20:13:37 +02:00
Bananymous 6ed1435aeb Kernel/LibC: Implement tcgetpgrp 2024-12-02 20:13:37 +02:00
Bananymous 6346e288ad LibC: Implement getrlimit 2024-12-02 20:13:37 +02:00
Bananymous 747c3b2a4b Kernel/LibC: Implement fsync 2024-12-02 20:13:37 +02:00
Bananymous 4149748766 Kernel: Add missing include in ACPI headers 2024-12-01 21:32:34 +02:00
Bananymous 8dbbbc1a1a Kernel: Add command line option `readonly`
This prevents calls to write_sectors_impl and all dirty pages are always
kept in RAM.
2024-11-27 13:31:55 +02:00
Bananymous 88a86a9927 Kernel: Fix Thread destruction after sys_exit
This had undefined behaviour as Thread's (Processes's) PageTable was
destroyed before Thread had the change to destroy its own stacks that
lived on the PageTable.
2024-11-26 00:59:34 +02:00
Bananymous 48e030bca3 Kernel: Make PageTable non-copyable and non-movable
Also PageTable destructor now verifies that is has allocated something
instead of assuming paddr of 0.
2024-11-26 00:58:35 +02:00
Bananymous 793c0368f2 Kernel: Refactor USB mass storage code
Also increment command timeout to 10 seconds so commands don't timeout
when they are not supposted to :)
2024-11-23 01:24:32 +02:00
Bananymous 076001462e Kernel: Implement AML ConcatOp 2024-11-22 22:23:07 +02:00
Bananymous d2e1d8ec13 Kernel: Implement AML NotOp 2024-11-22 22:22:44 +02:00
Bananymous 30ceaa6bef Kernel: Implement AML ToHexStringOp 2024-11-22 22:22:27 +02:00
Bananymous 0247d47a3d Kernel: Make USBMassStorage send_scsi_command templated
This allows passing ConstByteSpan when data will not be modified
2024-11-22 22:21:19 +02:00