diff options
-rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp5/mdp5_ctl.c | 20 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c | 26 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c | 20 |
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 | ||
25 | const struct mdp5_cfg_hw msm8x74_config = { | 25 | const 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 | ||
76 | const struct mdp5_cfg_hw apq8084_config = { | 80 | const 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 { | |||
61 | struct mdp5_cfg_hw { | 61 | struct 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 | ||
24 | void mdp5_set_irqmask(struct mdp_kms *mdp_kms, uint32_t irqmask) | 24 | void 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 | ||
29 | static void mdp5_irq_error_handler(struct mdp_irq *irq, uint32_t irqstatus) | 29 | static 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 | ||
136 | static void mdp5_hw_mask_irq(struct irq_data *irqd) | 136 | static 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 | ||