[Intel-gfx] [PATCH 2/3] drm/i915: Flip VBT DDC pin maps around
Gustavo Sousa
gustavo.sousa at intel.com
Tue May 9 18:18:52 UTC 2023
Quoting Ville Syrjala (2023-05-09 13:02:05)
>From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
>Swap the roles of the index vs. value for the VBT DDC pin
>mapping tables. This is not strictly necessary for DDC pins
>but it will make this work exactly like the AUX CH mapping
>tables where the role reversal is necessary (or at least makes
>things easier). Consistency is good.
>
>Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
Reviewed-by: Gustavo Sousa <gustavo.sousa at intel.com>
>---
> drivers/gpu/drm/i915/display/intel_bios.c | 70 ++++++++++++-----------
> 1 file changed, 36 insertions(+), 34 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>index c77d40535fc4..ac0fc1993376 100644
>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>@@ -2141,58 +2141,58 @@ static u8 translate_iboost(u8 val)
>
> static const u8 cnp_ddc_pin_map[] = {
> [0] = 0, /* N/A */
>- [DDC_BUS_DDI_B] = GMBUS_PIN_1_BXT,
>- [DDC_BUS_DDI_C] = GMBUS_PIN_2_BXT,
>- [DDC_BUS_DDI_D] = GMBUS_PIN_4_CNP, /* sic */
>- [DDC_BUS_DDI_F] = GMBUS_PIN_3_BXT, /* sic */
>+ [GMBUS_PIN_1_BXT] = DDC_BUS_DDI_B,
>+ [GMBUS_PIN_2_BXT] = DDC_BUS_DDI_C,
>+ [GMBUS_PIN_4_CNP] = DDC_BUS_DDI_D, /* sic */
>+ [GMBUS_PIN_3_BXT] = DDC_BUS_DDI_F, /* sic */
> };
>
> static const u8 icp_ddc_pin_map[] = {
>- [ICL_DDC_BUS_DDI_A] = GMBUS_PIN_1_BXT,
>- [ICL_DDC_BUS_DDI_B] = GMBUS_PIN_2_BXT,
>- [TGL_DDC_BUS_DDI_C] = GMBUS_PIN_3_BXT,
>- [ICL_DDC_BUS_PORT_1] = GMBUS_PIN_9_TC1_ICP,
>- [ICL_DDC_BUS_PORT_2] = GMBUS_PIN_10_TC2_ICP,
>- [ICL_DDC_BUS_PORT_3] = GMBUS_PIN_11_TC3_ICP,
>- [ICL_DDC_BUS_PORT_4] = GMBUS_PIN_12_TC4_ICP,
>- [TGL_DDC_BUS_PORT_5] = GMBUS_PIN_13_TC5_TGP,
>- [TGL_DDC_BUS_PORT_6] = GMBUS_PIN_14_TC6_TGP,
>+ [GMBUS_PIN_1_BXT] = ICL_DDC_BUS_DDI_A,
>+ [GMBUS_PIN_2_BXT] = ICL_DDC_BUS_DDI_B,
>+ [GMBUS_PIN_3_BXT] = TGL_DDC_BUS_DDI_C,
>+ [GMBUS_PIN_9_TC1_ICP] = ICL_DDC_BUS_PORT_1,
>+ [GMBUS_PIN_10_TC2_ICP] = ICL_DDC_BUS_PORT_2,
>+ [GMBUS_PIN_11_TC3_ICP] = ICL_DDC_BUS_PORT_3,
>+ [GMBUS_PIN_12_TC4_ICP] = ICL_DDC_BUS_PORT_4,
>+ [GMBUS_PIN_13_TC5_TGP] = TGL_DDC_BUS_PORT_5,
>+ [GMBUS_PIN_14_TC6_TGP] = TGL_DDC_BUS_PORT_6,
> };
>
> static const u8 rkl_pch_tgp_ddc_pin_map[] = {
>- [ICL_DDC_BUS_DDI_A] = GMBUS_PIN_1_BXT,
>- [ICL_DDC_BUS_DDI_B] = GMBUS_PIN_2_BXT,
>- [RKL_DDC_BUS_DDI_D] = GMBUS_PIN_9_TC1_ICP,
>- [RKL_DDC_BUS_DDI_E] = GMBUS_PIN_10_TC2_ICP,
>+ [GMBUS_PIN_1_BXT] = ICL_DDC_BUS_DDI_A,
>+ [GMBUS_PIN_2_BXT] = ICL_DDC_BUS_DDI_B,
>+ [GMBUS_PIN_9_TC1_ICP] = RKL_DDC_BUS_DDI_D,
>+ [GMBUS_PIN_10_TC2_ICP] = RKL_DDC_BUS_DDI_E,
> };
>
> static const u8 adls_ddc_pin_map[] = {
>- [ICL_DDC_BUS_DDI_A] = GMBUS_PIN_1_BXT,
>- [ADLS_DDC_BUS_PORT_TC1] = GMBUS_PIN_9_TC1_ICP,
>- [ADLS_DDC_BUS_PORT_TC2] = GMBUS_PIN_10_TC2_ICP,
>- [ADLS_DDC_BUS_PORT_TC3] = GMBUS_PIN_11_TC3_ICP,
>- [ADLS_DDC_BUS_PORT_TC4] = GMBUS_PIN_12_TC4_ICP,
>+ [GMBUS_PIN_1_BXT] = ICL_DDC_BUS_DDI_A,
>+ [GMBUS_PIN_9_TC1_ICP] = ADLS_DDC_BUS_PORT_TC1,
>+ [GMBUS_PIN_10_TC2_ICP] = ADLS_DDC_BUS_PORT_TC2,
>+ [GMBUS_PIN_11_TC3_ICP] = ADLS_DDC_BUS_PORT_TC3,
>+ [GMBUS_PIN_12_TC4_ICP] = ADLS_DDC_BUS_PORT_TC4,
> };
>
> static const u8 gen9bc_tgp_ddc_pin_map[] = {
>- [DDC_BUS_DDI_B] = GMBUS_PIN_2_BXT,
>- [DDC_BUS_DDI_C] = GMBUS_PIN_9_TC1_ICP,
>- [DDC_BUS_DDI_D] = GMBUS_PIN_10_TC2_ICP,
>+ [GMBUS_PIN_2_BXT] = DDC_BUS_DDI_B,
>+ [GMBUS_PIN_9_TC1_ICP] = DDC_BUS_DDI_C,
>+ [GMBUS_PIN_10_TC2_ICP] = DDC_BUS_DDI_D,
> };
>
> static const u8 adlp_ddc_pin_map[] = {
>- [ICL_DDC_BUS_DDI_A] = GMBUS_PIN_1_BXT,
>- [ICL_DDC_BUS_DDI_B] = GMBUS_PIN_2_BXT,
>- [ADLP_DDC_BUS_PORT_TC1] = GMBUS_PIN_9_TC1_ICP,
>- [ADLP_DDC_BUS_PORT_TC2] = GMBUS_PIN_10_TC2_ICP,
>- [ADLP_DDC_BUS_PORT_TC3] = GMBUS_PIN_11_TC3_ICP,
>- [ADLP_DDC_BUS_PORT_TC4] = GMBUS_PIN_12_TC4_ICP,
>+ [GMBUS_PIN_1_BXT] = ICL_DDC_BUS_DDI_A,
>+ [GMBUS_PIN_2_BXT] = ICL_DDC_BUS_DDI_B,
>+ [GMBUS_PIN_9_TC1_ICP] = ADLP_DDC_BUS_PORT_TC1,
>+ [GMBUS_PIN_10_TC2_ICP] = ADLP_DDC_BUS_PORT_TC2,
>+ [GMBUS_PIN_11_TC3_ICP] = ADLP_DDC_BUS_PORT_TC3,
>+ [GMBUS_PIN_12_TC4_ICP] = ADLP_DDC_BUS_PORT_TC4,
> };
>
> static u8 map_ddc_pin(struct drm_i915_private *i915, u8 vbt_pin)
> {
> const u8 *ddc_pin_map;
>- int n_entries;
>+ int i, n_entries;
>
> if (HAS_PCH_MTP(i915) || IS_ALDERLAKE_P(i915)) {
> ddc_pin_map = adlp_ddc_pin_map;
>@@ -2219,8 +2219,10 @@ static u8 map_ddc_pin(struct drm_i915_private *i915, u8 vbt_pin)
> return vbt_pin;
> }
>
>- if (vbt_pin < n_entries && ddc_pin_map[vbt_pin] != 0)
>- return ddc_pin_map[vbt_pin];
>+ for (i = 0; i < n_entries; i++) {
>+ if (ddc_pin_map[i] == vbt_pin)
>+ return i;
>+ }
>
> drm_dbg_kms(&i915->drm,
> "Ignoring alternate pin: VBT claims DDC pin %d, which is not valid for this platform\n",
>--
>2.39.2
>
More information about the Intel-gfx
mailing list