drm/i915: fix the "ghost eDP" connector unwind path
authorPaulo Zanoni <paulo.r.zanoni@intel.com>
Wed, 12 Jun 2013 20:27:26 +0000 (17:27 -0300)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 28 Jun 2013 12:14:18 +0000 (14:14 +0200)
commitb2f246a8998ccf9e00477c8829a62139804e9857
treeb91ee5f946cd548bb9a2a97a28de58613a5f1ba0
parent16c255335b0ec39b4e5e976f4b260978aeed5a68
drm/i915: fix the "ghost eDP" connector unwind path

Because calling intel_dp_destroy inside intel_edp_init_connector is
just wrong. This is the initialization path, so we should properly
unwind all the initialization through the whole caller stack.

On the intel_dp_destroy function we do the following:
1 - Free edid if it exists
2 - Call intel_panel_fini in case it's eDP
3 - Call drm_sysfs_connector_remove
4 - Call drm_connector_cleanup
5 - Free the connector

And here is how we unwind each specific step:
1 - No need as we still didn't assign anything
2 - No need as we still didn't call intel_panel_init
3 - Call it in the same function that called drm_sysfs_connector_add
4 - Call it in the same function that called drm_connector_init
5 - Free it in the same function that allocated it

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Zoltan Nyul <zoltan.nyul@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_ddi.c
drivers/gpu/drm/i915/intel_dp.c