drm/i915: Fix the VBT child device parsing for BSW
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 25 Mar 2015 16:45:58 +0000 (18:45 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 10 Apr 2015 06:56:14 +0000 (08:56 +0200)
commit90e4f1592bb6e82f6690f0e05a8aadcf04d7bce7
tree52e9cd26c4d15f33bdad0c47218de4f7e8943224
parenta4e0bedca678c81eea4cd79a4bd502335639f73a
drm/i915: Fix the VBT child device parsing for BSW

Recent BSW VBT has a VBT child device size 37 bytes instead of the 33
bytes our code assumes. This means we fail to parse the VBT and thus
fail to detect eDP ports properly and just register them as DP ports
instead.

Fix it up by using the reported child device size from the VBT instead
of assuming it matches out struct defintions.

The latest spec I have shows that the child device size should be 36
bytes for rev >= 195, however on my BSW the size is actually 37 bytes.
And our current struct definition is 33 bytes.

Feels like the entire VBT parses would need to be rewritten to handle
changes in the layout better, but for now I've decided to do just the
bare minimum to get my eDP port back.

Cc: Vijay Purushothaman <vijay.a.purushothaman@linux.intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_bios.c
drivers/gpu/drm/i915/intel_bios.h