Macpaul Lin | 5d16f8d | 2022-08-11 16:27:10 +0800 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only OR MIT */ |
Weiyi Lu | 16bc621 | 2021-02-09 17:59:26 +0800 | [diff] [blame] | 2 | |
| 3 | #include <device/mmio.h> |
| 4 | #include <soc/infracfg.h> |
| 5 | #include <soc/mtcmos.h> |
| 6 | |
| 7 | enum { |
| 8 | VPPSYS0_PROT_STEP_6_MASK = 0x00100000, |
| 9 | VPPSYS0_PROT_STEP_5_MASK = 0x0007F8FF, |
| 10 | VPPSYS0_PROT_STEP_4_MASK = 0x00800000, |
| 11 | VPPSYS0_PROT_STEP_3_MASK = 0x01600300, |
| 12 | VPPSYS0_PROT_STEP_2_MASK = 0x80381DC7, |
| 13 | VPPSYS0_PROT_STEP_1_MASK = 0x00000400, |
| 14 | |
| 15 | VDOSYS0_PROT_STEP_5_MASK = 0x00200000, |
| 16 | VDOSYS0_PROT_STEP_4_MASK = 0x3FC00000, |
| 17 | VDOSYS0_PROT_STEP_3_MASK = 0x00000040, |
| 18 | VDOSYS0_PROT_STEP_2_MASK = 0x00800000, |
| 19 | VDOSYS0_PROT_STEP_1_MASK = 0x403E6238, |
| 20 | |
| 21 | VPPSYS1_PROT_STEP_3_MASK = 0x000400C0, |
| 22 | VPPSYS1_PROT_STEP_2_MASK = 0x00800000, |
| 23 | VPPSYS1_PROT_STEP_1_MASK = 0x000001E0, |
| 24 | |
| 25 | VDOSYS1_PROT_STEP_3_MASK = 0x00000400, |
| 26 | VDOSYS1_PROT_STEP_2_MASK = 0x00400000, |
| 27 | VDOSYS1_PROT_STEP_1_MASK = 0xC0000000, |
| 28 | |
Chun-Jie Chen | 3708cb5 | 2022-02-22 14:53:20 +0800 | [diff] [blame] | 29 | ADSP_PROT_STEP_1_MASK = 0x0001D000, |
| 30 | |
| 31 | AUDIO_PROT_STEP_1_MASK = 0x00000A00, |
Weiyi Lu | 16bc621 | 2021-02-09 17:59:26 +0800 | [diff] [blame] | 32 | }; |
| 33 | |
| 34 | void mtcmos_protect_display_bus(void) |
| 35 | { |
| 36 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_sub_infra_vdnr_clr, |
| 37 | VPPSYS0_PROT_STEP_6_MASK); |
| 38 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_mm_clr_2, |
| 39 | VPPSYS0_PROT_STEP_5_MASK); |
| 40 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_clr, |
| 41 | VPPSYS0_PROT_STEP_4_MASK); |
| 42 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_mm_clr_2, |
| 43 | VPPSYS0_PROT_STEP_3_MASK); |
| 44 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_mm_clr, |
| 45 | VPPSYS0_PROT_STEP_2_MASK); |
| 46 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_clr, |
| 47 | VPPSYS0_PROT_STEP_1_MASK); |
| 48 | |
| 49 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_sub_infra_vdnr_clr, |
| 50 | VDOSYS0_PROT_STEP_5_MASK); |
| 51 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_mm_clr, |
| 52 | VDOSYS0_PROT_STEP_4_MASK); |
| 53 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_clr, |
| 54 | VDOSYS0_PROT_STEP_3_MASK); |
| 55 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_mm_clr_2, |
| 56 | VDOSYS0_PROT_STEP_2_MASK); |
| 57 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_mm_clr, |
| 58 | VDOSYS0_PROT_STEP_1_MASK); |
| 59 | |
| 60 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_mm_clr_2, |
| 61 | VPPSYS1_PROT_STEP_3_MASK); |
| 62 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_mm_clr, |
| 63 | VPPSYS1_PROT_STEP_2_MASK); |
| 64 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_mm_clr, |
| 65 | VPPSYS1_PROT_STEP_1_MASK); |
| 66 | |
| 67 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_mm_clr_2, |
| 68 | VDOSYS1_PROT_STEP_3_MASK); |
| 69 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_mm_clr, |
| 70 | VDOSYS1_PROT_STEP_2_MASK); |
| 71 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_mm_clr, |
| 72 | VDOSYS1_PROT_STEP_1_MASK); |
| 73 | } |
| 74 | |
| 75 | void mtcmos_protect_audio_bus(void) |
| 76 | { |
| 77 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_clr_2, |
Chun-Jie Chen | 3708cb5 | 2022-02-22 14:53:20 +0800 | [diff] [blame] | 78 | ADSP_PROT_STEP_1_MASK); |
| 79 | |
| 80 | write32(&mt8195_infracfg_ao->infra_topaxi_protecten_clr_2, |
Weiyi Lu | 16bc621 | 2021-02-09 17:59:26 +0800 | [diff] [blame] | 81 | AUDIO_PROT_STEP_1_MASK); |
| 82 | } |