[v0.11] Fetch and print max Intel iGPU frequency using sysfs
This commit is contained in:
@@ -26,11 +26,29 @@ uint16_t pciutils_get_pci_device_id(struct pci_dev *devices, int id) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void pciutils_set_pci_bus(struct pci* pci, struct pci_dev *devices, int id) {
|
||||
bool found = false;
|
||||
|
||||
for(struct pci_dev *dev=devices; dev != NULL; dev=dev->next) {
|
||||
if(dev->vendor_id == id && dev->device_class == CLASS_VGA_CONTROLLER) {
|
||||
pci->domain = dev->domain;
|
||||
pci->bus = dev->bus;
|
||||
pci->dev = dev->dev;
|
||||
pci->func = dev->func;
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(!found) printErr("Unable to find a valid device for id %d using pciutils", id);
|
||||
}
|
||||
|
||||
struct pci* get_pci_from_pciutils(struct pci_dev *devices, int id) {
|
||||
struct pci* pci = (struct pci*) emalloc(sizeof(struct pci));
|
||||
|
||||
// TODO: Refactor this; instead of 2xGet + 1xSet, do it better
|
||||
pci->vendor_id = pciutils_get_pci_vendor_id(devices, id);
|
||||
pci->device_id = pciutils_get_pci_device_id(devices, id);
|
||||
pciutils_set_pci_bus(pci, devices, id);
|
||||
|
||||
return pci;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,10 @@ extern "C" {
|
||||
struct pci {
|
||||
uint16_t vendor_id;
|
||||
uint16_t device_id;
|
||||
uint16_t domain;
|
||||
uint16_t bus;
|
||||
uint16_t dev;
|
||||
uint16_t func;
|
||||
};
|
||||
|
||||
struct pci* get_pci_from_pciutils(struct pci_dev *devices, int id);
|
||||
|
||||
@@ -371,10 +371,12 @@ bool print_gpufetch_intel(struct gpu_info* gpu, STYLE s, struct color** cs, stru
|
||||
char* gt = get_str_gt(gpu->arch);
|
||||
char* manufacturing_process = get_str_process(gpu->arch);
|
||||
char* eus = get_str_eu(gpu);
|
||||
char* max_frequency = get_str_freq(gpu);
|
||||
|
||||
setAttribute(art, ATTRIBUTE_NAME, gpu_name);
|
||||
setAttribute(art, ATTRIBUTE_UARCH, uarch);
|
||||
setAttribute(art, ATTRIBUTE_TECHNOLOGY, manufacturing_process);
|
||||
setAttribute(art, ATTRIBUTE_FREQUENCY, max_frequency);
|
||||
setAttribute(art, ATTRIBUTE_GT, gt);
|
||||
setAttribute(art, ATTRIBUTE_EUS, eus);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user