> -----Original Message----- > From: Rahul Sharma [mailto:rahul.sharma@xxxxxxxxxxx] > Sent: Saturday, October 13, 2012 1:01 AM > To: dri-devel@xxxxxxxxxxxxxxxxxxxxx > Cc: t.stanislaws@xxxxxxxxxxx; sw0312.kim@xxxxxxxxxxx; inki.dae@xxxxxxxxxxx; > jy0922.shim@xxxxxxxxxxx; kyungmin.park@xxxxxxxxxxx; thomas.ab@xxxxxxxxxxx; > prashanth.g@xxxxxxxxxxx; joshi@xxxxxxxxxxx; s.shirish@xxxxxxxxxxx; > r.sh.open@xxxxxxxxx; rahul.sharma@xxxxxxxxxxx > Subject: [PATCH v1 2/2] drm: exynos: moved exynos drm hdmi device > registration to drm driver > > This patch moved the exynos-drm-hdmi platform device registration to the > drm > driver. When DT is enabled, platform devices needs to be registered within > the > driver code. This patch fits the requirement of both DT and Non DT based > drm > drivers. > > Signed-off-by: Rahul Sharma <rahul.sharma@xxxxxxxxxxx> > --- > drivers/gpu/drm/exynos/exynos_drm_drv.c | 10 +++++++++- > drivers/gpu/drm/exynos/exynos_drm_hdmi.c | 22 ++++++++++++++++++++++ > drivers/gpu/drm/exynos/exynos_drm_hdmi.h | 2 ++ > 3 files changed, 33 insertions(+), 1 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c > b/drivers/gpu/drm/exynos/exynos_drm_drv.c > index 4200f15..b491847 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c > @@ -41,6 +41,7 @@ > #include "exynos_drm_vidi.h" > #include "exynos_drm_dmabuf.h" > #include "exynos_drm_g2d.h" > +#include "exynos_drm_hdmi.h" One more thing, could you move below declarations into exynos_drm_drv.h and remove above "#include "exynos_drm_hdmi.h"? this makes unnecessary declarations and definitions are included. and also leave comments to each declaration. "int exynos_platform_device_hdmi_register(void); void exynos_platform_device_hdmi_unregister(void);" Thanks, Inki Dae > > #define DRIVER_NAME "exynos" > #define DRIVER_DESC "Samsung SoC DRM" > @@ -329,6 +330,10 @@ static int __init exynos_drm_init(void) > ret = platform_driver_register(&exynos_drm_common_hdmi_driver); > if (ret < 0) > goto out_common_hdmi; > + > + ret = exynos_platform_device_hdmi_register(); > + if (ret < 0) > + goto out_common_hdmi_dev; > #endif > > #ifdef CONFIG_DRM_EXYNOS_VIDI > @@ -366,11 +371,13 @@ out_g2d: > #endif > > #ifdef CONFIG_DRM_EXYNOS_VIDI > -out_vidi: > platform_driver_unregister(&vidi_driver); > +out_vidi: > #endif > > #ifdef CONFIG_DRM_EXYNOS_HDMI > + exynos_platform_device_hdmi_unregister(); > +out_common_hdmi_dev: > platform_driver_unregister(&exynos_drm_common_hdmi_driver); > out_common_hdmi: > platform_driver_unregister(&mixer_driver); > @@ -399,6 +406,7 @@ static void __exit exynos_drm_exit(void) > #endif > > #ifdef CONFIG_DRM_EXYNOS_HDMI > + exynos_platform_device_hdmi_unregister(); > platform_driver_unregister(&exynos_drm_common_hdmi_driver); > platform_driver_unregister(&mixer_driver); > platform_driver_unregister(&hdmi_driver); > diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c > b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c > index 85304c4..a4c84c1 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.c > @@ -29,6 +29,9 @@ > #define get_ctx_from_subdrv(subdrv) container_of(subdrv,\ > struct drm_hdmi_context, subdrv); > > +/* platform device pointer for common drm hdmi device. */ > +static struct platform_device *exynos_drm_hdmi_pdev; > + > /* Common hdmi subdrv needs to access the hdmi and mixer though context. > * These should be initialied by the repective drivers */ > static struct exynos_drm_hdmi_context *hdmi_ctx; > @@ -46,6 +49,25 @@ struct drm_hdmi_context { > bool enabled[MIXER_WIN_NR]; > }; > > +int exynos_platform_device_hdmi_register(void) > +{ > + if (exynos_drm_hdmi_pdev) > + return -EEXIST; > + > + exynos_drm_hdmi_pdev = platform_device_register_simple( > + "exynos-drm-hdmi", -1, NULL, 0); > + if (IS_ERR_OR_NULL(exynos_drm_hdmi_pdev)) > + return PTR_ERR(exynos_drm_hdmi_pdev); > + > + return 0; > +} > + > +void exynos_platform_device_hdmi_unregister(void) > +{ > + if (exynos_drm_hdmi_pdev) > + platform_device_unregister(exynos_drm_hdmi_pdev); > +} > + > void exynos_hdmi_drv_attach(struct exynos_drm_hdmi_context *ctx) > { > if (ctx) > diff --git a/drivers/gpu/drm/exynos/exynos_drm_hdmi.h > b/drivers/gpu/drm/exynos/exynos_drm_hdmi.h > index 2da5ffd..192329c 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_hdmi.h > +++ b/drivers/gpu/drm/exynos/exynos_drm_hdmi.h > @@ -77,4 +77,6 @@ void exynos_hdmi_drv_attach(struct > exynos_drm_hdmi_context *ctx); > void exynos_mixer_drv_attach(struct exynos_drm_hdmi_context *ctx); > void exynos_hdmi_ops_register(struct exynos_hdmi_ops *ops); > void exynos_mixer_ops_register(struct exynos_mixer_ops *ops); > +int exynos_platform_device_hdmi_register(void); > +void exynos_platform_device_hdmi_unregister(void); > #endif > -- > 1.7.0.4 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel