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:
@@ -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();
|
||||||
|
@@ -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 */
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user