summaryrefslogtreecommitdiffstats
path: root/src/soc/mediatek/mt8195/include/soc/apusys_devapc.h
diff options
context:
space:
mode:
authorFlora Fu <flora.fu@mediatek.com>2021-11-05 17:46:28 +0800
committerPaul Fagerburg <pfagerburg@chromium.org>2021-11-12 14:57:22 +0000
commitff182cb237c994b4a2b39bc56fea7e3c2a5f62fb (patch)
tree9a6254e41e49683808e61980e0624b8531aec44d /src/soc/mediatek/mt8195/include/soc/apusys_devapc.h
parentdc63bbde9db133fac7b85b7010f630f1a93b7211 (diff)
downloadcoreboot-ff182cb237c994b4a2b39bc56fea7e3c2a5f62fb.tar.gz
coreboot-ff182cb237c994b4a2b39bc56fea7e3c2a5f62fb.tar.bz2
coreboot-ff182cb237c994b4a2b39bc56fea7e3c2a5f62fb.zip
soc/mediatek/mt8195: Add APU device apc driver
Add APU device apc driver and set up permissions. APU has its own device apc for control access by domains. For Domain 0, the access to the following slaves are restricted to security read and write: apusys_ao-2, apusys_ao-4, apusys_ao-5, apu_sctrl_reviser, apu_iommu0_r1 apu_iommu0_r2, apu_iommu0_r3, apu_iommu0_r4 apu_iommu1_r1, apu_iommu1_r2, apu_iommu1_r3,apu_iommu1_r4 For VPU, D0/D5 are set as no protection, other domains are forbidden. For other slaves, the D0 is no protection, other domains are forbidden. BUG=b:203145462 BRANCH=cherry TEST=boot cherry, check dump log and test permissions Signed-off-by: Flora Fu <flora.fu@mediatek.com> Change-Id: If92d3b02ac4966332315b85d68e0f48c6a9fce85 Reviewed-on: https://review.coreboot.org/c/coreboot/+/58969 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Yu-Ping Wu <yupingso@google.com>
Diffstat (limited to 'src/soc/mediatek/mt8195/include/soc/apusys_devapc.h')
-rw-r--r--src/soc/mediatek/mt8195/include/soc/apusys_devapc.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/soc/mediatek/mt8195/include/soc/apusys_devapc.h b/src/soc/mediatek/mt8195/include/soc/apusys_devapc.h
new file mode 100644
index 000000000000..4b9e75fe60cb
--- /dev/null
+++ b/src/soc/mediatek/mt8195/include/soc/apusys_devapc.h
@@ -0,0 +1,39 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef APUSYS_DEVAPC_H
+#define APUSYS_DEVAPC_H
+
+enum apusys_apc_error {
+ APUSYS_APC_OK = 0,
+ APUSYS_APC_ERR_GENERIC,
+ APUSYS_APC_ERR_INVALID_CMD,
+ APUSYS_APC_ERR_SLAVE_TYPE_NOT_SUPPORTED,
+ APUSYS_APC_ERR_SLAVE_IDX_NOT_SUPPORTED,
+ APUSYS_APC_ERR_DOMAIN_NOT_SUPPORTED,
+ APUSYS_APC_ERR_PERMISSION_NOT_SUPPORTED,
+ APUSYS_APC_ERR_OUT_OF_BOUNDARY,
+ APUSYS_APC_ERR_REQ_TYPE_NOT_SUPPORTED,
+};
+
+struct apc_apu_dom_16 {
+ unsigned char d_permission[16];
+};
+
+#define APUSYS_APC_CON ((void *)(APUSYS_APC_AO_BASE + 0x00F00))
+#define APUSYS_SYS0_APC_LOCK_0 ((void *)(APUSYS_APC_AO_BASE + 0x00700))
+#define APUSYS_NOC_DAPC_CON ((void *)(APUSYS_NOC_DAPC_AO_BASE + 0x00F00))
+
+#define APU_SCTRL_REVISER BIT(15)
+#define DEVAPC_AO_WRAPPER BIT(8)
+
+#define APUSYS_APC_SYS0_AO_SLAVE_NUM_IN_1_DOM 16U
+#define APUSYS_APC_SYS0_AO_DOM_NUM 16U
+#define APUSYS_APC_SYS0_AO_SLAVE_NUM 71U
+
+#define APUSYS_NOC_DAPC_AO_SLAVE_NUM_IN_1_DOM 16U
+#define APUSYS_NOC_DAPC_AO_DOM_NUM 16U
+#define APUSYS_NOC_DAPC_AO_SLAVE_NUM 15U
+
+void start_apusys_devapc(void);
+
+#endif /* APUSYS_DEVAPC_H */