aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/msm/Makefile1
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.c15
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.h7
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_irq.c66
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_irq.h59
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c22
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h1
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c5
8 files changed, 28 insertions, 148 deletions
diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
index 125023068ca8..56a70c74af4e 100644
--- a/drivers/gpu/drm/msm/Makefile
+++ b/drivers/gpu/drm/msm/Makefile
@@ -70,7 +70,6 @@ msm-y := \
70 disp/dpu1/dpu_hw_util.o \ 70 disp/dpu1/dpu_hw_util.o \
71 disp/dpu1/dpu_hw_vbif.o \ 71 disp/dpu1/dpu_hw_vbif.o \
72 disp/dpu1/dpu_io_util.o \ 72 disp/dpu1/dpu_io_util.o \
73 disp/dpu1/dpu_irq.o \
74 disp/dpu1/dpu_kms.o \ 73 disp/dpu1/dpu_kms.o \
75 disp/dpu1/dpu_mdss.o \ 74 disp/dpu1/dpu_mdss.o \
76 disp/dpu1/dpu_plane.o \ 75 disp/dpu1/dpu_plane.o \
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.c
index 879c13fe74e0..9d5a8d217bc6 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.c
@@ -376,10 +376,7 @@ void dpu_core_irq_preinstall(struct dpu_kms *dpu_kms)
376 struct msm_drm_private *priv; 376 struct msm_drm_private *priv;
377 int i; 377 int i;
378 378
379 if (!dpu_kms) { 379 if (!dpu_kms->dev) {
380 DPU_ERROR("invalid dpu_kms\n");
381 return;
382 } else if (!dpu_kms->dev) {
383 DPU_ERROR("invalid drm device\n"); 380 DPU_ERROR("invalid drm device\n");
384 return; 381 return;
385 } else if (!dpu_kms->dev->dev_private) { 382 } else if (!dpu_kms->dev->dev_private) {
@@ -410,20 +407,12 @@ void dpu_core_irq_preinstall(struct dpu_kms *dpu_kms)
410 } 407 }
411} 408}
412 409
413int dpu_core_irq_postinstall(struct dpu_kms *dpu_kms)
414{
415 return 0;
416}
417
418void dpu_core_irq_uninstall(struct dpu_kms *dpu_kms) 410void dpu_core_irq_uninstall(struct dpu_kms *dpu_kms)
419{ 411{
420 struct msm_drm_private *priv; 412 struct msm_drm_private *priv;
421 int i; 413 int i;
422 414
423 if (!dpu_kms) { 415 if (!dpu_kms->dev) {
424 DPU_ERROR("invalid dpu_kms\n");
425 return;
426 } else if (!dpu_kms->dev) {
427 DPU_ERROR("invalid drm device\n"); 416 DPU_ERROR("invalid drm device\n");
428 return; 417 return;
429 } else if (!dpu_kms->dev->dev_private) { 418 } else if (!dpu_kms->dev->dev_private) {
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.h
index 5e98bba46af5..884f77fa3eb6 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_irq.h
@@ -24,13 +24,6 @@
24void dpu_core_irq_preinstall(struct dpu_kms *dpu_kms); 24void dpu_core_irq_preinstall(struct dpu_kms *dpu_kms);
25 25
26/** 26/**
27 * dpu_core_irq_postinstall - perform post-installation of core IRQ handler
28 * @dpu_kms: DPU handle
29 * @return: 0 if success; error code otherwise
30 */
31int dpu_core_irq_postinstall(struct dpu_kms *dpu_kms);
32
33/**
34 * dpu_core_irq_uninstall - uninstall core IRQ handler 27 * dpu_core_irq_uninstall - uninstall core IRQ handler
35 * @dpu_kms: DPU handle 28 * @dpu_kms: DPU handle
36 * @return: none 29 * @return: none
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_irq.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_irq.c
deleted file mode 100644
index d5e6ce0140cf..000000000000
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_irq.c
+++ /dev/null
@@ -1,66 +0,0 @@
1/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#define pr_fmt(fmt) "[drm:%s:%d] " fmt, __func__, __LINE__
14
15#include <linux/irqdomain.h>
16#include <linux/irq.h>
17#include <linux/kthread.h>
18
19#include "dpu_irq.h"
20#include "dpu_core_irq.h"
21
22irqreturn_t dpu_irq(struct msm_kms *kms)
23{
24 struct dpu_kms *dpu_kms = to_dpu_kms(kms);
25
26 return dpu_core_irq(dpu_kms);
27}
28
29void dpu_irq_preinstall(struct msm_kms *kms)
30{
31 struct dpu_kms *dpu_kms = to_dpu_kms(kms);
32
33 if (!dpu_kms->dev || !dpu_kms->dev->dev) {
34 pr_err("invalid device handles\n");
35 return;
36 }
37
38 dpu_core_irq_preinstall(dpu_kms);
39}
40
41int dpu_irq_postinstall(struct msm_kms *kms)
42{
43 struct dpu_kms *dpu_kms = to_dpu_kms(kms);
44 int rc;
45
46 if (!kms) {
47 DPU_ERROR("invalid parameters\n");
48 return -EINVAL;
49 }
50
51 rc = dpu_core_irq_postinstall(dpu_kms);
52
53 return rc;
54}
55
56void dpu_irq_uninstall(struct msm_kms *kms)
57{
58 struct dpu_kms *dpu_kms = to_dpu_kms(kms);
59
60 if (!kms) {
61 DPU_ERROR("invalid parameters\n");
62 return;
63 }
64
65 dpu_core_irq_uninstall(dpu_kms);
66}
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_irq.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_irq.h
deleted file mode 100644
index 3e147f7176e2..000000000000
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_irq.h
+++ /dev/null
@@ -1,59 +0,0 @@
1/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#ifndef __DPU_IRQ_H__
14#define __DPU_IRQ_H__
15
16#include <linux/kernel.h>
17#include <linux/irqdomain.h>
18
19#include "msm_kms.h"
20
21/**
22 * dpu_irq_controller - define MDSS level interrupt controller context
23 * @enabled_mask: enable status of MDSS level interrupt
24 * @domain: interrupt domain of this controller
25 */
26struct dpu_irq_controller {
27 unsigned long enabled_mask;
28 struct irq_domain *domain;
29};
30
31/**
32 * dpu_irq_preinstall - perform pre-installation of MDSS IRQ handler
33 * @kms: pointer to kms context
34 * @return: none
35 */
36void dpu_irq_preinstall(struct msm_kms *kms);
37
38/**
39 * dpu_irq_postinstall - perform post-installation of MDSS IRQ handler
40 * @kms: pointer to kms context
41 * @return: 0 if success; error code otherwise
42 */
43int dpu_irq_postinstall(struct msm_kms *kms);
44
45/**
46 * dpu_irq_uninstall - uninstall MDSS IRQ handler
47 * @drm_dev: pointer to kms context
48 * @return: none
49 */
50void dpu_irq_uninstall(struct msm_kms *kms);
51
52/**
53 * dpu_irq - MDSS level IRQ handler
54 * @kms: pointer to kms context
55 * @return: interrupt handling status
56 */
57irqreturn_t dpu_irq(struct msm_kms *kms);
58
59#endif /* __DPU_IRQ_H__ */
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 8d5cd1e7a683..37dfee1ebba9 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -734,10 +734,30 @@ static void _dpu_kms_set_encoder_mode(struct msm_kms *kms,
734 encoder->base.id, rc); 734 encoder->base.id, rc);
735} 735}
736 736
737static irqreturn_t dpu_irq(struct msm_kms *kms)
738{
739 struct dpu_kms *dpu_kms = to_dpu_kms(kms);
740
741 return dpu_core_irq(dpu_kms);
742}
743
744static void dpu_irq_preinstall(struct msm_kms *kms)
745{
746 struct dpu_kms *dpu_kms = to_dpu_kms(kms);
747
748 dpu_core_irq_preinstall(dpu_kms);
749}
750
751static void dpu_irq_uninstall(struct msm_kms *kms)
752{
753 struct dpu_kms *dpu_kms = to_dpu_kms(kms);
754
755 dpu_core_irq_uninstall(dpu_kms);
756}
757
737static const struct msm_kms_funcs kms_funcs = { 758static const struct msm_kms_funcs kms_funcs = {
738 .hw_init = dpu_kms_hw_init, 759 .hw_init = dpu_kms_hw_init,
739 .irq_preinstall = dpu_irq_preinstall, 760 .irq_preinstall = dpu_irq_preinstall,
740 .irq_postinstall = dpu_irq_postinstall,
741 .irq_uninstall = dpu_irq_uninstall, 761 .irq_uninstall = dpu_irq_uninstall,
742 .irq = dpu_irq, 762 .irq = dpu_irq,
743 .prepare_commit = dpu_kms_prepare_commit, 763 .prepare_commit = dpu_kms_prepare_commit,
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
index 611c88c1ba10..c15d239e9832 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
@@ -30,7 +30,6 @@
30#include "dpu_hw_top.h" 30#include "dpu_hw_top.h"
31#include "dpu_io_util.h" 31#include "dpu_io_util.h"
32#include "dpu_rm.h" 32#include "dpu_rm.h"
33#include "dpu_irq.h"
34#include "dpu_core_perf.h" 33#include "dpu_core_perf.h"
35 34
36#define DRMID(x) ((x) ? (x)->base.id : -1) 35#define DRMID(x) ((x) ? (x)->base.id : -1)
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c
index 38576f8b90b6..b7963f6bb865 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c
@@ -9,6 +9,11 @@
9 9
10#define HW_INTR_STATUS 0x0010 10#define HW_INTR_STATUS 0x0010
11 11
12struct dpu_irq_controller {
13 unsigned long enabled_mask;
14 struct irq_domain *domain;
15};
16
12struct dpu_mdss { 17struct dpu_mdss {
13 struct msm_mdss base; 18 struct msm_mdss base;
14 void __iomem *mmio; 19 void __iomem *mmio;