Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 26833249 authored by Yashwanth's avatar Yashwanth
Browse files

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: default avatarYashwanth <yvulapu@codeaurora.org>
parent af9841fa
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -860,6 +860,10 @@ static int msm_drm_component_init(struct device *dev)
		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);
	if (ret) {
		dev_err(dev, "msm_drm_display_thread_create failed\n");
@@ -2198,8 +2202,6 @@ static int __init msm_drm_register(void)
	msm_hdcp_register();
	dp_display_register();
	msm_smmu_driver_init();
	sde_rotator_register();
	sde_rotator_smmu_driver_register();
	msm_dsi_register();
	msm_edp_register();
	msm_hdmi_register();
+8 −8
Original line number Diff line number Diff line
@@ -1294,25 +1294,25 @@ static inline void __exit sde_wb_unregister(void)
#endif /* CONFIG_DRM_SDE_WB */

#if IS_ENABLED(CONFIG_MSM_SDE_ROTATOR)
void  __init sde_rotator_register(void);
void __exit sde_rotator_unregister(void);
void sde_rotator_register(void);
void sde_rotator_unregister(void);
#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 */

#if IS_ENABLED(CONFIG_MSM_SDE_ROTATOR)
void __init sde_rotator_smmu_driver_register(void);
void __exit sde_rotator_smmu_driver_unregister(void);
void sde_rotator_smmu_driver_register(void);
void sde_rotator_smmu_driver_unregister(void);
#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 */
+2 −2
Original line number Diff line number Diff line
@@ -3611,12 +3611,12 @@ static struct platform_driver rotator_driver = {
};
#endif

void  __init sde_rotator_register(void)
void sde_rotator_register(void)
{
	platform_driver_register(&rotator_driver);
}

void __exit sde_rotator_unregister(void)
void sde_rotator_unregister(void)
{
	platform_driver_unregister(&rotator_driver);
}
+2 −2
Original line number Diff line number Diff line
@@ -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);
}

void __exit sde_rotator_smmu_driver_unregister(void)
void sde_rotator_smmu_driver_unregister(void)
{
	platform_driver_unregister(&sde_smmu_driver);
}