From: Xiangzhi Tang <xiangzhi.tang@mediatek.com>
To: Bjorn Andersson <andersson@kernel.org>,
Mathieu Poirier <mathieu.poirier@linaro.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Xiangzhi Tang <Xiangzhi.Tang@mediatek.com>
Cc: <linux-remoteproc@vger.kernel.org>, <devicetree@vger.kernel.org>,
<linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-mediatek@lists.infradead.org>,
<Project_Global_Chrome_Upstream_Group@mediatek.com>,
Hailong Fan <Hailong.Fan@mediatek.com>,
Huayu Zong <Huayu.Zong@mediatek.com>,
Jarried Lin <Jarried.Lin@mediatek.com>,
Justin Yeh <Justin.Yeh@mediatek.com>,
Vince-WL Liu <Vince-WL.Liu@mediatek.com>,
Xiangzhi Tang <xiangzhi.tang@mediatek.com>
Subject: [PATCH 0/7] Add MediaTek VCP remoteproc driver support
Date: Mon, 27 Apr 2026 19:04:39 +0800 [thread overview]
Message-ID: <20260427111446.22955-1-xiangzhi.tang@mediatek.com> (raw)
This patch series adds support for the MediaTek Video Companion
Processor (VCP), a RISC-V based coprocessor found on MediaTek SoCs
starting from mt8196. The VCP handles video processing and multimedia
tasks, offloading work from the main CPU cores.
Architecture Overview
=====================
The VCP subsystem consists of several components:
1. Hardware Architecture
- RISC-V coprocessor with 1-2 harts per core
- Multi-core capable (mt8196 has 2 VCP cores)
- Shared SRAM (up to 384KB) partitioned among cores
- Dedicated power domain for power management
- Integrated with SoC IOMMU for memory protection
2. Communication Infrastructure
- 5 hardware mailbox channels for IPI (Inter-Processor Interrupt)
- Shared memory regions for bulk data transfer
- IPI routing tables mapping message types to mailboxes
- Support for both blocking and non-blocking IPI operations
3. Boot and Runtime Management
- Firmware loaded via remoteproc framework from filesystem
- Boot sequence coordinated with ARM Trusted Firmware (ATF) via SMC
- Runtime power management with suspend/resume support
- Feature registration mechanism for cross-subsystem coordination
Patch Series Structure
======================
[PATCH 1/7] dt-bindings: Device tree binding for mt8196 VCP
[PATCH 2/7] remoteproc: Core VCP remoteproc driver with ATF integration
[PATCH 3/7] firmware: IPC protocol layer for VCP communication
[PATCH 4/7] remoteproc: IPI mailbox initialization and routing
[PATCH 5/7] remoteproc: IPI synchronization mechanism
[PATCH 6/7] remoteproc: Suspend/resume power management
[PATCH 7/7] MAINTAINERS: Add maintainer entry
Differences from MediaTek SCP
==============================
MediaTek SoCs have two types of companion processors:
- SCP (System Companion Processor): Cortex-M based, for system tasks
- VCP (Video Companion Processor): RISC-V based, for multimedia
While both use the remoteproc framework, VCP has distinct characteristics:
- Different ISA (RISC-V vs ARM Cortex-M)
- Different firmware and memory layout
- Different IPC protocol (5 mailboxes vs 1)
- ATF-coordinated boot sequence
- Multi-core capable architecture
Testing
=======
This patch series has been tested on mt8196 development boards with:
- Firmware loading and boot sequence verification
- IPI communication with video encoder/decoder subsystems
- Suspend/resume cycles with multimedia workloads active
- Multi-core VCP configuration
- IOMMU integration with multimedia memory management
Dependencies
============
- Mediatek Power management driver
- MediaTek VCP mailbox driver (MTK_VCP_MBOX)
- ARM SMCCC support for ATF communication
- IOMMU support for memory protection
Checkpatch Status
=================
All patches pass checkpatch.pl with no errors. Warnings about MAINTAINERS
are addressed in the final patch of the series.
Future Work
===========
- Support for additional SoC variants (mt8197, mt8198)
- Enhanced debugging infrastructure (trace, core dump)
- Performance optimizations for IPI latency
- Documentation under Documentation/remoteproc/
Xiangzhi Tang (7):
dt-bindings: remoteproc: Add MediaTek mt8196 VCP binding
remoteproc: mediatek: Add VCP remoteproc driver
firmware: mediatek: Add VCP IPC protocol driver
remoteproc: mediatek: Add VCP IPI mailbox initialization
remoteproc: mediatek: Add VCP ipi communication sync mechanism
remoteproc: mediatek: vcp: Add vcp suspend and resume feature
MAINTAINERS: Add entry for MediaTek VCP remoteproc driver
.../bindings/remoteproc/mediatek,mt8196-vcp.yaml | 166 ++++
MAINTAINERS | 14 +
drivers/firmware/Kconfig | 9 +
drivers/firmware/Makefile | 1 +
drivers/firmware/mtk-vcp-ipc.c | 481 +++++++++++
drivers/remoteproc/Kconfig | 12 +
drivers/remoteproc/Makefile | 3 +
drivers/remoteproc/mtk_vcp_common.c | 881 +++++++++++++++++++++
drivers/remoteproc/mtk_vcp_common.h | 281 +++++++
drivers/remoteproc/mtk_vcp_rproc.c | 581 ++++++++++++++
drivers/remoteproc/mtk_vcp_rproc.h | 95 +++
include/linux/firmware/mediatek/mtk-vcp-ipc.h | 151 ++++
include/linux/remoteproc/mtk_vcp_public.h | 146 ++++
include/linux/soc/mediatek/mtk_sip_svc.h | 2 +
14 files changed, 2823 insertions(+)
create mode 100644 Documentation/devicetree/bindings/remoteproc/mediatek,mt8196-vcp.yaml
create mode 100644 drivers/firmware/mtk-vcp-ipc.c
create mode 100644 drivers/remoteproc/mtk_vcp_common.c
create mode 100644 drivers/remoteproc/mtk_vcp_common.h
create mode 100644 drivers/remoteproc/mtk_vcp_rproc.c
create mode 100644 drivers/remoteproc/mtk_vcp_rproc.h
create mode 100644 include/linux/firmware/mediatek/mtk-vcp-ipc.h
create mode 100644 include/linux/remoteproc/mtk_vcp_public.h
--
2.46.0
next reply other threads:[~2026-04-27 11:15 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-27 11:04 Xiangzhi Tang [this message]
2026-04-27 11:04 ` [PATCH v4 1/7] dt-bindings: remoteproc: Add MediaTek mt8196 VCP binding Xiangzhi Tang
2026-04-27 12:39 ` Rob Herring (Arm)
2026-04-27 13:51 ` Rob Herring
2026-04-27 11:04 ` [PATCH v4 2/7] remoteproc: mediatek: Add VCP remoteproc driver Xiangzhi Tang
2026-04-27 11:04 ` [PATCH v4 3/7] firmware: mediatek: Add VCP IPC protocol driver Xiangzhi Tang
2026-04-27 11:04 ` [PATCH v4 4/7] remoteproc: mediatek: Add VCP IPI mailbox initialization Xiangzhi Tang
2026-04-27 11:04 ` [PATCH v4 5/7] remoteproc: mediatek: Add VCP ipi communication sync mechanism Xiangzhi Tang
2026-04-27 11:04 ` [PATCH v4 6/7] remoteproc: mediatek: vcp: Add vcp suspend and resume feature Xiangzhi Tang
2026-04-27 11:04 ` [PATCH v4 7/7] MAINTAINERS: Add entry for MediaTek VCP remoteproc driver Xiangzhi Tang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260427111446.22955-1-xiangzhi.tang@mediatek.com \
--to=xiangzhi.tang@mediatek.com \
--cc=Hailong.Fan@mediatek.com \
--cc=Huayu.Zong@mediatek.com \
--cc=Jarried.Lin@mediatek.com \
--cc=Justin.Yeh@mediatek.com \
--cc=Project_Global_Chrome_Upstream_Group@mediatek.com \
--cc=Vince-WL.Liu@mediatek.com \
--cc=andersson@kernel.org \
--cc=angelogioacchino.delregno@collabora.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-remoteproc@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
--cc=matthias.bgg@gmail.com \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox