disp: msm: register rotator platform driver after genpd init

Due to power-domain, if rotator driver is registered early,
probe might get deferred several times and get stuck
indefinitely. So, this change adds driver registration
after genpd init to handle such cases.

Change-Id: I8dcb640d0ab0cdf0818cbce1b1fb460c28d8b9e7
Signed-off-by: Yashwanth <yvulapu@codeaurora.org>
This commit is contained in:
Yashwanth
2020-09-25 14:43:49 +05:30
parent af9841fa44
commit 2683324973
4 changed files with 16 additions and 14 deletions

View File

@@ -860,6 +860,10 @@ static int msm_drm_component_init(struct device *dev)
goto fail; goto fail;
} }
/* Register rotator platform driver only after genpd init */
sde_rotator_register();
sde_rotator_smmu_driver_register();
ret = msm_drm_display_thread_create(param, priv, ddev, dev); ret = msm_drm_display_thread_create(param, priv, ddev, dev);
if (ret) { if (ret) {
dev_err(dev, "msm_drm_display_thread_create failed\n"); dev_err(dev, "msm_drm_display_thread_create failed\n");
@@ -2198,8 +2202,6 @@ static int __init msm_drm_register(void)
msm_hdcp_register(); msm_hdcp_register();
dp_display_register(); dp_display_register();
msm_smmu_driver_init(); msm_smmu_driver_init();
sde_rotator_register();
sde_rotator_smmu_driver_register();
msm_dsi_register(); msm_dsi_register();
msm_edp_register(); msm_edp_register();
msm_hdmi_register(); msm_hdmi_register();

View File

@@ -1294,25 +1294,25 @@ static inline void __exit sde_wb_unregister(void)
#endif /* CONFIG_DRM_SDE_WB */ #endif /* CONFIG_DRM_SDE_WB */
#if IS_ENABLED(CONFIG_MSM_SDE_ROTATOR) #if IS_ENABLED(CONFIG_MSM_SDE_ROTATOR)
void __init sde_rotator_register(void); void sde_rotator_register(void);
void __exit sde_rotator_unregister(void); void sde_rotator_unregister(void);
#else #else
static inline void __init sde_rotator_register(void) static inline void sde_rotator_register(void)
{ {
} }
static inline void __exit sde_rotator_unregister(void) static inline void sde_rotator_unregister(void)
{ {
} }
#endif /* CONFIG_MSM_SDE_ROTATOR */ #endif /* CONFIG_MSM_SDE_ROTATOR */
#if IS_ENABLED(CONFIG_MSM_SDE_ROTATOR) #if IS_ENABLED(CONFIG_MSM_SDE_ROTATOR)
void __init sde_rotator_smmu_driver_register(void); void sde_rotator_smmu_driver_register(void);
void __exit sde_rotator_smmu_driver_unregister(void); void sde_rotator_smmu_driver_unregister(void);
#else #else
static inline void __init sde_rotator_smmu_driver_register(void) static inline void sde_rotator_smmu_driver_register(void)
{ {
} }
static inline void __exit sde_rotator_smmu_driver_unregister(void) static inline void sde_rotator_smmu_driver_unregister(void)
{ {
} }
#endif /* CONFIG_MSM_SDE_ROTATOR */ #endif /* CONFIG_MSM_SDE_ROTATOR */

View File

@@ -3611,12 +3611,12 @@ static struct platform_driver rotator_driver = {
}; };
#endif #endif
void __init sde_rotator_register(void) void sde_rotator_register(void)
{ {
platform_driver_register(&rotator_driver); platform_driver_register(&rotator_driver);
} }
void __exit sde_rotator_unregister(void) void sde_rotator_unregister(void)
{ {
platform_driver_unregister(&rotator_driver); platform_driver_unregister(&rotator_driver);
} }

View File

@@ -671,12 +671,12 @@ static struct platform_driver sde_smmu_driver = {
}, },
}; };
void __init sde_rotator_smmu_driver_register(void) void sde_rotator_smmu_driver_register(void)
{ {
platform_driver_register(&sde_smmu_driver); platform_driver_register(&sde_smmu_driver);
} }
void __exit sde_rotator_smmu_driver_unregister(void) void sde_rotator_smmu_driver_unregister(void)
{ {
platform_driver_unregister(&sde_smmu_driver); platform_driver_unregister(&sde_smmu_driver);
} }