On 2015년 08월 04일 04:09, Gustavo Padovan wrote: > From: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx> > > This functions was just hiding the encoder and connector creation in > a way that was less clean than if we get rid of it. For example, > exynos_encoder ops had .create_connector() defined only because we were > handing off the encoder and connector creation to > exynos_drm_create_enc_conn(). Without this function we can directly call > the create_connector function internally in the code, without the need of > any vtable access. > > It also does some refactoring in the code like creating a bind function > for dpi devices. > > Signed-off-by: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/exynos/exynos7_drm_decon.c | 3 +-- > drivers/gpu/drm/exynos/exynos_dp_core.c | 20 ++++++++++++++++--- > drivers/gpu/drm/exynos/exynos_drm_core.c | 30 ----------------------------- > drivers/gpu/drm/exynos/exynos_drm_dpi.c | 26 +++++++++++++++++++++++-- > drivers/gpu/drm/exynos/exynos_drm_drv.h | 12 ++++++------ > drivers/gpu/drm/exynos/exynos_drm_dsi.c | 20 ++++++++++++------- > drivers/gpu/drm/exynos/exynos_drm_encoder.c | 11 +++++++---- > drivers/gpu/drm/exynos/exynos_drm_encoder.h | 4 +++- > drivers/gpu/drm/exynos/exynos_drm_fimd.c | 3 +-- > drivers/gpu/drm/exynos/exynos_drm_vidi.c | 20 ++++++++++--------- > drivers/gpu/drm/exynos/exynos_hdmi.c | 21 +++++++++++++++++--- > 11 files changed, 101 insertions(+), 69 deletions(-) > [-- SNIP --] > diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c > index 11bac50..f72ceeb 100644 > --- a/drivers/gpu/drm/exynos/exynos_hdmi.c > +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c > @@ -44,6 +44,7 @@ > > #include "exynos_drm_drv.h" > #include "exynos_drm_crtc.h" > +#include "exynos_drm_encoder.h" > #include "exynos_mixer.h" > > #include <linux/gpio.h> > @@ -1783,7 +1784,6 @@ static void hdmi_disable(struct exynos_drm_encoder *encoder) > } > > static struct exynos_drm_encoder_ops hdmi_encoder_ops = { > - .create_connector = hdmi_create_connector, > .mode_fixup = hdmi_mode_fixup, > .mode_set = hdmi_mode_set, > .enable = hdmi_enable, > @@ -1917,11 +1917,26 @@ static int hdmi_bind(struct device *dev, struct device *master, void *data) > { > struct drm_device *drm_dev = data; > struct hdmi_context *hdata = dev_get_drvdata(dev); > + struct exynos_drm_encoder *exynos_encoder = &hdata->encoder; > + int ret; > > hdata->drm_dev = drm_dev; > > - return exynos_drm_create_enc_conn(drm_dev, &hdata->encoder, > - EXYNOS_DISPLAY_TYPE_HDMI); > + ret = exynos_drm_encoder_create(drm_dev, exynos_encoder, > + EXYNOS_DISPLAY_TYPE_HDMI); > + if (ret) { > + DRM_ERROR("failed to create encoder\n"); > + return ret; > + } > + > + hdmi_create_connector(exynos_encoder); ret = hdmi_create_connector(exynos_encoder); > + if (ret) { > + DRM_ERROR("failed to create connector ret = %d\n", ret); > + drm_encoder_cleanup(&exynos_encoder->base); > + return ret; > + } > + > + return 0; > } > > static void hdmi_unbind(struct device *dev, struct device *master, void *data) > -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html