Merge "disp: msm: register rotator platform driver after genpd init"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
2cff4ac8e7
@@ -13,3 +13,6 @@ export CONFIG_DRM_MSM_REGISTER_LOGGING=y
|
|||||||
export CONFIG_QCOM_MDSS_PLL=y
|
export CONFIG_QCOM_MDSS_PLL=y
|
||||||
export CONFIG_DRM_SDE_RSC=n
|
export CONFIG_DRM_SDE_RSC=n
|
||||||
export CONFIG_DISPLAY_BUILD=m
|
export CONFIG_DISPLAY_BUILD=m
|
||||||
|
export CONFIG_MSM_SDE_ROTATOR=y
|
||||||
|
export CONFIG_MSM_SDE_ROTATOR_EVTLOG_DEBUG=y
|
||||||
|
export CONFIG_MSM_SDE_ROTATOR_INIT_ONLY=y
|
||||||
|
@@ -12,3 +12,6 @@
|
|||||||
#define CONFIG_DRM_SDE_EVTLOG_DEBUG 1
|
#define CONFIG_DRM_SDE_EVTLOG_DEBUG 1
|
||||||
#define CONFIG_QCOM_MDSS_PLL 1
|
#define CONFIG_QCOM_MDSS_PLL 1
|
||||||
#define CONFIG_GKI_DISPLAY 1
|
#define CONFIG_GKI_DISPLAY 1
|
||||||
|
#define CONFIG_MSM_SDE_ROTATOR 1
|
||||||
|
#define CONFIG_MSM_SDE_ROTATOR_EVTLOG_DEBUG 1
|
||||||
|
#define CONFIG_MSM_SDE_ROTATOR_INIT_ONLY 1
|
||||||
|
@@ -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 */
|
||||||
|
@@ -50,6 +50,8 @@
|
|||||||
|
|
||||||
#define SDE_ROT_TEST_MASK(id, tp) ((id << 4) | (tp << 1) | BIT(0))
|
#define SDE_ROT_TEST_MASK(id, tp) ((id << 4) | (tp << 1) | BIT(0))
|
||||||
|
|
||||||
|
#if defined(CONFIG_MSM_SDE_ROTATOR_EVTLOG_DEBUG) && \
|
||||||
|
defined(CONFIG_DEBUG_FS)
|
||||||
static DEFINE_SPINLOCK(sde_rot_xlock);
|
static DEFINE_SPINLOCK(sde_rot_xlock);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1358,3 +1360,4 @@ void sde_rotator_destroy_debugfs(struct dentry *debugfs)
|
|||||||
{
|
{
|
||||||
debugfs_remove_recursive(debugfs);
|
debugfs_remove_recursive(debugfs);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
@@ -52,7 +52,7 @@
|
|||||||
#define SDE_ROTATOR_ADD_REQUEST 1
|
#define SDE_ROTATOR_ADD_REQUEST 1
|
||||||
#define SDE_ROTATOR_REMOVE_REQUEST 0
|
#define SDE_ROTATOR_REMOVE_REQUEST 0
|
||||||
|
|
||||||
|
#ifndef CONFIG_MSM_SDE_ROTATOR_INIT_ONLY
|
||||||
static void sde_rotator_submit_handler(struct kthread_work *work);
|
static void sde_rotator_submit_handler(struct kthread_work *work);
|
||||||
static void sde_rotator_retire_handler(struct kthread_work *work);
|
static void sde_rotator_retire_handler(struct kthread_work *work);
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
@@ -2844,7 +2844,6 @@ static const struct v4l2_ioctl_ops sde_rotator_ioctl_ops = {
|
|||||||
.vidioc_g_parm = sde_rotator_g_parm,
|
.vidioc_g_parm = sde_rotator_g_parm,
|
||||||
.vidioc_s_parm = sde_rotator_s_parm,
|
.vidioc_s_parm = sde_rotator_s_parm,
|
||||||
.vidioc_default = sde_rotator_private_ioctl,
|
.vidioc_default = sde_rotator_private_ioctl,
|
||||||
.vidioc_log_status = v4l2_ctrl_log_status,
|
|
||||||
.vidioc_subscribe_event = sde_rotator_ctrl_subscribe_event,
|
.vidioc_subscribe_event = sde_rotator_ctrl_subscribe_event,
|
||||||
.vidioc_unsubscribe_event = sde_rotator_event_unsubscribe,
|
.vidioc_unsubscribe_event = sde_rotator_event_unsubscribe,
|
||||||
};
|
};
|
||||||
@@ -3373,6 +3372,7 @@ static struct v4l2_m2m_ops sde_rotator_m2m_ops = {
|
|||||||
.job_abort = sde_rotator_job_abort,
|
.job_abort = sde_rotator_job_abort,
|
||||||
.job_ready = sde_rotator_job_ready,
|
.job_ready = sde_rotator_job_ready,
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Device tree match struct */
|
/* Device tree match struct */
|
||||||
static const struct of_device_id sde_rotator_dt_match[] = {
|
static const struct of_device_id sde_rotator_dt_match[] = {
|
||||||
@@ -3383,6 +3383,7 @@ static const struct of_device_id sde_rotator_dt_match[] = {
|
|||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef CONFIG_MSM_SDE_ROTATOR_INIT_ONLY
|
||||||
/*
|
/*
|
||||||
* sde_rotator_get_drv_data - rotator device driver data.
|
* sde_rotator_get_drv_data - rotator device driver data.
|
||||||
* @dev: Pointer to device.
|
* @dev: Pointer to device.
|
||||||
@@ -3580,12 +3581,42 @@ static struct platform_driver rotator_driver = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init sde_rotator_register(void)
|
#else
|
||||||
|
/*
|
||||||
|
* sde_rotator_probe - rotator device probe method.
|
||||||
|
* @pdev: Pointer to rotator platform device.
|
||||||
|
*/
|
||||||
|
static int sde_rotator_probe(struct platform_device *pdev)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* sde_rotator_remove - rotator device remove method.
|
||||||
|
* @pdev: Pointer rotator platform device.
|
||||||
|
*/
|
||||||
|
static int sde_rotator_remove(struct platform_device *pdev)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SDE Rotator platform driver definition */
|
||||||
|
static struct platform_driver rotator_driver = {
|
||||||
|
.probe = sde_rotator_probe,
|
||||||
|
.remove = sde_rotator_remove,
|
||||||
|
.driver = {
|
||||||
|
.name = SDE_ROTATOR_DRV_NAME,
|
||||||
|
.of_match_table = sde_rotator_dt_match,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __SDE_ROTATOR_DEV_H__
|
#ifndef __SDE_ROTATOR_DEV_H__
|
||||||
@@ -215,7 +215,9 @@ struct sde_rotator_device {
|
|||||||
struct device *dev;
|
struct device *dev;
|
||||||
struct v4l2_device v4l2_dev;
|
struct v4l2_device v4l2_dev;
|
||||||
struct video_device *vdev;
|
struct video_device *vdev;
|
||||||
|
#ifndef CONFIG_MSM_SDE_ROTATOR_INIT_ONLY
|
||||||
struct v4l2_m2m_dev *m2m_dev;
|
struct v4l2_m2m_dev *m2m_dev;
|
||||||
|
#endif
|
||||||
struct platform_device *pdev;
|
struct platform_device *pdev;
|
||||||
const void *drvdata;
|
const void *drvdata;
|
||||||
u32 early_submit;
|
u32 early_submit;
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define pr_fmt(fmt) "%s: " fmt, __func__
|
#define pr_fmt(fmt) "%s: " fmt, __func__
|
||||||
@@ -16,6 +16,8 @@
|
|||||||
#include "sde_rotator_r1.h"
|
#include "sde_rotator_r1.h"
|
||||||
#include "sde_rotator_r1_internal.h"
|
#include "sde_rotator_r1_internal.h"
|
||||||
|
|
||||||
|
#if defined(CONFIG_MSM_SDE_ROTATOR_EVTLOG_DEBUG) && \
|
||||||
|
defined(CONFIG_DEBUG_FS)
|
||||||
/*
|
/*
|
||||||
* sde_rotator_r1_create_debugfs - Setup rotator r1 debugfs directory structure.
|
* sde_rotator_r1_create_debugfs - Setup rotator r1 debugfs directory structure.
|
||||||
* @rot_dev: Pointer to rotator device
|
* @rot_dev: Pointer to rotator device
|
||||||
@@ -34,3 +36,4 @@ int sde_rotator_r1_create_debugfs(struct sde_rot_mgr *mgr,
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define pr_fmt(fmt) "%s: " fmt, __func__
|
#define pr_fmt(fmt) "%s: " fmt, __func__
|
||||||
@@ -16,6 +16,8 @@
|
|||||||
#include "sde_rotator_r3.h"
|
#include "sde_rotator_r3.h"
|
||||||
#include "sde_rotator_r3_internal.h"
|
#include "sde_rotator_r3_internal.h"
|
||||||
|
|
||||||
|
#if defined(CONFIG_MSM_SDE_ROTATOR_EVTLOG_DEBUG) && \
|
||||||
|
defined(CONFIG_DEBUG_FS)
|
||||||
/*
|
/*
|
||||||
* sde_rotator_r3_create_debugfs - Setup rotator r3 debugfs directory structure.
|
* sde_rotator_r3_create_debugfs - Setup rotator r3 debugfs directory structure.
|
||||||
* @rot_dev: Pointer to rotator device
|
* @rot_dev: Pointer to rotator device
|
||||||
@@ -68,3 +70,4 @@ int sde_rotator_r3_create_debugfs(struct sde_rot_mgr *mgr,
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define pr_fmt(fmt) "%s: " fmt, __func__
|
#define pr_fmt(fmt) "%s: " fmt, __func__
|
||||||
@@ -148,7 +148,7 @@ static void sde_rot_fence_release(struct dma_fence *fence)
|
|||||||
list_del(&f->fence_list);
|
list_del(&f->fence_list);
|
||||||
spin_unlock_irqrestore(fence->lock, flags);
|
spin_unlock_irqrestore(fence->lock, flags);
|
||||||
sde_rotator_put_timeline(to_sde_rot_timeline(fence));
|
sde_rotator_put_timeline(to_sde_rot_timeline(fence));
|
||||||
kfree_rcu(f, base.rcu);
|
kfree(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sde_rot_fence_value_str(struct dma_fence *fence, char *str,
|
static void sde_rot_fence_value_str(struct dma_fence *fence, char *str,
|
||||||
|
Reference in New Issue
Block a user