msm: ekms: Remove the wait for completion of eDRM probe
Main DRM & eDRM driver has asynchronous probes. In order to ensure that both the driver's probe has completed there is a wait for completion for respective driver is executed. There is an issue where the wait for the eDRM driver blocks the eDRM driver deferred probe call. This change remove wait in the eDRM driver for completion of its probe as eDRM driver is always initialized after main DRM and necessary clock voting would also be done in main DRM. Change-Id: I422419d381ad3d0361fb80f3b2b9d176203a9342 Signed-off-by: Rahul Sharma <rahsha@codeaurora.org>
This commit is contained in:
parent
c65b958524
commit
c2877a4eb8
1 changed files with 0 additions and 35 deletions
|
@ -23,9 +23,6 @@
|
|||
#include "msm_mmu.h"
|
||||
#include "edrm_kms.h"
|
||||
|
||||
static struct completion wait_display_completion;
|
||||
static bool msm_edrm_probed;
|
||||
|
||||
static int msm_edrm_unload(struct drm_device *dev)
|
||||
{
|
||||
struct msm_drm_private *priv = dev->dev_private;
|
||||
|
@ -331,8 +328,6 @@ static int msm_pdev_edrm_probe(struct platform_device *pdev)
|
|||
struct msm_drm_private *master_priv;
|
||||
struct msm_kms *master_kms;
|
||||
|
||||
msm_edrm_probed = true;
|
||||
|
||||
/* main DRM's minor ID is zero */
|
||||
minor = drm_minor_acquire(0);
|
||||
if (IS_ERR(minor)) {
|
||||
|
@ -372,7 +367,6 @@ static int msm_pdev_edrm_probe(struct platform_device *pdev)
|
|||
if (ret)
|
||||
DRM_ERROR("drm_platform_init failed: %d\n", ret);
|
||||
|
||||
complete(&wait_display_completion);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -414,20 +408,6 @@ static const struct of_device_id dt_match[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(of, dt_match);
|
||||
|
||||
static int find_match(struct device *dev, void *data)
|
||||
{
|
||||
struct device_driver *drv = data;
|
||||
|
||||
return drv->bus->match(dev, drv);
|
||||
}
|
||||
|
||||
static bool find_device(struct platform_driver *pdrv)
|
||||
{
|
||||
struct device_driver *drv = &pdrv->driver;
|
||||
|
||||
return bus_for_each_dev(drv->bus, NULL, drv, find_match);
|
||||
}
|
||||
|
||||
static struct platform_driver msm_platform_driver = {
|
||||
.probe = msm_pdev_edrm_probe,
|
||||
.remove = msm_pdev_edrm_remove,
|
||||
|
@ -443,7 +423,6 @@ static struct platform_driver msm_platform_driver = {
|
|||
static int __init msm_edrm_register(void)
|
||||
{
|
||||
DBG("init");
|
||||
init_completion(&wait_display_completion);
|
||||
return platform_driver_register(&msm_platform_driver);
|
||||
}
|
||||
|
||||
|
@ -453,22 +432,8 @@ static void __exit msm_edrm_unregister(void)
|
|||
platform_driver_unregister(&msm_platform_driver);
|
||||
}
|
||||
|
||||
static int __init msm_edrm_late_register(void)
|
||||
{
|
||||
struct platform_driver *pdrv;
|
||||
|
||||
pdrv = &msm_platform_driver;
|
||||
if (msm_edrm_probed || find_device(pdrv)) {
|
||||
pr_debug("wait for eDRM display probe completion\n");
|
||||
wait_for_completion(&wait_display_completion);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
module_init(msm_edrm_register);
|
||||
module_exit(msm_edrm_unregister);
|
||||
/* init level 7 */
|
||||
late_initcall(msm_edrm_late_register);
|
||||
|
||||
MODULE_DESCRIPTION("MSM EARLY DRM Driver");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
|
Loading…
Add table
Reference in a new issue