-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
soc: mediatek: pm-domains: Add support for mt8192
Add the needed board data to support mt8192 SoC. Signed-off-by: Weiyi Lu <weiyi.lu@mediatek.com> Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> Tested-by: Weiyi Lu <weiyi.lu@mediatek.com> Link: https://lore.kernel.org/r/20201030113622.201188-17-enric.balletbo@collabora.com Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
- Loading branch information
Weiyi Lu
authored and
Matthias Brugger
committed
Nov 27, 2020
1 parent
c1f3163
commit a49d5e7
Showing
3 changed files
with
353 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,292 @@ | ||
| /* SPDX-License-Identifier: GPL-2.0-only */ | ||
|
|
||
| #ifndef __SOC_MEDIATEK_MT8192_PM_DOMAINS_H | ||
| #define __SOC_MEDIATEK_MT8192_PM_DOMAINS_H | ||
|
|
||
| #include "mtk-pm-domains.h" | ||
| #include <dt-bindings/power/mt8192-power.h> | ||
|
|
||
| /* | ||
| * MT8192 power domain support | ||
| */ | ||
|
|
||
| static const struct scpsys_domain_data scpsys_domain_data_mt8192[] = { | ||
| [MT8192_POWER_DOMAIN_AUDIO] = { | ||
| .sta_mask = BIT(21), | ||
| .ctl_offs = 0x0354, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| .bp_infracfg = { | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_2_AUDIO, | ||
| MT8192_TOP_AXI_PROT_EN_2_SET, | ||
| MT8192_TOP_AXI_PROT_EN_2_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_2_STA1), | ||
| }, | ||
| }, | ||
| [MT8192_POWER_DOMAIN_CONN] = { | ||
| .sta_mask = PWR_STATUS_CONN, | ||
| .ctl_offs = 0x0304, | ||
| .sram_pdn_bits = 0, | ||
| .sram_pdn_ack_bits = 0, | ||
| .bp_infracfg = { | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_CONN, | ||
| MT8192_TOP_AXI_PROT_EN_SET, | ||
| MT8192_TOP_AXI_PROT_EN_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_CONN_2ND, | ||
| MT8192_TOP_AXI_PROT_EN_SET, | ||
| MT8192_TOP_AXI_PROT_EN_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_1_CONN, | ||
| MT8192_TOP_AXI_PROT_EN_1_SET, | ||
| MT8192_TOP_AXI_PROT_EN_1_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_1_STA1), | ||
| }, | ||
| .caps = MTK_SCPD_KEEP_DEFAULT_OFF, | ||
| }, | ||
| [MT8192_POWER_DOMAIN_MFG0] = { | ||
| .sta_mask = BIT(2), | ||
| .ctl_offs = 0x0308, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| }, | ||
| [MT8192_POWER_DOMAIN_MFG1] = { | ||
| .sta_mask = BIT(3), | ||
| .ctl_offs = 0x030c, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| .bp_infracfg = { | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_1_MFG1, | ||
| MT8192_TOP_AXI_PROT_EN_1_SET, | ||
| MT8192_TOP_AXI_PROT_EN_1_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_1_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_2_MFG1, | ||
| MT8192_TOP_AXI_PROT_EN_2_SET, | ||
| MT8192_TOP_AXI_PROT_EN_2_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_2_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MFG1, | ||
| MT8192_TOP_AXI_PROT_EN_SET, | ||
| MT8192_TOP_AXI_PROT_EN_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_2_MFG1_2ND, | ||
| MT8192_TOP_AXI_PROT_EN_2_SET, | ||
| MT8192_TOP_AXI_PROT_EN_2_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_2_STA1), | ||
| }, | ||
| }, | ||
| [MT8192_POWER_DOMAIN_MFG2] = { | ||
| .sta_mask = BIT(4), | ||
| .ctl_offs = 0x0310, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| }, | ||
| [MT8192_POWER_DOMAIN_MFG3] = { | ||
| .sta_mask = BIT(5), | ||
| .ctl_offs = 0x0314, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| }, | ||
| [MT8192_POWER_DOMAIN_MFG4] = { | ||
| .sta_mask = BIT(6), | ||
| .ctl_offs = 0x0318, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| }, | ||
| [MT8192_POWER_DOMAIN_MFG5] = { | ||
| .sta_mask = BIT(7), | ||
| .ctl_offs = 0x031c, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| }, | ||
| [MT8192_POWER_DOMAIN_MFG6] = { | ||
| .sta_mask = BIT(8), | ||
| .ctl_offs = 0x0320, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| }, | ||
| [MT8192_POWER_DOMAIN_DISP] = { | ||
| .sta_mask = BIT(20), | ||
| .ctl_offs = 0x0350, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| .bp_infracfg = { | ||
| BUS_PROT_WR_IGN(MT8192_TOP_AXI_PROT_EN_MM_DISP, | ||
| MT8192_TOP_AXI_PROT_EN_MM_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_STA1), | ||
| BUS_PROT_WR_IGN(MT8192_TOP_AXI_PROT_EN_MM_2_DISP, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_DISP, | ||
| MT8192_TOP_AXI_PROT_EN_SET, | ||
| MT8192_TOP_AXI_PROT_EN_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_DISP_2ND, | ||
| MT8192_TOP_AXI_PROT_EN_MM_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_2_DISP_2ND, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_STA1), | ||
| }, | ||
| }, | ||
| [MT8192_POWER_DOMAIN_IPE] = { | ||
| .sta_mask = BIT(14), | ||
| .ctl_offs = 0x0338, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| .bp_infracfg = { | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_IPE, | ||
| MT8192_TOP_AXI_PROT_EN_MM_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_IPE_2ND, | ||
| MT8192_TOP_AXI_PROT_EN_MM_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_STA1), | ||
| }, | ||
| }, | ||
| [MT8192_POWER_DOMAIN_ISP] = { | ||
| .sta_mask = BIT(12), | ||
| .ctl_offs = 0x0330, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| .bp_infracfg = { | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_2_ISP, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_2_ISP_2ND, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_STA1), | ||
| }, | ||
| }, | ||
| [MT8192_POWER_DOMAIN_ISP2] = { | ||
| .sta_mask = BIT(13), | ||
| .ctl_offs = 0x0334, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| .bp_infracfg = { | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_ISP2, | ||
| MT8192_TOP_AXI_PROT_EN_MM_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_ISP2_2ND, | ||
| MT8192_TOP_AXI_PROT_EN_MM_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_STA1), | ||
| }, | ||
| }, | ||
| [MT8192_POWER_DOMAIN_MDP] = { | ||
| .sta_mask = BIT(19), | ||
| .ctl_offs = 0x034c, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| .bp_infracfg = { | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_2_MDP, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_2_MDP_2ND, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_2_STA1), | ||
| }, | ||
| }, | ||
| [MT8192_POWER_DOMAIN_VENC] = { | ||
| .sta_mask = BIT(17), | ||
| .ctl_offs = 0x0344, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| .bp_infracfg = { | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_VENC, | ||
| MT8192_TOP_AXI_PROT_EN_MM_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_VENC_2ND, | ||
| MT8192_TOP_AXI_PROT_EN_MM_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_STA1), | ||
| }, | ||
| }, | ||
| [MT8192_POWER_DOMAIN_VDEC] = { | ||
| .sta_mask = BIT(15), | ||
| .ctl_offs = 0x033c, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| .bp_infracfg = { | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_VDEC, | ||
| MT8192_TOP_AXI_PROT_EN_MM_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_VDEC_2ND, | ||
| MT8192_TOP_AXI_PROT_EN_MM_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_STA1), | ||
| }, | ||
| }, | ||
| [MT8192_POWER_DOMAIN_VDEC2] = { | ||
| .sta_mask = BIT(16), | ||
| .ctl_offs = 0x0340, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| }, | ||
| [MT8192_POWER_DOMAIN_CAM] = { | ||
| .sta_mask = BIT(23), | ||
| .ctl_offs = 0x035c, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| .bp_infracfg = { | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_2_CAM, | ||
| MT8192_TOP_AXI_PROT_EN_2_SET, | ||
| MT8192_TOP_AXI_PROT_EN_2_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_2_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_CAM, | ||
| MT8192_TOP_AXI_PROT_EN_MM_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_1_CAM, | ||
| MT8192_TOP_AXI_PROT_EN_1_SET, | ||
| MT8192_TOP_AXI_PROT_EN_1_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_1_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_MM_CAM_2ND, | ||
| MT8192_TOP_AXI_PROT_EN_MM_SET, | ||
| MT8192_TOP_AXI_PROT_EN_MM_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_MM_STA1), | ||
| BUS_PROT_WR(MT8192_TOP_AXI_PROT_EN_VDNR_CAM, | ||
| MT8192_TOP_AXI_PROT_EN_VDNR_SET, | ||
| MT8192_TOP_AXI_PROT_EN_VDNR_CLR, | ||
| MT8192_TOP_AXI_PROT_EN_VDNR_STA1), | ||
| }, | ||
| }, | ||
| [MT8192_POWER_DOMAIN_CAM_RAWA] = { | ||
| .sta_mask = BIT(24), | ||
| .ctl_offs = 0x0360, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| }, | ||
| [MT8192_POWER_DOMAIN_CAM_RAWB] = { | ||
| .sta_mask = BIT(25), | ||
| .ctl_offs = 0x0364, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| }, | ||
| [MT8192_POWER_DOMAIN_CAM_RAWC] = { | ||
| .sta_mask = BIT(26), | ||
| .ctl_offs = 0x0368, | ||
| .sram_pdn_bits = GENMASK(8, 8), | ||
| .sram_pdn_ack_bits = GENMASK(12, 12), | ||
| }, | ||
| }; | ||
|
|
||
| static const struct scpsys_soc_data mt8192_scpsys_data = { | ||
| .domains_data = scpsys_domain_data_mt8192, | ||
| .num_domains = ARRAY_SIZE(scpsys_domain_data_mt8192), | ||
| .pwr_sta_offs = 0x016c, | ||
| .pwr_sta2nd_offs = 0x0170, | ||
| }; | ||
|
|
||
| #endif /* __SOC_MEDIATEK_MT8192_PM_DOMAINS_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters