[v0.11] Adding uarch backend for intel iGPUs
This commit is contained in:
@@ -2,33 +2,39 @@
|
||||
#include "pci.hpp"
|
||||
#include <cstddef>
|
||||
|
||||
/*
|
||||
* doc: https://wiki.osdev.org/PCI#Class_Codes
|
||||
* https://pci-ids.ucw.cz/read/PC
|
||||
*/
|
||||
#define VENDOR_ID_NVIDIA 0x10de
|
||||
#define CLASS_VGA_CONTROLLER 0x0300
|
||||
|
||||
uint16_t pciutils_get_pci_vendor_id(struct pci_dev *devices) {
|
||||
uint16_t pciutils_get_pci_vendor_id(struct pci_dev *devices, int id) {
|
||||
for(struct pci_dev *dev=devices; dev != NULL; dev=dev->next) {
|
||||
if(dev->vendor_id == VENDOR_ID_NVIDIA && dev->device_class == CLASS_VGA_CONTROLLER) {
|
||||
if(dev->vendor_id == id && dev->device_class == CLASS_VGA_CONTROLLER) {
|
||||
return dev->vendor_id;
|
||||
}
|
||||
}
|
||||
printErr("Unable to find a CUDA device using pciutils");
|
||||
|
||||
printErr("Unable to find a valid device for id %d using pciutils", id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t pciutils_get_pci_device_id(struct pci_dev *devices) {
|
||||
uint16_t pciutils_get_pci_device_id(struct pci_dev *devices, int id) {
|
||||
for(struct pci_dev *dev=devices; dev != NULL; dev=dev->next) {
|
||||
if(dev->vendor_id == VENDOR_ID_NVIDIA && dev->device_class == CLASS_VGA_CONTROLLER) {
|
||||
if(dev->vendor_id == id && dev->device_class == CLASS_VGA_CONTROLLER) {
|
||||
return dev->device_id;
|
||||
}
|
||||
}
|
||||
printErr("Unable to find a CUDA device using pciutils");
|
||||
|
||||
printErr("Unable to find a valid device for id %d using pciutils", id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct pci* get_pci_from_pciutils(struct pci_dev *devices, int id) {
|
||||
struct pci* pci = (struct pci*) emalloc(sizeof(struct pci));
|
||||
|
||||
pci->vendor_id = pciutils_get_pci_vendor_id(devices, id);
|
||||
pci->device_id = pciutils_get_pci_device_id(devices, id);
|
||||
|
||||
return pci;
|
||||
}
|
||||
|
||||
struct pci_dev *get_pci_devices_from_pciutils() {
|
||||
struct pci_access *pacc;
|
||||
struct pci_dev *dev;
|
||||
|
||||
Reference in New Issue
Block a user