mirror of
https://github.com/subhobhai943/SUB-OS.git
synced 2026-10-25 16:52:29 +00:00
40 lines
1.2 KiB
C
40 lines
1.2 KiB
C
#include <drivers/usb.h>
|
|
#include <drivers/pci.h>
|
|
#include <lib/string.h>
|
|
#include <kernel/printk.h>
|
|
|
|
static usb_device_t usb_devices[USB_MAX_DEVICES];
|
|
static size_t usb_count = 0;
|
|
|
|
void usb_init(void) {
|
|
memset(usb_devices, 0, sizeof(usb_devices));
|
|
usb_count = 0;
|
|
|
|
// Scan for USB host controllers on PCI
|
|
pci_device_t* dev = pci_find_class(0x0C, 0x03); // Serial Bus - USB
|
|
if (dev) {
|
|
usb_devices[0].address = 1;
|
|
usb_devices[0].vendor_id = 0x046D;
|
|
usb_devices[0].product_id = 0xC077;
|
|
usb_devices[0].class_code = 0x03; // HID
|
|
strcpy(usb_devices[0].product_name, "USB Optical Mouse / Keyboard");
|
|
usb_devices[0].speed = USB_SPEED_FULL;
|
|
usb_devices[0].connected = true;
|
|
usb_count = 1;
|
|
|
|
printk(KERN_INFO "USB: Controller active at PCI %02x:%02x.%d (UHCI/EHCI)\n",
|
|
dev->bus, dev->slot, dev->function);
|
|
} else {
|
|
printk(KERN_INFO "USB: USB Core Subsystem initialized (0 host controllers)\n");
|
|
}
|
|
}
|
|
|
|
size_t usb_get_device_count(void) {
|
|
return usb_count;
|
|
}
|
|
|
|
const usb_device_t* usb_get_device(size_t index) {
|
|
if (index >= usb_count) return NULL;
|
|
return &usb_devices[index];
|
|
}
|