drm/i915/bios: VBT parsing fixes and cleanups
Subsystems (3)
cover drm/i915/bios: VBT parsing fixes and cleanups
More VBT parsing fixes and refactoring.
BR,
Jani.
Jani Nikula (8):
drm/i915/bios: parse DDI ports also for CHV for HDMI DDC pin and DP
AUX channel
drm/i915/bios: refactor parse general definitions drm/i915/bios: don't initialize fields based on vbt version drm/i915/bios: remove an unnecessary temp variable drm/i915/bios: cleanup comments and useless return drm/i915/bios: merge parse_device_mapping() into
parse_general_definitions()
drm/i915/bios: parse SDVO device mapping from pre-parsed child devices drm/i915/bios: don't pass bdb to parsers that don't parse VBT directly
drivers/gpu/drm/i915/intel_bios.c | 130 ++++++++++++-------------------------- 1 file changed, 41 insertions(+), 89 deletions(-)
Signature · 6 lines
2.11.0 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 1/8 drm/i915/bios: parse DDI ports also for CHV for HDMI DDC pin and DP AUX channel
While technically CHV isn't DDI, we do look at the VBT based DDI port info for HDMI DDC pin and DP AUX channel. (We call these "alternate", but they're really just something that aren't platform defaults.)
In commit e4ab73a13291 ("drm/i915: Respect alternate_ddc_pin for all DDI ports") Ville writes, "IIRC there may be CHV system that might actually need this."
I'm not sure why there couldn't be even more platforms that need this, but start conservative, and parse the info for CHV in addition to DDI.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100553
--- drivers/gpu/drm/i915/intel_bios.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/i915/intel_bios.c +1 -1
@@ -1247,7 +1247,7 @@ static void parse_ddi_ports(struct drm_i915_private *dev_priv, {enum port port; -if (!HAS_DDI (dev_priv)) +if (!HAS_DDI (dev_priv) && !IS_CHERRYVIEW (dev_priv))return ;if (!dev_priv->vbt.child_dev_num)
Signature · 1 line
2.11.0
PATCH 2/8 drm/i915/bios: refactor parse general definitions
In reply to Jani NikulaEarly return on failures. Rename the variable for later merging with parse_device_mappings().
--- drivers/gpu/drm/i915/intel_bios.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-)
drivers/gpu/drm/i915/intel_bios.c +20 -14
@@ -435,21 +435,27 @@ static void parse_general_definitions(struct drm_i915_private *dev_priv, const struct bdb_header *bdb) { - const struct bdb_general_definitions *general; - - general =find_section (bdb,BDB_GENERAL_DEFINITIONS ); -if (general) { -u16 block_size =get_blocksize (general); -if (block_size >=sizeof (*general)) { -int bus_pin = general->crt_ddc_gmbus_pin; -DRM_DEBUG_KMS ("crt_ddc_bus_pin: %d\n" , bus_pin); -if (intel_gmbus_is_valid_pin (dev_priv, bus_pin)) - dev_priv->vbt.crt_ddc_pin = bus_pin; - }else { -DRM_DEBUG_KMS ("BDB_GD too small (%d). Invalid.\n" , - block_size); - } + const struct bdb_general_definitions *defs; +u16 block_size; +int bus_pin; + + defs =find_section (bdb,BDB_GENERAL_DEFINITIONS ); +if (!defs) { +DRM_DEBUG_KMS ("General definitions block not found\n" ); +return ; + } + + block_size =get_blocksize (defs); +if (block_size <sizeof (*defs)) { +DRM_DEBUG_KMS ("General definitions block too small (%u)\n" , + block_size); +return ; } + + bus_pin = defs->crt_ddc_gmbus_pin; +DRM_DEBUG_KMS ("crt_ddc_bus_pin: %d\n" , bus_pin); +if (intel_gmbus_is_valid_pin (dev_priv, bus_pin)) + dev_priv->vbt.crt_ddc_pin = bus_pin; } static const struct child_device_config *
Signature · 6 lines
2.11.0 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 3/8 drm/i915/bios: don't initialize fields based on vbt version
In reply to Jani NikulaIn theory, these might clobber information for older VBT versions.
We might have to store the BDB version for later parsing, but currently all code accessing these fields will only use them on newer platforms with new enough BDB versions.
--- drivers/gpu/drm/i915/intel_bios.c | 13 ------------- 1 file changed, 13 deletions(-)
drivers/gpu/drm/i915/intel_bios.c +0 -13
@@ -1354,19 +1354,6 @@ parse_device_mapping(struct drm_i915_private *dev_priv,*/ memcpy (child_dev_ptr, child,min_t (size_t, defs->child_dev_size,sizeof (*child))); - -/* -* copied full block, now init values when they are not -* available in current version -*/ -if (bdb->version <196 ) { -/* Set default values for bits added from v196 */ - child_dev_ptr->iboost =0 ; - child_dev_ptr->hpd_invert =0 ; - } - -if (bdb->version <192 ) - child_dev_ptr->lspcon =0 ; }return ; }
Signature · 6 lines
2.11.0 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 4/8 drm/i915/bios: remove an unnecessary temp variable
In reply to Jani NikulaPrepare for merging parse_device_mapping() into parse_general_definitions(). No functional changes.
--- drivers/gpu/drm/i915/intel_bios.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-)
drivers/gpu/drm/i915/intel_bios.c +2 -5
@@ -1272,7 +1272,6 @@ parse_device_mapping(struct drm_i915_private *dev_priv, {const struct bdb_general_definitions *defs;const struct child_device_config *child; -struct child_device_config *child_dev_ptr;int i, child_device_num, count;u8 expected_size;u16 block_size;
@@ -1344,16 +1343,14 @@ parse_device_mapping(struct drm_i915_private *dev_priv,continue ; } - child_dev_ptr = dev_priv->vbt.child_dev + count; - count++; -/* * Copy as much as we know (sizeof) and is available * (child_dev_size) of the child device. Accessing the data must * depend on VBT version. */ -memcpy (child_dev_ptr, child, +memcpy (dev_priv->vbt.child_dev + count, child,min_t (size_t, defs->child_dev_size,sizeof (*child))); + count++; }return ; }
Signature · 6 lines
2.11.0 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 5/8 drm/i915/bios: cleanup comments and useless return
In reply to Jani Nikula--- drivers/gpu/drm/i915/intel_bios.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-)
drivers/gpu/drm/i915/intel_bios.c +2 -7
@@ -1318,10 +1318,8 @@ parse_device_mapping(struct drm_i915_private *dev_priv,/* get the number of child device that is present */ for (i =0 ; i < child_device_num; i++) { child =child_device_ptr (defs, i); -if (!child->device_type) { -/* skip the device block if device type is invalid */ +if (!child->device_type)continue ; - } count++; }if (!count) {
@@ -1338,10 +1336,8 @@ parse_device_mapping(struct drm_i915_private *dev_priv, count =0 ;for (i =0 ; i < child_device_num; i++) { child =child_device_ptr (defs, i); -if (!child->device_type) { -/* skip the device block if device type is invalid */ +if (!child->device_type)continue ; - }/* * Copy as much as we know (sizeof) and is available
@@ -1352,7 +1348,6 @@ parse_device_mapping(struct drm_i915_private *dev_priv, min_t(size_t, defs->child_dev_size, sizeof(*child))); count++; } -return ; }/* Common defaults which may be overridden by VBT. */
Signature · 6 lines
2.11.0 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 6/8 drm/i915/bios: merge parse_device_mapping() into parse_general_definitions()
In reply to Jani NikulaThey're both parsing the same block, and there's no need for them to be split. The former also benefits from the range checks in the latter.
--- drivers/gpu/drm/i915/intel_bios.c | 48 +++++++++++++-------------------------- 1 file changed, 16 insertions(+), 32 deletions(-)
drivers/gpu/drm/i915/intel_bios.c +16 -32
@@ -431,33 +431,6 @@ parse_general_features(struct drm_i915_private *dev_priv, dev_priv->vbt.fdi_rx_polarity_inverted); } -static void -parse_general_definitions (struct drm_i915_private *dev_priv, -const struct bdb_header *bdb) -{ -const struct bdb_general_definitions *defs; -u16 block_size; -int bus_pin; - - defs =find_section (bdb,BDB_GENERAL_DEFINITIONS ); -if (!defs) { -DRM_DEBUG_KMS ("General definitions block not found\n" ); -return ; - } - - block_size =get_blocksize (defs); -if (block_size <sizeof (*defs)) { -DRM_DEBUG_KMS ("General definitions block too small (%u)\n" , - block_size); -return ; - } - - bus_pin = defs->crt_ddc_gmbus_pin; -DRM_DEBUG_KMS ("crt_ddc_bus_pin: %d\n" , bus_pin); -if (intel_gmbus_is_valid_pin (dev_priv, bus_pin)) - dev_priv->vbt.crt_ddc_pin = bus_pin; -} -static const struct child_device_config *child_device_ptr (const struct bdb_general_definitions *defs,int i) {
@@ -1267,20 +1240,34 @@ static void parse_ddi_ports(struct drm_i915_private *dev_priv, }static void -parse_device_mapping (struct drm_i915_private *dev_priv, -const struct bdb_header *bdb) +parse_general_definitions (struct drm_i915_private *dev_priv, +const struct bdb_header *bdb) {const struct bdb_general_definitions *defs;const struct child_device_config *child;int i, child_device_num, count;u8 expected_size;u16 block_size; +int bus_pin; defs =find_section (bdb,BDB_GENERAL_DEFINITIONS );if (!defs) {DRM_DEBUG_KMS ("No general definition block is found, no devices defined.\n" );return ; } + + block_size =get_blocksize (defs); +if (block_size <sizeof (*defs)) { +DRM_DEBUG_KMS ("General definitions block too small (%u)\n" , + block_size); +return ; + } + + bus_pin = defs->crt_ddc_gmbus_pin; +DRM_DEBUG_KMS ("crt_ddc_bus_pin: %d\n" , bus_pin); +if (intel_gmbus_is_valid_pin (dev_priv, bus_pin)) + dev_priv->vbt.crt_ddc_pin = bus_pin; +if (bdb->version <106 ) { expected_size =22 ; }else if (bdb->version <111 ) {
@@ -1310,8 +1297,6 @@ parse_device_mapping(struct drm_i915_private *dev_priv,return ; } -/* get the block size of general definitions */ - block_size =get_blocksize (defs);/* get the number of child device */ child_device_num = (block_size -sizeof (*defs)) / defs->child_dev_size; count =0 ;
@@ -1529,7 +1514,6 @@ void intel_bios_init(struct drm_i915_private *dev_priv)parse_lfp_backlight (dev_priv, bdb);parse_sdvo_panel_data (dev_priv, bdb);parse_sdvo_device_mapping (dev_priv, bdb); -parse_device_mapping (dev_priv, bdb);parse_driver_features (dev_priv, bdb);parse_edp (dev_priv, bdb);parse_psr (dev_priv, bdb);
Signature · 6 lines
2.11.0 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 7/8 drm/i915/bios: parse SDVO device mapping from pre-parsed child devices
In reply to Jani NikulaWe parse and store the child devices in parse_general_definitions(). There is no need to parse the VBT block again for SDVO device mapping. Do the same as we do in parse_ddi_ports().
We no longer have access to child device size at this stage, but we also don't need to worry about reading past the child device anymore. Instead of a child device size check, do a mild optimization by limiting the parsing to gens 3 through 7.
--- drivers/gpu/drm/i915/intel_bios.c | 39 ++++++++++++--------------------------- 1 file changed, 12 insertions(+), 27 deletions(-)
drivers/gpu/drm/i915/intel_bios.c +12 -27
@@ -442,37 +442,21 @@ parse_sdvo_device_mapping(struct drm_i915_private *dev_priv, const struct bdb_header *bdb) {struct sdvo_device_mapping *mapping; -const struct bdb_general_definitions *defs;const struct child_device_config *child; -int i, child_device_num, count; -u16 block_size; - - defs =find_section (bdb,BDB_GENERAL_DEFINITIONS ); -if (!defs) { -DRM_DEBUG_KMS ("No general definition block is found, unable to construct sdvo mapping.\n" ); -return ; - } +int i, count =0 ;/* -* Only parse SDVO mappings when the general definitions block child -* device size matches that of the *legacy* child device config -* struct. Thus, SDVO mapping will be skipped for newer VBT. +* Only parse SDVO mappings on gens that could have SDVO. This isn't +* accurate and doesn't have to be, as long as it's not too strict. */ -if (defs->child_dev_size !=LEGACY_CHILD_DEVICE_CONFIG_SIZE ) { -DRM_DEBUG_KMS ("Unsupported child device size for SDVO mapping.\n" ); +if (!IS_GEN (dev_priv,3 ,7 )) { +DRM_DEBUG_KMS ("Skipping SDVO device mapping\n" );return ; } -/* get the block size of general definitions */ - block_size =get_blocksize (defs); -/* get the number of child device */ - child_device_num = (block_size -sizeof (*defs)) / defs->child_dev_size; - count =0 ; -for (i =0 ; i < child_device_num; i++) { - child =child_device_ptr (defs, i); -if (!child->device_type) { -/* skip the device block if device type is invalid */ -continue ; - } + +for (i =0 , count =0 ; i < dev_priv->vbt.child_dev_num; i++) { + child = dev_priv->vbt.child_dev + i; +if (child->slave_addr !=SLAVE_ADDR1 && child->slave_addr !=SLAVE_ADDR2 ) {/*
@@ -523,7 +507,6 @@ parse_sdvo_device_mapping(struct drm_i915_private *dev_priv,/* No SDVO device info is found */ DRM_DEBUG_KMS ("No SDVO device info is found in VBT\n" ); } -return ; } static void
@@ -1513,12 +1496,14 @@ void intel_bios_init(struct drm_i915_private *dev_priv)parse_lfp_panel_data (dev_priv, bdb);parse_lfp_backlight (dev_priv, bdb);parse_sdvo_panel_data (dev_priv, bdb); -parse_sdvo_device_mapping (dev_priv, bdb);parse_driver_features (dev_priv, bdb);parse_edp (dev_priv, bdb);parse_psr (dev_priv, bdb);parse_mipi_config (dev_priv, bdb);parse_mipi_sequence (dev_priv, bdb); + +/* Further processing on pre-parsed data */ +parse_sdvo_device_mapping (dev_priv, bdb);parse_ddi_ports (dev_priv, bdb); out:
Signature · 6 lines
2.11.0 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
PATCH 8/8 drm/i915/bios: don't pass bdb to parsers that don't parse VBT directly
In reply to Jani NikulaHint that you're not supposed to look at VBT in these functions.
--- drivers/gpu/drm/i915/intel_bios.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-)
drivers/gpu/drm/i915/intel_bios.c +9 -11
@@ -438,8 +438,7 @@ child_device_ptr(const struct bdb_general_definitions *defs, int i) }static void -parse_sdvo_device_mapping (struct drm_i915_private *dev_priv, -const struct bdb_header *bdb) +parse_sdvo_device_mapping (struct drm_i915_private *dev_priv,u8 bdb_version) {struct sdvo_device_mapping *mapping;const struct child_device_config *child;
@@ -1073,7 +1072,7 @@ static void sanitize_aux_ch(struct drm_i915_private *dev_priv, }static void parse_ddi_port (struct drm_i915_private *dev_priv,enum port port, -const struct bdb_header *bdb) +u8 bdb_version) {struct child_device_config *it, *child =NULL ;struct ddi_vbt_port_info *info = &dev_priv->vbt.ddi_port_info[port];
@@ -1184,7 +1183,7 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv, enum port port,sanitize_aux_ch (dev_priv, port); } -if (bdb->version >=158 ) { +if (bdb_version >=158 ) {/* The VBT HDMI level shift values match the table we have. */ hdmi_level_shift = child->hdmi_level_shifter_value; DRM_DEBUG_KMS("VBT HDMI level shift for port %c: %d\n",
@@ -1194,7 +1193,7 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv, enum port port, }/* Parse the I_boost config for SKL and above */ -if (bdb->version >=196 && child->iboost) { +if (bdb_version >=196 && child->iboost) { info->dp_boost_level =translate_iboost (child->dp_iboost_level);DRM_DEBUG_KMS ("VBT (e)DP boost level for port %c: %d\n" ,port_name (port), info->dp_boost_level);
@@ -1204,8 +1203,7 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv, enum port port, } } -static void parse_ddi_ports (struct drm_i915_private *dev_priv, -const struct bdb_header *bdb) +static void parse_ddi_ports (struct drm_i915_private *dev_priv,u8 bdb_version) {enum port port;
@@ -1215,11 +1213,11 @@ static void parse_ddi_ports(struct drm_i915_private *dev_priv,if (!dev_priv->vbt.child_dev_num)return ; -if (bdb->version <155 ) +if (bdb_version <155 )return ;for (port =PORT_A ; port <I915_MAX_PORTS ; port++) -parse_ddi_port (dev_priv, port, bdb); +parse_ddi_port (dev_priv, port, bdb_version); } static void
@@ -1503,8 +1501,8 @@ void intel_bios_init(struct drm_i915_private *dev_priv)parse_mipi_sequence (dev_priv, bdb);/* Further processing on pre-parsed data */ -parse_sdvo_device_mapping (dev_priv, bdb); -parse_ddi_ports (dev_priv, bdb); +parse_sdvo_device_mapping (dev_priv, bdb->version); +parse_ddi_ports (dev_priv, bdb->version); out:if (!vbt) {
Signature · 6 lines
2.11.0 _______________________________________________ Intel-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✓ Fi.CI.BAT: success for drm/i915/bios: VBT parsing fixes and cleanups
In reply to Jani Nikula== Series Details ==
== Series Details ==
Series: drm/i915/bios: VBT parsing fixes and cleanups
URL : https://patchwork.freedesktop.org/series/31051/
State : success
== Summary ==
Series 31051v1 drm/i915/bios: VBT parsing fixes and cleanups
https://patchwork.freedesktop.org/api/1.0/series/31051/revisions/1/mbox/
Test drv_module_reload:
Subgroup basic-reload-inject:
pass -> DMESG-WARN (fi-glk-1) fdo#102777fdo#102777 https://bugs.freedesktop.org/show_bug.cgi?id=102777
fi-bdw-5557u total:289 pass:268 dwarn:0 dfail:0 fail:0 skip:21 time:444s fi-bdw-gvtdvm total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:466s fi-blb-e6850 total:289 pass:224 dwarn:1 dfail:0 fail:0 skip:64 time:419s fi-bsw-n3050 total:289 pass:243 dwarn:0 dfail:0 fail:0 skip:46 time:518s fi-bwr-2160 total:289 pass:184 dwarn:0 dfail:0 fail:0 skip:105 time:279s fi-bxt-j4205 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:500s fi-byt-j1900 total:289 pass:254 dwarn:1 dfail:0 fail:0 skip:34 time:491s fi-cnl-y total:289 pass:258 dwarn:0 dfail:0 fail:4 skip:27 time:648s fi-elk-e7500 total:289 pass:230 dwarn:0 dfail:0 fail:0 skip:59 time:416s fi-glk-1 total:289 pass:259 dwarn:1 dfail:0 fail:0 skip:29 time:561s fi-hsw-4770 total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:430s fi-hsw-4770r total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:403s fi-ilk-650 total:289 pass:229 dwarn:0 dfail:0 fail:0 skip:60 time:431s fi-ivb-3520m total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:493s fi-ivb-3770 total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:464s fi-kbl-7500u total:289 pass:264 dwarn:1 dfail:0 fail:0 skip:24 time:475s fi-kbl-7560u total:289 pass:270 dwarn:0 dfail:0 fail:0 skip:19 time:576s fi-kbl-r total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:586s fi-pnv-d510 total:289 pass:223 dwarn:1 dfail:0 fail:0 skip:65 time:545s fi-skl-6260u total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:452s fi-skl-6700k total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:762s fi-skl-6770hq total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:488s fi-skl-gvtdvm total:289 pass:266 dwarn:0 dfail:0 fail:0 skip:23 time:482s fi-snb-2520m total:289 pass:251 dwarn:0 dfail:0 fail:0 skip:38 time:575s fi-snb-2600 total:289 pass:250 dwarn:0 dfail:0 fail:0 skip:39 time:418s
fi-bxt-dsi failed to connect after reboot
c1ed501217782b35094792696924a1d22ee83c0f drm-tip: 2017y-09m-28d-04h-52m-47s UTC integration manifest 8b0e808a9c7e drm/i915/bios: don't pass bdb to parsers that don't parse VBT directly d8998f883ab5 drm/i915/bios: parse SDVO device mapping from pre-parsed child devices 9488a8a7070d drm/i915/bios: merge parse_device_mapping() into parse_general_definitions() 82f12f508663 drm/i915/bios: cleanup comments and useless returnf60cb1a89dd3 drm/i915/bios: remove an unnecessary temp variable3a41abe26c68 drm/i915/bios: don't initialize fields based on vbt version 5fcddd78ef61 drm/i915/bios: refactor parse general definitions3027d6ddfb20 drm/i915/bios: parse DDI ports also for CHV for HDMI DDC pin and DP AUX channel
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_5844/
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Patchwork
CI✓ Fi.CI.IGT: success for drm/i915/bios: VBT parsing fixes and cleanups
In reply to Jani Nikula== Series Details ==
== Series Details ==
Series: drm/i915/bios: VBT parsing fixes and cleanups
URL : https://patchwork.freedesktop.org/series/31051/
State : success
== Summary ==
Test perf:
Subgroup blocking:
pass -> FAIL (shard-hsw) fdo#102252
Test kms_cursor_legacy:
Subgroup cursorA-vs-flipA-atomic-transitions:
fail -> PASS (shard-hsw)
Test gem_exec_reloc:
Subgroup basic-write-read-noreloc:
incomplete -> PASS (shard-hsw)fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
shard-hsw total:2429 pass:1332 dwarn:4 dfail:0 fail:10 skip:1083 time:9910s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_5844/shards.html
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [PATCH 1/8] drm/i915/bios: parse DDI ports also for CHV for HDMI DDC pin and DP AUX channel
In reply to Jani NikulaQuoted 10 lines · Jani Nikula
While technically CHV isn't DDI, we do look at the VBT based DDI port info for HDMI DDC pin and DP AUX channel. (We call these "alternate", but they're really just something that aren't platform defaults.)
In commit
e4ab73a13291("drm/i915: Respectalternate_ddc_pinfor all DDI ports") Ville writes, "IIRC there may be CHV system that might actually need this."I'm not sure why there couldn't be even more platforms that need this, but start conservative, and parse the info for CHV in addition to DDI.
Going back as far as VLV might make some sense since it came out at around the same time as HSW, and IIRC the VBT versions seen on VLV and HSW are more less the same.
Series lgtm
Quoted 24 lines
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100553
Reported-by Marek Wilczewski <[email protected]>Signed-off-by Jani Nikula <[email protected]>--- drivers/gpu/drm/i915/intel_bios.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/gpu/drm/i915/intel_bios.c +1
-1@@ -1247,7 +1247,7 @@ static void parse_ddi_ports(struct drm_i915_private *dev_priv, {enum port port; -if (!HAS_DDI (dev_priv)) +if (!HAS_DDI (dev_priv) && !IS_CHERRYVIEW (dev_priv))return ;if (!dev_priv->vbt.child_dev_num)Signature · 1 line
2.11.0
Signature · 2 lines
Ville Syrjälä Intel OTC
Re: [PATCH 1/8] drm/i915/bios: parse DDI ports also for CHV for HDMI DDC pin and DP AUX channel
Quoted 9 lines · Ville Syrjälä
Quoted 8 lines · Jani Nikula
While technically CHV isn't DDI, we do look at the VBT based DDI port info for HDMI DDC pin and DP AUX channel. (We call these "alternate", but they're really just something that aren't platform defaults.)
In commit
e4ab73a13291("drm/i915: Respectalternate_ddc_pinfor all DDI ports") Ville writes, "IIRC there may be CHV system that might actually need this."
Quoted 6 lines
Quoted 2 lines
I'm not sure why there couldn't be even more platforms that need this, but start conservative, and parse the info for CHV in addition to DDI.
Going back as far as VLV might make some sense since it came out at around the same time as HSW, and IIRC the VBT versions seen on VLV and HSW are more less the same.
Let's do that later as needed.
Quoted 2 lines
Series lgtm
Reviewed-by Ville Syrjälä <[email protected]>
Pushed all to dinq, thanks for the review.
BR,
Jani.
Quoted 25 lines
Quoted 25 lines
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100553
Reported-by Marek Wilczewski <[email protected]>Signed-off-by Jani Nikula <[email protected]>--- drivers/gpu/drm/i915/intel_bios.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/gpu/drm/i915/intel_bios.c +1
-1@@ -1247,7 +1247,7 @@ static void parse_ddi_ports(struct drm_i915_private *dev_priv, {enum port port; -if (!HAS_DDI (dev_priv)) +if (!HAS_DDI (dev_priv) && !IS_CHERRYVIEW (dev_priv))return ;if (!dev_priv->vbt.child_dev_num)Signature · 1 line
2.11.0
Signature · 1 line
Jani Nikula, Intel Open Source Technology Center