diff --git a/lib/intel_gpu_tools.h b/lib/intel_gpu_tools.h index 245d1de8..ced84c87 100644 --- a/lib/intel_gpu_tools.h +++ b/lib/intel_gpu_tools.h @@ -92,13 +92,17 @@ uint64_t intel_get_total_swap_mb(void); void intel_map_file(char *); enum pch_type { + PCH_NONE, PCH_IBX, PCH_CPT, + PCH_LPT, }; extern enum pch_type pch; void intel_check_pch(void); +#define HAS_IBX (pch == PCH_IBX) #define HAS_CPT (pch == PCH_CPT) +#define HAS_LPT (pch == PCH_LPT) #endif /* INTEL_GPU_TOOLS_H */ diff --git a/lib/intel_pci.c b/lib/intel_pci.c index 704c87a8..e60e0d32 100644 --- a/lib/intel_pci.c +++ b/lib/intel_pci.c @@ -100,9 +100,24 @@ intel_check_pch(void) if (pch_dev == NULL) return; - if (pch_dev->vendor_id == 0x8086 && - (((pch_dev->device_id & 0xff00) == 0x1c00) || - (pch_dev->device_id & 0xff00) == 0x1e00)) + if (pch_dev->vendor_id != 0x8086) + return; + + switch (pch_dev->device_id & 0xff00) { + case 0x3b00: + pch = PCH_IBX; + break; + case 0x1c00: + case 0x1e00: pch = PCH_CPT; + break; + case 0x8c00: + case 0x9c00: + pch = PCH_LPT; + break; + default: + pch = PCH_NONE; + return; + } }