aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c8
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.h1
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_ctl.c20
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c26
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c9
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h2
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c20
7 files changed, 48 insertions, 38 deletions
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c
index 57d620b40240..4c570e646b74 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c
@@ -24,6 +24,10 @@ const struct mdp5_cfg_hw *mdp5_cfg = NULL;
24 24
25const struct mdp5_cfg_hw msm8x74_config = { 25const struct mdp5_cfg_hw msm8x74_config = {
26 .name = "msm8x74", 26 .name = "msm8x74",
27 .mdp = {
28 .count = 1,
29 .base = { 0x00100 },
30 },
27 .smp = { 31 .smp = {
28 .mmb_count = 22, 32 .mmb_count = 22,
29 .mmb_size = 4096, 33 .mmb_size = 4096,
@@ -75,6 +79,10 @@ const struct mdp5_cfg_hw msm8x74_config = {
75 79
76const struct mdp5_cfg_hw apq8084_config = { 80const struct mdp5_cfg_hw apq8084_config = {
77 .name = "apq8084", 81 .name = "apq8084",
82 .mdp = {
83 .count = 1,
84 .base = { 0x00100 },
85 },
78 .smp = { 86 .smp = {
79 .mmb_count = 44, 87 .mmb_count = 44,
80 .mmb_size = 8192, 88 .mmb_size = 8192,
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.h b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.h
index 93bee92e7d60..11f3e869e880 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.h
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.h
@@ -61,6 +61,7 @@ struct mdp5_smp_block {
61struct mdp5_cfg_hw { 61struct mdp5_cfg_hw {
62 char *name; 62 char *name;
63 63
64 struct mdp5_sub_block mdp;
64 struct mdp5_smp_block smp; 65 struct mdp5_smp_block smp;
65 struct mdp5_ctl_block ctl; 66 struct mdp5_ctl_block ctl;
66 struct mdp5_sub_block pipe_vig; 67 struct mdp5_sub_block pipe_vig;
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_ctl.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_ctl.c
index 7c0adf54e3e5..0fa7fcefd7eb 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_ctl.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_ctl.c
@@ -112,31 +112,31 @@ static void set_display_intf(struct mdp5_kms *mdp5_kms,
112 u32 intf_sel; 112 u32 intf_sel;
113 113
114 spin_lock_irqsave(&mdp5_kms->resource_lock, flags); 114 spin_lock_irqsave(&mdp5_kms->resource_lock, flags);
115 intf_sel = mdp5_read(mdp5_kms, REG_MDP5_DISP_INTF_SEL); 115 intf_sel = mdp5_read(mdp5_kms, REG_MDP5_MDP_DISP_INTF_SEL(0));
116 116
117 switch (intf->num) { 117 switch (intf->num) {
118 case 0: 118 case 0:
119 intf_sel &= ~MDP5_DISP_INTF_SEL_INTF0__MASK; 119 intf_sel &= ~MDP5_MDP_DISP_INTF_SEL_INTF0__MASK;
120 intf_sel |= MDP5_DISP_INTF_SEL_INTF0(intf->type); 120 intf_sel |= MDP5_MDP_DISP_INTF_SEL_INTF0(intf->type);
121 break; 121 break;
122 case 1: 122 case 1:
123 intf_sel &= ~MDP5_DISP_INTF_SEL_INTF1__MASK; 123 intf_sel &= ~MDP5_MDP_DISP_INTF_SEL_INTF1__MASK;
124 intf_sel |= MDP5_DISP_INTF_SEL_INTF1(intf->type); 124 intf_sel |= MDP5_MDP_DISP_INTF_SEL_INTF1(intf->type);
125 break; 125 break;
126 case 2: 126 case 2:
127 intf_sel &= ~MDP5_DISP_INTF_SEL_INTF2__MASK; 127 intf_sel &= ~MDP5_MDP_DISP_INTF_SEL_INTF2__MASK;
128 intf_sel |= MDP5_DISP_INTF_SEL_INTF2(intf->type); 128 intf_sel |= MDP5_MDP_DISP_INTF_SEL_INTF2(intf->type);
129 break; 129 break;
130 case 3: 130 case 3:
131 intf_sel &= ~MDP5_DISP_INTF_SEL_INTF3__MASK; 131 intf_sel &= ~MDP5_MDP_DISP_INTF_SEL_INTF3__MASK;
132 intf_sel |= MDP5_DISP_INTF_SEL_INTF3(intf->type); 132 intf_sel |= MDP5_MDP_DISP_INTF_SEL_INTF3(intf->type);
133 break; 133 break;
134 default: 134 default:
135 BUG(); 135 BUG();
136 break; 136 break;
137 } 137 }
138 138
139 mdp5_write(mdp5_kms, REG_MDP5_DISP_INTF_SEL, intf_sel); 139 mdp5_write(mdp5_kms, REG_MDP5_MDP_DISP_INTF_SEL(0), intf_sel);
140 spin_unlock_irqrestore(&mdp5_kms->resource_lock, flags); 140 spin_unlock_irqrestore(&mdp5_kms->resource_lock, flags);
141} 141}
142 142
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c
index a9407105b9b7..33bd4c6160dd 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c
@@ -23,7 +23,7 @@
23 23
24void mdp5_set_irqmask(struct mdp_kms *mdp_kms, uint32_t irqmask) 24void mdp5_set_irqmask(struct mdp_kms *mdp_kms, uint32_t irqmask)
25{ 25{
26 mdp5_write(to_mdp5_kms(mdp_kms), REG_MDP5_INTR_EN, irqmask); 26 mdp5_write(to_mdp5_kms(mdp_kms), REG_MDP5_MDP_INTR_EN(0), irqmask);
27} 27}
28 28
29static void mdp5_irq_error_handler(struct mdp_irq *irq, uint32_t irqstatus) 29static void mdp5_irq_error_handler(struct mdp_irq *irq, uint32_t irqstatus)
@@ -35,8 +35,8 @@ void mdp5_irq_preinstall(struct msm_kms *kms)
35{ 35{
36 struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms)); 36 struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
37 mdp5_enable(mdp5_kms); 37 mdp5_enable(mdp5_kms);
38 mdp5_write(mdp5_kms, REG_MDP5_INTR_CLEAR, 0xffffffff); 38 mdp5_write(mdp5_kms, REG_MDP5_MDP_INTR_CLEAR(0), 0xffffffff);
39 mdp5_write(mdp5_kms, REG_MDP5_INTR_EN, 0x00000000); 39 mdp5_write(mdp5_kms, REG_MDP5_MDP_INTR_EN(0), 0x00000000);
40 mdp5_disable(mdp5_kms); 40 mdp5_disable(mdp5_kms);
41} 41}
42 42
@@ -61,7 +61,7 @@ void mdp5_irq_uninstall(struct msm_kms *kms)
61{ 61{
62 struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms)); 62 struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
63 mdp5_enable(mdp5_kms); 63 mdp5_enable(mdp5_kms);
64 mdp5_write(mdp5_kms, REG_MDP5_INTR_EN, 0x00000000); 64 mdp5_write(mdp5_kms, REG_MDP5_MDP_INTR_EN(0), 0x00000000);
65 mdp5_disable(mdp5_kms); 65 mdp5_disable(mdp5_kms);
66} 66}
67 67
@@ -73,8 +73,8 @@ static void mdp5_irq_mdp(struct mdp_kms *mdp_kms)
73 unsigned int id; 73 unsigned int id;
74 uint32_t status; 74 uint32_t status;
75 75
76 status = mdp5_read(mdp5_kms, REG_MDP5_INTR_STATUS); 76 status = mdp5_read(mdp5_kms, REG_MDP5_MDP_INTR_STATUS(0));
77 mdp5_write(mdp5_kms, REG_MDP5_INTR_CLEAR, status); 77 mdp5_write(mdp5_kms, REG_MDP5_MDP_INTR_CLEAR(0), status);
78 78
79 VERB("status=%08x", status); 79 VERB("status=%08x", status);
80 80
@@ -91,13 +91,13 @@ irqreturn_t mdp5_irq(struct msm_kms *kms)
91 struct mdp5_kms *mdp5_kms = to_mdp5_kms(mdp_kms); 91 struct mdp5_kms *mdp5_kms = to_mdp5_kms(mdp_kms);
92 uint32_t intr; 92 uint32_t intr;
93 93
94 intr = mdp5_read(mdp5_kms, REG_MDP5_HW_INTR_STATUS); 94 intr = mdp5_read(mdp5_kms, REG_MDSS_HW_INTR_STATUS);
95 95
96 VERB("intr=%08x", intr); 96 VERB("intr=%08x", intr);
97 97
98 if (intr & MDP5_HW_INTR_STATUS_INTR_MDP) { 98 if (intr & MDSS_HW_INTR_STATUS_INTR_MDP) {
99 mdp5_irq_mdp(mdp_kms); 99 mdp5_irq_mdp(mdp_kms);
100 intr &= ~MDP5_HW_INTR_STATUS_INTR_MDP; 100 intr &= ~MDSS_HW_INTR_STATUS_INTR_MDP;
101 } 101 }
102 102
103 while (intr) { 103 while (intr) {
@@ -128,10 +128,10 @@ void mdp5_disable_vblank(struct msm_kms *kms, struct drm_crtc *crtc)
128 * can register to get their irq's delivered 128 * can register to get their irq's delivered
129 */ 129 */
130 130
131#define VALID_IRQS (MDP5_HW_INTR_STATUS_INTR_DSI0 | \ 131#define VALID_IRQS (MDSS_HW_INTR_STATUS_INTR_DSI0 | \
132 MDP5_HW_INTR_STATUS_INTR_DSI1 | \ 132 MDSS_HW_INTR_STATUS_INTR_DSI1 | \
133 MDP5_HW_INTR_STATUS_INTR_HDMI | \ 133 MDSS_HW_INTR_STATUS_INTR_HDMI | \
134 MDP5_HW_INTR_STATUS_INTR_EDP) 134 MDSS_HW_INTR_STATUS_INTR_EDP)
135 135
136static void mdp5_hw_mask_irq(struct irq_data *irqd) 136static void mdp5_hw_mask_irq(struct irq_data *irqd)
137{ 137{
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
index 7e03af56206a..e7ab89dddcf6 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
@@ -58,7 +58,7 @@ static int mdp5_hw_init(struct msm_kms *kms)
58 */ 58 */
59 59
60 spin_lock_irqsave(&mdp5_kms->resource_lock, flags); 60 spin_lock_irqsave(&mdp5_kms->resource_lock, flags);
61 mdp5_write(mdp5_kms, REG_MDP5_DISP_INTF_SEL, 0); 61 mdp5_write(mdp5_kms, REG_MDP5_MDP_DISP_INTF_SEL(0), 0);
62 spin_unlock_irqrestore(&mdp5_kms->resource_lock, flags); 62 spin_unlock_irqrestore(&mdp5_kms->resource_lock, flags);
63 63
64 mdp5_ctlm_hw_reset(mdp5_kms->ctlm); 64 mdp5_ctlm_hw_reset(mdp5_kms->ctlm);
@@ -296,11 +296,11 @@ static void read_hw_revision(struct mdp5_kms *mdp5_kms,
296 uint32_t version; 296 uint32_t version;
297 297
298 mdp5_enable(mdp5_kms); 298 mdp5_enable(mdp5_kms);
299 version = mdp5_read(mdp5_kms, REG_MDP5_MDP_VERSION); 299 version = mdp5_read(mdp5_kms, REG_MDSS_HW_VERSION);
300 mdp5_disable(mdp5_kms); 300 mdp5_disable(mdp5_kms);
301 301
302 *major = FIELD(version, MDP5_MDP_VERSION_MAJOR); 302 *major = FIELD(version, MDSS_HW_VERSION_MAJOR);
303 *minor = FIELD(version, MDP5_MDP_VERSION_MINOR); 303 *minor = FIELD(version, MDSS_HW_VERSION_MINOR);
304 304
305 DBG("MDP5 version v%d.%d", *major, *minor); 305 DBG("MDP5 version v%d.%d", *major, *minor);
306} 306}
@@ -343,6 +343,7 @@ struct msm_kms *mdp5_kms_init(struct drm_device *dev)
343 343
344 mdp5_kms->dev = dev; 344 mdp5_kms->dev = dev;
345 345
346 /* mdp5_kms->mmio actually represents the MDSS base address */
346 mdp5_kms->mmio = msm_ioremap(pdev, "mdp_phys", "MDP5"); 347 mdp5_kms->mmio = msm_ioremap(pdev, "mdp_phys", "MDP5");
347 if (IS_ERR(mdp5_kms->mmio)) { 348 if (IS_ERR(mdp5_kms->mmio)) {
348 ret = PTR_ERR(mdp5_kms->mmio); 349 ret = PTR_ERR(mdp5_kms->mmio);
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
index 690edfde4ba1..6efa5c61aa98 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
@@ -54,7 +54,7 @@ struct mdp5_kms {
54 54
55 /* 55 /*
56 * lock to protect access to global resources: ie., following register: 56 * lock to protect access to global resources: ie., following register:
57 * - REG_MDP5_DISP_INTF_SEL 57 * - REG_MDP5_MDP_DISP_INTF_SEL
58 */ 58 */
59 spinlock_t resource_lock; 59 spinlock_t resource_lock;
60 60
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c
index 1f795af89680..361c064ba44c 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c
@@ -43,7 +43,7 @@
43 * set. 43 * set.
44 * 44 *
45 * 2) mdp5_smp_configure(): 45 * 2) mdp5_smp_configure():
46 * As hw is programmed, before FLUSH, MDP5_SMP_ALLOC registers 46 * As hw is programmed, before FLUSH, MDP5_MDP_SMP_ALLOC registers
47 * are configured for the union(pending, inuse) 47 * are configured for the union(pending, inuse)
48 * 48 *
49 * 3) mdp5_smp_commit(): 49 * 3) mdp5_smp_commit():
@@ -237,25 +237,25 @@ static void update_smp_state(struct mdp5_smp *smp,
237 int idx = blk / 3; 237 int idx = blk / 3;
238 int fld = blk % 3; 238 int fld = blk % 3;
239 239
240 val = mdp5_read(mdp5_kms, REG_MDP5_SMP_ALLOC_W_REG(idx)); 240 val = mdp5_read(mdp5_kms, REG_MDP5_MDP_SMP_ALLOC_W_REG(0, idx));
241 241
242 switch (fld) { 242 switch (fld) {
243 case 0: 243 case 0:
244 val &= ~MDP5_SMP_ALLOC_W_REG_CLIENT0__MASK; 244 val &= ~MDP5_MDP_SMP_ALLOC_W_REG_CLIENT0__MASK;
245 val |= MDP5_SMP_ALLOC_W_REG_CLIENT0(cid); 245 val |= MDP5_MDP_SMP_ALLOC_W_REG_CLIENT0(cid);
246 break; 246 break;
247 case 1: 247 case 1:
248 val &= ~MDP5_SMP_ALLOC_W_REG_CLIENT1__MASK; 248 val &= ~MDP5_MDP_SMP_ALLOC_W_REG_CLIENT1__MASK;
249 val |= MDP5_SMP_ALLOC_W_REG_CLIENT1(cid); 249 val |= MDP5_MDP_SMP_ALLOC_W_REG_CLIENT1(cid);
250 break; 250 break;
251 case 2: 251 case 2:
252 val &= ~MDP5_SMP_ALLOC_W_REG_CLIENT2__MASK; 252 val &= ~MDP5_MDP_SMP_ALLOC_W_REG_CLIENT2__MASK;
253 val |= MDP5_SMP_ALLOC_W_REG_CLIENT2(cid); 253 val |= MDP5_MDP_SMP_ALLOC_W_REG_CLIENT2(cid);
254 break; 254 break;
255 } 255 }
256 256
257 mdp5_write(mdp5_kms, REG_MDP5_SMP_ALLOC_W_REG(idx), val); 257 mdp5_write(mdp5_kms, REG_MDP5_MDP_SMP_ALLOC_W_REG(0, idx), val);
258 mdp5_write(mdp5_kms, REG_MDP5_SMP_ALLOC_R_REG(idx), val); 258 mdp5_write(mdp5_kms, REG_MDP5_MDP_SMP_ALLOC_R_REG(0, idx), val);
259 } 259 }
260} 260}
261 261