Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'mailbox-v5.9' of git://git.linaro.org/landing-teams/working/fujitsu/integration

Pull mailbox updates from Jassi Brar:
"mediatek:
- add support for mt6779 gce
- shutdown cleanup and address shift support

qcom:
- add msm8994 apcs and sdm660 hmss compatibility

imx:
- mark PM funcs __maybe

pcc:
- put acpi table before bailout

misc:
- replace http with https links"

* tag 'mailbox-v5.9' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
mailbox: mediatek: cmdq: clear task in channel before shutdown
mailbox: cmdq: support mt6779 gce platform definition
mailbox: cmdq: variablize address shift in platform
dt-binding: gce: add gce header file for mt6779
mailbox: qcom: Add msm8994 apcs compatible
mailbox: qcom: Add sdm660 hmss compatible
mailbox: imx: Mark PM functions as __maybe_unused
mailbox: pcc: Put the PCCT table for error path
mailbox: Replace HTTP links with HTTPS ones

+338 -24
+5 -3
Documentation/devicetree/bindings/mailbox/mtk-gce.txt
··· 9 9 mailbox.txt for generic information about mailbox device-tree bindings. 10 10 11 11 Required properties: 12 - - compatible: can be "mediatek,mt8173-gce" or "mediatek,mt8183-gce" 12 + - compatible: can be "mediatek,mt8173-gce", "mediatek,mt8183-gce" or 13 + "mediatek,mt6779-gce". 13 14 - reg: Address range of the GCE unit 14 15 - interrupts: The interrupt signal from the GCE block 15 16 - clock: Clocks according to the common clock binding ··· 35 34 start_offset: the start offset of register address that GCE can access. 36 35 size: the total size of register address that GCE can access. 37 36 38 - Some vaules of properties are defined in 'dt-bindings/gce/mt8173-gce.h' 39 - or 'dt-binding/gce/mt8183-gce.h'. Such as sub-system ids, thread priority, event ids. 37 + Some vaules of properties are defined in 'dt-bindings/gce/mt8173-gce.h', 38 + 'dt-binding/gce/mt8183-gce.h' or 'dt-bindings/gce/mt6779-gce.h'. Such as 39 + sub-system ids, thread priority, event ids. 40 40 41 41 Example: 42 42
+2
Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml
··· 18 18 enum: 19 19 - qcom,ipq8074-apcs-apps-global 20 20 - qcom,msm8916-apcs-kpss-global 21 + - qcom,msm8994-apcs-kpss-global 21 22 - qcom,msm8996-apcs-hmss-global 22 23 - qcom,msm8998-apcs-hmss-global 23 24 - qcom,qcs404-apcs-apps-global 24 25 - qcom,sc7180-apss-shared 26 + - qcom,sdm660-apcs-hmss-global 25 27 - qcom,sdm845-apss-shared 26 28 - qcom,sm8150-apss-shared 27 29
+4 -4
drivers/mailbox/imx-mailbox.c
··· 598 598 }; 599 599 MODULE_DEVICE_TABLE(of, imx_mu_dt_ids); 600 600 601 - static int imx_mu_suspend_noirq(struct device *dev) 601 + static int __maybe_unused imx_mu_suspend_noirq(struct device *dev) 602 602 { 603 603 struct imx_mu_priv *priv = dev_get_drvdata(dev); 604 604 ··· 608 608 return 0; 609 609 } 610 610 611 - static int imx_mu_resume_noirq(struct device *dev) 611 + static int __maybe_unused imx_mu_resume_noirq(struct device *dev) 612 612 { 613 613 struct imx_mu_priv *priv = dev_get_drvdata(dev); 614 614 ··· 626 626 return 0; 627 627 } 628 628 629 - static int imx_mu_runtime_suspend(struct device *dev) 629 + static int __maybe_unused imx_mu_runtime_suspend(struct device *dev) 630 630 { 631 631 struct imx_mu_priv *priv = dev_get_drvdata(dev); 632 632 ··· 635 635 return 0; 636 636 } 637 637 638 - static int imx_mu_runtime_resume(struct device *dev) 638 + static int __maybe_unused imx_mu_runtime_resume(struct device *dev) 639 639 { 640 640 struct imx_mu_priv *priv = dev_get_drvdata(dev); 641 641 int ret;
+84 -13
drivers/mailbox/mtk-cmdq-mailbox.c
··· 75 75 struct cmdq_thread *thread; 76 76 struct clk *clock; 77 77 bool suspended; 78 + u8 shift_pa; 78 79 }; 80 + 81 + struct gce_plat { 82 + u32 thread_nr; 83 + u8 shift; 84 + }; 85 + 86 + u8 cmdq_get_shift_pa(struct mbox_chan *chan) 87 + { 88 + struct cmdq *cmdq = container_of(chan->mbox, struct cmdq, mbox); 89 + 90 + return cmdq->shift_pa; 91 + } 92 + EXPORT_SYMBOL(cmdq_get_shift_pa); 79 93 80 94 static int cmdq_thread_suspend(struct cmdq *cmdq, struct cmdq_thread *thread) 81 95 { ··· 197 183 { 198 184 struct cmdq_thread *thread = task->thread; 199 185 struct cmdq_task *next_task; 186 + struct cmdq *cmdq = task->cmdq; 200 187 201 - dev_err(task->cmdq->mbox.dev, "task 0x%p error\n", task); 202 - WARN_ON(cmdq_thread_suspend(task->cmdq, thread) < 0); 188 + dev_err(cmdq->mbox.dev, "task 0x%p error\n", task); 189 + WARN_ON(cmdq_thread_suspend(cmdq, thread) < 0); 203 190 next_task = list_first_entry_or_null(&thread->task_busy_list, 204 191 struct cmdq_task, list_entry); 205 192 if (next_task) 206 - writel(next_task->pa_base, thread->base + CMDQ_THR_CURR_ADDR); 193 + writel(next_task->pa_base >> cmdq->shift_pa, 194 + thread->base + CMDQ_THR_CURR_ADDR); 207 195 cmdq_thread_resume(thread); 208 196 } 209 197 ··· 235 219 else 236 220 return; 237 221 238 - curr_pa = readl(thread->base + CMDQ_THR_CURR_ADDR); 222 + curr_pa = readl(thread->base + CMDQ_THR_CURR_ADDR) << cmdq->shift_pa; 239 223 240 224 list_for_each_entry_safe(task, tmp, &thread->task_busy_list, 241 225 list_entry) { ··· 349 333 350 334 if (list_empty(&thread->task_busy_list)) { 351 335 WARN_ON(clk_enable(cmdq->clock) < 0); 336 + /* 337 + * The thread reset will clear thread related register to 0, 338 + * including pc, end, priority, irq, suspend and enable. Thus 339 + * set CMDQ_THR_ENABLED to CMDQ_THR_ENABLE_TASK will enable 340 + * thread and make it running. 341 + */ 352 342 WARN_ON(cmdq_thread_reset(cmdq, thread) < 0); 353 343 354 - writel(task->pa_base, thread->base + CMDQ_THR_CURR_ADDR); 355 - writel(task->pa_base + pkt->cmd_buf_size, 344 + writel(task->pa_base >> cmdq->shift_pa, 345 + thread->base + CMDQ_THR_CURR_ADDR); 346 + writel((task->pa_base + pkt->cmd_buf_size) >> cmdq->shift_pa, 356 347 thread->base + CMDQ_THR_END_ADDR); 348 + 357 349 writel(thread->priority, thread->base + CMDQ_THR_PRIORITY); 358 350 writel(CMDQ_THR_IRQ_EN, thread->base + CMDQ_THR_IRQ_ENABLE); 359 351 writel(CMDQ_THR_ENABLED, thread->base + CMDQ_THR_ENABLE_TASK); 360 352 } else { 361 353 WARN_ON(cmdq_thread_suspend(cmdq, thread) < 0); 362 - curr_pa = readl(thread->base + CMDQ_THR_CURR_ADDR); 363 - end_pa = readl(thread->base + CMDQ_THR_END_ADDR); 354 + curr_pa = readl(thread->base + CMDQ_THR_CURR_ADDR) << 355 + cmdq->shift_pa; 356 + end_pa = readl(thread->base + CMDQ_THR_END_ADDR) << 357 + cmdq->shift_pa; 364 358 /* check boundary */ 365 359 if (curr_pa == end_pa - CMDQ_INST_SIZE || 366 360 curr_pa == end_pa) { 367 361 /* set to this task directly */ 368 - writel(task->pa_base, 362 + writel(task->pa_base >> cmdq->shift_pa, 369 363 thread->base + CMDQ_THR_CURR_ADDR); 370 364 } else { 371 365 cmdq_task_insert_into_thread(task); 372 366 smp_mb(); /* modify jump before enable thread */ 373 367 } 374 - writel(task->pa_base + pkt->cmd_buf_size, 368 + writel((task->pa_base + pkt->cmd_buf_size) >> cmdq->shift_pa, 375 369 thread->base + CMDQ_THR_END_ADDR); 376 370 cmdq_thread_resume(thread); 377 371 } ··· 397 371 398 372 static void cmdq_mbox_shutdown(struct mbox_chan *chan) 399 373 { 374 + struct cmdq_thread *thread = (struct cmdq_thread *)chan->con_priv; 375 + struct cmdq *cmdq = dev_get_drvdata(chan->mbox->dev); 376 + struct cmdq_task *task, *tmp; 377 + unsigned long flags; 378 + 379 + spin_lock_irqsave(&thread->chan->lock, flags); 380 + if (list_empty(&thread->task_busy_list)) 381 + goto done; 382 + 383 + WARN_ON(cmdq_thread_suspend(cmdq, thread) < 0); 384 + 385 + /* make sure executed tasks have success callback */ 386 + cmdq_thread_irq_handler(cmdq, thread); 387 + if (list_empty(&thread->task_busy_list)) 388 + goto done; 389 + 390 + list_for_each_entry_safe(task, tmp, &thread->task_busy_list, 391 + list_entry) { 392 + cmdq_task_exec_done(task, CMDQ_CB_ERROR); 393 + kfree(task); 394 + } 395 + 396 + cmdq_thread_disable(cmdq, thread); 397 + clk_disable(cmdq->clock); 398 + done: 399 + /* 400 + * The thread->task_busy_list empty means thread already disable. The 401 + * cmdq_mbox_send_data() always reset thread which clear disable and 402 + * suspend statue when first pkt send to channel, so there is no need 403 + * to do any operation here, only unlock and leave. 404 + */ 405 + spin_unlock_irqrestore(&thread->chan->lock, flags); 400 406 } 401 407 402 408 static int cmdq_mbox_flush(struct mbox_chan *chan, unsigned long timeout) ··· 511 453 struct resource *res; 512 454 struct cmdq *cmdq; 513 455 int err, i; 456 + struct gce_plat *plat_data; 514 457 515 458 cmdq = devm_kzalloc(dev, sizeof(*cmdq), GFP_KERNEL); 516 459 if (!cmdq) ··· 530 471 return -EINVAL; 531 472 } 532 473 533 - cmdq->thread_nr = (u32)(unsigned long)of_device_get_match_data(dev); 474 + plat_data = (struct gce_plat *)of_device_get_match_data(dev); 475 + if (!plat_data) { 476 + dev_err(dev, "failed to get match data\n"); 477 + return -EINVAL; 478 + } 479 + 480 + cmdq->thread_nr = plat_data->thread_nr; 481 + cmdq->shift_pa = plat_data->shift; 534 482 cmdq->irq_mask = GENMASK(cmdq->thread_nr - 1, 0); 535 483 err = devm_request_irq(dev, cmdq->irq, cmdq_irq_handler, IRQF_SHARED, 536 484 "mtk_cmdq", cmdq); ··· 600 534 .resume = cmdq_resume, 601 535 }; 602 536 537 + static const struct gce_plat gce_plat_v2 = {.thread_nr = 16}; 538 + static const struct gce_plat gce_plat_v3 = {.thread_nr = 24}; 539 + static const struct gce_plat gce_plat_v4 = {.thread_nr = 24, .shift = 3}; 540 + 603 541 static const struct of_device_id cmdq_of_ids[] = { 604 - {.compatible = "mediatek,mt8173-gce", .data = (void *)16}, 605 - {.compatible = "mediatek,mt8183-gce", .data = (void *)24}, 542 + {.compatible = "mediatek,mt8173-gce", .data = (void *)&gce_plat_v2}, 543 + {.compatible = "mediatek,mt8183-gce", .data = (void *)&gce_plat_v3}, 544 + {.compatible = "mediatek,mt6779-gce", .data = (void *)&gce_plat_v4}, 606 545 {} 607 546 }; 608 547
+1 -1
drivers/mailbox/omap-mailbox.c
··· 3 3 * OMAP mailbox driver 4 4 * 5 5 * Copyright (C) 2006-2009 Nokia Corporation. All rights reserved. 6 - * Copyright (C) 2013-2019 Texas Instruments Incorporated - http://www.ti.com 6 + * Copyright (C) 2013-2019 Texas Instruments Incorporated - https://www.ti.com 7 7 * 8 8 * Contact: Hiroshi DOYU <Hiroshi.DOYU@nokia.com> 9 9 * Suman Anna <s-anna@ti.com>
+7 -2
drivers/mailbox/pcc.c
··· 457 457 pr_warn("Error parsing PCC subspaces from PCCT\n"); 458 458 else 459 459 pr_warn("Invalid PCCT: %d PCC subspaces\n", count); 460 - return -EINVAL; 460 + 461 + rc = -EINVAL; 462 + goto err_put_pcct; 461 463 } 462 464 463 465 pcc_mbox_channels = kcalloc(count, sizeof(struct mbox_chan), 464 466 GFP_KERNEL); 465 467 if (!pcc_mbox_channels) { 466 468 pr_err("Could not allocate space for PCC mbox channels\n"); 467 - return -ENOMEM; 469 + rc = -ENOMEM; 470 + goto err_put_pcct; 468 471 } 469 472 470 473 pcc_doorbell_vaddr = kcalloc(count, sizeof(void *), GFP_KERNEL); ··· 538 535 kfree(pcc_doorbell_vaddr); 539 536 err_free_mbox: 540 537 kfree(pcc_mbox_channels); 538 + err_put_pcct: 539 + acpi_put_table(pcct_tbl); 541 540 return rc; 542 541 } 543 542
+10
drivers/mailbox/qcom-apcs-ipc-mailbox.c
··· 41 41 .offset = 8, .clk_name = "qcom-apcs-msm8916-clk" 42 42 }; 43 43 44 + static const struct qcom_apcs_ipc_data msm8994_apcs_data = { 45 + .offset = 8, .clk_name = NULL 46 + }; 47 + 44 48 static const struct qcom_apcs_ipc_data msm8996_apcs_data = { 45 49 .offset = 16, .clk_name = NULL 46 50 }; 47 51 48 52 static const struct qcom_apcs_ipc_data msm8998_apcs_data = { 53 + .offset = 8, .clk_name = NULL 54 + }; 55 + 56 + static const struct qcom_apcs_ipc_data sdm660_apcs_data = { 49 57 .offset = 8, .clk_name = NULL 50 58 }; 51 59 ··· 154 146 { .compatible = "qcom,ipq6018-apcs-apps-global", .data = &ipq6018_apcs_data }, 155 147 { .compatible = "qcom,ipq8074-apcs-apps-global", .data = &ipq8074_apcs_data }, 156 148 { .compatible = "qcom,msm8916-apcs-kpss-global", .data = &msm8916_apcs_data }, 149 + { .compatible = "qcom,msm8994-apcs-kpss-global", .data = &msm8994_apcs_data }, 157 150 { .compatible = "qcom,msm8996-apcs-hmss-global", .data = &msm8996_apcs_data }, 158 151 { .compatible = "qcom,msm8998-apcs-hmss-global", .data = &msm8998_apcs_data }, 159 152 { .compatible = "qcom,qcs404-apcs-apps-global", .data = &msm8916_apcs_data }, 160 153 { .compatible = "qcom,sc7180-apss-shared", .data = &apps_shared_apcs_data }, 154 + { .compatible = "qcom,sdm660-apcs-hmss-global", .data = &sdm660_apcs_data }, 161 155 { .compatible = "qcom,sdm845-apss-shared", .data = &apps_shared_apcs_data }, 162 156 { .compatible = "qcom,sm8150-apss-shared", .data = &apps_shared_apcs_data }, 163 157 {}
+1 -1
drivers/mailbox/ti-msgmgr.c
··· 2 2 /* 3 3 * Texas Instruments' Message Manager Driver 4 4 * 5 - * Copyright (C) 2015-2017 Texas Instruments Incorporated - http://www.ti.com/ 5 + * Copyright (C) 2015-2017 Texas Instruments Incorporated - https://www.ti.com/ 6 6 * Nishanth Menon 7 7 */ 8 8
+222
include/dt-bindings/gce/mt6779-gce.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + /* 3 + * Copyright (c) 2019 MediaTek Inc. 4 + * Author: Dennis-YC Hsieh <dennis-yc.hsieh@mediatek.com> 5 + */ 6 + 7 + #ifndef _DT_BINDINGS_GCE_MT6779_H 8 + #define _DT_BINDINGS_GCE_MT6779_H 9 + 10 + #define CMDQ_NO_TIMEOUT 0xffffffff 11 + 12 + /* GCE HW thread priority */ 13 + #define CMDQ_THR_PRIO_LOWEST 0 14 + #define CMDQ_THR_PRIO_1 1 15 + #define CMDQ_THR_PRIO_2 2 16 + #define CMDQ_THR_PRIO_3 3 17 + #define CMDQ_THR_PRIO_4 4 18 + #define CMDQ_THR_PRIO_5 5 19 + #define CMDQ_THR_PRIO_6 6 20 + #define CMDQ_THR_PRIO_HIGHEST 7 21 + 22 + /* GCE subsys table */ 23 + #define SUBSYS_1300XXXX 0 24 + #define SUBSYS_1400XXXX 1 25 + #define SUBSYS_1401XXXX 2 26 + #define SUBSYS_1402XXXX 3 27 + #define SUBSYS_1502XXXX 4 28 + #define SUBSYS_1880XXXX 5 29 + #define SUBSYS_1881XXXX 6 30 + #define SUBSYS_1882XXXX 7 31 + #define SUBSYS_1883XXXX 8 32 + #define SUBSYS_1884XXXX 9 33 + #define SUBSYS_1000XXXX 10 34 + #define SUBSYS_1001XXXX 11 35 + #define SUBSYS_1002XXXX 12 36 + #define SUBSYS_1003XXXX 13 37 + #define SUBSYS_1004XXXX 14 38 + #define SUBSYS_1005XXXX 15 39 + #define SUBSYS_1020XXXX 16 40 + #define SUBSYS_1028XXXX 17 41 + #define SUBSYS_1700XXXX 18 42 + #define SUBSYS_1701XXXX 19 43 + #define SUBSYS_1702XXXX 20 44 + #define SUBSYS_1703XXXX 21 45 + #define SUBSYS_1800XXXX 22 46 + #define SUBSYS_1801XXXX 23 47 + #define SUBSYS_1802XXXX 24 48 + #define SUBSYS_1804XXXX 25 49 + #define SUBSYS_1805XXXX 26 50 + #define SUBSYS_1808XXXX 27 51 + #define SUBSYS_180aXXXX 28 52 + #define SUBSYS_180bXXXX 29 53 + #define CMDQ_SUBSYS_OFF 32 54 + 55 + /* GCE hardware events */ 56 + #define CMDQ_EVENT_DISP_RDMA0_SOF 0 57 + #define CMDQ_EVENT_DISP_RDMA1_SOF 1 58 + #define CMDQ_EVENT_MDP_RDMA0_SOF 2 59 + #define CMDQ_EVENT_MDP_RDMA1_SOF 3 60 + #define CMDQ_EVENT_MDP_RSZ0_SOF 4 61 + #define CMDQ_EVENT_MDP_RSZ1_SOF 5 62 + #define CMDQ_EVENT_MDP_TDSHP_SOF 6 63 + #define CMDQ_EVENT_MDP_WROT0_SOF 7 64 + #define CMDQ_EVENT_MDP_WROT1_SOF 8 65 + #define CMDQ_EVENT_DISP_OVL0_SOF 9 66 + #define CMDQ_EVENT_DISP_2L_OVL0_SOF 10 67 + #define CMDQ_EVENT_DISP_2L_OVL1_SOF 11 68 + #define CMDQ_EVENT_DISP_WDMA0_SOF 12 69 + #define CMDQ_EVENT_DISP_COLOR0_SOF 13 70 + #define CMDQ_EVENT_DISP_CCORR0_SOF 14 71 + #define CMDQ_EVENT_DISP_AAL0_SOF 15 72 + #define CMDQ_EVENT_DISP_GAMMA0_SOF 16 73 + #define CMDQ_EVENT_DISP_DITHER0_SOF 17 74 + #define CMDQ_EVENT_DISP_PWM0_SOF 18 75 + #define CMDQ_EVENT_DISP_DSI0_SOF 19 76 + #define CMDQ_EVENT_DISP_DPI0_SOF 20 77 + #define CMDQ_EVENT_DISP_POSTMASK0_SOF 21 78 + #define CMDQ_EVENT_DISP_RSZ0_SOF 22 79 + #define CMDQ_EVENT_MDP_AAL_SOF 23 80 + #define CMDQ_EVENT_MDP_CCORR_SOF 24 81 + #define CMDQ_EVENT_DISP_DBI0_SOF 25 82 + #define CMDQ_EVENT_ISP_RELAY_SOF 26 83 + #define CMDQ_EVENT_IPU_RELAY_SOF 27 84 + #define CMDQ_EVENT_DISP_RDMA0_EOF 28 85 + #define CMDQ_EVENT_DISP_RDMA1_EOF 29 86 + #define CMDQ_EVENT_MDP_RDMA0_EOF 30 87 + #define CMDQ_EVENT_MDP_RDMA1_EOF 31 88 + #define CMDQ_EVENT_MDP_RSZ0_EOF 32 89 + #define CMDQ_EVENT_MDP_RSZ1_EOF 33 90 + #define CMDQ_EVENT_MDP_TDSHP_EOF 34 91 + #define CMDQ_EVENT_MDP_WROT0_W_EOF 35 92 + #define CMDQ_EVENT_MDP_WROT1_W_EOF 36 93 + #define CMDQ_EVENT_DISP_OVL0_EOF 37 94 + #define CMDQ_EVENT_DISP_2L_OVL0_EOF 38 95 + #define CMDQ_EVENT_DISP_2L_OVL1_EOF 39 96 + #define CMDQ_EVENT_DISP_WDMA0_EOF 40 97 + #define CMDQ_EVENT_DISP_COLOR0_EOF 41 98 + #define CMDQ_EVENT_DISP_CCORR0_EOF 42 99 + #define CMDQ_EVENT_DISP_AAL0_EOF 43 100 + #define CMDQ_EVENT_DISP_GAMMA0_EOF 44 101 + #define CMDQ_EVENT_DISP_DITHER0_EOF 45 102 + #define CMDQ_EVENT_DISP_DSI0_EOF 46 103 + #define CMDQ_EVENT_DISP_DPI0_EOF 47 104 + #define CMDQ_EVENT_DISP_RSZ0_EOF 49 105 + #define CMDQ_EVENT_MDP_AAL_FRAME_DONE 50 106 + #define CMDQ_EVENT_MDP_CCORR_FRAME_DONE 51 107 + #define CMDQ_EVENT_DISP_POSTMASK0_FRAME_DONE 52 108 + #define CMDQ_EVENT_MUTEX0_STREAM_EOF 130 109 + #define CMDQ_EVENT_MUTEX1_STREAM_EOF 131 110 + #define CMDQ_EVENT_MUTEX2_STREAM_EOF 132 111 + #define CMDQ_EVENT_MUTEX3_STREAM_EOF 133 112 + #define CMDQ_EVENT_MUTEX4_STREAM_EOF 134 113 + #define CMDQ_EVENT_MUTEX5_STREAM_EOF 135 114 + #define CMDQ_EVENT_MUTEX6_STREAM_EOF 136 115 + #define CMDQ_EVENT_MUTEX7_STREAM_EOF 137 116 + #define CMDQ_EVENT_MUTEX8_STREAM_EOF 138 117 + #define CMDQ_EVENT_MUTEX9_STREAM_EOF 139 118 + #define CMDQ_EVENT_MUTEX10_STREAM_EOF 140 119 + #define CMDQ_EVENT_MUTEX11_STREAM_EOF 141 120 + #define CMDQ_EVENT_DISP_RDMA0_UNDERRUN 142 121 + #define CMDQ_EVENT_DISP_RDMA1_UNDERRUN 143 122 + #define CMDQ_EVENT_DISP_RDMA2_UNDERRUN 144 123 + #define CMDQ_EVENT_DISP_RDMA3_UNDERRUN 145 124 + #define CMDQ_EVENT_DSI0_TE 146 125 + #define CMDQ_EVENT_DSI0_IRQ_EVENT 147 126 + #define CMDQ_EVENT_DSI0_DONE_EVENT 148 127 + #define CMDQ_EVENT_DISP_POSTMASK0_RST_DONE 150 128 + #define CMDQ_EVENT_DISP_WDMA0_RST_DONE 151 129 + #define CMDQ_EVENT_MDP_WROT0_RST_DONE 153 130 + #define CMDQ_EVENT_MDP_RDMA0_RST_DONE 154 131 + #define CMDQ_EVENT_DISP_OVL0_RST_DONE 155 132 + #define CMDQ_EVENT_DISP_OVL0_2L_RST_DONE 156 133 + #define CMDQ_EVENT_DISP_OVL1_2L_RST_DONE 157 134 + #define CMDQ_EVENT_DIP_CQ_THREAD0_EOF 257 135 + #define CMDQ_EVENT_DIP_CQ_THREAD1_EOF 258 136 + #define CMDQ_EVENT_DIP_CQ_THREAD2_EOF 259 137 + #define CMDQ_EVENT_DIP_CQ_THREAD3_EOF 260 138 + #define CMDQ_EVENT_DIP_CQ_THREAD4_EOF 261 139 + #define CMDQ_EVENT_DIP_CQ_THREAD5_EOF 262 140 + #define CMDQ_EVENT_DIP_CQ_THREAD6_EOF 263 141 + #define CMDQ_EVENT_DIP_CQ_THREAD7_EOF 264 142 + #define CMDQ_EVENT_DIP_CQ_THREAD8_EOF 265 143 + #define CMDQ_EVENT_DIP_CQ_THREAD9_EOF 266 144 + #define CMDQ_EVENT_DIP_CQ_THREAD10_EOF 267 145 + #define CMDQ_EVENT_DIP_CQ_THREAD11_EOF 268 146 + #define CMDQ_EVENT_DIP_CQ_THREAD12_EOF 269 147 + #define CMDQ_EVENT_DIP_CQ_THREAD13_EOF 270 148 + #define CMDQ_EVENT_DIP_CQ_THREAD14_EOF 271 149 + #define CMDQ_EVENT_DIP_CQ_THREAD15_EOF 272 150 + #define CMDQ_EVENT_DIP_CQ_THREAD16_EOF 273 151 + #define CMDQ_EVENT_DIP_CQ_THREAD17_EOF 274 152 + #define CMDQ_EVENT_DIP_CQ_THREAD18_EOF 275 153 + #define CMDQ_EVENT_DIP_DMA_ERR_EVENT 276 154 + #define CMDQ_EVENT_AMD_FRAME_DONE 277 155 + #define CMDQ_EVENT_MFB_DONE 278 156 + #define CMDQ_EVENT_WPE_A_EOF 279 157 + #define CMDQ_EVENT_VENC_EOF 289 158 + #define CMDQ_EVENT_VENC_CMDQ_PAUSE_DONE 290 159 + #define CMDQ_EVENT_JPEG_ENC_EOF 291 160 + #define CMDQ_EVENT_VENC_MB_DONE 292 161 + #define CMDQ_EVENT_VENC_128BYTE_CNT_DONE 293 162 + #define CMDQ_EVENT_ISP_FRAME_DONE_A 321 163 + #define CMDQ_EVENT_ISP_FRAME_DONE_B 322 164 + #define CMDQ_EVENT_ISP_FRAME_DONE_C 323 165 + #define CMDQ_EVENT_ISP_CAMSV_0_PASS1_DONE 324 166 + #define CMDQ_EVENT_ISP_CAMSV_0_2_PASS1_DONE 325 167 + #define CMDQ_EVENT_ISP_CAMSV_1_PASS1_DONE 326 168 + #define CMDQ_EVENT_ISP_CAMSV_2_PASS1_DONE 327 169 + #define CMDQ_EVENT_ISP_CAMSV_3_PASS1_DONE 328 170 + #define CMDQ_EVENT_ISP_TSF_DONE 329 171 + #define CMDQ_EVENT_SENINF_0_FIFO_FULL 330 172 + #define CMDQ_EVENT_SENINF_1_FIFO_FULL 331 173 + #define CMDQ_EVENT_SENINF_2_FIFO_FULL 332 174 + #define CMDQ_EVENT_SENINF_3_FIFO_FULL 333 175 + #define CMDQ_EVENT_SENINF_4_FIFO_FULL 334 176 + #define CMDQ_EVENT_SENINF_5_FIFO_FULL 335 177 + #define CMDQ_EVENT_SENINF_6_FIFO_FULL 336 178 + #define CMDQ_EVENT_SENINF_7_FIFO_FULL 337 179 + #define CMDQ_EVENT_TG_OVRUN_A_INT_DLY 338 180 + #define CMDQ_EVENT_TG_OVRUN_B_INT_DLY 339 181 + #define CMDQ_EVENT_TG_OVRUN_C_INT 340 182 + #define CMDQ_EVENT_TG_GRABERR_A_INT_DLY 341 183 + #define CMDQ_EVENT_TG_GRABERR_B_INT_DLY 342 184 + #define CMDQ_EVENT_TG_GRABERR_C_INT 343 185 + #define CMDQ_EVENT_CQ_VR_SNAP_A_INT_DLY 344 186 + #define CMDQ_EVENT_CQ_VR_SNAP_B_INT_DLY 345 187 + #define CMDQ_EVENT_CQ_VR_SNAP_C_INT 346 188 + #define CMDQ_EVENT_DMA_R1_ERROR_A_INT_DLY 347 189 + #define CMDQ_EVENT_DMA_R1_ERROR_B_INT_DLY 348 190 + #define CMDQ_EVENT_DMA_R1_ERROR_C_INT 349 191 + #define CMDQ_EVENT_APU_GCE_CORE0_EVENT_0 353 192 + #define CMDQ_EVENT_APU_GCE_CORE0_EVENT_1 354 193 + #define CMDQ_EVENT_APU_GCE_CORE0_EVENT_2 355 194 + #define CMDQ_EVENT_APU_GCE_CORE0_EVENT_3 356 195 + #define CMDQ_EVENT_APU_GCE_CORE1_EVENT_0 385 196 + #define CMDQ_EVENT_APU_GCE_CORE1_EVENT_1 386 197 + #define CMDQ_EVENT_APU_GCE_CORE1_EVENT_2 387 198 + #define CMDQ_EVENT_APU_GCE_CORE1_EVENT_3 388 199 + #define CMDQ_EVENT_VDEC_EVENT_0 416 200 + #define CMDQ_EVENT_VDEC_EVENT_1 417 201 + #define CMDQ_EVENT_VDEC_EVENT_2 418 202 + #define CMDQ_EVENT_VDEC_EVENT_3 419 203 + #define CMDQ_EVENT_VDEC_EVENT_4 420 204 + #define CMDQ_EVENT_VDEC_EVENT_5 421 205 + #define CMDQ_EVENT_VDEC_EVENT_6 422 206 + #define CMDQ_EVENT_VDEC_EVENT_7 423 207 + #define CMDQ_EVENT_VDEC_EVENT_8 424 208 + #define CMDQ_EVENT_VDEC_EVENT_9 425 209 + #define CMDQ_EVENT_VDEC_EVENT_10 426 210 + #define CMDQ_EVENT_VDEC_EVENT_11 427 211 + #define CMDQ_EVENT_VDEC_EVENT_12 428 212 + #define CMDQ_EVENT_VDEC_EVENT_13 429 213 + #define CMDQ_EVENT_VDEC_EVENT_14 430 214 + #define CMDQ_EVENT_VDEC_EVENT_15 431 215 + #define CMDQ_EVENT_FDVT_DONE 449 216 + #define CMDQ_EVENT_FE_DONE 450 217 + #define CMDQ_EVENT_RSC_EOF 451 218 + #define CMDQ_EVENT_DVS_DONE_ASYNC_SHOT 452 219 + #define CMDQ_EVENT_DVP_DONE_ASYNC_SHOT 453 220 + #define CMDQ_EVENT_DSI0_TE_INFRA 898 221 + 222 + #endif
+2
include/linux/mailbox/mtk-cmdq-mailbox.h
··· 90 90 void *cl; 91 91 }; 92 92 93 + u8 cmdq_get_shift_pa(struct mbox_chan *chan); 94 + 93 95 #endif /* __MTK_CMDQ_MAILBOX_H__ */