|
40 | 40 | #define MDP_INTF_REV_7xxx_INTR_TEAR_STATUS(intf) (MDP_INTF_REV_7xxx_TEAR_OFF(intf) + 0x004) |
41 | 41 | #define MDP_INTF_REV_7xxx_INTR_TEAR_CLEAR(intf) (MDP_INTF_REV_7xxx_TEAR_OFF(intf) + 0x008) |
42 | 42 |
|
| 43 | +#define MDP_INTF_REV_13xx_OFF(intf) (0x18d000 + 0x1000 * (intf)) |
| 44 | +#define MDP_INTF_REV_13xx_INTR_EN(intf) (MDP_INTF_REV_13xx_OFF(intf) + 0x1c0) |
| 45 | +#define MDP_INTF_REV_13xx_INTR_STATUS(intf) (MDP_INTF_REV_13xx_OFF(intf) + 0x1c4) |
| 46 | +#define MDP_INTF_REV_13xx_INTR_CLEAR(intf) (MDP_INTF_REV_13xx_OFF(intf) + 0x1c8) |
| 47 | +#define MDP_INTF_REV_13xx_TEAR_OFF(intf) (0x18d800 + 0x1000 * (intf)) |
| 48 | +#define MDP_INTF_REV_13xx_INTR_TEAR_EN(intf) (MDP_INTF_REV_13xx_TEAR_OFF(intf) + 0x000) |
| 49 | +#define MDP_INTF_REV_13xx_INTR_TEAR_STATUS(intf) (MDP_INTF_REV_13xx_TEAR_OFF(intf) + 0x004) |
| 50 | +#define MDP_INTF_REV_13xx_INTR_TEAR_CLEAR(intf) (MDP_INTF_REV_13xx_TEAR_OFF(intf) + 0x008) |
| 51 | + |
43 | 52 | /** |
44 | 53 | * struct dpu_intr_reg - array of DPU register sets |
45 | 54 | * @clr_off: offset to CLEAR reg |
@@ -199,6 +208,82 @@ static const struct dpu_intr_reg dpu_intr_set_7xxx[] = { |
199 | 208 | }, |
200 | 209 | }; |
201 | 210 |
|
| 211 | +/* |
| 212 | + * dpu_intr_set_13xx - List of DPU interrupt registers for DPU >= 13.0 |
| 213 | + */ |
| 214 | +static const struct dpu_intr_reg dpu_intr_set_13xx[] = { |
| 215 | + [MDP_SSPP_TOP0_INTR] = { |
| 216 | + INTR_CLEAR, |
| 217 | + INTR_EN, |
| 218 | + INTR_STATUS |
| 219 | + }, |
| 220 | + [MDP_SSPP_TOP0_INTR2] = { |
| 221 | + INTR2_CLEAR, |
| 222 | + INTR2_EN, |
| 223 | + INTR2_STATUS |
| 224 | + }, |
| 225 | + [MDP_SSPP_TOP0_HIST_INTR] = { |
| 226 | + HIST_INTR_CLEAR, |
| 227 | + HIST_INTR_EN, |
| 228 | + HIST_INTR_STATUS |
| 229 | + }, |
| 230 | + [MDP_INTF0_INTR] = { |
| 231 | + MDP_INTF_REV_13xx_INTR_CLEAR(0), |
| 232 | + MDP_INTF_REV_13xx_INTR_EN(0), |
| 233 | + MDP_INTF_REV_13xx_INTR_STATUS(0) |
| 234 | + }, |
| 235 | + [MDP_INTF1_INTR] = { |
| 236 | + MDP_INTF_REV_13xx_INTR_CLEAR(1), |
| 237 | + MDP_INTF_REV_13xx_INTR_EN(1), |
| 238 | + MDP_INTF_REV_13xx_INTR_STATUS(1) |
| 239 | + }, |
| 240 | + [MDP_INTF1_TEAR_INTR] = { |
| 241 | + MDP_INTF_REV_13xx_INTR_TEAR_CLEAR(1), |
| 242 | + MDP_INTF_REV_13xx_INTR_TEAR_EN(1), |
| 243 | + MDP_INTF_REV_13xx_INTR_TEAR_STATUS(1) |
| 244 | + }, |
| 245 | + [MDP_INTF2_INTR] = { |
| 246 | + MDP_INTF_REV_13xx_INTR_CLEAR(2), |
| 247 | + MDP_INTF_REV_13xx_INTR_EN(2), |
| 248 | + MDP_INTF_REV_13xx_INTR_STATUS(2) |
| 249 | + }, |
| 250 | + [MDP_INTF2_TEAR_INTR] = { |
| 251 | + MDP_INTF_REV_13xx_INTR_TEAR_CLEAR(2), |
| 252 | + MDP_INTF_REV_13xx_INTR_TEAR_EN(2), |
| 253 | + MDP_INTF_REV_13xx_INTR_TEAR_STATUS(2) |
| 254 | + }, |
| 255 | + [MDP_INTF3_INTR] = { |
| 256 | + MDP_INTF_REV_13xx_INTR_CLEAR(3), |
| 257 | + MDP_INTF_REV_13xx_INTR_EN(3), |
| 258 | + MDP_INTF_REV_13xx_INTR_STATUS(3) |
| 259 | + }, |
| 260 | + [MDP_INTF4_INTR] = { |
| 261 | + MDP_INTF_REV_13xx_INTR_CLEAR(4), |
| 262 | + MDP_INTF_REV_13xx_INTR_EN(4), |
| 263 | + MDP_INTF_REV_13xx_INTR_STATUS(4) |
| 264 | + }, |
| 265 | + [MDP_INTF5_INTR] = { |
| 266 | + MDP_INTF_REV_13xx_INTR_CLEAR(5), |
| 267 | + MDP_INTF_REV_13xx_INTR_EN(5), |
| 268 | + MDP_INTF_REV_13xx_INTR_STATUS(5) |
| 269 | + }, |
| 270 | + [MDP_INTF6_INTR] = { |
| 271 | + MDP_INTF_REV_13xx_INTR_CLEAR(6), |
| 272 | + MDP_INTF_REV_13xx_INTR_EN(6), |
| 273 | + MDP_INTF_REV_13xx_INTR_STATUS(6) |
| 274 | + }, |
| 275 | + [MDP_INTF7_INTR] = { |
| 276 | + MDP_INTF_REV_13xx_INTR_CLEAR(7), |
| 277 | + MDP_INTF_REV_13xx_INTR_EN(7), |
| 278 | + MDP_INTF_REV_13xx_INTR_STATUS(7) |
| 279 | + }, |
| 280 | + [MDP_INTF8_INTR] = { |
| 281 | + MDP_INTF_REV_13xx_INTR_CLEAR(8), |
| 282 | + MDP_INTF_REV_13xx_INTR_EN(8), |
| 283 | + MDP_INTF_REV_13xx_INTR_STATUS(8) |
| 284 | + }, |
| 285 | +}; |
| 286 | + |
202 | 287 | #define DPU_IRQ_MASK(irq_idx) (BIT(DPU_IRQ_BIT(irq_idx))) |
203 | 288 |
|
204 | 289 | static inline bool dpu_core_irq_is_valid(unsigned int irq_idx) |
@@ -507,7 +592,9 @@ struct dpu_hw_intr *dpu_hw_intr_init(struct drm_device *dev, |
507 | 592 | if (!intr) |
508 | 593 | return ERR_PTR(-ENOMEM); |
509 | 594 |
|
510 | | - if (m->mdss_ver->core_major_ver >= 7) |
| 595 | + if (m->mdss_ver->core_major_ver >= 13) |
| 596 | + intr->intr_set = dpu_intr_set_13xx; |
| 597 | + else if (m->mdss_ver->core_major_ver >= 7) |
511 | 598 | intr->intr_set = dpu_intr_set_7xxx; |
512 | 599 | else |
513 | 600 | intr->intr_set = dpu_intr_set_legacy; |
|
0 commit comments