soc/mediatek/mt8195: Add PLL and clock init support
Add PLL and clock init code. Add frequency meter and API for raising little CPU/CCI frequency. Signed-off-by: Weiyi Lu <weiyi.lu@mediatek.com> Change-Id: I8ded0236d10826687f080bd5a213feb55d4bae03 Reviewed-on: https://review.coreboot.org/c/coreboot/+/52667 Reviewed-by: Yu-Ping Wu <yupingso@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
2368a310be
commit
450fd0b536
|
@ -3,6 +3,7 @@ ifeq ($(CONFIG_SOC_MEDIATEK_MT8195),y)
|
||||||
bootblock-y += bootblock.c
|
bootblock-y += bootblock.c
|
||||||
bootblock-y += ../common/gpio.c gpio.c
|
bootblock-y += ../common/gpio.c gpio.c
|
||||||
bootblock-y += ../common/mmu_operations.c
|
bootblock-y += ../common/mmu_operations.c
|
||||||
|
bootblock-y += ../common/pll.c pll.c
|
||||||
bootblock-$(CONFIG_SPI_FLASH) += spi.c
|
bootblock-$(CONFIG_SPI_FLASH) += spi.c
|
||||||
bootblock-y += ../common/timer.c timer.c
|
bootblock-y += ../common/timer.c timer.c
|
||||||
bootblock-y += ../common/uart.c
|
bootblock-y += ../common/uart.c
|
||||||
|
@ -17,6 +18,7 @@ verstage-y += ../common/wdt.c
|
||||||
romstage-y += ../common/cbmem.c
|
romstage-y += ../common/cbmem.c
|
||||||
romstage-y += emi.c
|
romstage-y += emi.c
|
||||||
romstage-y += ../common/gpio.c gpio.c
|
romstage-y += ../common/gpio.c gpio.c
|
||||||
|
romstage-y += ../common/pll.c pll.c
|
||||||
romstage-$(CONFIG_SPI_FLASH) += spi.c
|
romstage-$(CONFIG_SPI_FLASH) += spi.c
|
||||||
romstage-y += ../common/timer.c timer.c
|
romstage-y += ../common/timer.c timer.c
|
||||||
romstage-y += ../common/uart.c
|
romstage-y += ../common/uart.c
|
||||||
|
|
|
@ -2,10 +2,12 @@
|
||||||
|
|
||||||
#include <bootblock_common.h>
|
#include <bootblock_common.h>
|
||||||
#include <soc/mmu_operations.h>
|
#include <soc/mmu_operations.h>
|
||||||
|
#include <soc/pll.h>
|
||||||
#include <soc/wdt.h>
|
#include <soc/wdt.h>
|
||||||
|
|
||||||
void bootblock_soc_init(void)
|
void bootblock_soc_init(void)
|
||||||
{
|
{
|
||||||
mtk_mmu_init();
|
mtk_mmu_init();
|
||||||
mtk_wdt_init();
|
mtk_wdt_init();
|
||||||
|
mt_pll_init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ enum {
|
||||||
EINT_BASE = IO_PHYS + 0x0000B000,
|
EINT_BASE = IO_PHYS + 0x0000B000,
|
||||||
APMIXED_BASE = IO_PHYS + 0x0000C000,
|
APMIXED_BASE = IO_PHYS + 0x0000C000,
|
||||||
SYSTIMER_BASE = IO_PHYS + 0x00017000,
|
SYSTIMER_BASE = IO_PHYS + 0x00017000,
|
||||||
|
INFRACFG_AO_BCRM_BASE = IO_PHYS + 0x00022000,
|
||||||
PMIF_SPI_BASE = IO_PHYS + 0x00024000,
|
PMIF_SPI_BASE = IO_PHYS + 0x00024000,
|
||||||
PMICSPI_MST_BASE = IO_PHYS + 0x00025000,
|
PMICSPI_MST_BASE = IO_PHYS + 0x00025000,
|
||||||
PMIF_SPMI_BASE = IO_PHYS + 0x00027000,
|
PMIF_SPMI_BASE = IO_PHYS + 0x00027000,
|
||||||
|
@ -48,6 +49,7 @@ enum {
|
||||||
DPM_CFG_BASE2 = IO_PHYS + 0x00A40000,
|
DPM_CFG_BASE2 = IO_PHYS + 0x00A40000,
|
||||||
AUXADC_BASE = IO_PHYS + 0x01001000,
|
AUXADC_BASE = IO_PHYS + 0x01001000,
|
||||||
UART0_BASE = IO_PHYS + 0x01001100,
|
UART0_BASE = IO_PHYS + 0x01001100,
|
||||||
|
PERICFG_AO_BASE = IO_PHYS + 0x01003000,
|
||||||
SPI0_BASE = IO_PHYS + 0x0100A000,
|
SPI0_BASE = IO_PHYS + 0x0100A000,
|
||||||
SPI1_BASE = IO_PHYS + 0x01010000,
|
SPI1_BASE = IO_PHYS + 0x01010000,
|
||||||
SPI2_BASE = IO_PHYS + 0x01012000,
|
SPI2_BASE = IO_PHYS + 0x01012000,
|
||||||
|
|
|
@ -0,0 +1,969 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
|
#ifndef SOC_MEDIATEK_MT8195_MCUCFG_H
|
||||||
|
#define SOC_MEDIATEK_MT8195_MCUCFG_H
|
||||||
|
|
||||||
|
#include <soc/addressmap.h>
|
||||||
|
#include <types.h>
|
||||||
|
|
||||||
|
struct mt8195_mcucfg_regs {
|
||||||
|
u32 rsv_0000[2];
|
||||||
|
u32 mbista_mcsi_sf1_con;
|
||||||
|
u32 mbista_mcsi_sf1_result;
|
||||||
|
u32 mbista_mcsi_sf2_con;
|
||||||
|
u32 mbista_mcsi_sf2_result;
|
||||||
|
u32 mbista_etb_con;
|
||||||
|
u32 mbista_etb_result;
|
||||||
|
u32 mbista_rstb;
|
||||||
|
u32 mbista_all_result;
|
||||||
|
u32 rsv_0028[2];
|
||||||
|
u32 mbist_trigger_mux_ctl;
|
||||||
|
u32 rsv_0034[3];
|
||||||
|
u32 dfd_ctrl;
|
||||||
|
u32 dfd_cnt_l;
|
||||||
|
u32 dfd_cnt_h;
|
||||||
|
u32 rsv_004c[5];
|
||||||
|
u32 mp_top_dbg_mon_sel;
|
||||||
|
u32 mp_top_dbg_mon;
|
||||||
|
u32 mp0_dbg_mon_sel;
|
||||||
|
u32 mp0_dbg_mon;
|
||||||
|
u32 rsv_0070[28];
|
||||||
|
u32 mp0_ptp_sensor_sel;
|
||||||
|
u32 emi_addr_wrap_cfg;
|
||||||
|
u32 emi_addr_wrap_state;
|
||||||
|
u32 rsv_00ec[3];
|
||||||
|
u32 armpll_jit_clk_out_sel;
|
||||||
|
u32 rsv_00fc;
|
||||||
|
u32 cci_tra_cfg0;
|
||||||
|
u32 rsv_0104[4];
|
||||||
|
u32 cci_tra_cfg5;
|
||||||
|
u32 cci_tra_cfg6;
|
||||||
|
u32 cci_tra_cfg7;
|
||||||
|
u32 cci_tra_cfg8;
|
||||||
|
u32 cci_tra_cfg9;
|
||||||
|
u32 cci_tra_cfg10;
|
||||||
|
u32 cci_tra_cfg11;
|
||||||
|
u32 cci_tra_cfg12;
|
||||||
|
u32 rsv_0134[51];
|
||||||
|
u32 cci_m0_tra;
|
||||||
|
u32 cci_m1_tra;
|
||||||
|
u32 cci_m2_tra;
|
||||||
|
u32 rsv_020c[5];
|
||||||
|
u32 cci_s1_tra;
|
||||||
|
u32 cci_s2_tra;
|
||||||
|
u32 cci_s3_tra;
|
||||||
|
u32 cci_s4_tra;
|
||||||
|
u32 rsv_0230[4];
|
||||||
|
u32 cci_m0_tra_latch;
|
||||||
|
u32 cci_m1_tra_latch;
|
||||||
|
u32 cci_m2_tra_latch;
|
||||||
|
u32 rsv_024c[5];
|
||||||
|
u32 cci_s1_tra_latch;
|
||||||
|
u32 cci_s2_tra_latch;
|
||||||
|
u32 cci_s3_tra_latch;
|
||||||
|
u32 cci_s4_tra_latch;
|
||||||
|
u32 rsv_0270[20];
|
||||||
|
u32 cci_m0_if;
|
||||||
|
u32 cci_m1_if;
|
||||||
|
u32 cci_m2_if;
|
||||||
|
u32 rsv_02cc[5];
|
||||||
|
u32 cci_s1_if;
|
||||||
|
u32 cci_s2_if;
|
||||||
|
u32 cci_s3_if;
|
||||||
|
u32 cci_s4_if;
|
||||||
|
u32 rsv_02f0[12];
|
||||||
|
u32 cci_m0_if_latch;
|
||||||
|
u32 cci_m1_if_latch;
|
||||||
|
u32 cci_m2_if_latch;
|
||||||
|
u32 rsv_032c[5];
|
||||||
|
u32 cci_s1_if_latch;
|
||||||
|
u32 cci_s2_if_latch;
|
||||||
|
u32 cci_s3_if_latch;
|
||||||
|
u32 cci_s4_if_latch;
|
||||||
|
u32 rsv_0350[44];
|
||||||
|
u32 l3c_share_status0;
|
||||||
|
u32 l3c_share_status1;
|
||||||
|
u32 l3c_share_status2;
|
||||||
|
u32 rsv_040c;
|
||||||
|
u32 mp0_cpu0_dc_age;
|
||||||
|
u32 mp0_cpu1_dc_age;
|
||||||
|
u32 mp0_cpu2_dc_age;
|
||||||
|
u32 mp0_cpu3_dc_age;
|
||||||
|
u32 mp0_cpu4_dc_age;
|
||||||
|
u32 mp0_cpu5_dc_age;
|
||||||
|
u32 mp0_cpu6_dc_age;
|
||||||
|
u32 mp0_cpu7_dc_age;
|
||||||
|
u32 rsv_0430[52];
|
||||||
|
u32 mp0_cpu0_nonwfx_ctrl;
|
||||||
|
u32 mp0_cpu0_nonwfx_cnt;
|
||||||
|
u32 mp0_cpu1_nonwfx_ctrl;
|
||||||
|
u32 mp0_cpu1_nonwfx_cnt;
|
||||||
|
u32 mp0_cpu2_nonwfx_ctrl;
|
||||||
|
u32 mp0_cpu2_nonwfx_cnt;
|
||||||
|
u32 mp0_cpu3_nonwfx_ctrl;
|
||||||
|
u32 mp0_cpu3_nonwfx_cnt;
|
||||||
|
u32 mp0_cpu4_nonwfx_ctrl;
|
||||||
|
u32 mp0_cpu4_nonwfx_cnt;
|
||||||
|
u32 mp0_cpu5_nonwfx_ctrl;
|
||||||
|
u32 mp0_cpu5_nonwfx_cnt;
|
||||||
|
u32 mp0_cpu6_nonwfx_ctrl;
|
||||||
|
u32 mp0_cpu6_nonwfx_cnt;
|
||||||
|
u32 mp0_cpu7_nonwfx_ctrl;
|
||||||
|
u32 mp0_cpu7_nonwfx_cnt;
|
||||||
|
u32 rsv_0540[48];
|
||||||
|
u32 mp0_ses_apb_trig;
|
||||||
|
u32 mp0_ses_clk_en;
|
||||||
|
u32 rsv_0608[2];
|
||||||
|
u32 wfx_ret_met_dbc_sel;
|
||||||
|
u32 rsv_0614[3];
|
||||||
|
u32 adb_bist_cfg1;
|
||||||
|
u32 adb_bist_cfg2_md;
|
||||||
|
u32 adb_bist_cfg3_go;
|
||||||
|
u32 adb_bist_done;
|
||||||
|
u32 adb_bist_pass;
|
||||||
|
u32 adb_bist_done1;
|
||||||
|
u32 rsv_0638;
|
||||||
|
u32 adb_bist_pass1;
|
||||||
|
u32 rsv_0640[48];
|
||||||
|
u32 axi2acp_cfg_ctrl;
|
||||||
|
u32 axi2acp_cfg_mask_id;
|
||||||
|
u32 rsv_0708[2];
|
||||||
|
u32 axi2acp_ar_def_set;
|
||||||
|
u32 rsv_0714;
|
||||||
|
u32 axi2acp_aw_def_set;
|
||||||
|
u32 rsv_071c;
|
||||||
|
u32 axi2acp_err_addr0;
|
||||||
|
u32 axi2acp_err_addr1;
|
||||||
|
u32 axi2acp_err_st;
|
||||||
|
u32 axi2acp_err_id;
|
||||||
|
u32 axi2acp_err_irq;
|
||||||
|
u32 axi2acp_err_dbgout;
|
||||||
|
u32 rsv_0738[50];
|
||||||
|
u32 mst_ccim0_inject_fault;
|
||||||
|
u32 mst_ccim0_rec_par;
|
||||||
|
u32 mst_ccim0_log_rid;
|
||||||
|
u32 rsv_080c;
|
||||||
|
u32 mst_ccim0_log_rd0;
|
||||||
|
u32 mst_ccim0_log_rd1;
|
||||||
|
u32 mst_ccim0_log_rd2;
|
||||||
|
u32 mst_ccim0_log_rd3;
|
||||||
|
u32 mst_ccim1_inject_fault;
|
||||||
|
u32 mst_ccim1_rec_par;
|
||||||
|
u32 mst_ccim1_log_rid;
|
||||||
|
u32 rsv_082c;
|
||||||
|
u32 mst_ccim1_log_rd0;
|
||||||
|
u32 mst_ccim1_log_rd1;
|
||||||
|
u32 mst_ccim1_log_rd2;
|
||||||
|
u32 mst_ccim1_log_rd3;
|
||||||
|
u32 mst_intaxi_inject_fault;
|
||||||
|
u32 mst_intaxi_rec_par;
|
||||||
|
u32 mst_intaxi_log_rid;
|
||||||
|
u32 rsv_084c;
|
||||||
|
u32 mst_intaxi_log_rd0;
|
||||||
|
u32 mst_intaxi_log_rd1;
|
||||||
|
u32 rsv_0858[2];
|
||||||
|
u32 slv_1to2_inject_fault;
|
||||||
|
u32 slv_1to2_rec_par;
|
||||||
|
u32 slv_1to2_log_awid;
|
||||||
|
u32 slv_1to2_log_arid;
|
||||||
|
u32 slv_1to2_log_awa0;
|
||||||
|
u32 slv_1to2_log_awa1;
|
||||||
|
u32 slv_1to2_log_ara0;
|
||||||
|
u32 slv_1to2_log_ara1;
|
||||||
|
u32 slv_1to2_log_wid;
|
||||||
|
u32 rsv_0884[3];
|
||||||
|
u32 slv_1to2_log_wd0;
|
||||||
|
u32 slv_1to2_log_wd1;
|
||||||
|
u32 slv_1to2_log_wd2;
|
||||||
|
u32 slv_1to2_log_wd3;
|
||||||
|
u32 slv_l3c_inject_fault;
|
||||||
|
u32 slv_l3c_rec_par;
|
||||||
|
u32 slv_l3c_log_awid;
|
||||||
|
u32 slv_l3c_log_arid;
|
||||||
|
u32 slv_l3c_log_awa0;
|
||||||
|
u32 slv_l3c_log_awa1;
|
||||||
|
u32 slv_l3c_log_ara0;
|
||||||
|
u32 slv_l3c_log_ara1;
|
||||||
|
u32 slv_l3c_log_wid;
|
||||||
|
u32 rsv_08c4;
|
||||||
|
u32 slv_l3c_log_wd0;
|
||||||
|
u32 slv_l3c_log_wd1;
|
||||||
|
u32 slv_gic_inject_fault;
|
||||||
|
u32 slv_gic_rec_par;
|
||||||
|
u32 slv_gic_log_awid;
|
||||||
|
u32 slv_gic_log_arid;
|
||||||
|
u32 slv_gic_log_awa0;
|
||||||
|
u32 slv_gic_log_awa1;
|
||||||
|
u32 slv_gic_log_ara0;
|
||||||
|
u32 slv_gic_log_ara1;
|
||||||
|
u32 slv_gic_log_wid;
|
||||||
|
u32 rsv_08f4;
|
||||||
|
u32 slv_gic_log_wd0;
|
||||||
|
u32 slv_gic_log_wd1;
|
||||||
|
u32 rsv_0900[64];
|
||||||
|
u32 ildo_vin_big0;
|
||||||
|
u32 ildo_out_big0;
|
||||||
|
u32 ildo_ovstck_big0;
|
||||||
|
u32 ildo_vo2hck_big0;
|
||||||
|
u32 ildo_mhstck_big0;
|
||||||
|
u32 ildo_mlstck_big0;
|
||||||
|
u32 ilod_uvwin_big0;
|
||||||
|
u32 ilod_ovwin_big0;
|
||||||
|
u32 ildo_pd_cfg_big0;
|
||||||
|
u32 rsv_0a24[3];
|
||||||
|
u32 ildo_vin_big1;
|
||||||
|
u32 ildo_out_big1;
|
||||||
|
u32 ildo_ovstck_big1;
|
||||||
|
u32 ildo_vo2hck_big1;
|
||||||
|
u32 ildo_mhstck_big1;
|
||||||
|
u32 ildo_mlstck_big1;
|
||||||
|
u32 ilod_uvwin_big1;
|
||||||
|
u32 ilod_ovwin_big1;
|
||||||
|
u32 ildo_pd_cfg_big1;
|
||||||
|
u32 rsv_0a54[3];
|
||||||
|
u32 ildo_vin_big2;
|
||||||
|
u32 ildo_out_big2;
|
||||||
|
u32 ildo_ovstck_big2;
|
||||||
|
u32 ildo_vo2hck_big2;
|
||||||
|
u32 ildo_mhstck_big2;
|
||||||
|
u32 ildo_mlstck_big2;
|
||||||
|
u32 ilod_uvwin_big2;
|
||||||
|
u32 ilod_ovwin_big2;
|
||||||
|
u32 ildo_pd_cfg_big2;
|
||||||
|
u32 rsv_0a84[3];
|
||||||
|
u32 ildo_vin_big3;
|
||||||
|
u32 ildo_out_big3;
|
||||||
|
u32 ildo_ovstck_big3;
|
||||||
|
u32 ildo_vo2hck_big3;
|
||||||
|
u32 ildo_mhstck_big3;
|
||||||
|
u32 ildo_mlstck_big3;
|
||||||
|
u32 ilod_uvwin_big3;
|
||||||
|
u32 ilod_ovwin_big3;
|
||||||
|
u32 ildo_pd_cfg_big3;
|
||||||
|
u32 rsv_0ab4[1495];
|
||||||
|
u32 l3c_share_cfg0;
|
||||||
|
u32 l3c_share_cfg1;
|
||||||
|
u32 l3c_share_cfg2;
|
||||||
|
u32 rsv_221c;
|
||||||
|
u32 udi_cfg0;
|
||||||
|
u32 udi_cfg1;
|
||||||
|
u32 rsv_2228[2];
|
||||||
|
u32 mcusys_core_status;
|
||||||
|
u32 rsv_2234;
|
||||||
|
u32 cfg_sys_valid;
|
||||||
|
u32 cfg_sysbase_addr_0;
|
||||||
|
u32 cfg_sysbase_addr_1;
|
||||||
|
u32 cfg_sysbase_addr_2;
|
||||||
|
u32 cfg_sysbase_addr_3;
|
||||||
|
u32 cfg_sysbase_addr_4;
|
||||||
|
u32 rsv_2250[4];
|
||||||
|
u32 mcusys_base;
|
||||||
|
u32 l3c_sram_base;
|
||||||
|
u32 gic_periph_base;
|
||||||
|
u32 cci_periph_base;
|
||||||
|
u32 cci_periph_infra_base;
|
||||||
|
u32 dfd_sram_base;
|
||||||
|
u32 l3c_mm_sram_base;
|
||||||
|
u32 ext_l3c_sram_base;
|
||||||
|
u32 ext_gic_periph_base;
|
||||||
|
u32 mcusys_qos_shaper_degree;
|
||||||
|
u32 mcusys_qos_shaper_others;
|
||||||
|
u32 mcusys_qos_age_set_enable;
|
||||||
|
u32 sspm_cpueb_turbo_pll_ctl;
|
||||||
|
u32 cpu_eb_apb_base;
|
||||||
|
u32 cpu_eb_tcm_btb_delsel;
|
||||||
|
u32 cpu_eb_mem_misc;
|
||||||
|
u32 cpu_plldiv_cfg0;
|
||||||
|
u32 cpu_plldiv_cfg1;
|
||||||
|
u32 rsv_22a8[14];
|
||||||
|
u32 bus_plldiv_cfg;
|
||||||
|
u32 rsv_22e4[3];
|
||||||
|
u32 plldiv_ctl0;
|
||||||
|
u32 cpuplldiv_unictl;
|
||||||
|
u32 rsv_22f8[2];
|
||||||
|
u32 mcsi_ram_delsel0;
|
||||||
|
u32 mcsi_ram_delsel1;
|
||||||
|
u32 rsv_2308[7];
|
||||||
|
u32 mbist_delsel_fuse_dis;
|
||||||
|
u32 mbist_delsel_magic_key;
|
||||||
|
u32 rsv_232c[21];
|
||||||
|
u32 etb_cfg0;
|
||||||
|
u32 rsv_2384[3];
|
||||||
|
u32 bus_parity_gen_en;
|
||||||
|
u32 bus_parity_clr;
|
||||||
|
u32 bus_parity_chk_en;
|
||||||
|
u32 bus_parity_fail;
|
||||||
|
u32 dsu2biu_addr_remap_cfg;
|
||||||
|
u32 dsu2biu_addr_remap_sta;
|
||||||
|
u32 rsv_23a8[2];
|
||||||
|
u32 dsu2biu_addr_remap_0_cfg0;
|
||||||
|
u32 dsu2biu_addr_remap_0_cfg1;
|
||||||
|
u32 dsu2biu_addr_remap_0_cfg2;
|
||||||
|
u32 rsv_23bc;
|
||||||
|
u32 dsu2biu_addr_remap_1_cfg0;
|
||||||
|
u32 dsu2biu_addr_remap_1_cfg1;
|
||||||
|
u32 dsu2biu_addr_remap_1_cfg2;
|
||||||
|
u32 rsv_23cc;
|
||||||
|
u32 dsu2biu_addr_remap_magic;
|
||||||
|
u32 rsv_23d4[11];
|
||||||
|
u32 cci_rgu;
|
||||||
|
u32 rsv_2404[3];
|
||||||
|
u32 mcsi_cfg0;
|
||||||
|
u32 mcsi_cfg1;
|
||||||
|
u32 mcsi_cfg2;
|
||||||
|
u32 mcsi_cfg3;
|
||||||
|
u32 mcsi_cfg4;
|
||||||
|
u32 rsv_2424[7];
|
||||||
|
u32 mcsic_dcm0;
|
||||||
|
u32 mcsic_dcm1;
|
||||||
|
u32 rsv_2448[18];
|
||||||
|
u32 apmcu2emi_early_cke_ctl0;
|
||||||
|
u32 apmcu2emi_early_cke_ctl1;
|
||||||
|
u32 apmcu2emi_early_ebg_ctl0;
|
||||||
|
u32 apmcu2emi_early_ebg_ctl1;
|
||||||
|
u32 apmcu2emi_early_ebg_ctl2;
|
||||||
|
u32 apmcu2emi_early_ebg_ctl3;
|
||||||
|
u32 apmcu2emi_early_ebg_ctl4;
|
||||||
|
u32 apmcu2emi_early_ebg_ctl5;
|
||||||
|
u32 apmcu2emi_early_ebg_enable01;
|
||||||
|
u32 apmcu2emi_early_ebg_enable23;
|
||||||
|
u32 emi_hash_violation;
|
||||||
|
u32 emi_interleave_update_mask;
|
||||||
|
u32 rsv_24c0[16];
|
||||||
|
u32 mp_adb_dcm_cfg0;
|
||||||
|
u32 rsv_2504;
|
||||||
|
u32 mp_adb_dcm_cfg2;
|
||||||
|
u32 rsv_250c;
|
||||||
|
u32 mp_adb_dcm_cfg4;
|
||||||
|
u32 rsv_2514;
|
||||||
|
u32 mp_misc_dcm_cfg0;
|
||||||
|
u32 rsv_251c[9];
|
||||||
|
u32 etb_ck_ctl;
|
||||||
|
u32 rsv_2544[15];
|
||||||
|
u32 dcc_cpu_con0;
|
||||||
|
u32 dcc_cpu_con1;
|
||||||
|
u32 rsv_2588[6];
|
||||||
|
u32 dcc_bus_con0;
|
||||||
|
u32 rsv_25a4[7];
|
||||||
|
u32 mcusys_dcm_cfg0;
|
||||||
|
u32 rsv_25c4[79];
|
||||||
|
u32 fcm_spmc_sw_cfg1;
|
||||||
|
u32 fcm_spmc_sw_cfg2;
|
||||||
|
u32 fcm_spmc_wait_cfg;
|
||||||
|
u32 fcm_spmc_sw_pchannel;
|
||||||
|
u32 fcm_spmc_pwr_status;
|
||||||
|
u32 fcm_spmc_off_thres;
|
||||||
|
u32 fcm_spmc_wdt_latch_info;
|
||||||
|
u32 rsv_271c[9];
|
||||||
|
u32 mcusys_spmc_sw_cfg;
|
||||||
|
u32 mcusys_spmc_wait_cfg;
|
||||||
|
u32 mcusys_spmc_pwr_status;
|
||||||
|
u32 rsv_274c[45];
|
||||||
|
u32 cpc_pllbuck_req_ctrl;
|
||||||
|
u32 mcusys_pwr_ctrl;
|
||||||
|
u32 cpusys_pwr_ctrl;
|
||||||
|
u32 sw_gic_wakeup_req;
|
||||||
|
u32 cpc_pllbuck_arb_weight;
|
||||||
|
u32 cpc_flow_ctrl_cfg;
|
||||||
|
u32 cpc_last_core_req;
|
||||||
|
u32 cpc_cpusys_last_core_resp;
|
||||||
|
u32 rsv_2820;
|
||||||
|
u32 cpc_mcusys_last_core_resp;
|
||||||
|
u32 cpc_pwr_on_mask;
|
||||||
|
u32 rsv_282c[5];
|
||||||
|
u32 cpc_spmc_pwr_status;
|
||||||
|
u32 cpc_core_cur_fsm;
|
||||||
|
u32 cpc_cpusys_mcusys_cur_fsm;
|
||||||
|
u32 cpc_wakeup_req;
|
||||||
|
u32 rsv_2850;
|
||||||
|
u32 cpc_gp0_gp1_status;
|
||||||
|
u32 rsv_2858;
|
||||||
|
u32 cpc_turbo_ctrl;
|
||||||
|
u32 cpc_turbo_gp0_ctrl;
|
||||||
|
u32 cpc_turbo_gp1_ctrl;
|
||||||
|
u32 cpc_turbo_gp2_ctrl;
|
||||||
|
u32 cpc_turbo_pwr_on_mask;
|
||||||
|
u32 cpc_turbo_gp0_req;
|
||||||
|
u32 cpc_turbo_gp1_req;
|
||||||
|
u32 cpc_turbo_gp2_req;
|
||||||
|
u32 rsv_287c;
|
||||||
|
u32 cpc_turbo_gp0_resp;
|
||||||
|
u32 cpc_turbo_gp1_resp;
|
||||||
|
u32 cpc_turbo_gp2_resp;
|
||||||
|
u32 cpc_coh_block_thres;
|
||||||
|
u32 cpc_int_status;
|
||||||
|
u32 cpc_int_enable;
|
||||||
|
u32 pllbuck_group_func;
|
||||||
|
u32 cpc_dcm_enable;
|
||||||
|
u32 cpc_pllbuck_state;
|
||||||
|
u32 cpc_cpu_on_sw_hint;
|
||||||
|
u32 cpc_cpu_on_sw_hint_set;
|
||||||
|
u32 cpc_cpu_on_sw_hint_clear;
|
||||||
|
u32 rsv_28b0[20];
|
||||||
|
u32 emi_wfifo;
|
||||||
|
u32 axi1to4_cfg;
|
||||||
|
u32 apb_cfg;
|
||||||
|
u32 emi_adb_edge_sel;
|
||||||
|
u32 rsv_2910[4];
|
||||||
|
u32 sclk_cfg_slow_down_ck;
|
||||||
|
u32 rsv_2924[3];
|
||||||
|
u32 acpwakeup;
|
||||||
|
u32 rsv_2934;
|
||||||
|
u32 l3gic_idle_bypass;
|
||||||
|
u32 rsv_293c[21];
|
||||||
|
u32 mcusys_dbg_mon_sel;
|
||||||
|
u32 mcusys_dbg_mon;
|
||||||
|
u32 rsv_2998[27];
|
||||||
|
u32 lkg_mon_sw;
|
||||||
|
u32 lkg_mon_en;
|
||||||
|
u32 rsv_2a0c[29];
|
||||||
|
u32 gic_acao_ctl0;
|
||||||
|
u32 rsv_2a84;
|
||||||
|
u32 gic_acao_ctl2;
|
||||||
|
u32 rsv_2a8c[29];
|
||||||
|
u32 spmc_dbg_setting;
|
||||||
|
u32 kernel_base_l;
|
||||||
|
u32 kernel_base_h;
|
||||||
|
u32 systime_base_l;
|
||||||
|
u32 systime_base_h;
|
||||||
|
u32 trace_data_selection;
|
||||||
|
u32 rsv_2b18[2];
|
||||||
|
u32 trace_data_entry0_l;
|
||||||
|
u32 trace_data_entry0_h;
|
||||||
|
u32 trace_data_entry1_l;
|
||||||
|
u32 trace_data_entry1_h;
|
||||||
|
u32 trace_data_entry2_l;
|
||||||
|
u32 trace_data_entry2_h;
|
||||||
|
u32 trace_data_entry3_l;
|
||||||
|
u32 trace_data_entry3_h;
|
||||||
|
u32 cpu0_on_off_latency;
|
||||||
|
u32 cpu1_on_off_latency;
|
||||||
|
u32 cpu2_on_off_latency;
|
||||||
|
u32 cpu3_on_off_latency;
|
||||||
|
u32 cpu4_on_off_latency;
|
||||||
|
u32 cpu5_on_off_latency;
|
||||||
|
u32 cpu6_on_off_latency;
|
||||||
|
u32 cpu7_on_off_latency;
|
||||||
|
u32 cluster_off_latency;
|
||||||
|
u32 cluster_on_latency;
|
||||||
|
u32 mcusys_on_off_latency;
|
||||||
|
u32 rsv_2b6c;
|
||||||
|
u32 cluster_off_dormant_counter;
|
||||||
|
u32 cluster_off_dormant_counter_clear;
|
||||||
|
u32 turbo_gp0_gp1_latency;
|
||||||
|
u32 turbo_gp2_latency;
|
||||||
|
u32 cpc_wdt_latch_info1;
|
||||||
|
u32 cpc_wdt_latch_info2;
|
||||||
|
u32 cpc_wdt_latch_info3;
|
||||||
|
u32 cpc_wdt_latch_info4;
|
||||||
|
u32 cpc_wdt_latch_info5;
|
||||||
|
u32 cpc_pmu_ctrl;
|
||||||
|
u32 cpc_pmu_cnt_clr;
|
||||||
|
u32 cpc_pmu_cnt0;
|
||||||
|
u32 rsv_2ba0[4];
|
||||||
|
u32 cpc_wdt_latch_info6;
|
||||||
|
u32 cpc_wdt_latch_info7;
|
||||||
|
u32 cpc_ptm_event_en_ctrl;
|
||||||
|
u32 cpc_ptm_event_en_ctrl1;
|
||||||
|
u32 cpc_ptm_trace_sel;
|
||||||
|
u32 cpc_ptm_trace_status_l;
|
||||||
|
u32 cpc_ptm_trace_status_h;
|
||||||
|
u32 rsv_2bcc[29];
|
||||||
|
u32 sesv6_bg_ctrl;
|
||||||
|
u32 rsv_2c44[3];
|
||||||
|
u32 dsu_sesv6_ao_reg0;
|
||||||
|
u32 dsu_sesv6_ao_reg1;
|
||||||
|
u32 dsu_sesv6_ao_reg2;
|
||||||
|
u32 dsu_sesv6_ao_reg3;
|
||||||
|
u32 dsu_sesv6_ao_reg4;
|
||||||
|
u32 rsv_2c64[39];
|
||||||
|
u32 ildo_dout_sel;
|
||||||
|
u32 rsv_2d04[31];
|
||||||
|
u32 dreq20_little_en;
|
||||||
|
u32 rsv_2d84[2];
|
||||||
|
u32 dreq20_big_vproc_iso;
|
||||||
|
u32 rsv_2d90[28];
|
||||||
|
u32 pikachu_event;
|
||||||
|
u32 pikachu_status;
|
||||||
|
u32 rsv_2e08[126];
|
||||||
|
u32 cpu0_drcc_ao_config;
|
||||||
|
u32 rsv_3004[3];
|
||||||
|
u32 cpu0_sesv6_ao_reg0;
|
||||||
|
u32 cpu0_sesv6_ao_reg1;
|
||||||
|
u32 cpu0_sesv6_ao_reg2;
|
||||||
|
u32 cpu0_sesv6_ao_reg3;
|
||||||
|
u32 cpu0_sesv6_ao_reg4;
|
||||||
|
u32 rsv_3024[7];
|
||||||
|
u32 cpu0_dfs_cfg;
|
||||||
|
u32 rsv_3044[3];
|
||||||
|
u32 cpu0_turbo_cfg;
|
||||||
|
u32 rsv_3054[105];
|
||||||
|
u32 cpu0_resereved_reg;
|
||||||
|
u32 cpu0_resereved_reg_rd;
|
||||||
|
u32 cpu1_drcc_ao_config;
|
||||||
|
u32 rsv_3204[3];
|
||||||
|
u32 cpu1_sesv6_ao_reg0;
|
||||||
|
u32 cpu1_sesv6_ao_reg1;
|
||||||
|
u32 cpu1_sesv6_ao_reg2;
|
||||||
|
u32 cpu1_sesv6_ao_reg3;
|
||||||
|
u32 cpu1_sesv6_ao_reg4;
|
||||||
|
u32 rsv_3224[7];
|
||||||
|
u32 cpu1_dfs_cfg;
|
||||||
|
u32 rsv_3244[3];
|
||||||
|
u32 cpu1_turbo_cfg;
|
||||||
|
u32 rsv_3254[105];
|
||||||
|
u32 cpu1_resereved_reg;
|
||||||
|
u32 cpu1_resereved_reg_rd;
|
||||||
|
u32 cpu2_drcc_ao_config;
|
||||||
|
u32 rsv_3404[3];
|
||||||
|
u32 cpu2_sesv6_ao_reg0;
|
||||||
|
u32 cpu2_sesv6_ao_reg1;
|
||||||
|
u32 cpu2_sesv6_ao_reg2;
|
||||||
|
u32 cpu2_sesv6_ao_reg3;
|
||||||
|
u32 cpu2_sesv6_ao_reg4;
|
||||||
|
u32 rsv_3424[7];
|
||||||
|
u32 cpu2_dfs_cfg;
|
||||||
|
u32 rsv_3444[3];
|
||||||
|
u32 cpu2_turbo_cfg;
|
||||||
|
u32 rsv_3454[105];
|
||||||
|
u32 cpu2_resereved_reg;
|
||||||
|
u32 cpu2_resereved_reg_rd;
|
||||||
|
u32 cpu3_drcc_ao_config;
|
||||||
|
u32 rsv_3604[3];
|
||||||
|
u32 cpu3_sesv6_ao_reg0;
|
||||||
|
u32 cpu3_sesv6_ao_reg1;
|
||||||
|
u32 cpu3_sesv6_ao_reg2;
|
||||||
|
u32 cpu3_sesv6_ao_reg3;
|
||||||
|
u32 cpu3_sesv6_ao_reg4;
|
||||||
|
u32 rsv_3624[7];
|
||||||
|
u32 cpu3_dfs_cfg;
|
||||||
|
u32 rsv_3644[3];
|
||||||
|
u32 cpu3_turbo_cfg;
|
||||||
|
u32 rsv_3654[105];
|
||||||
|
u32 cpu3_resereved_reg;
|
||||||
|
u32 cpu3_resereved_reg_rd;
|
||||||
|
u32 cpu4_drcc_ao_config;
|
||||||
|
u32 rsv_3804[3];
|
||||||
|
u32 cpu4_sesv6_ao_reg0;
|
||||||
|
u32 cpu4_sesv6_ao_reg1;
|
||||||
|
u32 cpu4_sesv6_ao_reg2;
|
||||||
|
u32 cpu4_sesv6_ao_reg3;
|
||||||
|
u32 cpu4_sesv6_ao_reg4;
|
||||||
|
u32 rsv_3824[3];
|
||||||
|
u32 cpu4_didt_reg;
|
||||||
|
u32 rsv_3834[3];
|
||||||
|
u32 cpu4_dfs_cfg;
|
||||||
|
u32 rsv_3844[3];
|
||||||
|
u32 cpu4_turbo_cfg;
|
||||||
|
u32 rsv_3854[105];
|
||||||
|
u32 cpu4_resereved_reg;
|
||||||
|
u32 cpu4_resereved_reg_rd;
|
||||||
|
u32 cpu5_drcc_ao_config;
|
||||||
|
u32 rsv_3a04[3];
|
||||||
|
u32 cpu5_sesv6_ao_reg0;
|
||||||
|
u32 cpu5_sesv6_ao_reg1;
|
||||||
|
u32 cpu5_sesv6_ao_reg2;
|
||||||
|
u32 cpu5_sesv6_ao_reg3;
|
||||||
|
u32 cpu5_sesv6_ao_reg4;
|
||||||
|
u32 rsv_3a24[3];
|
||||||
|
u32 cpu5_didt_reg;
|
||||||
|
u32 rsv_3a34[3];
|
||||||
|
u32 cpu5_dfs_cfg;
|
||||||
|
u32 rsv_3a44[3];
|
||||||
|
u32 cpu5_turbo_cfg;
|
||||||
|
u32 rsv_3a54[105];
|
||||||
|
u32 cpu5_resereved_reg;
|
||||||
|
u32 cpu5_resereved_reg_rd;
|
||||||
|
u32 cpu6_drcc_ao_config;
|
||||||
|
u32 rsv_3c04[3];
|
||||||
|
u32 cpu6_sesv6_ao_reg0;
|
||||||
|
u32 cpu6_sesv6_ao_reg1;
|
||||||
|
u32 cpu6_sesv6_ao_reg2;
|
||||||
|
u32 cpu6_sesv6_ao_reg3;
|
||||||
|
u32 cpu6_sesv6_ao_reg4;
|
||||||
|
u32 rsv_3c24[3];
|
||||||
|
u32 cpu6_didt_reg;
|
||||||
|
u32 cpu6_mem_lre_reg;
|
||||||
|
u32 rsv_3c38[2];
|
||||||
|
u32 cpu6_dfs_cfg;
|
||||||
|
u32 rsv_3c44[3];
|
||||||
|
u32 cpu6_turbo_cfg;
|
||||||
|
u32 rsv_3c54[105];
|
||||||
|
u32 cpu6_resereved_reg;
|
||||||
|
u32 cpu6_resereved_reg_rd;
|
||||||
|
u32 cpu7_drcc_ao_config;
|
||||||
|
u32 rsv_3e04[3];
|
||||||
|
u32 cpu7_sesv6_ao_reg0;
|
||||||
|
u32 cpu7_sesv6_ao_reg1;
|
||||||
|
u32 cpu7_sesv6_ao_reg2;
|
||||||
|
u32 cpu7_sesv6_ao_reg3;
|
||||||
|
u32 cpu7_sesv6_ao_reg4;
|
||||||
|
u32 rsv_3e24[3];
|
||||||
|
u32 cpu7_didt_reg;
|
||||||
|
u32 cpu7_mem_lre_reg;
|
||||||
|
u32 rsv_3e38[2];
|
||||||
|
u32 cpu7_dfs_cfg;
|
||||||
|
u32 rsv_3e44[3];
|
||||||
|
u32 cpu7_turbo_cfg;
|
||||||
|
u32 rsv_3e54[105];
|
||||||
|
u32 cpu7_resereved_reg;
|
||||||
|
u32 cpu7_resereved_reg_rd;
|
||||||
|
u32 rsv_4000[512];
|
||||||
|
u32 mp0_mbist_cfg;
|
||||||
|
u32 rsv_4804[15];
|
||||||
|
u32 mp0_l3_data_ram_delsel;
|
||||||
|
u32 mp0_l3_tag_ram_delsel;
|
||||||
|
u32 mp0_l3_victim_ram_delsel;
|
||||||
|
u32 mp0_l3_scu_sf_ram_delsel;
|
||||||
|
u32 rsv_4850[12];
|
||||||
|
u32 mp0_dcm_cfg0;
|
||||||
|
u32 mp0_dcm_cfg1;
|
||||||
|
u32 mp0_dcm_cfg2;
|
||||||
|
u32 mp0_dcm_cfg3;
|
||||||
|
u32 mp0_dcm_cfg4;
|
||||||
|
u32 mp0_dcm_cfg5;
|
||||||
|
u32 mp0_dcm_cfg6;
|
||||||
|
u32 mp0_dcm_cfg7;
|
||||||
|
u32 mp0_dcm_cfg8;
|
||||||
|
u32 rsv_48a4[7];
|
||||||
|
u32 mp0_l3_cache_parity1;
|
||||||
|
u32 mp0_l3_cache_parity2;
|
||||||
|
u32 mp0_l3_cache_parity3;
|
||||||
|
u32 rsv_48cc;
|
||||||
|
u32 mp0_cluster_cfg0;
|
||||||
|
u32 rsv_48d4[3];
|
||||||
|
u32 mp0_cluster_cfg4;
|
||||||
|
u32 mp0_cluster_cfg5;
|
||||||
|
u32 mp0_cluster_cfg6;
|
||||||
|
u32 mp0_cluster_cfg7;
|
||||||
|
u32 rsv_48f0[4];
|
||||||
|
u32 mp0_cluster_cfg8;
|
||||||
|
u32 mp0_cluster_cfg9;
|
||||||
|
u32 mp0_cluster_cfg10;
|
||||||
|
u32 mp0_cluster_cfg11;
|
||||||
|
u32 mp0_cluster_cfg12;
|
||||||
|
u32 mp0_cluster_cfg13;
|
||||||
|
u32 mp0_cluster_cfg14;
|
||||||
|
u32 mp0_cluster_cfg15;
|
||||||
|
u32 mp0_cluster_cfg16;
|
||||||
|
u32 mp0_cluster_cfg17;
|
||||||
|
u32 mp0_cluster_cfg18;
|
||||||
|
u32 mp0_cluster_cfg19;
|
||||||
|
u32 mp0_cluster_cfg20;
|
||||||
|
u32 mp0_cluster_cfg21;
|
||||||
|
u32 mp0_cluster_cfg22;
|
||||||
|
u32 mp0_cluster_cfg23;
|
||||||
|
u32 mp0_mem_dreq_cfg;
|
||||||
|
u32 mp0_victim_rd_mask;
|
||||||
|
u32 mp0_minidcc_enable;
|
||||||
|
u32 mp0_mem_lv_mode;
|
||||||
|
u32 rsv_4950[172];
|
||||||
|
u32 cpu_type0_spmc0_cfg;
|
||||||
|
u32 rsv_4c04[7];
|
||||||
|
u32 cpu_type0_ram_delsel0_cfg;
|
||||||
|
u32 cpu_type0_ram_delsel1_cfg;
|
||||||
|
u32 cpu_type0_ram_delsel2_cfg;
|
||||||
|
u32 cpu_type0_ram_delsel3_cfg;
|
||||||
|
u32 rsv_4c30[52];
|
||||||
|
u32 cpu_type1_spmc0_cfg;
|
||||||
|
u32 rsv_4d04[3];
|
||||||
|
u32 cpu_type1_mpmmen;
|
||||||
|
u32 cpu_ppmctl;
|
||||||
|
u32 cpu_typex_most_on_mode;
|
||||||
|
u32 rsv_4d1c;
|
||||||
|
u32 cpu_type1_ram_delsel0_cfg;
|
||||||
|
u32 cpu_type1_ram_delsel1_cfg;
|
||||||
|
u32 cpu_type1_ram_delsel2_cfg;
|
||||||
|
u32 cpu_type1_ram_delsel3_cfg;
|
||||||
|
u32 rsv_4d30[4];
|
||||||
|
u32 cpu_type1_drss_cfg0;
|
||||||
|
u32 cpu_type1_drss_cfg1;
|
||||||
|
u32 rsv_4d48[54];
|
||||||
|
u32 cpu_type2_ram_delsel0_cfg;
|
||||||
|
u32 cpu_type2_ram_delsel1_cfg;
|
||||||
|
u32 cpu_type2_ram_delsel2_cfg;
|
||||||
|
u32 cpu_type2_ram_delsel3_cfg;
|
||||||
|
u32 rsv_4e30[244];
|
||||||
|
u32 mcusys_pwr_con;
|
||||||
|
u32 mp0_cputop_pwr_con;
|
||||||
|
u32 mp0_cpu0_pwr_con;
|
||||||
|
u32 mp0_cpu1_pwr_con;
|
||||||
|
u32 mp0_cpu2_pwr_con;
|
||||||
|
u32 mp0_cpu3_pwr_con;
|
||||||
|
u32 mp0_cpu4_pwr_con;
|
||||||
|
u32 mp0_cpu5_pwr_con;
|
||||||
|
u32 mp0_cpu6_pwr_con;
|
||||||
|
u32 mp0_cpu7_pwr_con;
|
||||||
|
u32 rsv_5228[246];
|
||||||
|
u32 sec_pol_ctl_en0;
|
||||||
|
u32 sec_pol_ctl_en1;
|
||||||
|
u32 sec_pol_ctl_en2;
|
||||||
|
u32 sec_pol_ctl_en3;
|
||||||
|
u32 sec_pol_ctl_en4;
|
||||||
|
u32 sec_pol_ctl_en5;
|
||||||
|
u32 sec_pol_ctl_en6;
|
||||||
|
u32 sec_pol_ctl_en7;
|
||||||
|
u32 sec_pol_ctl_en8;
|
||||||
|
u32 sec_pol_ctl_en9;
|
||||||
|
u32 sec_pol_ctl_en10;
|
||||||
|
u32 sec_pol_ctl_en11;
|
||||||
|
u32 sec_pol_ctl_en12;
|
||||||
|
u32 sec_pol_ctl_en13;
|
||||||
|
u32 sec_pol_ctl_en14;
|
||||||
|
u32 sec_pol_ctl_en15;
|
||||||
|
u32 sec_pol_ctl_en16;
|
||||||
|
u32 sec_pol_ctl_en17;
|
||||||
|
u32 sec_pol_ctl_en18;
|
||||||
|
u32 sec_pol_ctl_en19;
|
||||||
|
u32 sec_pol_ctl_en20;
|
||||||
|
u32 sec_pol_ctl_en21;
|
||||||
|
u32 sec_pol_ctl_en22;
|
||||||
|
u32 sec_pol_ctl_en23;
|
||||||
|
u32 sec_pol_ctl_en24;
|
||||||
|
u32 sec_pol_ctl_en25;
|
||||||
|
u32 sec_pol_ctl_en26;
|
||||||
|
u32 sec_pol_ctl_en27;
|
||||||
|
u32 sec_pol_ctl_en28;
|
||||||
|
u32 sec_pol_ctl_en29;
|
||||||
|
u32 sec_pol_ctl_en30;
|
||||||
|
u32 sec_pol_ctl_en31;
|
||||||
|
u32 int_pol_ctl0;
|
||||||
|
u32 int_pol_ctl1;
|
||||||
|
u32 int_pol_ctl2;
|
||||||
|
u32 int_pol_ctl3;
|
||||||
|
u32 int_pol_ctl4;
|
||||||
|
u32 int_pol_ctl5;
|
||||||
|
u32 int_pol_ctl6;
|
||||||
|
u32 int_pol_ctl7;
|
||||||
|
u32 int_pol_ctl8;
|
||||||
|
u32 int_pol_ctl9;
|
||||||
|
u32 int_pol_ctl10;
|
||||||
|
u32 int_pol_ctl11;
|
||||||
|
u32 int_pol_ctl12;
|
||||||
|
u32 int_pol_ctl13;
|
||||||
|
u32 int_pol_ctl14;
|
||||||
|
u32 int_pol_ctl15;
|
||||||
|
u32 int_pol_ctl16;
|
||||||
|
u32 int_pol_ctl17;
|
||||||
|
u32 int_pol_ctl18;
|
||||||
|
u32 int_pol_ctl19;
|
||||||
|
u32 int_pol_ctl20;
|
||||||
|
u32 int_pol_ctl21;
|
||||||
|
u32 int_pol_ctl22;
|
||||||
|
u32 int_pol_ctl23;
|
||||||
|
u32 int_pol_ctl24;
|
||||||
|
u32 int_pol_ctl25;
|
||||||
|
u32 int_pol_ctl26;
|
||||||
|
u32 int_pol_ctl27;
|
||||||
|
u32 int_pol_ctl28;
|
||||||
|
u32 int_pol_ctl29;
|
||||||
|
u32 int_pol_ctl30;
|
||||||
|
u32 int_pol_ctl31;
|
||||||
|
u32 int_msk_ctl0;
|
||||||
|
u32 int_msk_ctl1;
|
||||||
|
u32 int_msk_ctl2;
|
||||||
|
u32 int_msk_ctl3;
|
||||||
|
u32 int_msk_ctl4;
|
||||||
|
u32 int_msk_ctl5;
|
||||||
|
u32 int_msk_ctl6;
|
||||||
|
u32 int_msk_ctl7;
|
||||||
|
u32 int_msk_ctl8;
|
||||||
|
u32 int_msk_ctl9;
|
||||||
|
u32 int_msk_ctl10;
|
||||||
|
u32 int_msk_ctl11;
|
||||||
|
u32 int_msk_ctl12;
|
||||||
|
u32 int_msk_ctl13;
|
||||||
|
u32 int_msk_ctl14;
|
||||||
|
u32 int_msk_ctl15;
|
||||||
|
u32 int_msk_ctl16;
|
||||||
|
u32 int_msk_ctl17;
|
||||||
|
u32 int_msk_ctl18;
|
||||||
|
u32 int_msk_ctl19;
|
||||||
|
u32 int_msk_ctl20;
|
||||||
|
u32 int_msk_ctl21;
|
||||||
|
u32 int_msk_ctl22;
|
||||||
|
u32 int_msk_ctl23;
|
||||||
|
u32 int_msk_ctl24;
|
||||||
|
u32 int_msk_ctl25;
|
||||||
|
u32 int_msk_ctl26;
|
||||||
|
u32 int_msk_ctl27;
|
||||||
|
u32 int_msk_ctl28;
|
||||||
|
u32 int_msk_ctl29;
|
||||||
|
u32 int_msk_ctl30;
|
||||||
|
u32 int_msk_ctl31;
|
||||||
|
u32 int_msk_ctl_all;
|
||||||
|
u32 int_cfg_indirect_access;
|
||||||
|
u32 int_cfg_direct_access_en;
|
||||||
|
u32 rsv_578c[557];
|
||||||
|
u32 dfd_internal_ctl;
|
||||||
|
u32 dfd_internal_counter;
|
||||||
|
u32 dfd_internal_pwr_on;
|
||||||
|
u32 dfd_internal_chain_legth_0;
|
||||||
|
u32 dfd_internal_shift_clk_ratio;
|
||||||
|
u32 dfd_internal_counter_return;
|
||||||
|
u32 dfd_internal_sram_access;
|
||||||
|
u32 dfd_finish_wait_time;
|
||||||
|
u32 dfd_internal_chain_group;
|
||||||
|
u32 dfd_internal_chain_inv_info_ll;
|
||||||
|
u32 dfd_internal_chain_inv_info_lh;
|
||||||
|
u32 dfd_internal_chain_inv_info_hl;
|
||||||
|
u32 dfd_internal_chain_inv_info_hh;
|
||||||
|
u32 dfd_internal_test_so_over_64;
|
||||||
|
u32 dfd_internal_mask_out;
|
||||||
|
u32 dfd_internal_sw_ns_trigger;
|
||||||
|
u32 dfd_internal_mcsi;
|
||||||
|
u32 dfd_internal_mcsi_sel_status;
|
||||||
|
u32 dfd_v30_ctl;
|
||||||
|
u32 dfd_v30_base_addr;
|
||||||
|
u32 dfd_power_ctl;
|
||||||
|
u32 dfd_reset_on;
|
||||||
|
u32 dfd_test_si_0;
|
||||||
|
u32 dfd_test_si_1;
|
||||||
|
u32 dfd_status_clean;
|
||||||
|
u32 dfd_status_return;
|
||||||
|
u32 dfd_v35_enable;
|
||||||
|
u32 dfd_v35_tap_number;
|
||||||
|
u32 dfd_v35_tap_en;
|
||||||
|
u32 dfd_v35_ctl;
|
||||||
|
u32 dfd_v35_tap_seq0;
|
||||||
|
u32 dfd_v35_tap_seq1;
|
||||||
|
u32 dfd_v35_seq0_0;
|
||||||
|
u32 dfd_v35_seq0_1;
|
||||||
|
u32 dfd_v35_seq1_0;
|
||||||
|
u32 dfd_v35_seq1_1;
|
||||||
|
u32 dfd_v35_seq2_0;
|
||||||
|
u32 dfd_v35_seq2_1;
|
||||||
|
u32 rsv_60d8[6];
|
||||||
|
u32 dfd_soc_clock_stop_mask;
|
||||||
|
u32 rsv_60f4[2];
|
||||||
|
u32 dfd_hw_trigger_mask;
|
||||||
|
u32 dfd_v50_enable;
|
||||||
|
u32 dfd_v50_self_trigger_iteration;
|
||||||
|
u32 dfd_v50_start_trigger;
|
||||||
|
u32 dfd_v50_cpuck_halt;
|
||||||
|
u32 dfd_v50_26m_resume;
|
||||||
|
u32 dfd_v50_26m_halt_release;
|
||||||
|
u32 dfd_v50_system_halt_time;
|
||||||
|
u32 dfd_v50_group_0_1_diff;
|
||||||
|
u32 dfd_v50_group_0_2_diff;
|
||||||
|
u32 dfd_v50_group_0_3_diff;
|
||||||
|
u32 dfd_v50_group_0_4_diff;
|
||||||
|
u32 dfd_v50_group_0_5_diff;
|
||||||
|
u32 dfd_v50_group_0_6_diff;
|
||||||
|
u32 dfd_v50_group_0_7_diff;
|
||||||
|
u32 dfd_v50_group_0_8_diff;
|
||||||
|
u32 dfd_v50_group_0_9_diff;
|
||||||
|
u32 dfd_v50_group_0_10_diff;
|
||||||
|
u32 dfd_v50_group_0_11_diff;
|
||||||
|
u32 dfd_v50_group_0_12_diff;
|
||||||
|
u32 dfd_v50_group_0_13_diff;
|
||||||
|
u32 dfd_v50_group_0_14_diff;
|
||||||
|
u32 dfd_v50_group_0_15_diff;
|
||||||
|
u32 dfd_v50_group_0_16_diff;
|
||||||
|
u32 dfd_v50_group_0_17_diff;
|
||||||
|
u32 dfd_v50_group_0_18_diff;
|
||||||
|
u32 dfd_v50_group_0_19_diff;
|
||||||
|
u32 dfd_v50_group_0_20_diff;
|
||||||
|
u32 dfd_v50_group_0_21_diff;
|
||||||
|
u32 dfd_v50_group_0_22_diff;
|
||||||
|
u32 dfd_v50_group_0_23_diff;
|
||||||
|
u32 dfd_v50_group_0_24_diff;
|
||||||
|
u32 dfd_v50_group_0_25_diff;
|
||||||
|
u32 dfd_v50_group_0_26_diff;
|
||||||
|
u32 dfd_v50_group_0_27_diff;
|
||||||
|
u32 dfd_v50_group_0_28_diff;
|
||||||
|
u32 dfd_v50_group_0_29_diff;
|
||||||
|
u32 dfd_v50_group_0_30_diff;
|
||||||
|
u32 dfd_v50_group_0_31_diff;
|
||||||
|
u32 dfd_v50_chain_group_3_0_info;
|
||||||
|
u32 dfd_v50_chain_group_7_4_info;
|
||||||
|
u32 dfd_v50_chain_group_11_8_info;
|
||||||
|
u32 dfd_v50_chain_group_15_12_info;
|
||||||
|
u32 dfd_v50_chain_group_19_16_info;
|
||||||
|
u32 dfd_v50_chain_group_23_20_info;
|
||||||
|
u32 dfd_v50_chain_group_27_24_info;
|
||||||
|
u32 dfd_v50_chain_group_31_28_info;
|
||||||
|
u32 dfd_v50_chain_group_35_32_info;
|
||||||
|
u32 dfd_v50_chain_group_39_36_info;
|
||||||
|
u32 dfd_v50_chain_group_43_40_info;
|
||||||
|
u32 dfd_v50_chain_group_47_44_info;
|
||||||
|
u32 dfd_v50_chain_group_51_48_info;
|
||||||
|
u32 dfd_v50_chain_group_55_52_info;
|
||||||
|
u32 dfd_v50_chain_group_59_56_info;
|
||||||
|
u32 dfd_v50_chain_group_63_60_info;
|
||||||
|
u32 dfd_v50_chain_group_67_64_info;
|
||||||
|
u32 dfd_v50_chain_group_71_68_info;
|
||||||
|
u32 dfd_v50_chain_group_75_72_info;
|
||||||
|
u32 dfd_v50_chain_group_79_76_info;
|
||||||
|
u32 dfd_v50_chain_group_83_80_info;
|
||||||
|
u32 dfd_v50_chain_group_87_84_info;
|
||||||
|
u32 dfd_v50_chain_group_91_88_info;
|
||||||
|
u32 dfd_v50_chain_group_95_92_info;
|
||||||
|
u32 dfd_v50_chain_group_99_96_info;
|
||||||
|
u32 dfd_v50_chain_group_103_100_info;
|
||||||
|
u32 dfd_v50_chain_group_107_104_info;
|
||||||
|
u32 dfd_v50_chain_group_111_108_info;
|
||||||
|
u32 dfd_v50_chain_group_115_112_info;
|
||||||
|
u32 dfd_v50_chain_group_119_116_info;
|
||||||
|
u32 dfd_v50_chain_group_123_120_info;
|
||||||
|
u32 dfd_v50_chain_group_127_124_info;
|
||||||
|
u32 dfd_test_si_2;
|
||||||
|
u32 dfd_test_si_3;
|
||||||
|
u32 dfd_test_so;
|
||||||
|
u32 dfd_bus_halt_time;
|
||||||
|
u32 dfd_read_addr;
|
||||||
|
u32 dfd_v50_clk_stop_time;
|
||||||
|
u32 dfd_v50_group_0_32_diff;
|
||||||
|
u32 dfd_v50_group_0_33_diff;
|
||||||
|
u32 dfd_v50_group_0_34_diff;
|
||||||
|
u32 dfd_v50_group_0_35_diff;
|
||||||
|
u32 dfd_v50_group_0_36_diff;
|
||||||
|
u32 dfd_v50_group_0_37_diff;
|
||||||
|
u32 dfd_v50_group_0_38_diff;
|
||||||
|
u32 dfd_v50_group_0_39_diff;
|
||||||
|
u32 dfd_v50_group_0_40_diff;
|
||||||
|
u32 dfd_v50_group_0_41_diff;
|
||||||
|
u32 dfd_v50_group_0_42_diff;
|
||||||
|
u32 dfd_v50_group_0_43_diff;
|
||||||
|
u32 dfd_v50_group_0_44_diff;
|
||||||
|
u32 dfd_v50_group_0_45_diff;
|
||||||
|
u32 dfd_v50_group_0_46_diff;
|
||||||
|
u32 dfd_v50_group_0_47_diff;
|
||||||
|
u32 dfd_v50_group_0_48_diff;
|
||||||
|
u32 dfd_v50_group_0_49_diff;
|
||||||
|
u32 dfd_v50_group_0_50_diff;
|
||||||
|
u32 dfd_v50_group_0_51_diff;
|
||||||
|
u32 dfd_v50_group_0_52_diff;
|
||||||
|
u32 dfd_v50_group_0_53_diff;
|
||||||
|
u32 dfd_v50_group_0_54_diff;
|
||||||
|
u32 dfd_v50_group_0_55_diff;
|
||||||
|
u32 dfd_v50_group_0_56_diff;
|
||||||
|
u32 dfd_v50_group_0_57_diff;
|
||||||
|
u32 dfd_v50_group_0_58_diff;
|
||||||
|
u32 dfd_v50_group_0_59_diff;
|
||||||
|
u32 dfd_v50_group_0_60_diff;
|
||||||
|
u32 dfd_v50_group_0_61_diff;
|
||||||
|
u32 dfd_v50_group_0_62_diff;
|
||||||
|
u32 dfd_v50_group_0_63_diff;
|
||||||
|
u32 rsv_62b0[20];
|
||||||
|
u32 dfd_v50_spare;
|
||||||
|
u32 rsv_6304[1843];
|
||||||
|
u32 mcusys_reserved_reg4;
|
||||||
|
u32 mcusys_reserved_reg4_rd;
|
||||||
|
u32 rsv_7fd8[2];
|
||||||
|
u32 mcusys_reserved_reg0;
|
||||||
|
u32 mcusys_reserved_reg1;
|
||||||
|
u32 mcusys_reserved_reg2;
|
||||||
|
u32 mcusys_reserved_reg3;
|
||||||
|
u32 mcusys_reserved_reg0_rd;
|
||||||
|
u32 mcusys_reserved_reg1_rd;
|
||||||
|
u32 mcusys_reserved_reg2_rd;
|
||||||
|
u32 mcusys_reserved_reg3_rd;
|
||||||
|
};
|
||||||
|
|
||||||
|
check_member(mt8195_mcucfg_regs, cpu_plldiv_cfg0, 0x22a0);
|
||||||
|
check_member(mt8195_mcucfg_regs, bus_plldiv_cfg, 0x22e0);
|
||||||
|
|
||||||
|
static struct mt8195_mcucfg_regs *const mt8195_mcucfg = (void *)MCUCFG_BASE;
|
||||||
|
|
||||||
|
#endif /* SOC_MEDIATEK_MT8195_MCUCFG_H */
|
|
@ -502,6 +502,63 @@ check_member(mtk_apmixed_regs, occscan_con4, 0x0d80);
|
||||||
check_member(mtk_apmixed_regs, apll1_con5, 0x0dc0);
|
check_member(mtk_apmixed_regs, apll1_con5, 0x0dc0);
|
||||||
check_member(mtk_apmixed_regs, hdmirx_apll_con5, 0x0dd4);
|
check_member(mtk_apmixed_regs, hdmirx_apll_con5, 0x0dd4);
|
||||||
|
|
||||||
|
enum {
|
||||||
|
PLL_CKSQ_ON_DELAY = 100,
|
||||||
|
PLL_PWR_ON_DELAY = 30,
|
||||||
|
PLL_ISO_DELAY = 1,
|
||||||
|
PLL_EN_DELAY = 20,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
PCW_INTEGER_BITS = 8,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MT8195_PLL_EN = 0x1 << 9,
|
||||||
|
MT8195_APLL5_EN = (0x1 << 9) | (0x1 << 20),
|
||||||
|
GLITCH_FREE_EN = 0x1 << 12,
|
||||||
|
PLL_DIV_EN = 0xff << 24,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MCU_DIV_MASK = 0x1f << 17,
|
||||||
|
MCU_DIV_1 = 0x8 << 17,
|
||||||
|
|
||||||
|
MCU_MUX_MASK = 0x3 << 9,
|
||||||
|
MCU_MUX_SRC_PLL = 0x1 << 9,
|
||||||
|
MCU_MUX_SRC_26M = 0x0 << 9,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* PLL rate */
|
||||||
|
enum {
|
||||||
|
ARMPLL_LL_HZ = 1036 * MHz,
|
||||||
|
ARMPLL_BL_HZ = 1027 * MHz,
|
||||||
|
CCIPLL_HZ = 835 * MHz,
|
||||||
|
NNAPLL_HZ = 860 * MHz,
|
||||||
|
RESPLL_HZ = 600 * MHz,
|
||||||
|
ETHPLL_HZ = 500 * MHz,
|
||||||
|
MSDCPLL_HZ = 384 * MHz,
|
||||||
|
TVDPLL1_HZ = 594 * MHz,
|
||||||
|
TVDPLL2_HZ = 594 * MHz,
|
||||||
|
MMPLL_HZ = 2750UL * MHz,
|
||||||
|
MAINPLL_HZ = 2184UL * MHz,
|
||||||
|
VDECPLL_HZ = 220 * MHz,
|
||||||
|
IMGPLL_HZ = 650 * MHz,
|
||||||
|
UNIVPLL_HZ = 2496UL * MHz,
|
||||||
|
HDMIPLL1_HZ = 884 * MHz,
|
||||||
|
HDMIPLL2_HZ = 600 * MHz,
|
||||||
|
HDMIRX_APLL_HZ = 294915 * KHz,
|
||||||
|
USB1PLL_HZ = 192 * MHz,
|
||||||
|
ADSPPLL_HZ = 720 * MHz,
|
||||||
|
APLL1_HZ = 196608 * KHz,
|
||||||
|
APLL2_HZ = 180633600,
|
||||||
|
APLL3_HZ = 196608 * KHz,
|
||||||
|
APLL4_HZ = 196608 * KHz,
|
||||||
|
APLL5_HZ = 196608 * KHz,
|
||||||
|
MFGPLL_HZ = 700 * MHz,
|
||||||
|
DGIPLL_HZ = 165 * MHz,
|
||||||
|
};
|
||||||
|
|
||||||
/* top_div rate */
|
/* top_div rate */
|
||||||
enum {
|
enum {
|
||||||
CLK26M_HZ = 26 * MHz,
|
CLK26M_HZ = 26 * MHz,
|
||||||
|
@ -512,4 +569,12 @@ enum {
|
||||||
UART_HZ = CLK26M_HZ,
|
UART_HZ = CLK26M_HZ,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
DEFINE_BITFIELD(CLK_DBG_CFG_ABIST_CK_SEL, 14, 8)
|
||||||
|
DEFINE_BITFIELD(CLK_DBG_CFG_CKGEN_CK_SEL, 23, 16)
|
||||||
|
DEFINE_BITFIELD(CLK_DBG_CFG_METER_CK_SEL, 1, 0)
|
||||||
|
DEFINE_BITFIELD(CLK_DBG_CFG_CKGEN_EN, 24, 24)
|
||||||
|
DEFINE_BITFIELD(CLK_MISC_CFG_0_METER_DIV, 31, 24)
|
||||||
|
DEFINE_BITFIELD(CLK26CALI_0_TRIGGER, 4, 4)
|
||||||
|
DEFINE_BITFIELD(CLK26CALI_1_LOAD_CNT, 25, 16)
|
||||||
|
|
||||||
#endif /* SOC_MEDIATEK_MT8195_PLL_H */
|
#endif /* SOC_MEDIATEK_MT8195_PLL_H */
|
||||||
|
|
|
@ -0,0 +1,836 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
|
#include <console/console.h>
|
||||||
|
#include <device/mmio.h>
|
||||||
|
#include <delay.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <timer.h>
|
||||||
|
|
||||||
|
#include <soc/addressmap.h>
|
||||||
|
#include <soc/infracfg.h>
|
||||||
|
#include <soc/mcucfg.h>
|
||||||
|
#include <soc/pll.h>
|
||||||
|
#include <soc/spm.h>
|
||||||
|
#include <soc/wdt.h>
|
||||||
|
|
||||||
|
struct mt8195_infracfg_ao_bcrm_regs {
|
||||||
|
u32 reserved1[13];
|
||||||
|
u32 vdnr_dcm_top_infra_ctrl0; /* 0x0034 */
|
||||||
|
};
|
||||||
|
check_member(mt8195_infracfg_ao_bcrm_regs, vdnr_dcm_top_infra_ctrl0, 0x0034);
|
||||||
|
static struct mt8195_infracfg_ao_bcrm_regs *const mt8195_infracfg_ao_bcrm =
|
||||||
|
(void *)INFRACFG_AO_BCRM_BASE;
|
||||||
|
|
||||||
|
struct mt8195_pericfg_ao_regs {
|
||||||
|
u32 reserved1[4];
|
||||||
|
u32 peri_module_sw_cg_0_set; /* 0x0010 */
|
||||||
|
};
|
||||||
|
check_member(mt8195_pericfg_ao_regs, peri_module_sw_cg_0_set, 0x0010);
|
||||||
|
static struct mt8195_pericfg_ao_regs *const mt8195_pericfg_ao = (void *)PERICFG_AO_BASE;
|
||||||
|
|
||||||
|
enum mux_id {
|
||||||
|
TOP_AXI_SEL,
|
||||||
|
TOP_SPM_SEL,
|
||||||
|
TOP_SCP_SEL,
|
||||||
|
TOP_BUS_AXIMEM_SEL,
|
||||||
|
TOP_VPP_SEL,
|
||||||
|
TOP_ETHDR_SEL,
|
||||||
|
TOP_IPE_SEL,
|
||||||
|
TOP_CAM_SEL,
|
||||||
|
TOP_CCU_SEL,
|
||||||
|
TOP_IMG_SEL,
|
||||||
|
TOP_CAMTM_SEL,
|
||||||
|
TOP_DSP_SEL,
|
||||||
|
TOP_DSP1_SEL,
|
||||||
|
TOP_DSP2_SEL,
|
||||||
|
TOP_DSP3_SEL,
|
||||||
|
TOP_DSP4_SEL,
|
||||||
|
TOP_DSP5_SEL,
|
||||||
|
TOP_DSP6_SEL,
|
||||||
|
TOP_DSP7_SEL,
|
||||||
|
TOP_IPU_IF_SEL,
|
||||||
|
TOP_MFG_SEL,
|
||||||
|
TOP_CAMTG_SEL,
|
||||||
|
TOP_CAMTG2_SEL,
|
||||||
|
TOP_CAMTG3_SEL,
|
||||||
|
TOP_CAMTG4_SEL,
|
||||||
|
TOP_CAMTG5_SEL,
|
||||||
|
TOP_UART_SEL,
|
||||||
|
TOP_SPI_SEL,
|
||||||
|
TOP_SPIS_SEL,
|
||||||
|
TOP_MSDC50_0_H_SEL,
|
||||||
|
TOP_MSDC50_0_SEL,
|
||||||
|
TOP_MSDC30_1_SEL,
|
||||||
|
TOP_MSDC30_2_SEL,
|
||||||
|
TOP_INTDIR_SEL,
|
||||||
|
TOP_AUD_INTBUS_SEL,
|
||||||
|
TOP_AUDIO_H_SEL,
|
||||||
|
TOP_PWRAP_ULPOSC_SEL,
|
||||||
|
TOP_ATB_SEL,
|
||||||
|
TOP_PWRMCU_SEL,
|
||||||
|
TOP_DP_SEL,
|
||||||
|
TOP_EDP_SEL,
|
||||||
|
TOP_DPI_SEL,
|
||||||
|
TOP_DISP_PWM0_SEL,
|
||||||
|
TOP_DISP_PWM1_SEL,
|
||||||
|
TOP_USB_SEL,
|
||||||
|
TOP_SSUSB_XHCI_SEL,
|
||||||
|
TOP_USB_1P_SEL,
|
||||||
|
TOP_SSUSB_XHCI_1P_SEL,
|
||||||
|
TOP_USB_2P_SEL,
|
||||||
|
TOP_SSUSB_XHCI_2P_SEL,
|
||||||
|
TOP_USB_3P_SEL,
|
||||||
|
TOP_SSUSB_XHCI_3P_SEL,
|
||||||
|
TOP_I2C_SEL,
|
||||||
|
TOP_SENINF_SEL,
|
||||||
|
TOP_SENINF1_SEL,
|
||||||
|
TOP_SENINF2_SEL,
|
||||||
|
TOP_SENINF3_SEL,
|
||||||
|
TOP_GCPU_SEL,
|
||||||
|
TOP_DXCC_SEL,
|
||||||
|
TOP_DPMAIF_SEL,
|
||||||
|
TOP_AES_UFSFDE_SEL,
|
||||||
|
TOP_UFS_SEL,
|
||||||
|
TOP_UFS_TICK1US_SEL,
|
||||||
|
TOP_UFS_MP_SAP_SEL,
|
||||||
|
TOP_VENC_SEL,
|
||||||
|
TOP_VDEC_SEL,
|
||||||
|
TOP_PWM_SEL,
|
||||||
|
TOP_MCUPM_SEL,
|
||||||
|
TOP_SPMI_P_MST_SEL,
|
||||||
|
TOP_SPMI_M_MST_SEL,
|
||||||
|
TOP_DVFSRC_SEL,
|
||||||
|
TOP_TL_SEL,
|
||||||
|
TOP_TL_P1_SEL,
|
||||||
|
TOP_AES_MSDCFDE_SEL,
|
||||||
|
TOP_DSI_OCC_SEL,
|
||||||
|
TOP_WPE_VPP_SEL,
|
||||||
|
TOP_HDCP_SEL,
|
||||||
|
TOP_HDCP_24M_SEL,
|
||||||
|
TOP_HD20_DACR_REF_SEL,
|
||||||
|
TOP_HD20_HDCP_C_SEL,
|
||||||
|
TOP_HDMI_XTAL_SEL,
|
||||||
|
TOP_HDMI_APB_SEL,
|
||||||
|
TOP_SNPS_ETH_250M_SEL,
|
||||||
|
TOP_SNPS_ETH_62P4M_PTP_SEL,
|
||||||
|
TOP_SNPS_ETH_50M_RMII_SEL,
|
||||||
|
TOP_DGI_OUT_SEL,
|
||||||
|
TOP_NNA0_SEL,
|
||||||
|
TOP_NNA1_SEL,
|
||||||
|
TOP_ADSP_SEL,
|
||||||
|
TOP_ASM_H_SEL,
|
||||||
|
TOP_ASM_M_SEL,
|
||||||
|
TOP_ASM_L_SEL,
|
||||||
|
TOP_APLL1_SEL,
|
||||||
|
TOP_APLL2_SEL,
|
||||||
|
TOP_APLL3_SEL,
|
||||||
|
TOP_APLL4_SEL,
|
||||||
|
TOP_APLL5_SEL,
|
||||||
|
TOP_I2SO1_M_SEL,
|
||||||
|
TOP_I2SO2_M_SEL,
|
||||||
|
TOP_I2SI1_M_SEL,
|
||||||
|
TOP_I2SI2_M_SEL,
|
||||||
|
TOP_DPTX_M_SEL,
|
||||||
|
TOP_AUD_IEC_SEL,
|
||||||
|
TOP_A1SYS_HP_SEL,
|
||||||
|
TOP_A2SYS_SEL,
|
||||||
|
TOP_A3SYS_SEL,
|
||||||
|
TOP_A4SYS_SEL,
|
||||||
|
TOP_SPINFI_B_SEL,
|
||||||
|
TOP_NFI1X_SEL,
|
||||||
|
TOP_ECC_SEL,
|
||||||
|
TOP_AUDIO_LOCAL_BUS_SEL,
|
||||||
|
TOP_SPINOR_SEL,
|
||||||
|
TOP_DVIO_DGI_REF_SEL,
|
||||||
|
TOP_SRCK_SEL,
|
||||||
|
TOP_RSVD1_SEL,
|
||||||
|
TOP_MFG_FAST_SEL,
|
||||||
|
TOP_NR_MUX
|
||||||
|
};
|
||||||
|
|
||||||
|
#define MUX(_id, _reg, _mux_shift, _mux_width) \
|
||||||
|
[_id] = { \
|
||||||
|
.reg = &mtk_topckgen->_reg, \
|
||||||
|
.mux_shift = _mux_shift, \
|
||||||
|
.mux_width = _mux_width, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MUX_UPD(_id, _reg, _mux_shift, _mux_width, _upd_reg, _upd_shift)\
|
||||||
|
[_id] = { \
|
||||||
|
.reg = &mtk_topckgen->_reg, \
|
||||||
|
.set_reg = &mtk_topckgen->_reg##_set, \
|
||||||
|
.clr_reg = &mtk_topckgen->_reg##_clr, \
|
||||||
|
.mux_shift = _mux_shift, \
|
||||||
|
.mux_width = _mux_width, \
|
||||||
|
.upd_reg = &mtk_topckgen->_upd_reg, \
|
||||||
|
.upd_shift = _upd_shift, \
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct mux muxes[] = {
|
||||||
|
/* CLK_CFG_0 */
|
||||||
|
MUX_UPD(TOP_AXI_SEL, clk_cfg_0, 0, 3, clk_cfg_update, 0),
|
||||||
|
MUX_UPD(TOP_SPM_SEL, clk_cfg_0, 8, 2, clk_cfg_update, 1),
|
||||||
|
MUX_UPD(TOP_SCP_SEL, clk_cfg_0, 16, 3, clk_cfg_update, 2),
|
||||||
|
MUX_UPD(TOP_BUS_AXIMEM_SEL, clk_cfg_0, 24, 3, clk_cfg_update, 3),
|
||||||
|
/* CLK_CFG_1 */
|
||||||
|
MUX_UPD(TOP_VPP_SEL, clk_cfg_1, 0, 4, clk_cfg_update, 4),
|
||||||
|
MUX_UPD(TOP_ETHDR_SEL, clk_cfg_1, 8, 4, clk_cfg_update, 5),
|
||||||
|
MUX_UPD(TOP_IPE_SEL, clk_cfg_1, 16, 4, clk_cfg_update, 6),
|
||||||
|
MUX_UPD(TOP_CAM_SEL, clk_cfg_1, 24, 4, clk_cfg_update, 7),
|
||||||
|
/* CLK_CFG_2 */
|
||||||
|
MUX_UPD(TOP_CCU_SEL, clk_cfg_2, 0, 4, clk_cfg_update, 8),
|
||||||
|
MUX_UPD(TOP_IMG_SEL, clk_cfg_2, 8, 4, clk_cfg_update, 9),
|
||||||
|
MUX_UPD(TOP_CAMTM_SEL, clk_cfg_2, 16, 2, clk_cfg_update, 10),
|
||||||
|
MUX_UPD(TOP_DSP_SEL, clk_cfg_2, 24, 3, clk_cfg_update, 11),
|
||||||
|
/* CLK_CFG_3 */
|
||||||
|
MUX_UPD(TOP_DSP1_SEL, clk_cfg_3, 0, 3, clk_cfg_update, 12),
|
||||||
|
MUX_UPD(TOP_DSP2_SEL, clk_cfg_3, 8, 3, clk_cfg_update, 13),
|
||||||
|
MUX_UPD(TOP_DSP3_SEL, clk_cfg_3, 16, 3, clk_cfg_update, 14),
|
||||||
|
MUX_UPD(TOP_DSP4_SEL, clk_cfg_3, 24, 3, clk_cfg_update, 15),
|
||||||
|
/* CLK_CFG_4 */
|
||||||
|
MUX_UPD(TOP_DSP5_SEL, clk_cfg_4, 0, 3, clk_cfg_update, 16),
|
||||||
|
MUX_UPD(TOP_DSP6_SEL, clk_cfg_4, 8, 3, clk_cfg_update, 17),
|
||||||
|
MUX_UPD(TOP_DSP7_SEL, clk_cfg_4, 16, 3, clk_cfg_update, 18),
|
||||||
|
MUX_UPD(TOP_IPU_IF_SEL, clk_cfg_4, 24, 3, clk_cfg_update, 19),
|
||||||
|
/* CLK_CFG_5 */
|
||||||
|
MUX_UPD(TOP_MFG_SEL, clk_cfg_5, 0, 2, clk_cfg_update, 20),
|
||||||
|
MUX_UPD(TOP_CAMTG_SEL, clk_cfg_5, 8, 3, clk_cfg_update, 21),
|
||||||
|
MUX_UPD(TOP_CAMTG2_SEL, clk_cfg_5, 16, 3, clk_cfg_update, 22),
|
||||||
|
MUX_UPD(TOP_CAMTG3_SEL, clk_cfg_5, 24, 3, clk_cfg_update, 23),
|
||||||
|
/* CLK_CFG_6 */
|
||||||
|
MUX_UPD(TOP_CAMTG4_SEL, clk_cfg_6, 0, 3, clk_cfg_update, 24),
|
||||||
|
MUX_UPD(TOP_CAMTG5_SEL, clk_cfg_6, 8, 3, clk_cfg_update, 25),
|
||||||
|
MUX_UPD(TOP_UART_SEL, clk_cfg_6, 16, 1, clk_cfg_update, 26),
|
||||||
|
MUX_UPD(TOP_SPI_SEL, clk_cfg_6, 24, 3, clk_cfg_update, 27),
|
||||||
|
/* CLK_CFG_7 */
|
||||||
|
MUX_UPD(TOP_SPIS_SEL, clk_cfg_7, 0, 3, clk_cfg_update, 28),
|
||||||
|
MUX_UPD(TOP_MSDC50_0_H_SEL, clk_cfg_7, 8, 2, clk_cfg_update, 29),
|
||||||
|
MUX_UPD(TOP_MSDC50_0_SEL, clk_cfg_7, 16, 3, clk_cfg_update, 30),
|
||||||
|
MUX_UPD(TOP_MSDC30_1_SEL, clk_cfg_7, 24, 3, clk_cfg_update, 31),
|
||||||
|
/* CLK_CFG_8 */
|
||||||
|
MUX_UPD(TOP_MSDC30_2_SEL, clk_cfg_8, 0, 3, clk_cfg_update1, 0),
|
||||||
|
MUX_UPD(TOP_INTDIR_SEL, clk_cfg_8, 8, 2, clk_cfg_update1, 1),
|
||||||
|
MUX_UPD(TOP_AUD_INTBUS_SEL, clk_cfg_8, 16, 2, clk_cfg_update1, 2),
|
||||||
|
MUX_UPD(TOP_AUDIO_H_SEL, clk_cfg_8, 24, 2, clk_cfg_update1, 3),
|
||||||
|
/* CLK_CFG_9 */
|
||||||
|
MUX_UPD(TOP_PWRAP_ULPOSC_SEL, clk_cfg_9, 0, 3, clk_cfg_update1, 4),
|
||||||
|
MUX_UPD(TOP_ATB_SEL, clk_cfg_9, 8, 2, clk_cfg_update1, 5),
|
||||||
|
MUX_UPD(TOP_PWRMCU_SEL, clk_cfg_9, 16, 3, clk_cfg_update1, 6),
|
||||||
|
MUX_UPD(TOP_DP_SEL, clk_cfg_9, 24, 4, clk_cfg_update1, 7),
|
||||||
|
/* CLK_CFG_10 */
|
||||||
|
MUX_UPD(TOP_EDP_SEL, clk_cfg_10, 0, 4, clk_cfg_update1, 8),
|
||||||
|
MUX_UPD(TOP_DPI_SEL, clk_cfg_10, 8, 4, clk_cfg_update1, 9),
|
||||||
|
MUX_UPD(TOP_DISP_PWM0_SEL, clk_cfg_10, 16, 3, clk_cfg_update1, 10),
|
||||||
|
MUX_UPD(TOP_DISP_PWM1_SEL, clk_cfg_10, 24, 3, clk_cfg_update1, 11),
|
||||||
|
/* CLK_CFG_11 */
|
||||||
|
MUX_UPD(TOP_USB_SEL, clk_cfg_11, 0, 2, clk_cfg_update1, 12),
|
||||||
|
MUX_UPD(TOP_SSUSB_XHCI_SEL, clk_cfg_11, 8, 2, clk_cfg_update1, 13),
|
||||||
|
MUX_UPD(TOP_USB_1P_SEL, clk_cfg_11, 16, 2, clk_cfg_update1, 14),
|
||||||
|
MUX_UPD(TOP_SSUSB_XHCI_1P_SEL, clk_cfg_11, 24, 2, clk_cfg_update1, 15),
|
||||||
|
/* CLK_CFG_12 */
|
||||||
|
MUX_UPD(TOP_USB_2P_SEL, clk_cfg_12, 0, 2, clk_cfg_update1, 16),
|
||||||
|
MUX_UPD(TOP_SSUSB_XHCI_2P_SEL, clk_cfg_12, 8, 2, clk_cfg_update1, 17),
|
||||||
|
MUX_UPD(TOP_USB_3P_SEL, clk_cfg_12, 16, 2, clk_cfg_update1, 18),
|
||||||
|
MUX_UPD(TOP_SSUSB_XHCI_3P_SEL, clk_cfg_12, 24, 2, clk_cfg_update1, 19),
|
||||||
|
/* CLK_CFG_13 */
|
||||||
|
MUX_UPD(TOP_I2C_SEL, clk_cfg_13, 0, 2, clk_cfg_update1, 20),
|
||||||
|
MUX_UPD(TOP_SENINF_SEL, clk_cfg_13, 8, 3, clk_cfg_update1, 21),
|
||||||
|
MUX_UPD(TOP_SENINF1_SEL, clk_cfg_13, 16, 3, clk_cfg_update1, 22),
|
||||||
|
MUX_UPD(TOP_SENINF2_SEL, clk_cfg_13, 24, 3, clk_cfg_update1, 23),
|
||||||
|
/* CLK_CFG_14 */
|
||||||
|
MUX_UPD(TOP_SENINF3_SEL, clk_cfg_14, 0, 3, clk_cfg_update1, 24),
|
||||||
|
MUX_UPD(TOP_GCPU_SEL, clk_cfg_14, 8, 3, clk_cfg_update1, 25),
|
||||||
|
MUX_UPD(TOP_DXCC_SEL, clk_cfg_14, 16, 2, clk_cfg_update1, 26),
|
||||||
|
MUX_UPD(TOP_DPMAIF_SEL, clk_cfg_14, 24, 3, clk_cfg_update1, 27),
|
||||||
|
/* CLK_CFG_15 */
|
||||||
|
MUX_UPD(TOP_AES_UFSFDE_SEL, clk_cfg_15, 0, 3, clk_cfg_update1, 28),
|
||||||
|
MUX_UPD(TOP_UFS_SEL, clk_cfg_15, 8, 3, clk_cfg_update1, 29),
|
||||||
|
MUX_UPD(TOP_UFS_TICK1US_SEL, clk_cfg_15, 16, 1, clk_cfg_update1, 30),
|
||||||
|
MUX_UPD(TOP_UFS_MP_SAP_SEL, clk_cfg_15, 24, 1, clk_cfg_update1, 31),
|
||||||
|
/* CLK_CFG_16 */
|
||||||
|
MUX_UPD(TOP_VENC_SEL, clk_cfg_16, 0, 4, clk_cfg_update2, 0),
|
||||||
|
MUX_UPD(TOP_VDEC_SEL, clk_cfg_16, 8, 4, clk_cfg_update2, 1),
|
||||||
|
MUX_UPD(TOP_PWM_SEL, clk_cfg_16, 16, 1, clk_cfg_update2, 2),
|
||||||
|
MUX_UPD(TOP_MCUPM_SEL, clk_cfg_16, 24, 2, clk_cfg_update2, 3),
|
||||||
|
/* CLK_CFG_17 */
|
||||||
|
MUX_UPD(TOP_SPMI_P_MST_SEL, clk_cfg_17, 0, 4, clk_cfg_update2, 4),
|
||||||
|
MUX_UPD(TOP_SPMI_M_MST_SEL, clk_cfg_17, 8, 4, clk_cfg_update2, 5),
|
||||||
|
MUX_UPD(TOP_DVFSRC_SEL, clk_cfg_17, 16, 2, clk_cfg_update2, 6),
|
||||||
|
MUX_UPD(TOP_TL_SEL, clk_cfg_17, 24, 2, clk_cfg_update2, 7),
|
||||||
|
/* CLK_CFG_18 */
|
||||||
|
MUX_UPD(TOP_TL_P1_SEL, clk_cfg_18, 0, 2, clk_cfg_update2, 8),
|
||||||
|
MUX_UPD(TOP_AES_MSDCFDE_SEL, clk_cfg_18, 8, 3, clk_cfg_update2, 9),
|
||||||
|
MUX_UPD(TOP_DSI_OCC_SEL, clk_cfg_18, 16, 2, clk_cfg_update2, 10),
|
||||||
|
MUX_UPD(TOP_WPE_VPP_SEL, clk_cfg_18, 24, 4, clk_cfg_update2, 11),
|
||||||
|
/* CLK_CFG_19 */
|
||||||
|
MUX_UPD(TOP_HDCP_SEL, clk_cfg_19, 0, 2, clk_cfg_update2, 12),
|
||||||
|
MUX_UPD(TOP_HDCP_24M_SEL, clk_cfg_19, 8, 2, clk_cfg_update2, 13),
|
||||||
|
MUX_UPD(TOP_HD20_DACR_REF_SEL, clk_cfg_19, 16, 2, clk_cfg_update2, 14),
|
||||||
|
MUX_UPD(TOP_HD20_HDCP_C_SEL, clk_cfg_19, 24, 2, clk_cfg_update2, 15),
|
||||||
|
/* CLK_CFG_20 */
|
||||||
|
MUX_UPD(TOP_HDMI_XTAL_SEL, clk_cfg_20, 0, 1, clk_cfg_update2, 16),
|
||||||
|
MUX_UPD(TOP_HDMI_APB_SEL, clk_cfg_20, 8, 2, clk_cfg_update2, 17),
|
||||||
|
MUX_UPD(TOP_SNPS_ETH_250M_SEL, clk_cfg_20, 16, 1, clk_cfg_update2, 18),
|
||||||
|
MUX_UPD(TOP_SNPS_ETH_62P4M_PTP_SEL, clk_cfg_20, 24, 2, clk_cfg_update2, 19),
|
||||||
|
/* CLK_CFG_21 */
|
||||||
|
MUX_UPD(TOP_SNPS_ETH_50M_RMII_SEL, clk_cfg_21, 0, 1, clk_cfg_update2, 20),
|
||||||
|
MUX_UPD(TOP_DGI_OUT_SEL, clk_cfg_21, 8, 3, clk_cfg_update2, 21),
|
||||||
|
MUX_UPD(TOP_NNA0_SEL, clk_cfg_21, 16, 4, clk_cfg_update2, 22),
|
||||||
|
MUX_UPD(TOP_NNA1_SEL, clk_cfg_21, 24, 4, clk_cfg_update2, 23),
|
||||||
|
/* CLK_CFG_22 */
|
||||||
|
MUX_UPD(TOP_ADSP_SEL, clk_cfg_22, 0, 4, clk_cfg_update2, 24),
|
||||||
|
MUX_UPD(TOP_ASM_H_SEL, clk_cfg_22, 8, 2, clk_cfg_update2, 25),
|
||||||
|
MUX_UPD(TOP_ASM_M_SEL, clk_cfg_22, 16, 2, clk_cfg_update2, 26),
|
||||||
|
MUX_UPD(TOP_ASM_L_SEL, clk_cfg_22, 24, 2, clk_cfg_update2, 27),
|
||||||
|
/* CLK_CFG_23 */
|
||||||
|
MUX_UPD(TOP_APLL1_SEL, clk_cfg_23, 0, 1, clk_cfg_update2, 28),
|
||||||
|
MUX_UPD(TOP_APLL2_SEL, clk_cfg_23, 8, 1, clk_cfg_update2, 29),
|
||||||
|
MUX_UPD(TOP_APLL3_SEL, clk_cfg_23, 16, 1, clk_cfg_update2, 30),
|
||||||
|
MUX_UPD(TOP_APLL4_SEL, clk_cfg_23, 24, 1, clk_cfg_update2, 31),
|
||||||
|
/* CLK_CFG_24 */
|
||||||
|
MUX_UPD(TOP_APLL5_SEL, clk_cfg_24, 0, 1, clk_cfg_update3, 0),
|
||||||
|
MUX_UPD(TOP_I2SO1_M_SEL, clk_cfg_24, 8, 3, clk_cfg_update3, 1),
|
||||||
|
MUX_UPD(TOP_I2SO2_M_SEL, clk_cfg_24, 16, 3, clk_cfg_update3, 2),
|
||||||
|
/* CLK_CFG_25 */
|
||||||
|
MUX_UPD(TOP_I2SI1_M_SEL, clk_cfg_25, 8, 3, clk_cfg_update3, 5),
|
||||||
|
MUX_UPD(TOP_I2SI2_M_SEL, clk_cfg_25, 16, 3, clk_cfg_update3, 6),
|
||||||
|
/* CLK_CFG_26 */
|
||||||
|
MUX_UPD(TOP_DPTX_M_SEL, clk_cfg_26, 8, 3, clk_cfg_update3, 9),
|
||||||
|
MUX_UPD(TOP_AUD_IEC_SEL, clk_cfg_26, 16, 3, clk_cfg_update3, 10),
|
||||||
|
MUX_UPD(TOP_A1SYS_HP_SEL, clk_cfg_26, 24, 1, clk_cfg_update3, 11),
|
||||||
|
/* CLK_CFG_27 */
|
||||||
|
MUX_UPD(TOP_A2SYS_SEL, clk_cfg_27, 0, 1, clk_cfg_update3, 12),
|
||||||
|
MUX_UPD(TOP_A3SYS_SEL, clk_cfg_27, 8, 3, clk_cfg_update3, 13),
|
||||||
|
MUX_UPD(TOP_A4SYS_SEL, clk_cfg_27, 16, 3, clk_cfg_update3, 14),
|
||||||
|
MUX_UPD(TOP_SPINFI_B_SEL, clk_cfg_27, 24, 3, clk_cfg_update3, 15),
|
||||||
|
/* CLK_CFG_28 */
|
||||||
|
MUX_UPD(TOP_NFI1X_SEL, clk_cfg_28, 0, 3, clk_cfg_update3, 16),
|
||||||
|
MUX_UPD(TOP_ECC_SEL, clk_cfg_28, 8, 3, clk_cfg_update3, 17),
|
||||||
|
MUX_UPD(TOP_AUDIO_LOCAL_BUS_SEL, clk_cfg_28, 16, 4, clk_cfg_update3, 18),
|
||||||
|
MUX_UPD(TOP_SPINOR_SEL, clk_cfg_28, 24, 2, clk_cfg_update3, 19),
|
||||||
|
/* CLK_CFG_29 */
|
||||||
|
MUX_UPD(TOP_DVIO_DGI_REF_SEL, clk_cfg_29, 0, 3, clk_cfg_update3, 20),
|
||||||
|
MUX_UPD(TOP_SRCK_SEL, clk_cfg_29, 24, 1, clk_cfg_update3, 23),
|
||||||
|
/* CLK_CFG_37 */
|
||||||
|
MUX_UPD(TOP_RSVD1_SEL, clk_cfg_37, 0, 3, clk_cfg_update4, 20),
|
||||||
|
/* CLK_MISC_CFG_3 */
|
||||||
|
MUX(TOP_MFG_FAST_SEL, clk_misc_cfg_3, 8, 1),
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mux_sel {
|
||||||
|
enum mux_id id;
|
||||||
|
u32 sel;
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct mux_sel mux_sels[] = {
|
||||||
|
/* CLK_CFG_0 */
|
||||||
|
{ .id = TOP_AXI_SEL, .sel = 2 }, /* 2: mainpll_d7_d2 */
|
||||||
|
/* CLK_CFG_37 */
|
||||||
|
{ .id = TOP_RSVD1_SEL, .sel = 2 }, /* 2: mainpll_d5_d4 */
|
||||||
|
/* CLK_CFG_0 */
|
||||||
|
{ .id = TOP_SPM_SEL, .sel = 2 }, /* 2: mainpll_d7_d4 */
|
||||||
|
{ .id = TOP_SCP_SEL, .sel = 7 }, /* 7: mainpll_d6_d2 */
|
||||||
|
{ .id = TOP_BUS_AXIMEM_SEL, .sel = 3 }, /* 3: mainpll_d5_d2 */
|
||||||
|
/* CLK_CFG_1 */
|
||||||
|
{ .id = TOP_VPP_SEL, .sel = 2 }, /* 2: mainpll_d5_d2 */
|
||||||
|
{ .id = TOP_ETHDR_SEL, .sel = 10 }, /* 10: mmpll_d5_d4 */
|
||||||
|
{ .id = TOP_IPE_SEL, .sel = 8 }, /* 8: mainpll_d4_d2 */
|
||||||
|
{ .id = TOP_CAM_SEL, .sel = 8 }, /* 8: mainpll_d4_d2 */
|
||||||
|
/* CLK_CFG_2 */
|
||||||
|
{ .id = TOP_CCU_SEL, .sel = 2 }, /* 2: mainpll_d4_d2 */
|
||||||
|
{ .id = TOP_IMG_SEL, .sel = 11 }, /* 11: univpll_d5_d2 */
|
||||||
|
{ .id = TOP_CAMTM_SEL, .sel = 2 }, /* 2: univpll_d6_d2 */
|
||||||
|
{ .id = TOP_DSP_SEL, .sel = 7 }, /* 7: univpll_d3 */
|
||||||
|
/* CLK_CFG_3 */
|
||||||
|
{ .id = TOP_DSP1_SEL, .sel = 7 }, /* 7: univpll_d3 */
|
||||||
|
{ .id = TOP_DSP2_SEL, .sel = 7 }, /* 7: univpll_d3 */
|
||||||
|
{ .id = TOP_DSP3_SEL, .sel = 7 }, /* 7: univpll_d3 */
|
||||||
|
{ .id = TOP_DSP4_SEL, .sel = 7 }, /* 7: univpll_d3 */
|
||||||
|
/* CLK_CFG_4 */
|
||||||
|
{ .id = TOP_DSP5_SEL, .sel = 7 }, /* 7: univpll_d3 */
|
||||||
|
{ .id = TOP_DSP6_SEL, .sel = 7 }, /* 7: univpll_d3 */
|
||||||
|
{ .id = TOP_DSP7_SEL, .sel = 7 }, /* 7: univpll_d3 */
|
||||||
|
{ .id = TOP_IPU_IF_SEL, .sel = 7 }, /* 7: mmpll_d4 */
|
||||||
|
/* CLK_CFG_5 */
|
||||||
|
{ .id = TOP_MFG_SEL, .sel = 3 }, /* 3: univpll_d7 */
|
||||||
|
{ .id = TOP_CAMTG_SEL, .sel = 2 }, /* 2: univpll_d6_d8 */
|
||||||
|
{ .id = TOP_CAMTG2_SEL, .sel = 2 }, /* 2: univpll_d6_d8 */
|
||||||
|
{ .id = TOP_CAMTG3_SEL, .sel = 2 }, /* 2: univpll_d6_d8 */
|
||||||
|
/* CLK_CFG_6 */
|
||||||
|
{ .id = TOP_CAMTG4_SEL, .sel = 2 }, /* 2: univpll_d6_d8 */
|
||||||
|
{ .id = TOP_CAMTG5_SEL, .sel = 2 }, /* 2: univpll_d6_d8 */
|
||||||
|
{ .id = TOP_UART_SEL, .sel = 0 }, /* 0: xtal_26m_ck */
|
||||||
|
{ .id = TOP_SPI_SEL, .sel = 4 }, /* 4: univpll_d6_d2 */
|
||||||
|
/* CLK_CFG_7 */
|
||||||
|
{ .id = TOP_SPIS_SEL, .sel = 1 }, /* 1: univpll_d6 */
|
||||||
|
{ .id = TOP_MSDC50_0_H_SEL, .sel = 1 }, /* 1: mainpll_d4_d2 */
|
||||||
|
{ .id = TOP_MSDC50_0_SEL, .sel = 1 }, /* 1: msdcpll_ck */
|
||||||
|
{ .id = TOP_MSDC30_1_SEL, .sel = 1 }, /* 1: univpll_d6_d2 */
|
||||||
|
/* CLK_CFG_8 */
|
||||||
|
{ .id = TOP_MSDC30_2_SEL, .sel = 1 }, /* 1: univpll_d6_d2 */
|
||||||
|
{ .id = TOP_INTDIR_SEL, .sel = 3 }, /* 3: univpll_d4 */
|
||||||
|
{ .id = TOP_AUD_INTBUS_SEL, .sel = 1 }, /* 1: mainpll_d4_d4 */
|
||||||
|
{ .id = TOP_AUDIO_H_SEL, .sel = 2 }, /* 2: apll1_ck */
|
||||||
|
/* CLK_CFG_9 */
|
||||||
|
{ .id = TOP_PWRAP_ULPOSC_SEL, .sel = 1 }, /* 1: clk26m */
|
||||||
|
{ .id = TOP_ATB_SEL, .sel = 1 }, /* 1: mainpll_d4_d2 */
|
||||||
|
{ .id = TOP_PWRMCU_SEL, .sel = 3 }, /* 3: mainpll_d5_d2 */
|
||||||
|
{ .id = TOP_DP_SEL, .sel = 3 }, /* 3: tvdpll1_d4 */
|
||||||
|
/* CLK_CFG_10 */
|
||||||
|
{ .id = TOP_EDP_SEL, .sel = 3 }, /* 3: tvdpll1_d4 */
|
||||||
|
{ .id = TOP_DPI_SEL, .sel = 1 }, /* 1: tvdpll1_d2 */
|
||||||
|
{ .id = TOP_DISP_PWM0_SEL, .sel = 1 }, /* 1: univpll_d6_d4 */
|
||||||
|
{ .id = TOP_DISP_PWM1_SEL, .sel = 1 }, /* 1: univpll_d6_d4 */
|
||||||
|
/* CLK_CFG_11 */
|
||||||
|
{ .id = TOP_USB_SEL, .sel = 1 }, /* 1: univpll_d5_d4 */
|
||||||
|
{ .id = TOP_SSUSB_XHCI_SEL, .sel = 1 }, /* 1: univpll_d5_d4 */
|
||||||
|
{ .id = TOP_USB_1P_SEL, .sel = 1 }, /* 1: univpll_d5_d4 */
|
||||||
|
{ .id = TOP_SSUSB_XHCI_1P_SEL, .sel = 1 }, /* 1: univpll_d5_d4 */
|
||||||
|
/* CLK_CFG_12 */
|
||||||
|
{ .id = TOP_USB_2P_SEL, .sel = 1 }, /* 1: univpll_d5_d4 */
|
||||||
|
{ .id = TOP_SSUSB_XHCI_2P_SEL, .sel = 1 }, /* 1: univpll_d5_d4 */
|
||||||
|
{ .id = TOP_USB_3P_SEL, .sel = 1 }, /* 1: univpll_d5_d4 */
|
||||||
|
{ .id = TOP_SSUSB_XHCI_3P_SEL, .sel = 1 }, /* 1: univpll_d5_d4 */
|
||||||
|
/* CLK_CFG_13 */
|
||||||
|
{ .id = TOP_I2C_SEL, .sel = 2 }, /* 2: univpll_d5_d4 */
|
||||||
|
{ .id = TOP_SENINF_SEL, .sel = 4 }, /* 4: univpll_d7 */
|
||||||
|
{ .id = TOP_SENINF1_SEL, .sel = 4 }, /* 4: univpll_d7 */
|
||||||
|
{ .id = TOP_SENINF2_SEL, .sel = 4 }, /* 4: univpll_d7 */
|
||||||
|
/* CLK_CFG_14 */
|
||||||
|
{ .id = TOP_SENINF3_SEL, .sel = 4 }, /* 4: univpll_d7 */
|
||||||
|
{ .id = TOP_GCPU_SEL, .sel = 3 }, /* 3: mmpll_d5_d2 */
|
||||||
|
{ .id = TOP_DXCC_SEL, .sel = 1 }, /* 1: mainpll_d4_d2 */
|
||||||
|
{ .id = TOP_DPMAIF_SEL, .sel = 3 }, /* 3: mainpll_d4_d2 */
|
||||||
|
/* CLK_CFG_15 */
|
||||||
|
{ .id = TOP_AES_UFSFDE_SEL, .sel = 5 }, /* 5: univpll_d6 */
|
||||||
|
{ .id = TOP_UFS_SEL, .sel = 6 }, /* 6: msdcpll_d2 */
|
||||||
|
{ .id = TOP_UFS_TICK1US_SEL, .sel = 0 }, /* 0: xtal_26m_d52 */
|
||||||
|
{ .id = TOP_UFS_MP_SAP_SEL, .sel = 0 }, /* 0: xtal_26m_ck */
|
||||||
|
/* CLK_CFG_16 */
|
||||||
|
{ .id = TOP_VENC_SEL, .sel = 14 }, /* 14: univpll_d5_d2 */
|
||||||
|
{ .id = TOP_VDEC_SEL, .sel = 1 }, /* 1: mainpll_d5_d2 */
|
||||||
|
{ .id = TOP_PWM_SEL, .sel = 1 }, /* 1: univpll_d4_d8 */
|
||||||
|
{ .id = TOP_MCUPM_SEL, .sel = 1 }, /* 1: mainpll_d6_d2 */
|
||||||
|
/* CLK_CFG_17 */
|
||||||
|
{ .id = TOP_SPMI_P_MST_SEL, .sel = 7 }, /* 7: mainpll_d7_d8 */
|
||||||
|
{ .id = TOP_SPMI_M_MST_SEL, .sel = 7 }, /* 7: mainpll_d7_d8 */
|
||||||
|
{ .id = TOP_DVFSRC_SEL, .sel = 0 }, /* 0: xtal_26m_ck */
|
||||||
|
{ .id = TOP_TL_SEL, .sel = 2 }, /* 2: mainpll_d4_d4 */
|
||||||
|
/* CLK_CFG_18 */
|
||||||
|
{ .id = TOP_TL_P1_SEL, .sel = 2 }, /* 2: mainpll_d4_d4 */
|
||||||
|
{ .id = TOP_AES_MSDCFDE_SEL, .sel = 5 }, /* 5: univpll_d6 */
|
||||||
|
{ .id = TOP_DSI_OCC_SEL, .sel = 1 }, /* 1: mainpll_d6_d2 */
|
||||||
|
{ .id = TOP_WPE_VPP_SEL, .sel = 4 }, /* 4: mainpll_d4_d2 */
|
||||||
|
/* CLK_CFG_19 */
|
||||||
|
{ .id = TOP_HDCP_SEL, .sel = 3 }, /* 3: univpll_d6_d4 */
|
||||||
|
{ .id = TOP_HDCP_24M_SEL, .sel = 2 }, /* 2: univpll_192m_d8 */
|
||||||
|
{ .id = TOP_HD20_DACR_REF_SEL, .sel = 1 }, /* 1: univpll_d4_d2 */
|
||||||
|
{ .id = TOP_HD20_HDCP_C_SEL, .sel = 1 }, /* 1: msdcpll_d4 */
|
||||||
|
/* CLK_CFG_20 */
|
||||||
|
{ .id = TOP_HDMI_XTAL_SEL, .sel = 0 }, /* 0: xtal_26m_ck */
|
||||||
|
{ .id = TOP_HDMI_APB_SEL, .sel = 2 }, /* 2: msdcpll_d2 */
|
||||||
|
{ .id = TOP_SNPS_ETH_250M_SEL, .sel = 1 }, /* 1: ethpll_d2 */
|
||||||
|
{ .id = TOP_SNPS_ETH_62P4M_PTP_SEL, .sel = 3 }, /* 3: ethpll_d8 */
|
||||||
|
/* CLK_CFG_21 */
|
||||||
|
{ .id = TOP_SNPS_ETH_50M_RMII_SEL, .sel = 1 }, /* 1: ethpll_d10 */
|
||||||
|
{ .id = TOP_DGI_OUT_SEL, .sel = 5 }, /* 5: mmpll_d4_d4 */
|
||||||
|
{ .id = TOP_NNA0_SEL, .sel = 1 }, /* 1: nnapll_ck */
|
||||||
|
{ .id = TOP_NNA1_SEL, .sel = 1 }, /* 1: nnapll_ck */
|
||||||
|
/* CLK_CFG_22 */
|
||||||
|
{ .id = TOP_ADSP_SEL, .sel = 8 }, /* 8: adsppll_ck */
|
||||||
|
{ .id = TOP_ASM_H_SEL, .sel = 3 }, /* 3: mainpll_d5_d2 */
|
||||||
|
{ .id = TOP_ASM_M_SEL, .sel = 3 }, /* 3: mainpll_d5_d2 */
|
||||||
|
{ .id = TOP_ASM_L_SEL, .sel = 3 }, /* 3: mainpll_d5_d2 */
|
||||||
|
/* CLK_CFG_23 */
|
||||||
|
{ .id = TOP_APLL1_SEL, .sel = 1 }, /* 1: apll1_d4 */
|
||||||
|
{ .id = TOP_APLL2_SEL, .sel = 1 }, /* 1: apll2_d4 */
|
||||||
|
{ .id = TOP_APLL3_SEL, .sel = 1 }, /* 1: apll3_d4 */
|
||||||
|
{ .id = TOP_APLL4_SEL, .sel = 1 }, /* 1: apll4_d4 */
|
||||||
|
/* CLK_CFG_24 */
|
||||||
|
{ .id = TOP_APLL5_SEL, .sel = 1 }, /* 1: apll5_d4 */
|
||||||
|
{ .id = TOP_I2SO1_M_SEL, .sel = 6 }, /* 6: hdmirx_apll_ck */
|
||||||
|
{ .id = TOP_I2SO2_M_SEL, .sel = 6 }, /* 6: hdmirx_apll_ck */
|
||||||
|
/* CLK_CFG_25 */
|
||||||
|
{ .id = TOP_I2SI1_M_SEL, .sel = 6 }, /* 6: hdmirx_apll_ck */
|
||||||
|
{ .id = TOP_I2SI2_M_SEL, .sel = 6 }, /* 6: hdmirx_apll_ck */
|
||||||
|
/* CLK_CFG_26 */
|
||||||
|
{ .id = TOP_DPTX_M_SEL, .sel = 6 }, /* 6: hdmirx_apll_ck */
|
||||||
|
{ .id = TOP_AUD_IEC_SEL, .sel = 6 }, /* 6: hdmirx_apll_ck */
|
||||||
|
{ .id = TOP_A1SYS_HP_SEL, .sel = 1 }, /* 1: apll1_d4 */
|
||||||
|
/* CLK_CFG_27 */
|
||||||
|
{ .id = TOP_A2SYS_SEL, .sel = 1 }, /* 1: apll2_d4 */
|
||||||
|
{ .id = TOP_A3SYS_SEL, .sel = 1 }, /* 1: apll3_d4 */
|
||||||
|
{ .id = TOP_A4SYS_SEL, .sel = 2 }, /* 2: apll4_d4 */
|
||||||
|
{ .id = TOP_SPINFI_B_SEL, .sel = 7 }, /* 7: univpll_d5_d4 */
|
||||||
|
/* CLK_CFG_28 */
|
||||||
|
{ .id = TOP_NFI1X_SEL, .sel = 7 }, /* 7: mainpll_d6_d2 */
|
||||||
|
{ .id = TOP_ECC_SEL, .sel = 1 }, /* 1: mainpll_d4_d4 */
|
||||||
|
{ .id = TOP_AUDIO_LOCAL_BUS_SEL, .sel = 3 }, /* 3: mainpll_d7_d2 */
|
||||||
|
{ .id = TOP_SPINOR_SEL, .sel = 3 }, /* 3: univpll_d6_d8 */
|
||||||
|
/* CLK_CFG_29 */
|
||||||
|
{ .id = TOP_DVIO_DGI_REF_SEL, .sel = 1 }, /* 1: in_dgi_ck */
|
||||||
|
{ .id = TOP_SRCK_SEL, .sel = 1 }, /* 1: xtal_26m_ck */
|
||||||
|
/* CLK_MISC_CFG_3 */
|
||||||
|
{ .id = TOP_MFG_FAST_SEL, .sel = 1 }, /* 1: AD_MFGPLL_OPP_CK */
|
||||||
|
};
|
||||||
|
|
||||||
|
enum pll_id {
|
||||||
|
APMIXED_ARMPLL_LL,
|
||||||
|
APMIXED_ARMPLL_BL,
|
||||||
|
APMIXED_CCIPLL,
|
||||||
|
APMIXED_NNAPLL,
|
||||||
|
APMIXED_RESPLL,
|
||||||
|
APMIXED_ETHPLL,
|
||||||
|
APMIXED_MSDCPLL,
|
||||||
|
APMIXED_TVDPLL1,
|
||||||
|
APMIXED_TVDPLL2,
|
||||||
|
APMIXED_MMPLL,
|
||||||
|
APMIXED_MAINPLL,
|
||||||
|
APMIXED_VDECPLL,
|
||||||
|
APMIXED_IMGPLL,
|
||||||
|
APMIXED_UNIVPLL,
|
||||||
|
APMIXED_HDMIPLL1,
|
||||||
|
APMIXED_HDMIPLL2,
|
||||||
|
APMIXED_HDMIRX_APLL,
|
||||||
|
APMIXED_USB1PLL,
|
||||||
|
APMIXED_ADSPPLL,
|
||||||
|
APMIXED_APLL1,
|
||||||
|
APMIXED_APLL2,
|
||||||
|
APMIXED_APLL3,
|
||||||
|
APMIXED_APLL4,
|
||||||
|
APMIXED_APLL5,
|
||||||
|
APMIXED_MFGPLL,
|
||||||
|
APMIXED_DGIPLL,
|
||||||
|
APMIXED_PLL_MAX
|
||||||
|
};
|
||||||
|
|
||||||
|
static const u32 pll_div_rate[] = {
|
||||||
|
3800UL * MHz,
|
||||||
|
1900 * MHz,
|
||||||
|
950 * MHz,
|
||||||
|
475 * MHz,
|
||||||
|
237500 * KHz,
|
||||||
|
0,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct pll plls[] = {
|
||||||
|
PLL(APMIXED_ARMPLL_LL, armpll_ll_con0, armpll_ll_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, armpll_ll_con2, 24, armpll_ll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_ARMPLL_BL, armpll_bl_con0, armpll_bl_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, armpll_bl_con2, 24, armpll_bl_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_CCIPLL, ccipll_con0, ccipll_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, ccipll_con2, 24, ccipll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_NNAPLL, nnapll_con0, nnapll_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, nnapll_con2, 24, nnapll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_RESPLL, respll_con0, respll_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, respll_con2, 24, respll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_ETHPLL, ethpll_con0, ethpll_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, ethpll_con2, 24, ethpll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_MSDCPLL, msdcpll_con0, msdcpll_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, msdcpll_con2, 24, msdcpll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_TVDPLL1, tvdpll1_con0, tvdpll1_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, tvdpll1_con2, 24, tvdpll1_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_TVDPLL2, tvdpll2_con0, tvdpll2_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, tvdpll2_con2, 24, tvdpll2_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_MMPLL, mmpll_con0, mmpll_con4,
|
||||||
|
23, 22, mmpll_con2, 24, mmpll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_MAINPLL, mainpll_con0, mainpll_con4,
|
||||||
|
23, 22, mainpll_con2, 24, mainpll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_VDECPLL, vdecpll_con0, vdecpll_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, vdecpll_con2, 24, vdecpll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_IMGPLL, imgpll_con0, imgpll_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, imgpll_con2, 24, imgpll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_UNIVPLL, univpll_con0, univpll_con4,
|
||||||
|
23, 22, univpll_con2, 24, univpll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_HDMIPLL1, hdmipll1_con0, hdmipll1_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, hdmipll1_con2, 24, hdmipll1_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_HDMIPLL2, hdmipll2_con0, hdmipll2_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, hdmipll2_con2, 24, hdmipll2_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_HDMIRX_APLL, hdmirx_apll_con0, hdmirx_apll_con5,
|
||||||
|
NO_RSTB_SHIFT, 32, hdmirx_apll_con2, 24, hdmirx_apll_con3, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_USB1PLL, usb1pll_con0, usb1pll_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, usb1pll_con2, 24, usb1pll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_ADSPPLL, adsppll_con0, adsppll_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, adsppll_con2, 24, adsppll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_APLL1, apll1_con0, apll1_con5,
|
||||||
|
NO_RSTB_SHIFT, 32, apll1_con2, 24, apll1_con3, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_APLL2, apll2_con0, apll2_con5,
|
||||||
|
NO_RSTB_SHIFT, 32, apll2_con2, 24, apll2_con3, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_APLL3, apll3_con0, apll3_con5,
|
||||||
|
NO_RSTB_SHIFT, 32, apll3_con2, 24, apll3_con3, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_APLL4, apll4_con0, apll4_con5,
|
||||||
|
NO_RSTB_SHIFT, 32, apll4_con2, 24, apll4_con3, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_APLL5, apll5_con0, apll5_con5,
|
||||||
|
NO_RSTB_SHIFT, 32, apll5_con2, 24, apll5_con3, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_MFGPLL, mfgpll_con0, mfgpll_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, mfgpll_con2, 24, mfgpll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
PLL(APMIXED_DGIPLL, dgipll_con0, dgipll_con4,
|
||||||
|
NO_RSTB_SHIFT, 22, dgipll_con2, 24, dgipll_con2, 0,
|
||||||
|
pll_div_rate),
|
||||||
|
};
|
||||||
|
|
||||||
|
struct rate {
|
||||||
|
enum pll_id id;
|
||||||
|
u32 rate;
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct rate rates[] = {
|
||||||
|
{ .id = APMIXED_ARMPLL_LL, .rate = ARMPLL_LL_HZ },
|
||||||
|
{ .id = APMIXED_ARMPLL_BL, .rate = ARMPLL_BL_HZ },
|
||||||
|
{ .id = APMIXED_CCIPLL, .rate = CCIPLL_HZ },
|
||||||
|
{ .id = APMIXED_NNAPLL, .rate = NNAPLL_HZ },
|
||||||
|
{ .id = APMIXED_RESPLL, .rate = RESPLL_HZ },
|
||||||
|
{ .id = APMIXED_ETHPLL, .rate = ETHPLL_HZ },
|
||||||
|
{ .id = APMIXED_MSDCPLL, .rate = MSDCPLL_HZ },
|
||||||
|
{ .id = APMIXED_TVDPLL1, .rate = TVDPLL1_HZ },
|
||||||
|
{ .id = APMIXED_TVDPLL2, .rate = TVDPLL2_HZ },
|
||||||
|
{ .id = APMIXED_MMPLL, .rate = MMPLL_HZ },
|
||||||
|
{ .id = APMIXED_MAINPLL, .rate = MAINPLL_HZ },
|
||||||
|
{ .id = APMIXED_VDECPLL, .rate = VDECPLL_HZ },
|
||||||
|
{ .id = APMIXED_IMGPLL, .rate = IMGPLL_HZ },
|
||||||
|
{ .id = APMIXED_UNIVPLL, .rate = UNIVPLL_HZ },
|
||||||
|
{ .id = APMIXED_HDMIPLL1, .rate = HDMIPLL1_HZ },
|
||||||
|
{ .id = APMIXED_HDMIPLL2, .rate = HDMIPLL2_HZ },
|
||||||
|
{ .id = APMIXED_HDMIRX_APLL, .rate = HDMIRX_APLL_HZ },
|
||||||
|
{ .id = APMIXED_USB1PLL, .rate = USB1PLL_HZ },
|
||||||
|
{ .id = APMIXED_ADSPPLL, .rate = ADSPPLL_HZ },
|
||||||
|
{ .id = APMIXED_APLL1, .rate = APLL1_HZ },
|
||||||
|
{ .id = APMIXED_APLL2, .rate = APLL2_HZ },
|
||||||
|
{ .id = APMIXED_APLL3, .rate = APLL3_HZ },
|
||||||
|
{ .id = APMIXED_APLL4, .rate = APLL4_HZ },
|
||||||
|
{ .id = APMIXED_APLL5, .rate = APLL5_HZ },
|
||||||
|
{ .id = APMIXED_MFGPLL, .rate = MFGPLL_HZ },
|
||||||
|
{ .id = APMIXED_DGIPLL, .rate = DGIPLL_HZ },
|
||||||
|
};
|
||||||
|
|
||||||
|
void pll_set_pcw_change(const struct pll *pll)
|
||||||
|
{
|
||||||
|
setbits32(pll->div_reg, PLL_PCW_CHG);
|
||||||
|
}
|
||||||
|
|
||||||
|
void mt_pll_init(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* enable clock square */
|
||||||
|
setbits32(&mtk_apmixed->ap_pll_con0, 0x4);
|
||||||
|
|
||||||
|
udelay(PLL_CKSQ_ON_DELAY);
|
||||||
|
|
||||||
|
/* enable clock square1 low-pass filter */
|
||||||
|
setbits32(&mtk_apmixed->ap_pll_con0, 0x2);
|
||||||
|
|
||||||
|
/* xPLL PWR ON */
|
||||||
|
for (i = 0; i < APMIXED_PLL_MAX; i++)
|
||||||
|
setbits32(plls[i].pwr_reg, PLL_PWR_ON);
|
||||||
|
|
||||||
|
udelay(PLL_PWR_ON_DELAY);
|
||||||
|
|
||||||
|
/* xPLL ISO Disable */
|
||||||
|
for (i = 0; i < APMIXED_PLL_MAX; i++)
|
||||||
|
clrbits32(plls[i].pwr_reg, PLL_ISO);
|
||||||
|
|
||||||
|
udelay(PLL_ISO_DELAY);
|
||||||
|
|
||||||
|
/* disable glitch free if rate < 374MHz */
|
||||||
|
for (i = 0; i < ARRAY_SIZE(rates); i++) {
|
||||||
|
if (rates[i].rate < 374 * MHz)
|
||||||
|
clrbits32(plls[rates[i].id].reg, GLITCH_FREE_EN);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* disable mfg_ck_en[20], enable mfg_opp_ck_en[2] */
|
||||||
|
clrbits32(&mtk_apmixed->mfgpll_con0, 0x1 << 20);
|
||||||
|
setbits32(&mtk_apmixed->mfgpll_con1, 0x1 << 2);
|
||||||
|
|
||||||
|
/* xPLL Frequency Set */
|
||||||
|
for (i = 0; i < ARRAY_SIZE(rates); i++)
|
||||||
|
pll_set_rate(&plls[rates[i].id], rates[i].rate);
|
||||||
|
|
||||||
|
/* AUDPLL Tuner Frequency Set */
|
||||||
|
write32(&mtk_apmixed->apll1_tuner_con0, read32(&mtk_apmixed->apll1_con3) + 1);
|
||||||
|
write32(&mtk_apmixed->apll2_tuner_con0, read32(&mtk_apmixed->apll2_con3) + 1);
|
||||||
|
write32(&mtk_apmixed->apll3_tuner_con0, read32(&mtk_apmixed->apll3_con3) + 1);
|
||||||
|
write32(&mtk_apmixed->apll4_tuner_con0, read32(&mtk_apmixed->apll4_con3) + 1);
|
||||||
|
write32(&mtk_apmixed->apll5_tuner_con0, read32(&mtk_apmixed->apll5_con3) + 1);
|
||||||
|
|
||||||
|
/* xPLL Frequency Enable */
|
||||||
|
for (i = 0; i < APMIXED_PLL_MAX; i++) {
|
||||||
|
if (i == APMIXED_APLL5)
|
||||||
|
setbits32(plls[i].pwr_reg, MT8195_APLL5_EN);
|
||||||
|
else
|
||||||
|
setbits32(plls[i].reg, MT8195_PLL_EN);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* enable univpll analog divider=13 */
|
||||||
|
setbits32(&mtk_apmixed->univpll_con0, 0x8d);
|
||||||
|
|
||||||
|
/* wait for PLL stable */
|
||||||
|
udelay(PLL_EN_DELAY);
|
||||||
|
|
||||||
|
/* xPLL DIV Enable & RSTB */
|
||||||
|
for (i = 0; i < APMIXED_PLL_MAX; i++) {
|
||||||
|
if (plls[i].rstb_shift != NO_RSTB_SHIFT) {
|
||||||
|
setbits32(plls[i].reg, PLL_DIV_EN);
|
||||||
|
setbits32(plls[i].reg, 1 << plls[i].rstb_shift);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MCUCFG CLKMUX */
|
||||||
|
clrsetbits32(&mt8195_mcucfg->cpu_plldiv_cfg0, MCU_DIV_MASK, MCU_DIV_1);
|
||||||
|
clrsetbits32(&mt8195_mcucfg->cpu_plldiv_cfg1, MCU_DIV_MASK, MCU_DIV_1);
|
||||||
|
clrsetbits32(&mt8195_mcucfg->bus_plldiv_cfg, MCU_DIV_MASK, MCU_DIV_1);
|
||||||
|
|
||||||
|
clrsetbits32(&mt8195_mcucfg->cpu_plldiv_cfg0, MCU_MUX_MASK, MCU_MUX_SRC_PLL);
|
||||||
|
clrsetbits32(&mt8195_mcucfg->cpu_plldiv_cfg1, MCU_MUX_MASK, MCU_MUX_SRC_PLL);
|
||||||
|
clrsetbits32(&mt8195_mcucfg->bus_plldiv_cfg, MCU_MUX_MASK, MCU_MUX_SRC_PLL);
|
||||||
|
|
||||||
|
/* enable infrasys DCM */
|
||||||
|
setbits32(&mt8195_infracfg_ao->infra_bus_dcm_ctrl, 0x3 << 21);
|
||||||
|
setbits32(&mt8195_infracfg_ao_bcrm->vdnr_dcm_top_infra_ctrl0, 0x2);
|
||||||
|
|
||||||
|
/* initialize SPM request */
|
||||||
|
setbits32(&mtk_topckgen->clk_scp_cfg_0, 0x3ff);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TOP CLKMUX -- DO NOT CHANGE WITHOUT ADJUSTING <soc/pll.h> CONSTANTS!
|
||||||
|
*/
|
||||||
|
for (i = 0; i < ARRAY_SIZE(mux_sels); i++)
|
||||||
|
mux_set_sel(&muxes[mux_sels[i].id], mux_sels[i].sel);
|
||||||
|
|
||||||
|
/* switch sram control to bypass mode for PCIE_MAC_P0 */
|
||||||
|
setbits32(&mtk_spm->ap_mdsrc_req, 0x1);
|
||||||
|
|
||||||
|
/* ctitical clock */
|
||||||
|
write32(&mt8195_infracfg_ao->module_sw_cg_0_clr, 0x00000020);
|
||||||
|
write32(&mt8195_infracfg_ao->module_sw_cg_1_clr, 0x00100000);
|
||||||
|
write32(&mt8195_infracfg_ao->module_sw_cg_2_clr, 0x02000000);
|
||||||
|
write32(&mt8195_infracfg_ao->module_sw_cg_3_clr, 0x00000003);
|
||||||
|
|
||||||
|
/* turn off unused clock */
|
||||||
|
write32(&mt8195_pericfg_ao->peri_module_sw_cg_0_set, 0x10);
|
||||||
|
}
|
||||||
|
|
||||||
|
void mt_pll_raise_little_cpu_freq(u32 freq)
|
||||||
|
{
|
||||||
|
/* switch clock source to intermediate clock */
|
||||||
|
clrsetbits32(&mt8195_mcucfg->cpu_plldiv_cfg0, MCU_MUX_MASK, MCU_MUX_SRC_26M);
|
||||||
|
|
||||||
|
/* disable armpll_ll frequency output */
|
||||||
|
clrbits32(plls[APMIXED_ARMPLL_LL].reg, MT8195_PLL_EN);
|
||||||
|
|
||||||
|
/* raise armpll_ll frequency */
|
||||||
|
pll_set_rate(&plls[APMIXED_ARMPLL_LL], freq);
|
||||||
|
|
||||||
|
/* enable armpll_ll frequency output */
|
||||||
|
setbits32(plls[APMIXED_ARMPLL_LL].reg, MT8195_PLL_EN);
|
||||||
|
udelay(PLL_EN_DELAY);
|
||||||
|
|
||||||
|
/* switch clock source back to armpll_ll */
|
||||||
|
clrsetbits32(&mt8195_mcucfg->cpu_plldiv_cfg0, MCU_MUX_MASK, MCU_MUX_SRC_PLL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void mt_pll_raise_cci_freq(u32 freq)
|
||||||
|
{
|
||||||
|
/* switch clock source to intermediate clock */
|
||||||
|
clrsetbits32(&mt8195_mcucfg->bus_plldiv_cfg, MCU_MUX_MASK, MCU_MUX_SRC_26M);
|
||||||
|
|
||||||
|
/* disable ccipll frequency output */
|
||||||
|
clrbits32(plls[APMIXED_CCIPLL].reg, MT8195_PLL_EN);
|
||||||
|
|
||||||
|
/* raise ccipll frequency */
|
||||||
|
pll_set_rate(&plls[APMIXED_CCIPLL], freq);
|
||||||
|
|
||||||
|
/* enable ccipll frequency output */
|
||||||
|
setbits32(plls[APMIXED_CCIPLL].reg, MT8195_PLL_EN);
|
||||||
|
udelay(PLL_EN_DELAY);
|
||||||
|
|
||||||
|
/* switch clock source back to ccipll */
|
||||||
|
clrsetbits32(&mt8195_mcucfg->bus_plldiv_cfg, MCU_MUX_MASK, MCU_MUX_SRC_PLL);
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 mt_fmeter_get_freq_khz(enum fmeter_type type, u32 id)
|
||||||
|
{
|
||||||
|
u32 output, count, clk_dbg_cfg, clk_misc_cfg_0;
|
||||||
|
|
||||||
|
/* backup */
|
||||||
|
clk_dbg_cfg = read32(&mtk_topckgen->clk_dbg_cfg);
|
||||||
|
clk_misc_cfg_0 = read32(&mtk_topckgen->clk_misc_cfg_0);
|
||||||
|
|
||||||
|
/* set up frequency meter */
|
||||||
|
if (type == FMETER_ABIST) {
|
||||||
|
SET32_BITFIELDS(&mtk_topckgen->clk_dbg_cfg,
|
||||||
|
CLK_DBG_CFG_ABIST_CK_SEL, id,
|
||||||
|
CLK_DBG_CFG_CKGEN_CK_SEL, 0,
|
||||||
|
CLK_DBG_CFG_METER_CK_SEL, 0,
|
||||||
|
CLK_DBG_CFG_CKGEN_EN, 0);
|
||||||
|
SET32_BITFIELDS(&mtk_topckgen->clk_misc_cfg_0,
|
||||||
|
CLK_MISC_CFG_0_METER_DIV, 3);
|
||||||
|
} else if (type == FMETER_CKGEN) {
|
||||||
|
SET32_BITFIELDS(&mtk_topckgen->clk_dbg_cfg,
|
||||||
|
CLK_DBG_CFG_ABIST_CK_SEL, 0,
|
||||||
|
CLK_DBG_CFG_CKGEN_CK_SEL, id,
|
||||||
|
CLK_DBG_CFG_METER_CK_SEL, 1,
|
||||||
|
CLK_DBG_CFG_CKGEN_EN, 1);
|
||||||
|
SET32_BITFIELDS(&mtk_topckgen->clk_misc_cfg_0,
|
||||||
|
CLK_MISC_CFG_0_METER_DIV, 0);
|
||||||
|
} else {
|
||||||
|
die("unsupport fmeter type\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* enable frequency meter */
|
||||||
|
write32(&mtk_topckgen->clk26cali_0, 0x80);
|
||||||
|
|
||||||
|
/* set load count = 1024-1 */
|
||||||
|
SET32_BITFIELDS(&mtk_topckgen->clk26cali_1, CLK26CALI_1_LOAD_CNT, 0x3ff);
|
||||||
|
|
||||||
|
/* trigger frequency meter */
|
||||||
|
SET32_BITFIELDS(&mtk_topckgen->clk26cali_0, CLK26CALI_0_TRIGGER, 1);
|
||||||
|
|
||||||
|
/* wait frequency meter until finished */
|
||||||
|
if (wait_us(200, !READ32_BITFIELD(&mtk_topckgen->clk26cali_0, CLK26CALI_0_TRIGGER))) {
|
||||||
|
count = read32(&mtk_topckgen->clk26cali_1) & 0xffff;
|
||||||
|
output = (count * 26000) / 1024; /* KHz */
|
||||||
|
} else {
|
||||||
|
printk(BIOS_WARNING, "fmeter timeout\n");
|
||||||
|
output = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* disable frequency meter */
|
||||||
|
write32(&mtk_topckgen->clk26cali_0, 0x0000);
|
||||||
|
|
||||||
|
/* restore */
|
||||||
|
write32(&mtk_topckgen->clk_dbg_cfg, clk_dbg_cfg);
|
||||||
|
write32(&mtk_topckgen->clk_misc_cfg_0, clk_misc_cfg_0);
|
||||||
|
|
||||||
|
if (type == FMETER_ABIST)
|
||||||
|
return output * 4;
|
||||||
|
else if (type == FMETER_CKGEN)
|
||||||
|
return output;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue