summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915
diff options
context:
space:
mode:
authorJani Nikula2017-09-28 10:21:58 +0200
committerJani Nikula2017-10-10 08:05:31 +0200
commita87145ca56d14fc4b0bce68c18a5fecb01a09540 (patch)
tree20ede147b1718a54281db7af90df167683f632b9 /drivers/gpu/drm/i915
parentdrm/i915/bios: parse DDI ports also for CHV for HDMI DDC pin and DP AUX channel (diff)
downloadkernel-qcow2-linux-a87145ca56d14fc4b0bce68c18a5fecb01a09540.tar.gz
kernel-qcow2-linux-a87145ca56d14fc4b0bce68c18a5fecb01a09540.tar.xz
kernel-qcow2-linux-a87145ca56d14fc4b0bce68c18a5fecb01a09540.zip
drm/i915/bios: refactor parse general definitions
Early return on failures. Rename the variable for later merging with parse_device_mappings(). Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/785abb904a572752fec68d90d34efeb67774dc1f.1506586821.git.jani.nikula@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915')
-rw-r--r--drivers/gpu/drm/i915/intel_bios.c34
1 files changed, 20 insertions, 14 deletions
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 0a1159761ffd..22924612c680 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -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 *