Attention is currently required from: Nico Huber, Krishna Prabhakaran, Maulik V Vaghela, Selma Bensaid, Angel Pons, Subrata Banik, Meera Ravindranath, Patrick Rudolph. Furquan Shaikh has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/52758 )
Change subject: drivers/intel/gma: Support IGD Opregion 2.1 ......................................................................
Patch Set 14:
(5 comments)
File src/drivers/intel/gma/opregion.h:
https://review.coreboot.org/c/coreboot/+/52758/comment/6e0bc9f0_5a2ee306 PS14, Line 20: u32 version; I think we should update this to match how kernel (and the spec) defines this:
(https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/i915/display/...)
``` struct { u8 rsvd; u8 revision; u8 minor; u8 major; } __packed over; ```
https://review.coreboot.org/c/coreboot/+/52758/comment/55b5cb48_757468a9 PS14, Line 145: Physical address of Raw VBT data This needs update.
(https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/i915/display/...)
File src/drivers/intel/gma/opregion.c:
https://review.coreboot.org/c/coreboot/+/52758/comment/03016642_bb98db26 PS14, Line 271: if (CONFIG(INTEL_GMA_OPREGION_2_1)) : return 0x201; : : return 0x200; Sorry about the back n forth on this. I think this function should set the individual fields of `over` as commented here https://review.coreboot.org/c/coreboot/+/52758/14/src/drivers/intel/gma/opre...:
``` static void opregion_set_version(igd_opregion_t *opregion) { opregion->over.major = 2; opregion->over.reserved = 0; opregion->over.revision = 0;
if (CONFIG(INTEL_GMA_OPREGION_2_1)) opregion->over.minor = 1; else opregion->over.minor = 0; } ```
https://review.coreboot.org/c/coreboot/+/52758/comment/fb28d39b_c28a8ca3 PS14, Line 288: 2.0 2.1
(https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/i915/display/...)
https://review.coreboot.org/c/coreboot/+/52758/comment/a476d827_e68d457b PS14, Line 290: CONFIG(INTEL_GMA_OPREGION_2_1) With the above change to set version, you don't need to check the config again here. Instead we should check major/minor version:
``` if (opregion->over.major >= 2 && opregion->over.minor >= 1) ```
This will ensure that we don't have to modify this function again when we add support for a new version (which hasn't changed the meaning of rvda).