Newer
Older
tree-os / src / kernel / drivers / pci / hardDrive / hardDrive.c
#include <alloc.h>
#include <fileSystem.h>
#include <hardDrive.h>
#include <pci.h>
#include <ports.h>
#include <stdio.h>

extern void accessAHCIDrive(HardDrive *drive, uint64_t lba, void *buffer,
                            uint16_t count, uint8_t direction);
void scanHardDrives() {
    ListElement *drives = NULL;
    for (ListElement *current = *getPciDevices(); current;
         current = current->next) {
        PciDevice *pciDevice = current->data;
        if (pciDevice->class != 1) {
            continue;
        }
        switch (pciDevice->subclass) {
        case 1:
            initializeIdeController(pciDevice, &drives);
            break;
        case 6:
            initializeSataController(pciDevice, &drives);
            break;
        }
    }
    mountDisk(listGet(&drives, 1));
}