Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915/vbt: Add eDP Data rate overrride field in VBT

Add edp_data_rate_override field VBT which gives us a mask
of rates which needs to be skipped in favour of
subsequent higher rate.

--v2
-Rename vbt field [Jani]
-Fix comment to 263+ [Jani]
-Use BIT_U32 [Jani]
-Fix the bits assignment in vbt [Jani]

--v3
-Add a mask which represents all link rates [Ankit]

Bspec: 20124
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Link: https://lore.kernel.org/r/20250821042653.269227-2-suraj.kandpal@intel.com

+21 -1
+3 -1
drivers/gpu/drm/i915/display/intel_bios.c
··· 2748 2748 { 2749 2749 BUILD_BUG_ON(sizeof(struct child_device_config) < 40); 2750 2750 2751 - if (version > 256) 2751 + if (version > 263) 2752 2752 return -ENOENT; 2753 + else if (version >= 263) 2754 + return 44; 2753 2755 else if (version >= 256) 2754 2756 return 40; 2755 2757 else if (version >= 216)
+18
drivers/gpu/drm/i915/display/intel_vbt_defs.h
··· 437 437 #define BDB_230_VBT_DP_MAX_LINK_RATE_UHBR13P5 6 438 438 #define BDB_230_VBT_DP_MAX_LINK_RATE_UHBR20 7 439 439 440 + /* EDP link rate 263+ */ 441 + #define BDB_263_VBT_EDP_LINK_RATE_1_62 BIT_U32(0) 442 + #define BDB_263_VBT_EDP_LINK_RATE_2_16 BIT_U32(1) 443 + #define BDB_263_VBT_EDP_LINK_RATE_2_43 BIT_U32(2) 444 + #define BDB_263_VBT_EDP_LINK_RATE_2_7 BIT_U32(3) 445 + #define BDB_263_VBT_EDP_LINK_RATE_3_24 BIT_U32(4) 446 + #define BDB_263_VBT_EDP_LINK_RATE_4_32 BIT_U32(5) 447 + #define BDB_263_VBT_EDP_LINK_RATE_5_4 BIT_U32(6) 448 + #define BDB_263_VBT_EDP_LINK_RATE_6_75 BIT_U32(7) 449 + #define BDB_263_VBT_EDP_LINK_RATE_8_1 BIT_U32(8) 450 + #define BDB_263_VBT_EDP_LINK_RATE_10 BIT_U32(9) 451 + #define BDB_263_VBT_EDP_LINK_RATE_13_5 BIT_U32(10) 452 + #define BDB_263_VBT_EDP_LINK_RATE_20 BIT_U32(11) 453 + #define BDB_263_VBT_EDP_NUM_RATES 12 454 + #define BDB_263_VBT_EDP_RATES_MASK GENMASK(BDB_263_VBT_EDP_NUM_RATES - 1, 0) 455 + 440 456 /* 441 457 * The child device config, aka the display device data structure, provides a 442 458 * description of a port and its configuration on the platform. ··· 563 547 u8 dp_max_link_rate:3; /* 216+ */ 564 548 u8 dp_max_link_rate_reserved:5; /* 216+ */ 565 549 u8 efp_index; /* 256+ */ 550 + u32 edp_data_rate_override:12; /* 263+ */ 551 + u32 edp_data_rate_override_reserved:20; /* 263+ */ 566 552 } __packed; 567 553 568 554 struct bdb_general_definitions {