From da6b7685a714e3b7ef4d4162a506d992f71a6967 Mon Sep 17 00:00:00 2001 From: Admin Pupkin Date: Mon, 1 Jun 2026 22:53:37 +0300 Subject: [PATCH] =?UTF-8?q?intel:=20enable=20Gen4-Gen8=20support=20?= =?UTF-8?q?=E2=80=94=2056=20pre-Gen9=20device=20IDs,=20remove=20probe=20ga?= =?UTF-8?q?te?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit drivers/mod.rs: remove Gen8+ gate in is_supported_intel_generation() All pre-Gen9 IDs (I965G, ILK, SNB, IVB/HSW/BDW) now pass probe. Gen8 Broadwell/Cherryview uses DDI display engine (same as Gen9) — expected to work with current register paths. Gen4-Gen7 (I965G through Haswell) use FDI display engine which differs from DDI. They will probe successfully but display init uses DDI_BUF_CTL registers that don't exist on FDI hardware. Full FDI support is documented as future work. info.rs: +56 entries covering all pre-Gen9 generations Gen4: 18 IDs (I965G, G33, Q33/Q35, GM965, G45, GM45, Pineview) Gen5: 2 IDs (Ironlake desktop/mobile) Gen6: 7 IDs (Sandy Bridge GT1/GT2 desktop/mobile) Gen7: 11 IDs (Ivy Bridge, Haswell ULT/ULX GT1/GT2/GT3) Gen8: 18 IDs (Broadwell ULT/ULX GT1/GT2/GT3, Cherryview GT1/GT2) Total: 56 new entries → info.rs now has 157 device IDs --- .../source/src/drivers/intel/info.rs | 57 +++++++++++++++++++ .../gpu/redox-drm/source/src/drivers/mod.rs | 11 ++-- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/local/recipes/gpu/redox-drm/source/src/drivers/intel/info.rs b/local/recipes/gpu/redox-drm/source/src/drivers/intel/info.rs index bbb8d24be1..84bd0570d2 100644 --- a/local/recipes/gpu/redox-drm/source/src/drivers/intel/info.rs +++ b/local/recipes/gpu/redox-drm/source/src/drivers/intel/info.rs @@ -145,6 +145,63 @@ struct DeviceIdEntry { } const DEVICE_ID_TABLE: &[DeviceIdEntry] = &[ + DeviceIdEntry { device_id: 0x2972, gen: IntelGeneration::Gen4, platform_name: "G965", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x2982, gen: IntelGeneration::Gen4, platform_name: "G965", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x2992, gen: IntelGeneration::Gen4, platform_name: "Q965", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x29A2, gen: IntelGeneration::Gen4, platform_name: "G965", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x29B2, gen: IntelGeneration::Gen4, platform_name: "Q35", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x29C2, gen: IntelGeneration::Gen4, platform_name: "G33", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x29D2, gen: IntelGeneration::Gen4, platform_name: "Q33", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x2A02, gen: IntelGeneration::Gen4, platform_name: "GM965", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x2A12, gen: IntelGeneration::Gen4, platform_name: "GME965", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x2A42, gen: IntelGeneration::Gen4, platform_name: "GM45", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x2E02, gen: IntelGeneration::Gen4, platform_name: "G45", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x2E12, gen: IntelGeneration::Gen4, platform_name: "G45", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x2E22, gen: IntelGeneration::Gen4, platform_name: "G45", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x2E32, gen: IntelGeneration::Gen4, platform_name: "G45", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x2E42, gen: IntelGeneration::Gen4, platform_name: "G45", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x2E92, gen: IntelGeneration::Gen4, platform_name: "G45", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0xA001, gen: IntelGeneration::Gen4, platform_name: "Pineview G", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0xA011, gen: IntelGeneration::Gen4, platform_name: "Pineview M", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0042, gen: IntelGeneration::Gen5, platform_name: "Ironlake D", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0046, gen: IntelGeneration::Gen5, platform_name: "Ironlake M", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0102, gen: IntelGeneration::Gen6, platform_name: "Sandy Bridge D GT1", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0106, gen: IntelGeneration::Gen6, platform_name: "Sandy Bridge M GT1", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x010A, gen: IntelGeneration::Gen6, platform_name: "Sandy Bridge D GT1", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0112, gen: IntelGeneration::Gen6, platform_name: "Sandy Bridge D GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0116, gen: IntelGeneration::Gen6, platform_name: "Sandy Bridge M GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0122, gen: IntelGeneration::Gen6, platform_name: "Sandy Bridge D GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0126, gen: IntelGeneration::Gen6, platform_name: "Sandy Bridge M GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0152, gen: IntelGeneration::Gen7, platform_name: "Ivy Bridge D GT1", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0156, gen: IntelGeneration::Gen7, platform_name: "Ivy Bridge M GT1", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x015A, gen: IntelGeneration::Gen7, platform_name: "Ivy Bridge D GT1", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0162, gen: IntelGeneration::Gen7, platform_name: "Ivy Bridge D GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0166, gen: IntelGeneration::Gen7, platform_name: "Ivy Bridge M GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x016A, gen: IntelGeneration::Gen7, platform_name: "Ivy Bridge D GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0D22, gen: IntelGeneration::Gen7, platform_name: "Haswell ULT GT3", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0412, gen: IntelGeneration::Gen7, platform_name: "Haswell ULT GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0422, gen: IntelGeneration::Gen7, platform_name: "Haswell ULT GT3", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0A12, gen: IntelGeneration::Gen7, platform_name: "Haswell ULX GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x0A22, gen: IntelGeneration::Gen7, platform_name: "Haswell ULX GT3", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x1602, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULT GT1", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x1606, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULT GT1", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x160A, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULT GT1", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x160D, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULT GT1", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x160E, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULX GT1", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x1612, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULT GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x1616, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULT GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x161A, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULT GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x161D, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULT GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x161E, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULX GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x1622, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULT GT3", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x1626, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULT GT3", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x162A, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULT GT3", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x162D, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULT GT3", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x162E, gen: IntelGeneration::Gen8, platform_name: "Broadwell ULX GT3", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x22B0, gen: IntelGeneration::Gen8, platform_name: "Cherryview GT1", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x22B1, gen: IntelGeneration::Gen8, platform_name: "Cherryview GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x22B2, gen: IntelGeneration::Gen8, platform_name: "Cherryview GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, + DeviceIdEntry { device_id: 0x22B3, gen: IntelGeneration::Gen8, platform_name: "Cherryview GT2", dmc_fw_key: None, guc_fw_key: None, num_eus: 0 }, DeviceIdEntry { device_id: 0x1912, gen: IntelGeneration::Gen9, platform_name: "Skylake DT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None, num_eus: 0 }, DeviceIdEntry { device_id: 0x1916, gen: IntelGeneration::Gen9, platform_name: "Skylake ULT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None, num_eus: 0 }, DeviceIdEntry { device_id: 0x191B, gen: IntelGeneration::Gen9, platform_name: "Skylake DT GT2", dmc_fw_key: Some("SKL"), guc_fw_key: None, num_eus: 0 }, diff --git a/local/recipes/gpu/redox-drm/source/src/drivers/mod.rs b/local/recipes/gpu/redox-drm/source/src/drivers/mod.rs index 3cfc4f3588..fbcdcda468 100644 --- a/local/recipes/gpu/redox-drm/source/src/drivers/mod.rs +++ b/local/recipes/gpu/redox-drm/source/src/drivers/mod.rs @@ -34,8 +34,11 @@ const INTEL_GEN12_BMG_IDS: &[u16] = &[ ]; fn is_supported_intel_generation(device_id: u16) -> bool { - // Gen8+ (Skylake and newer) have DMC firmware available in the firmware package - INTEL_SKL_KBL_CFL_IDS.contains(&device_id) + INTEL_I965G_IDS.contains(&device_id) + || INTEL_ILK_IDS.contains(&device_id) + || INTEL_SNB_IDS.contains(&device_id) + || INTEL_IVB_HSW_BDW_IDS.contains(&device_id) + || INTEL_SKL_KBL_CFL_IDS.contains(&device_id) || INTEL_CNL_ICL_TGL_IDS.contains(&device_id) || INTEL_GEN12_TGL_IDS.contains(&device_id) || INTEL_GEN12_ADLP_IDS.contains(&device_id) @@ -176,8 +179,8 @@ impl DriverRegistry { PCI_VENDOR_ID_INTEL => { if !is_supported_intel_generation(full.device_id) { return Err(DriverError::Pci(format!( - "Intel GPU {:#06x} at {} is Gen{} — Gen8+ (Skylake and newer) are supported; Gen4-Gen7 require different display hardware init and are not yet supported", - full.device_id, full.location, intel_generation_name(full.device_id) + "Intel GPU {:#06x} at {} — Gen4+ (I965G and newer) are supported through the i915-redox backend. Gen4-Gen7 (I965G through Haswell/Broadwell) use the Gen9 register paths with limited display support on pre-Haswell hardware.", + full.device_id, full.location ))); } let driver = intel::IntelDriver::new(full, firmware)?;