Disp: Snapshot change for lahaina display driver
This snapshot change adds downstream support for drm 5.x+(msm_lahaina branch) linux kernel. Change-Id: Ia691c95da155a00e449c91a2f1a5b20a8e71aed4 Signed-off-by: Narendra Muppalla <NarendraM@codeaurora.org>
This commit is contained in:
@@ -55,8 +55,6 @@
|
||||
|
||||
static void sde_rotator_submit_handler(struct kthread_work *work);
|
||||
static void sde_rotator_retire_handler(struct kthread_work *work);
|
||||
static void sde_rotator_pm_qos_request(struct sde_rotator_device *rot_dev,
|
||||
bool add_request);
|
||||
#ifdef CONFIG_COMPAT
|
||||
static long sde_rotator_compat_ioctl32(struct file *file,
|
||||
unsigned int cmd, unsigned long arg);
|
||||
@@ -1001,8 +999,6 @@ struct sde_rotator_ctx *sde_rotator_ctx_open(
|
||||
SDEDEV_DBG(ctx->rot_dev->dev, "timeline is not available\n");
|
||||
|
||||
sde_rot_mgr_lock(rot_dev->mgr);
|
||||
sde_rotator_pm_qos_request(rot_dev,
|
||||
SDE_ROTATOR_ADD_REQUEST);
|
||||
ret = sde_rotator_session_open(rot_dev->mgr, &ctx->private,
|
||||
ctx->session_id, &ctx->work_queue);
|
||||
if (ret < 0) {
|
||||
@@ -1127,8 +1123,6 @@ static int sde_rotator_ctx_release(struct sde_rotator_ctx *ctx,
|
||||
}
|
||||
SDEDEV_DBG(rot_dev->dev, "release session s:%d\n", session_id);
|
||||
sde_rot_mgr_lock(rot_dev->mgr);
|
||||
sde_rotator_pm_qos_request(rot_dev,
|
||||
SDE_ROTATOR_REMOVE_REQUEST);
|
||||
sde_rotator_session_close(rot_dev->mgr, ctx->private, session_id);
|
||||
sde_rot_mgr_unlock(rot_dev->mgr);
|
||||
SDEDEV_DBG(rot_dev->dev, "release retire work s:%d\n", session_id);
|
||||
@@ -1243,104 +1237,6 @@ static bool sde_rotator_is_request_retired(struct sde_rotator_request *request)
|
||||
return retire_delta >= 0;
|
||||
}
|
||||
|
||||
static void sde_rotator_pm_qos_remove(struct sde_rot_data_type *rot_mdata)
|
||||
{
|
||||
struct pm_qos_request *req;
|
||||
u32 cpu_mask;
|
||||
|
||||
if (!rot_mdata) {
|
||||
SDEROT_DBG("invalid rot device or context\n");
|
||||
return;
|
||||
}
|
||||
|
||||
cpu_mask = rot_mdata->rot_pm_qos_cpu_mask;
|
||||
|
||||
if (!cpu_mask)
|
||||
return;
|
||||
|
||||
req = &rot_mdata->pm_qos_rot_cpu_req;
|
||||
pm_qos_remove_request(req);
|
||||
}
|
||||
|
||||
void sde_rotator_pm_qos_add(struct sde_rot_data_type *rot_mdata)
|
||||
{
|
||||
struct pm_qos_request *req;
|
||||
u32 cpu_mask;
|
||||
int cpu;
|
||||
|
||||
if (!rot_mdata) {
|
||||
SDEROT_DBG("invalid rot device or context\n");
|
||||
return;
|
||||
}
|
||||
|
||||
cpu_mask = rot_mdata->rot_pm_qos_cpu_mask;
|
||||
|
||||
if (!cpu_mask)
|
||||
return;
|
||||
|
||||
req = &rot_mdata->pm_qos_rot_cpu_req;
|
||||
req->type = PM_QOS_REQ_AFFINE_CORES;
|
||||
cpumask_empty(&req->cpus_affine);
|
||||
for_each_possible_cpu(cpu) {
|
||||
if ((1 << cpu) & cpu_mask)
|
||||
cpumask_set_cpu(cpu, &req->cpus_affine);
|
||||
}
|
||||
pm_qos_add_request(req, PM_QOS_CPU_DMA_LATENCY,
|
||||
PM_QOS_DEFAULT_VALUE);
|
||||
|
||||
SDEROT_DBG("rotator pmqos add mask %x latency %x\n",
|
||||
rot_mdata->rot_pm_qos_cpu_mask,
|
||||
rot_mdata->rot_pm_qos_cpu_dma_latency);
|
||||
}
|
||||
|
||||
static void sde_rotator_pm_qos_request(struct sde_rotator_device *rot_dev,
|
||||
bool add_request)
|
||||
{
|
||||
u32 cpu_mask;
|
||||
u32 cpu_dma_latency;
|
||||
bool changed = false;
|
||||
|
||||
if (!rot_dev) {
|
||||
SDEROT_DBG("invalid rot device or context\n");
|
||||
return;
|
||||
}
|
||||
|
||||
cpu_mask = rot_dev->mdata->rot_pm_qos_cpu_mask;
|
||||
cpu_dma_latency = rot_dev->mdata->rot_pm_qos_cpu_dma_latency;
|
||||
|
||||
if (!cpu_mask)
|
||||
return;
|
||||
|
||||
if (add_request) {
|
||||
if (rot_dev->mdata->rot_pm_qos_cpu_count == 0)
|
||||
changed = true;
|
||||
rot_dev->mdata->rot_pm_qos_cpu_count++;
|
||||
} else {
|
||||
if (rot_dev->mdata->rot_pm_qos_cpu_count != 0) {
|
||||
rot_dev->mdata->rot_pm_qos_cpu_count--;
|
||||
if (rot_dev->mdata->rot_pm_qos_cpu_count == 0)
|
||||
changed = true;
|
||||
} else {
|
||||
SDEROT_DBG("%s: ref_count is not balanced\n",
|
||||
__func__);
|
||||
}
|
||||
}
|
||||
|
||||
if (!changed)
|
||||
return;
|
||||
|
||||
SDEROT_EVTLOG(add_request, cpu_mask, cpu_dma_latency);
|
||||
|
||||
if (!add_request) {
|
||||
pm_qos_update_request(&rot_dev->mdata->pm_qos_rot_cpu_req,
|
||||
PM_QOS_DEFAULT_VALUE);
|
||||
return;
|
||||
}
|
||||
|
||||
pm_qos_update_request(&rot_dev->mdata->pm_qos_rot_cpu_req,
|
||||
cpu_dma_latency);
|
||||
}
|
||||
|
||||
/*
|
||||
* sde_rotator_inline_open - open inline rotator session
|
||||
* @pdev: Pointer to rotator platform device
|
||||
@@ -3689,7 +3585,6 @@ static int sde_rotator_remove(struct platform_device *pdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
sde_rotator_pm_qos_remove(rot_dev->mdata);
|
||||
for (i = MAX_ROT_OPEN_SESSION - 1; i >= 0; i--)
|
||||
kthread_stop(rot_dev->rot_thread[i]);
|
||||
sde_rotator_destroy_debugfs(rot_dev->debugfs_root);
|
||||
|
Reference in New Issue
Block a user