[PATCH v2 06/60] drm/omap: dss: Move platform_device_register from core.c to dss.c probe
Sebastian Reichel
sre at kernel.org
Sun Jun 10 15:40:35 UTC 2018
Hi,
On Sat, May 26, 2018 at 08:24:24PM +0300, Laurent Pinchart wrote:
> From: Jyri Sarha <jsarha at ti.com>
>
> Register the omapdrm device when we know that dss device probe going
> to succeed. This avoids DSS6 and DSS2 omapdrm device registration from
> colliding with each other.
>
> Signed-off-by: Jyri Sarha <jsarha at ti.com>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
Reviewed-by: Sebastian Reichel <sebastian.reichel at collabora.co.uk>
-- Sebastian
> Changes since v0:
>
> - Store the OMAP DRM platform device pointer in struct dss_device
> - Register the OMAP DRM platform device at the very end of dss_bind()
> ---
> drivers/gpu/drm/omapdrm/dss/core.c | 26 ++------------------------
> drivers/gpu/drm/omapdrm/dss/dss.c | 13 +++++++++++++
> drivers/gpu/drm/omapdrm/dss/dss.h | 2 ++
> 3 files changed, 17 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/omapdrm/dss/core.c b/drivers/gpu/drm/omapdrm/dss/core.c
> index acef7ece5783..6c9f667f9982 100644
> --- a/drivers/gpu/drm/omapdrm/dss/core.c
> +++ b/drivers/gpu/drm/omapdrm/dss/core.c
> @@ -45,36 +45,14 @@ static struct platform_driver * const omap_dss_drivers[] = {
> #endif
> };
>
> -static struct platform_device *omap_drm_device;
> -
> static int __init omap_dss_init(void)
> {
> - int r;
> -
> - r = platform_register_drivers(omap_dss_drivers,
> - ARRAY_SIZE(omap_dss_drivers));
> - if (r)
> - goto err_reg;
> -
> - omap_drm_device = platform_device_register_simple("omapdrm", 0, NULL, 0);
> - if (IS_ERR(omap_drm_device)) {
> - r = PTR_ERR(omap_drm_device);
> - goto err_reg;
> - }
> -
> - return 0;
> -
> -err_reg:
> - platform_unregister_drivers(omap_dss_drivers,
> - ARRAY_SIZE(omap_dss_drivers));
> -
> - return r;
> + return platform_register_drivers(omap_dss_drivers,
> + ARRAY_SIZE(omap_dss_drivers));
> }
>
> static void __exit omap_dss_exit(void)
> {
> - platform_device_unregister(omap_drm_device);
> -
> platform_unregister_drivers(omap_dss_drivers,
> ARRAY_SIZE(omap_dss_drivers));
> }
> diff --git a/drivers/gpu/drm/omapdrm/dss/dss.c b/drivers/gpu/drm/omapdrm/dss/dss.c
> index d27d7f85bcd1..abd45b08f3a1 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dss.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dss.c
> @@ -1315,6 +1315,7 @@ static const struct soc_device_attribute dss_soc_devices[] = {
> static int dss_bind(struct device *dev)
> {
> struct dss_device *dss = dev_get_drvdata(dev);
> + struct platform_device *drm_pdev;
> int r;
>
> r = component_bind_all(dev, NULL);
> @@ -1325,11 +1326,23 @@ static int dss_bind(struct device *dev)
>
> omapdss_set_dss(dss);
>
> + drm_pdev = platform_device_register_simple("omapdrm", 0, NULL, 0);
> + if (IS_ERR(drm_pdev)) {
> + component_unbind_all(dev, NULL);
> + return PTR_ERR(drm_pdev);
> + }
> +
> + dss->drm_pdev = drm_pdev;
> +
> return 0;
> }
>
> static void dss_unbind(struct device *dev)
> {
> + struct dss_device *dss = dev_get_drvdata(dev);
> +
> + platform_device_unregister(dss->drm_pdev);
> +
> omapdss_set_dss(NULL);
>
> component_unbind_all(dev, NULL);
> diff --git a/drivers/gpu/drm/omapdrm/dss/dss.h b/drivers/gpu/drm/omapdrm/dss/dss.h
> index 847c78ade024..4f1eb7f5b922 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dss.h
> +++ b/drivers/gpu/drm/omapdrm/dss/dss.h
> @@ -235,6 +235,8 @@ struct dss_device {
> struct regmap *syscon_pll_ctrl;
> u32 syscon_pll_ctrl_offset;
>
> + struct platform_device *drm_pdev;
> +
> struct clk *parent_clk;
> struct clk *dss_clk;
> unsigned long dss_clk_rate;
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20180610/b4bbf23c/attachment.sig>
More information about the dri-devel
mailing list