| #include <dri/ide/ide.h> |
| #include <task.h> |
| #include <alloc.h> |
| #include <log.h> |
| |
| struct ide_thread_data |
| { |
| struct pci_device dev; |
| uchar bus, slot, func; |
| }; |
| |
| bool ide_supports(struct pci_device *dev) |
| { |
| return dev->class == 1 && dev->subclass == 1; |
| } |
| |
| void ide_thread(struct ide_thread_data *data) |
| { |
| kprintf("IDE driver thread starting: device=0x%x\n", data->dev.device_id); |
| } |
| |
| void ide_init(struct pci_device dev, uchar bus, uchar slot, uchar func) |
| { |
| struct ide_thread_data *data = malloc(sizeof(struct ide_thread_data)); |
| data->dev = dev; |
| data->bus = bus; |
| data->slot = slot; |
| data->func = func; |
| |
| spawn_thread(TASK_FUNCTION(ide_thread), data); |
| } |
| |
| void ide_register() |
| { |
| struct pci_device_driver dri = |
| { |
| .supports = ide_supports, |
| .init = ide_init, |
| .generic_name = "IDE Controller", |
| }; |
| |
| pci_register_device_driver(dri); |
| } |