fsbl: weekly rls 2024.07.20
-8ead06, add new feature for cv181x/cv180x suspend to ram. Change-Id: I4b4f0fc51b9028d6d006ebcf579b0f4c19007780
This commit is contained in:
committed by
carbon
parent
824f3ac23c
commit
4df417855c
@ -179,6 +179,10 @@ endif
|
||||
$(eval $(call add_define,FSBL_SECURE_BOOT_SUPPORT))
|
||||
$(eval $(call add_define, USB_DL_BY_FSBL))
|
||||
|
||||
ifeq ($(KERNEL_SUSPEND),y)
|
||||
$(eval $(call add_define,CONFIG_PM_SLEEP))
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
# Build targets
|
||||
################################################################################
|
||||
|
||||
@ -273,7 +273,7 @@ $(DUMP): $(ELF)
|
||||
|
||||
$(BIN): $(ELF)
|
||||
@echo " BIN $$@"
|
||||
$$(Q)$$(OC) -O binary $$< $$@
|
||||
$$(Q)$$(OC) -O binary -R .suspend_sect $$< $$@
|
||||
@${ECHO_BLANK_LINE}
|
||||
@echo "Built $$@ successfully"
|
||||
@${ECHO_BLANK_LINE}
|
||||
|
||||
@ -17,6 +17,8 @@ ENTRY(bl2_entrypoint)
|
||||
|
||||
MEMORY {
|
||||
RAM (rwx): ORIGIN = BL2_BASE, LENGTH = BL2_SIZE
|
||||
|
||||
SRAM (rwx): ORIGIN = TPU_SRAM_BASE, LENGTH = TPU_SRAM_SIZE
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
@ -80,5 +82,17 @@ SECTIONS
|
||||
|
||||
ASSERT(. <= (BL2_BASE + BL2_SIZE), "BL2 image has exceeded its limit.")
|
||||
|
||||
.suspend_sect :
|
||||
{
|
||||
. = ALIGN(8);
|
||||
__suspend_sect_start = .;
|
||||
KEEP(*(.suspend_entry))
|
||||
KEEP(*(.suspend_func))
|
||||
. = ALIGN(8);
|
||||
__suspend_data_start = .;
|
||||
KEEP(*(.suspend_data))
|
||||
. = ALIGN(8);
|
||||
__suspend_sect_end = .;
|
||||
} > SRAM
|
||||
#include <rom_api_refer.h>
|
||||
}
|
||||
|
||||
@ -67,7 +67,11 @@ void bl2_main(void)
|
||||
switch_rtc_mode_1st_stage();
|
||||
|
||||
set_rtc_en_registers();
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
#ifndef NO_DDR_CFG //for fpga
|
||||
jump_to_warmboot_entry();
|
||||
#endif
|
||||
#endif
|
||||
load_ddr();
|
||||
#ifdef OD_CLK_SEL
|
||||
load_rest_od_sel();
|
||||
|
||||
@ -11,6 +11,8 @@
|
||||
#include <rom_api.h>
|
||||
#include <bl2.h>
|
||||
#include <ddr.h>
|
||||
#include <ddr_sys.h>
|
||||
#include <rtc.h>
|
||||
#include <string.h>
|
||||
#include <decompress.h>
|
||||
#include <delay_timer.h>
|
||||
@ -19,6 +21,7 @@
|
||||
|
||||
struct _time_records *time_records = (void *)TIME_RECORDS_ADDR;
|
||||
struct fip_param1 *fip_param1 = (void *)PARAM1_BASE;
|
||||
enum CHIP_CLK_MODE chip_clk_mode = CLK_ND;
|
||||
static struct fip_param2 fip_param2 __aligned(BLOCK_SIZE);
|
||||
static union {
|
||||
struct ddr_param ddr_param;
|
||||
@ -427,6 +430,64 @@ int load_loader_2nd(int retry, uint64_t *loader_2nd_entry)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef NO_DDR_CFG //for fpga
|
||||
static void *get_warmboot_entry(void)
|
||||
{
|
||||
/*
|
||||
* "FSM state change to ST_ON from the state
|
||||
* 4'h0 = state changed from ST_OFF to ST_ON
|
||||
* 4'h3 = state changed to ST_PWR_CYC or ST_WARM_RESET then back to ST_ON
|
||||
* 4'h9 = state changed from ST_SUSP to ST_ON
|
||||
*/
|
||||
#define WANTED_STATE 0x9
|
||||
|
||||
NOTICE("\nREG_RTC_ST_ON_REASON=0x%x\n", mmio_read_32(REG_RTC_ST_ON_REASON));
|
||||
NOTICE("\nRTC_SRAM_FLAG_ADDR%x=0x%x\n", RTC_SRAM_FLAG_ADDR, mmio_read_32(RTC_SRAM_FLAG_ADDR));
|
||||
/* Check if RTC state changed from ST_SUSP */
|
||||
if ((mmio_read_32(REG_RTC_ST_ON_REASON) & 0xF) == WANTED_STATE)
|
||||
return (void *)(uintptr_t)mmio_read_32(RTC_SRAM_FLAG_ADDR);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
void rtc_set_ddr_pwrok(void)
|
||||
{
|
||||
mmio_setbits_32(REG_RTC_BASE + RTC_PG_REG, 0x00000001);
|
||||
}
|
||||
|
||||
void rtc_set_rmio_pwrok(void)
|
||||
{
|
||||
mmio_setbits_32(REG_RTC_BASE + RTC_PG_REG, 0x00000002);
|
||||
}
|
||||
|
||||
#ifndef NO_DDR_CFG //for fpga
|
||||
static void ddr_resume(void)
|
||||
{
|
||||
rtc_set_ddr_pwrok();
|
||||
rtc_set_rmio_pwrok();
|
||||
ddr_sys_resume();
|
||||
}
|
||||
|
||||
void jump_to_warmboot_entry(void)
|
||||
{
|
||||
void (*warmboot_entry)() = get_warmboot_entry();
|
||||
|
||||
// treat next reset as normal boot
|
||||
mmio_write_64(RTC_SRAM_FLAG_ADDR, 0);
|
||||
if (warmboot_entry) {
|
||||
INFO("WE=0x%lx\n", (uintptr_t)warmboot_entry);
|
||||
|
||||
NOTICE("ddr resume...\n");
|
||||
ddr_resume();
|
||||
NOTICE("ddr resume end\n");
|
||||
|
||||
sys_pll_init();
|
||||
sys_switch_all_to_pll();
|
||||
|
||||
warmboot_entry();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
int load_rest(void)
|
||||
{
|
||||
int retry = 0;
|
||||
|
||||
@ -27,6 +27,7 @@ BL2_SOURCES += \
|
||||
plat/${CHIP_ARCH}/ddr/ddr_pkg_info.c \
|
||||
plat/${CHIP_ARCH}/ddr/ddr_sys_bring_up.c \
|
||||
plat/${CHIP_ARCH}/ddr/ddr_sys.c \
|
||||
plat/${CHIP_ARCH}/ddr/ddr_suspend.c \
|
||||
plat/${CHIP_ARCH}/ddr/phy_pll_init.c \
|
||||
plat/${CHIP_ARCH}/ddr/cvx16_pinmux.c \
|
||||
plat/${CHIP_ARCH}/ddr/cvx16_dram_cap_check.c \
|
||||
@ -104,4 +105,4 @@ endif
|
||||
# QFN88_9*9:1800C
|
||||
# $(eval $(call add_define_val,BRINGUP_CONF_INFO_VAL,0x70000000))
|
||||
|
||||
endif
|
||||
endif
|
||||
|
||||
384
fsbl/plat/cv180x/ddr/ddr_suspend.c
Normal file
384
fsbl/plat/cv180x/ddr/ddr_suspend.c
Normal file
@ -0,0 +1,384 @@
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <delay_timer.h>
|
||||
#include "mmio.h"
|
||||
#include "reg_soc.h"
|
||||
#include "phy_pll_init.h"
|
||||
#include "ddr_sys.h"
|
||||
#include "ddr_suspend.h"
|
||||
#include "bitwise_ops.h"
|
||||
// #include "regconfig.h"
|
||||
#include "rtc.h"
|
||||
#include "cvx16_dram_cap_check.h"
|
||||
#ifdef DDR2_3
|
||||
#include <ddr3_1866_init.h>
|
||||
#include <ddr2_1333_init.h>
|
||||
#else
|
||||
#include <ddr_init.h>
|
||||
#endif
|
||||
|
||||
void ddr_suspend_entry(void)
|
||||
{
|
||||
ddr_sys_suspend_sus_res();
|
||||
rtc_clr_ddr_pwrok();
|
||||
rtc_clr_rmio_pwrok();
|
||||
#ifndef SUSPEND_USE_WDG_RST
|
||||
rtc_req_suspend();
|
||||
#else
|
||||
rtc_req_wdg_rst();
|
||||
#endif
|
||||
}
|
||||
|
||||
void ddr_sys_suspend_sus_res(void)
|
||||
{
|
||||
cvx16_ddrc_suspend_sus_res();
|
||||
|
||||
cvx16_ddr_phyd_save_sus_res(0x05026800);
|
||||
|
||||
cvx16_ddr_phya_pd_sus_res();
|
||||
}
|
||||
|
||||
void cvx16_ddrc_suspend_sus_res(void)
|
||||
{
|
||||
uint32_t rddata;
|
||||
|
||||
// Write 0 to PCTRL_n.port_en
|
||||
for (int i = 0; i < 4; i++)
|
||||
mmio_wr32(cfg_base + 0x490 + 0xb0 * i, 0x0);
|
||||
|
||||
while (1) {
|
||||
rddata = mmio_rd32(cfg_base + 0x3fc);
|
||||
if (rddata == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
//Write 1 to PWRCTL.selfref_sw
|
||||
rddata = mmio_rd32(cfg_base + 0x30);
|
||||
rddata = FIELD_SET(rddata, 1, 5, 5);
|
||||
mmio_wr32(cfg_base + 0x30, rddata);
|
||||
|
||||
//Poll STAT.selfref_type= 2'b10
|
||||
//Poll STAT.selfref_state = 0b10 (LPDDR4 only)
|
||||
while (1) {
|
||||
rddata = mmio_rd32(cfg_base + 0x4);
|
||||
if (FIELD_GET(rddata, 5, 4) == 0x2)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void cvx16_ddr_phya_pd_sus_res(void)
|
||||
{
|
||||
uint32_t rddata;
|
||||
// ----------- PHY oen/pd reset ----------------
|
||||
//OEN
|
||||
//param_phyd_tx_ca_oenz 0
|
||||
//param_phyd_tx_ca_clk0_oenz 8
|
||||
//param_phyd_tx_ca_clk1_oenz 16
|
||||
rddata = 0x00010101;
|
||||
mmio_wr32(0x0130 + PHYD_BASE_ADDR, rddata);
|
||||
//PD
|
||||
//TOP_REG_TX_CA_PD_CA 22 0
|
||||
//TOP_REG_TX_CA_PD_CKE0 24 24
|
||||
//TOP_REG_TX_CLK_PD_CLK0 26 26
|
||||
//TOP_REG_TX_CA_PD_CSB0 28 28
|
||||
//TOP_REG_TX_CA_PD_RESETZ 30 30
|
||||
//TOP_REG_TX_ZQ_PD 31 31
|
||||
//rddata[31:0] = 0x947f_ffff;
|
||||
rddata = 0x947fffff;
|
||||
mmio_wr32(0x40 + CV_DDR_PHYD_APB, rddata);
|
||||
|
||||
//TOP_REG_TX_BYTE0_PD 0
|
||||
//TOP_REG_TX_BYTE1_PD 1
|
||||
rddata = 0x00000003;
|
||||
mmio_wr32(0x00 + CV_DDR_PHYD_APB, rddata);
|
||||
|
||||
//OEN
|
||||
//param_phyd_sel_cke_oenz <= `PI_SD int_regin[0];
|
||||
rddata = mmio_rd32(0x0154 + PHYD_BASE_ADDR);
|
||||
//rddata[0] = 0b1;
|
||||
rddata = FIELD_SET(rddata, 1, 0, 0);
|
||||
mmio_wr32(0x0154 + PHYD_BASE_ADDR, rddata);
|
||||
|
||||
//PD
|
||||
//All PHYA PD=0
|
||||
rddata = 0xffffffff;
|
||||
mmio_wr32(0x40 + CV_DDR_PHYD_APB, rddata);
|
||||
|
||||
//PLL PD
|
||||
rddata = mmio_rd32(0x0C + CV_DDR_PHYD_APB);
|
||||
//rddata[15] = 1; //TOP_REG_DDRPLL_PD
|
||||
rddata = FIELD_SET(rddata, 1, 15, 15);
|
||||
mmio_wr32(0x0C + CV_DDR_PHYD_APB, rddata);
|
||||
|
||||
// ----------- PHY oen/pd reset ----------------
|
||||
//reg_ddr_ssc_syn_src_en =0
|
||||
rddata = mmio_rd32(0x40 + 0x03002900);
|
||||
rddata = FIELD_SET(rddata, 0, 1, 1); //reg_ddr_ssc_syn_src_en
|
||||
mmio_wr32(0x40 + 0x03002900, rddata);
|
||||
}
|
||||
|
||||
SUSPEND_DATA struct reg save_phy_regs[] = {
|
||||
{0x0 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x4 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x8 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xc + PHYD_BASE_ADDR, 0x0},
|
||||
{0x10 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x14 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x18 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x1c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x20 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x24 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x28 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x2c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x40 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x44 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x48 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x4c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x50 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x54 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x58 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x5c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x60 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x64 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x68 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x70 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x74 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x80 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x84 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x88 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x8c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x90 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x94 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa0 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa4 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa8 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xac + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb0 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb4 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb8 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xbc + PHYD_BASE_ADDR, 0x0},
|
||||
{0xf8 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xfc + PHYD_BASE_ADDR, 0x0},
|
||||
{0x100 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x104 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x10c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x110 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x114 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x118 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x11c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x120 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x124 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x128 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x12c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x130 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x134 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x138 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x140 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x144 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x148 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x14c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x150 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x154 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x158 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x15c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x164 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x168 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x16c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x170 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x174 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x180 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x184 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x188 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x18c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x190 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x200 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x204 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x208 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x220 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x224 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x228 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x400 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x404 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x408 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x40c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x410 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x414 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x418 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x41c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x500 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x504 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x508 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x50c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x510 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x514 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x518 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x51c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x520 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x540 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x544 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x548 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x54c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x550 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x554 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x558 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x55c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x560 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x900 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x904 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x908 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x90c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x910 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x914 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x918 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x91c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x920 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x924 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x928 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x92c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x930 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x934 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x938 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x940 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x944 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x948 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x94c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x950 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x954 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x958 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x95c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x960 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x964 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x968 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x96c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x970 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x974 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x978 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x97c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x980 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa00 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa04 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa08 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa0c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa10 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa14 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa18 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa1c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa20 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa24 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa28 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa2c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa30 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa34 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa38 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa3c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa40 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa44 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa48 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa4c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa50 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa54 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa58 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa5c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa60 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa64 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa68 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa6c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa70 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa74 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa78 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa7c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb00 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb04 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb08 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb0c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb10 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb14 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb18 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb1c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb20 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb24 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb30 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb34 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb38 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb3c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb40 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb44 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb48 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb4c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb50 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb54 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xDEADBEEF, 0xDEADBEEF},
|
||||
};
|
||||
|
||||
void cvx16_ddr_phyd_save_sus_res(uint32_t RTC_SRAM_BASE)
|
||||
{
|
||||
// struct reg *psave_phy_regs = (struct reg *)RTC_SRAM_BASE;
|
||||
uintptr_t temp = RTC_SRAM_BASE;
|
||||
struct reg *psave_phy_regs = (struct reg *)temp;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(save_phy_regs) - 1; i++) {
|
||||
psave_phy_regs[i].addr = save_phy_regs[i].addr;
|
||||
psave_phy_regs[i].val = mmio_rd32(save_phy_regs[i].addr);
|
||||
}
|
||||
}
|
||||
|
||||
void rtc_clr_ddr_pwrok(void)
|
||||
{
|
||||
mmio_clrbits_32(REG_RTC_BASE + RTC_PG_REG, 0x00000001);
|
||||
}
|
||||
|
||||
void rtc_clr_rmio_pwrok(void)
|
||||
{
|
||||
mmio_clrbits_32(REG_RTC_BASE + RTC_PG_REG, 0x00000002);
|
||||
}
|
||||
|
||||
#ifndef SUSPEND_USE_WDG_RST
|
||||
void rtc_req_suspend(void)
|
||||
{
|
||||
//info("Send suspend request\n");
|
||||
/* Enable power suspend wakeup source mask */
|
||||
mmio_write_32(REG_RTC_BASE + 0x3C, 0x1); // 1 = select prdata from 32K domain
|
||||
mmio_write_32(REG_RTC_CTRL_BASE + RTC_CTRL0_UNLOCKKEY, 0xAB18);
|
||||
if (mmio_read_32(RTC_INFO0) != MCU_FLAG)
|
||||
mmio_write_32(REG_RTC_BASE + RTC_EN_PWR_WAKEUP, 0x3F);
|
||||
else
|
||||
mmio_write_32(REG_RTC_BASE + RTC_EN_PWR_WAKEUP, 0x0);
|
||||
mmio_write_32(REG_RTC_BASE + RTC_EN_SUSPEND_REQ, 0x01);
|
||||
while (mmio_read_32(REG_RTC_BASE + RTC_EN_SUSPEND_REQ) != 0x01)
|
||||
;
|
||||
while (1) {
|
||||
/* Send suspend request to RTC */
|
||||
mmio_write_32(REG_RTC_CTRL_BASE + RTC_CTRL0, 0x00800080);
|
||||
mdelay(1);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void rtc_req_wdg_rst(void)
|
||||
{
|
||||
uint32_t write_data = 0;
|
||||
|
||||
write_data = mmio_rd32(REG_RTC_CTRL_BASE + 0x18); //rtcsys_rst_ctrl
|
||||
write_data = write_data | (0x01 << 24); //reg_rtcsys_reset_en
|
||||
mmio_wr32(REG_RTC_CTRL_BASE + 0x18, write_data); //
|
||||
mmio_wr32(REG_RTC_BASE + 0xE8, 0x04); // RTC_DB_REQ_WARM_RST
|
||||
mmio_wr32(REG_RTC_BASE + 0xE0, 0x01); // RTC_EN_WDG_RST_REQ
|
||||
mmio_wr32(REG_RTC_CTRL_BASE + 0x60, 0xA5); // write dummy register
|
||||
mmio_wr32(REG_RTC_CTRL_BASE + 0x04, 0xAB18); // rtc_ctrl0_unlockkey
|
||||
write_data = mmio_rd32(REG_RTC_CTRL_BASE + 0x08); // rtc_ctrl0
|
||||
//req_shdn = rtc_ctrl0[0];
|
||||
//req_sw_thm_shdn = rtc_ctrl0[1];
|
||||
//hw_thm_shdn_en = rtc_ctrl0[2];
|
||||
//req_pwr_cyc = rtc_ctrl0[3];
|
||||
//req_warm_rst = rtc_ctrl0[4];
|
||||
//req_sw_wdg_rst = rtc_ctrl0[5];
|
||||
//hw_wdg_rst_en = rtc_ctrl0[6];
|
||||
//req_suspend = rtc_ctrl0[7];
|
||||
write_data = 0xffff0000 | write_data | (0x01 << 5);
|
||||
// printf("[RTC] ----> Set req_sw_wdg_rst to 1 by register setting\n");
|
||||
mmio_wr32(REG_RTC_CTRL_BASE + 0x08, write_data); //rtc_ctrl0
|
||||
}
|
||||
#endif
|
||||
@ -13,6 +13,7 @@
|
||||
#include <cvx16_pinmux.h>
|
||||
#include <ddr_pkg_info.h>
|
||||
#include <regconfig.h>
|
||||
#include <phy_pll_init.h>
|
||||
|
||||
#define opdelay(_x) udelay((_x)/1000)
|
||||
|
||||
@ -164,13 +165,17 @@ void ddr_sys_resume(void)
|
||||
// KC_MSG("ddr_sub_resume1\n");
|
||||
|
||||
// pll_init
|
||||
cvx16_pll_init();
|
||||
pll_init();
|
||||
KC_MSG("pll_init_h finish\n");
|
||||
|
||||
// ctrl_init
|
||||
ddrc_init();
|
||||
KC_MSG("2nd ctrl_init_h finish\n");
|
||||
|
||||
// set axi QOS
|
||||
mmio_wr32(0x030001D8, 0x008899aa);
|
||||
mmio_wr32(0x030001DC, 0x00002244);
|
||||
|
||||
// ddr_sub_resume2
|
||||
cvx16_ddr_sub_resume2();
|
||||
KC_MSG("ddr_sub_resume2\n");
|
||||
@ -6232,590 +6237,39 @@ void cvx16_ddr_phyd_save(uint32_t sram_base_addr)
|
||||
|
||||
void cvx16_ddr_phyd_restore(uint32_t sram_base_addr)
|
||||
{
|
||||
int sram_offset = 0x0;
|
||||
{
|
||||
uartlog("cvx16_ddr_phyd_restore\n");
|
||||
ddr_debug_wr32(0x47);
|
||||
ddr_debug_num_write();
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x0 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x4 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x8 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xc + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x10 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x14 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x18 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x1c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x20 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x24 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x28 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x2c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x40 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x44 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x48 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x4c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x50 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x54 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x58 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x5c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x60 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x64 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x68 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x70 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x74 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x80 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x84 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x88 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x8c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x90 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x94 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa0 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa4 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa8 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xac + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb0 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb4 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb8 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xbc + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xf0 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xf4 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xf8 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xfc + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x100 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x104 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x10c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x110 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x114 + PHYD_BASE_ADDR, rddata);
|
||||
// reset param_phyd_clkctrl_init_complete
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x118 + PHYD_BASE_ADDR, rddata & 0x00000000);
|
||||
//------------------------------------------------------------
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x11c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x120 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x124 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x128 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x12c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
// mmio_wr32 ( 0x130 + PHYD_BASE_ADDR, rddata );
|
||||
// ca oenz set by c-code
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x134 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x138 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x140 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x144 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x148 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x14c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x150 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
// param_phyd_sel_cke_oenz=1
|
||||
mmio_wr32(0x154 + PHYD_BASE_ADDR, (rddata | 0x00000001));
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x158 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x15c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x164 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x168 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x16c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x170 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x174 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x180 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x184 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x188 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x18c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x190 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x200 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
// param_phya_reg_tx_byte0_en_extend_oenz_gated_dline =0
|
||||
mmio_wr32(0x204 + PHYD_BASE_ADDR, (rddata & 0xFFFBFFFF));
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x208 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x220 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
// param_phya_reg_tx_byte1_en_extend_oenz_gated_dline =0
|
||||
mmio_wr32(0x224 + PHYD_BASE_ADDR, (rddata & 0xFFFBFFFF));
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x228 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x400 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x404 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x408 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x40c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x410 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x414 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x418 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x41c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x500 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x504 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x508 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x50c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x510 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x514 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x518 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x51c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x520 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x540 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x544 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x548 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x54c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x550 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x554 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x558 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x55c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x560 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x900 + PHYD_BASE_ADDR, rddata);
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x904 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x908 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x90c + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x910 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x914 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x918 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x91c + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x920 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x924 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x928 + PHYD_BASE_ADDR, rddata );
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x92c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x930 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x934 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x938 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x940 + PHYD_BASE_ADDR, rddata);
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x944 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x948 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x94c + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x950 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x954 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x958 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x95c + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x960 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x964 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x968 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x96c + PHYD_BASE_ADDR, rddata );
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x970 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x974 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x978 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x97c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x980 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa00 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa04 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa08 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa0c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa10 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa14 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa18 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa1c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa20 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa24 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa28 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa2c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa30 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa34 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa38 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa3c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa40 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa44 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa48 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa4c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa50 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa54 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa58 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa5c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa60 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa64 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa68 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa6c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa70 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa74 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa78 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa7c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb00 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb04 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb08 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb0c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb10 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb14 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb18 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb1c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb20 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb24 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb30 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb34 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb38 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb3c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb40 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb44 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb48 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb4c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb50 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb54 + PHYD_BASE_ADDR, rddata);
|
||||
uintptr_t temp = sram_base_addr;
|
||||
struct regconf *psave_phy_regs = (struct regconf *)temp;
|
||||
int i = 0;
|
||||
uint32_t addr;
|
||||
uint32_t val;
|
||||
|
||||
while (1) {
|
||||
addr = psave_phy_regs[i].addr;
|
||||
val = psave_phy_regs[i].val;
|
||||
i++;
|
||||
|
||||
if ((addr < (0x0 + PHYD_BASE_ADDR)) || (addr > (0xb54 + PHYD_BASE_ADDR)))
|
||||
break;
|
||||
|
||||
switch (addr) {
|
||||
case (0x118 + PHYD_BASE_ADDR):
|
||||
//reset param_phyd_clkctrl_init_complete
|
||||
val &= 0x00000000;
|
||||
break;
|
||||
case (0x130 + PHYD_BASE_ADDR):
|
||||
//ca oenz set by c-code
|
||||
continue;
|
||||
case (0x154 + PHYD_BASE_ADDR):
|
||||
val |= 0x00000001;
|
||||
break;
|
||||
case (0x204 + PHYD_BASE_ADDR):
|
||||
val &= 0xFFFBFFFF;
|
||||
break;
|
||||
case (0x224 + PHYD_BASE_ADDR):
|
||||
val &= 0xFFFBFFFF;
|
||||
break;
|
||||
}
|
||||
mmio_write_32(addr, val);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,5 +7,4 @@ struct ddr_param {
|
||||
|
||||
int ddr_init(const struct ddr_param *ddr_param);
|
||||
|
||||
|
||||
#endif /* __DDR_H__ */
|
||||
|
||||
24
fsbl/plat/cv180x/include/ddr/ddr_suspend.h
Normal file
24
fsbl/plat/cv180x/include/ddr/ddr_suspend.h
Normal file
@ -0,0 +1,24 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause */
|
||||
|
||||
#define SUSPEND_ENTRY __section(".suspend_entry")
|
||||
#define SUSPEND_FUNC __section(".suspend_func")
|
||||
#define SUSPEND_DATA __section(".suspend_data")
|
||||
|
||||
SUSPEND_ENTRY void ddr_suspend_entry(void);
|
||||
static SUSPEND_FUNC void ddr_sys_suspend_sus_res(void);
|
||||
static SUSPEND_FUNC void cvx16_ddr_phya_pd_sus_res(void);
|
||||
static SUSPEND_FUNC void cvx16_ddrc_suspend_sus_res(void);
|
||||
static SUSPEND_FUNC void cvx16_ddr_phyd_save_sus_res(uint32_t);
|
||||
static SUSPEND_FUNC void rtc_clr_ddr_pwrok(void);
|
||||
static SUSPEND_FUNC void rtc_clr_rmio_pwrok(void);
|
||||
// #define SUSPEND_USE_WDG_RST
|
||||
#ifndef SUSPEND_USE_WDG_RST
|
||||
static SUSPEND_FUNC void rtc_req_suspend(void);
|
||||
#else
|
||||
static SUSPEND_FUNC void rtc_req_wdg_rst(void);
|
||||
#endif
|
||||
|
||||
struct reg {
|
||||
uint32_t addr;
|
||||
uint32_t val;
|
||||
};
|
||||
@ -60,10 +60,10 @@ enum train_mode {
|
||||
#define ddr_sram_wr32(a, b) mmio_wr32(a, b)
|
||||
#define ddr_debug_wr32(b)
|
||||
|
||||
//#define uartlog(...) tf_printf(MSG_NOTICE "U: " __VA_ARGS__)
|
||||
//#define KC_MSG(...) tf_printf(MSG_NOTICE "[KC_DBG] " __VA_ARGS__)
|
||||
//#define KC_MSG_TR(...) tf_printf(MSG_NOTICE "[KC_DBG_training]" __VA_ARGS__)
|
||||
//#define TJ_MSG(...) tf_printf(MSG_NOTICE "[TJ Info] : " __VA_ARGS__)
|
||||
// #define uartlog(...) tf_printf(MSG_NOTICE "U: " __VA_ARGS__)
|
||||
// #define KC_MSG(...) tf_printf(MSG_NOTICE "[KC_DBG] " __VA_ARGS__)
|
||||
// #define KC_MSG_TR(...) tf_printf(MSG_NOTICE "[KC_DBG_training]" __VA_ARGS__)
|
||||
// #define TJ_MSG(...) tf_printf(MSG_NOTICE "[TJ Info] : " __VA_ARGS__)
|
||||
|
||||
#define uartlog(...)
|
||||
#define KC_MSG(...)
|
||||
|
||||
@ -51,6 +51,12 @@ enum CHIP_CONF_CMD {
|
||||
CHIP_CONF_CMD_DELAY_MS = 0xFFFFFFFD
|
||||
};
|
||||
|
||||
enum CHIP_CLK_MODE {
|
||||
CLK_ND = 0,
|
||||
CLK_OD,
|
||||
CLK_VC_OD
|
||||
};
|
||||
|
||||
void apply_chip_conf(const struct chip_conf chip_conf[], uint32_t size, enum CHIP_CONF_CMD scan_start,
|
||||
enum CHIP_CONF_CMD scan_end);
|
||||
|
||||
@ -126,6 +132,7 @@ void lock_efuse_chipsn(void);
|
||||
int load_ddr(void);
|
||||
int load_rest(void);
|
||||
int load_rest_od_sel(void);
|
||||
void jump_to_warmboot_entry(void);
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
|
||||
@ -17,6 +17,8 @@ ENTRY(bl2_entrypoint)
|
||||
|
||||
MEMORY {
|
||||
RAM (rwx): ORIGIN = BL2_BASE, LENGTH = BL2_SIZE
|
||||
|
||||
SRAM (rwx): ORIGIN = 0x000000000C030000, LENGTH = 0x10000
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
@ -80,5 +82,17 @@ SECTIONS
|
||||
|
||||
ASSERT(. <= (BL2_BASE + BL2_SIZE), "BL2 image has exceeded its limit.")
|
||||
|
||||
.suspend_sect :
|
||||
{
|
||||
. = ALIGN(8);
|
||||
__suspend_sect_start = .;
|
||||
KEEP(*(.suspend_entry))
|
||||
KEEP(*(.suspend_func))
|
||||
. = ALIGN(8);
|
||||
__suspend_data_start = .;
|
||||
KEEP(*(.suspend_data))
|
||||
. = ALIGN(8);
|
||||
__suspend_sect_end = .;
|
||||
} > SRAM
|
||||
#include <rom_api_refer.h>
|
||||
}
|
||||
|
||||
@ -75,8 +75,6 @@ void bl2_main(void)
|
||||
|
||||
set_rtc_en_registers();
|
||||
|
||||
load_ddr();
|
||||
|
||||
#ifdef OD_CLK_SEL
|
||||
mode = CLK_OD;
|
||||
#else
|
||||
@ -86,6 +84,14 @@ void bl2_main(void)
|
||||
mode = CLK_ND;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
#ifndef NO_DDR_CFG //for fpga
|
||||
jump_to_warmboot_entry(mode);
|
||||
#endif
|
||||
#endif
|
||||
load_ddr();
|
||||
|
||||
load_rest(mode);
|
||||
NOTICE("BL2 end.\n");
|
||||
|
||||
|
||||
@ -11,6 +11,8 @@
|
||||
#include <rom_api.h>
|
||||
#include <bl2.h>
|
||||
#include <ddr.h>
|
||||
#include <ddr_sys.h>
|
||||
#include <rtc.h>
|
||||
#include <string.h>
|
||||
#include <decompress.h>
|
||||
#include <delay_timer.h>
|
||||
@ -18,6 +20,7 @@
|
||||
|
||||
struct _time_records *time_records = (void *)TIME_RECORDS_ADDR;
|
||||
struct fip_param1 *fip_param1 = (void *)PARAM1_BASE;
|
||||
enum CHIP_CLK_MODE chip_clk_mode = CLK_ND;
|
||||
static struct fip_param2 fip_param2 __aligned(BLOCK_SIZE);
|
||||
static union {
|
||||
struct ddr_param ddr_param;
|
||||
@ -376,6 +379,65 @@ int load_loader_2nd(int retry, uint64_t *loader_2nd_entry)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef NO_DDR_CFG //for fpga
|
||||
static void *get_warmboot_entry(void)
|
||||
{
|
||||
/*
|
||||
* "FSM state change to ST_ON from the state
|
||||
* 4'h0 = state changed from ST_OFF to ST_ON
|
||||
* 4'h3 = state changed to ST_PWR_CYC or ST_WARM_RESET then back to ST_ON
|
||||
* 4'h9 = state changed from ST_SUSP to ST_ON
|
||||
*/
|
||||
#define WANTED_STATE 0x9
|
||||
|
||||
NOTICE("\nREG_RTC_ST_ON_REASON=0x%x\n", mmio_read_32(REG_RTC_ST_ON_REASON));
|
||||
NOTICE("\nRTC_SRAM_FLAG_ADDR%x=0x%x\n", RTC_SRAM_FLAG_ADDR, mmio_read_32(RTC_SRAM_FLAG_ADDR));
|
||||
/* Check if RTC state changed from ST_SUSP */
|
||||
if ((mmio_read_32(REG_RTC_ST_ON_REASON) & 0xF) == WANTED_STATE)
|
||||
return (void *)(uintptr_t)mmio_read_32(RTC_SRAM_FLAG_ADDR);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
void rtc_set_ddr_pwrok(void)
|
||||
{
|
||||
mmio_setbits_32(REG_RTC_BASE + RTC_PG_REG, 0x00000001);
|
||||
}
|
||||
|
||||
void rtc_set_rmio_pwrok(void)
|
||||
{
|
||||
mmio_setbits_32(REG_RTC_BASE + RTC_PG_REG, 0x00000002);
|
||||
}
|
||||
|
||||
#ifndef NO_DDR_CFG //for fpga
|
||||
static void ddr_resume(void)
|
||||
{
|
||||
rtc_set_ddr_pwrok();
|
||||
rtc_set_rmio_pwrok();
|
||||
ddr_sys_resume();
|
||||
}
|
||||
|
||||
void jump_to_warmboot_entry(enum CHIP_CLK_MODE mode)
|
||||
{
|
||||
void (*warmboot_entry)() = get_warmboot_entry();
|
||||
|
||||
// treat next reset as normal boot
|
||||
mmio_write_64(RTC_SRAM_FLAG_ADDR, 0);
|
||||
if (warmboot_entry) {
|
||||
INFO("WE=0x%lx\n", (uintptr_t)warmboot_entry);
|
||||
|
||||
NOTICE("ddr resume...\n");
|
||||
ddr_resume();
|
||||
NOTICE("ddr resume end\n");
|
||||
|
||||
sys_pll_init(mode);
|
||||
sys_switch_all_to_pll();
|
||||
|
||||
warmboot_entry();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
int load_rest(enum CHIP_CLK_MODE mode)
|
||||
{
|
||||
int retry = 0;
|
||||
|
||||
@ -27,6 +27,7 @@ BL2_SOURCES += \
|
||||
plat/${CHIP_ARCH}/ddr/ddr_pkg_info.c \
|
||||
plat/${CHIP_ARCH}/ddr/ddr_sys_bring_up.c \
|
||||
plat/${CHIP_ARCH}/ddr/ddr_sys.c \
|
||||
plat/${CHIP_ARCH}/ddr/ddr_suspend.c \
|
||||
plat/${CHIP_ARCH}/ddr/phy_pll_init.c \
|
||||
plat/${CHIP_ARCH}/ddr/cvx16_pinmux.c \
|
||||
plat/${CHIP_ARCH}/ddr/cvx16_dram_cap_check.c \
|
||||
|
||||
384
fsbl/plat/cv181x/ddr/ddr_suspend.c
Normal file
384
fsbl/plat/cv181x/ddr/ddr_suspend.c
Normal file
@ -0,0 +1,384 @@
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <delay_timer.h>
|
||||
#include "mmio.h"
|
||||
#include "reg_soc.h"
|
||||
#include "phy_pll_init.h"
|
||||
#include "ddr_sys.h"
|
||||
#include "ddr_suspend.h"
|
||||
#include "bitwise_ops.h"
|
||||
// #include "regconfig.h"
|
||||
#include "rtc.h"
|
||||
#include "cvx16_dram_cap_check.h"
|
||||
#ifdef DDR2_3
|
||||
#include <ddr3_1866_init.h>
|
||||
#include <ddr2_1333_init.h>
|
||||
#else
|
||||
#include <ddr_init.h>
|
||||
#endif
|
||||
|
||||
void ddr_suspend_entry(void)
|
||||
{
|
||||
ddr_sys_suspend_sus_res();
|
||||
rtc_clr_ddr_pwrok();
|
||||
rtc_clr_rmio_pwrok();
|
||||
#ifndef SUSPEND_USE_WDG_RST
|
||||
rtc_req_suspend();
|
||||
#else
|
||||
rtc_req_wdg_rst();
|
||||
#endif
|
||||
}
|
||||
|
||||
void ddr_sys_suspend_sus_res(void)
|
||||
{
|
||||
cvx16_ddrc_suspend_sus_res();
|
||||
|
||||
cvx16_ddr_phyd_save_sus_res(0x05026800);
|
||||
|
||||
cvx16_ddr_phya_pd_sus_res();
|
||||
}
|
||||
|
||||
void cvx16_ddrc_suspend_sus_res(void)
|
||||
{
|
||||
uint32_t rddata;
|
||||
|
||||
// Write 0 to PCTRL_n.port_en
|
||||
for (int i = 0; i < 4; i++)
|
||||
mmio_wr32(cfg_base + 0x490 + 0xb0 * i, 0x0);
|
||||
|
||||
while (1) {
|
||||
rddata = mmio_rd32(cfg_base + 0x3fc);
|
||||
if (rddata == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
//Write 1 to PWRCTL.selfref_sw
|
||||
rddata = mmio_rd32(cfg_base + 0x30);
|
||||
rddata = FIELD_SET(rddata, 1, 5, 5);
|
||||
mmio_wr32(cfg_base + 0x30, rddata);
|
||||
|
||||
//Poll STAT.selfref_type= 2'b10
|
||||
//Poll STAT.selfref_state = 0b10 (LPDDR4 only)
|
||||
while (1) {
|
||||
rddata = mmio_rd32(cfg_base + 0x4);
|
||||
if (FIELD_GET(rddata, 5, 4) == 0x2)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void cvx16_ddr_phya_pd_sus_res(void)
|
||||
{
|
||||
uint32_t rddata;
|
||||
// ----------- PHY oen/pd reset ----------------
|
||||
//OEN
|
||||
//param_phyd_tx_ca_oenz 0
|
||||
//param_phyd_tx_ca_clk0_oenz 8
|
||||
//param_phyd_tx_ca_clk1_oenz 16
|
||||
rddata = 0x00010101;
|
||||
mmio_wr32(0x0130 + PHYD_BASE_ADDR, rddata);
|
||||
//PD
|
||||
//TOP_REG_TX_CA_PD_CA 22 0
|
||||
//TOP_REG_TX_CA_PD_CKE0 24 24
|
||||
//TOP_REG_TX_CLK_PD_CLK0 26 26
|
||||
//TOP_REG_TX_CA_PD_CSB0 28 28
|
||||
//TOP_REG_TX_CA_PD_RESETZ 30 30
|
||||
//TOP_REG_TX_ZQ_PD 31 31
|
||||
//rddata[31:0] = 0x947f_ffff;
|
||||
rddata = 0x947fffff;
|
||||
mmio_wr32(0x40 + CV_DDR_PHYD_APB, rddata);
|
||||
|
||||
//TOP_REG_TX_BYTE0_PD 0
|
||||
//TOP_REG_TX_BYTE1_PD 1
|
||||
rddata = 0x00000003;
|
||||
mmio_wr32(0x00 + CV_DDR_PHYD_APB, rddata);
|
||||
|
||||
//OEN
|
||||
//param_phyd_sel_cke_oenz <= `PI_SD int_regin[0];
|
||||
rddata = mmio_rd32(0x0154 + PHYD_BASE_ADDR);
|
||||
//rddata[0] = 0b1;
|
||||
rddata = FIELD_SET(rddata, 1, 0, 0);
|
||||
mmio_wr32(0x0154 + PHYD_BASE_ADDR, rddata);
|
||||
|
||||
//PD
|
||||
//All PHYA PD=0
|
||||
rddata = 0xffffffff;
|
||||
mmio_wr32(0x40 + CV_DDR_PHYD_APB, rddata);
|
||||
|
||||
//PLL PD
|
||||
rddata = mmio_rd32(0x0C + CV_DDR_PHYD_APB);
|
||||
//rddata[15] = 1; //TOP_REG_DDRPLL_PD
|
||||
rddata = FIELD_SET(rddata, 1, 15, 15);
|
||||
mmio_wr32(0x0C + CV_DDR_PHYD_APB, rddata);
|
||||
|
||||
// ----------- PHY oen/pd reset ----------------
|
||||
//reg_ddr_ssc_syn_src_en =0
|
||||
rddata = mmio_rd32(0x40 + 0x03002900);
|
||||
rddata = FIELD_SET(rddata, 0, 1, 1); //reg_ddr_ssc_syn_src_en
|
||||
mmio_wr32(0x40 + 0x03002900, rddata);
|
||||
}
|
||||
|
||||
SUSPEND_DATA struct reg save_phy_regs[] = {
|
||||
{0x0 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x4 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x8 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xc + PHYD_BASE_ADDR, 0x0},
|
||||
{0x10 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x14 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x18 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x1c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x20 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x24 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x28 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x2c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x40 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x44 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x48 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x4c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x50 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x54 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x58 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x5c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x60 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x64 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x68 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x70 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x74 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x80 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x84 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x88 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x8c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x90 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x94 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa0 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa4 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa8 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xac + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb0 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb4 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb8 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xbc + PHYD_BASE_ADDR, 0x0},
|
||||
{0xf8 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xfc + PHYD_BASE_ADDR, 0x0},
|
||||
{0x100 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x104 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x10c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x110 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x114 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x118 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x11c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x120 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x124 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x128 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x12c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x130 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x134 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x138 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x140 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x144 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x148 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x14c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x150 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x154 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x158 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x15c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x164 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x168 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x16c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x170 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x174 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x180 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x184 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x188 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x18c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x190 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x200 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x204 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x208 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x220 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x224 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x228 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x400 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x404 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x408 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x40c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x410 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x414 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x418 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x41c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x500 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x504 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x508 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x50c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x510 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x514 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x518 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x51c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x520 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x540 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x544 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x548 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x54c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x550 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x554 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x558 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x55c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x560 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x900 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x904 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x908 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x90c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x910 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x914 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x918 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x91c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x920 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x924 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x928 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x92c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x930 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x934 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x938 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x940 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x944 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x948 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x94c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x950 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x954 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x958 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x95c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x960 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x964 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x968 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x96c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x970 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x974 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x978 + PHYD_BASE_ADDR, 0x0},
|
||||
{0x97c + PHYD_BASE_ADDR, 0x0},
|
||||
{0x980 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa00 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa04 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa08 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa0c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa10 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa14 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa18 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa1c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa20 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa24 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa28 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa2c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa30 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa34 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa38 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa3c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa40 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa44 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa48 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa4c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa50 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa54 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa58 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa5c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa60 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa64 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa68 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa6c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa70 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa74 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa78 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xa7c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb00 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb04 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb08 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb0c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb10 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb14 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb18 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb1c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb20 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb24 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb30 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb34 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb38 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb3c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb40 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb44 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb48 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb4c + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb50 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xb54 + PHYD_BASE_ADDR, 0x0},
|
||||
{0xDEADBEEF, 0xDEADBEEF},
|
||||
};
|
||||
|
||||
void cvx16_ddr_phyd_save_sus_res(uint32_t RTC_SRAM_BASE)
|
||||
{
|
||||
// struct reg *psave_phy_regs = (struct reg *)RTC_SRAM_BASE;
|
||||
uintptr_t temp = RTC_SRAM_BASE;
|
||||
struct reg *psave_phy_regs = (struct reg *)temp;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(save_phy_regs) - 1; i++) {
|
||||
psave_phy_regs[i].addr = save_phy_regs[i].addr;
|
||||
psave_phy_regs[i].val = mmio_rd32(save_phy_regs[i].addr);
|
||||
}
|
||||
}
|
||||
|
||||
void rtc_clr_ddr_pwrok(void)
|
||||
{
|
||||
mmio_clrbits_32(REG_RTC_BASE + RTC_PG_REG, 0x00000001);
|
||||
}
|
||||
|
||||
void rtc_clr_rmio_pwrok(void)
|
||||
{
|
||||
mmio_clrbits_32(REG_RTC_BASE + RTC_PG_REG, 0x00000002);
|
||||
}
|
||||
|
||||
#ifndef SUSPEND_USE_WDG_RST
|
||||
void rtc_req_suspend(void)
|
||||
{
|
||||
// info("Send suspend request\n");
|
||||
/* Enable power suspend wakeup source mask */
|
||||
mmio_write_32(REG_RTC_BASE + 0x3C, 0x1); // 1 = select prdata from 32K domain
|
||||
mmio_write_32(REG_RTC_CTRL_BASE + RTC_CTRL0_UNLOCKKEY, 0xAB18);
|
||||
if (mmio_read_32(RTC_INFO0) != MCU_FLAG)
|
||||
mmio_write_32(REG_RTC_BASE + RTC_EN_PWR_WAKEUP, 0x3F);
|
||||
else
|
||||
mmio_write_32(REG_RTC_BASE + RTC_EN_PWR_WAKEUP, 0x0);
|
||||
mmio_write_32(REG_RTC_BASE + RTC_EN_SUSPEND_REQ, 0x01);
|
||||
while (mmio_read_32(REG_RTC_BASE + RTC_EN_SUSPEND_REQ) != 0x01)
|
||||
;
|
||||
while (1) {
|
||||
/* Send suspend request to RTC */
|
||||
mmio_write_32(REG_RTC_CTRL_BASE + RTC_CTRL0, 0x00800080);
|
||||
mdelay(1);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void rtc_req_wdg_rst(void)
|
||||
{
|
||||
uint32_t write_data = 0;
|
||||
|
||||
write_data = mmio_rd32(REG_RTC_CTRL_BASE + 0x18); //rtcsys_rst_ctrl
|
||||
write_data = write_data | (0x01 << 24); //reg_rtcsys_reset_en
|
||||
mmio_wr32(REG_RTC_CTRL_BASE + 0x18, write_data); //
|
||||
mmio_wr32(REG_RTC_BASE + 0xE8, 0x04); // RTC_DB_REQ_WARM_RST
|
||||
mmio_wr32(REG_RTC_BASE + 0xE0, 0x01); // RTC_EN_WDG_RST_REQ
|
||||
mmio_wr32(REG_RTC_CTRL_BASE + 0x60, 0xA5); // write dummy register
|
||||
mmio_wr32(REG_RTC_CTRL_BASE + 0x04, 0xAB18); // rtc_ctrl0_unlockkey
|
||||
write_data = mmio_rd32(REG_RTC_CTRL_BASE + 0x08); // rtc_ctrl0
|
||||
//req_shdn = rtc_ctrl0[0];
|
||||
//req_sw_thm_shdn = rtc_ctrl0[1];
|
||||
//hw_thm_shdn_en = rtc_ctrl0[2];
|
||||
//req_pwr_cyc = rtc_ctrl0[3];
|
||||
//req_warm_rst = rtc_ctrl0[4];
|
||||
//req_sw_wdg_rst = rtc_ctrl0[5];
|
||||
//hw_wdg_rst_en = rtc_ctrl0[6];
|
||||
//req_suspend = rtc_ctrl0[7];
|
||||
write_data = 0xffff0000 | write_data | (0x01 << 5);
|
||||
// printf("[RTC] ----> Set req_sw_wdg_rst to 1 by register setting\n");
|
||||
mmio_wr32(REG_RTC_CTRL_BASE + 0x08, write_data); //rtc_ctrl0
|
||||
}
|
||||
#endif
|
||||
@ -12,6 +12,8 @@
|
||||
#include <cvx16_dram_cap_check.h>
|
||||
#include <cvx16_pinmux.h>
|
||||
#include <ddr_pkg_info.h>
|
||||
#include <regconfig.h>
|
||||
#include <phy_pll_init.h>
|
||||
|
||||
#define opdelay(_x) udelay((_x)/1000)
|
||||
|
||||
@ -106,13 +108,17 @@ void ddr_sys_resume(void)
|
||||
// KC_MSG("ddr_sub_resume1\n");
|
||||
|
||||
// pll_init
|
||||
cvx16_pll_init();
|
||||
pll_init();
|
||||
KC_MSG("pll_init_h finish\n");
|
||||
|
||||
// ctrl_init
|
||||
ddrc_init();
|
||||
KC_MSG("2nd ctrl_init_h finish\n");
|
||||
|
||||
// set axi QOS
|
||||
mmio_wr32(0x030001D8, 0x008899aa);
|
||||
mmio_wr32(0x030001DC, 0x00002244);
|
||||
|
||||
// ddr_sub_resume2
|
||||
cvx16_ddr_sub_resume2();
|
||||
KC_MSG("ddr_sub_resume2\n");
|
||||
@ -6141,590 +6147,39 @@ void cvx16_ddr_phyd_save(uint32_t sram_base_addr)
|
||||
|
||||
void cvx16_ddr_phyd_restore(uint32_t sram_base_addr)
|
||||
{
|
||||
int sram_offset = 0x0;
|
||||
{
|
||||
uartlog("cvx16_ddr_phyd_restore\n");
|
||||
ddr_debug_wr32(0x47);
|
||||
ddr_debug_num_write();
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x0 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x4 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x8 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xc + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x10 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x14 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x18 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x1c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x20 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x24 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x28 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x2c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x40 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x44 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x48 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x4c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x50 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x54 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x58 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x5c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x60 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x64 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x68 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x70 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x74 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x80 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x84 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x88 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x8c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x90 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x94 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa0 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa4 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa8 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xac + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb0 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb4 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb8 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xbc + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xf0 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xf4 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xf8 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xfc + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x100 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x104 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x10c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x110 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x114 + PHYD_BASE_ADDR, rddata);
|
||||
// reset param_phyd_clkctrl_init_complete
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x118 + PHYD_BASE_ADDR, rddata & 0x00000000);
|
||||
//------------------------------------------------------------
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x11c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x120 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x124 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x128 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x12c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
// mmio_wr32 ( 0x130 + PHYD_BASE_ADDR, rddata );
|
||||
// ca oenz set by c-code
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x134 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x138 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x140 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x144 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x148 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x14c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x150 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
// param_phyd_sel_cke_oenz=1
|
||||
mmio_wr32(0x154 + PHYD_BASE_ADDR, (rddata | 0x00000001));
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x158 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x15c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x164 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x168 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x16c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x170 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x174 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x180 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x184 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x188 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x18c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x190 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x200 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
// param_phya_reg_tx_byte0_en_extend_oenz_gated_dline =0
|
||||
mmio_wr32(0x204 + PHYD_BASE_ADDR, (rddata & 0xFFFBFFFF));
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x208 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x220 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
// param_phya_reg_tx_byte1_en_extend_oenz_gated_dline =0
|
||||
mmio_wr32(0x224 + PHYD_BASE_ADDR, (rddata & 0xFFFBFFFF));
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x228 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x400 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x404 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x408 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x40c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x410 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x414 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x418 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x41c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x500 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x504 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x508 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x50c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x510 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x514 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x518 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x51c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x520 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x540 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x544 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x548 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x54c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x550 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x554 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x558 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x55c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x560 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x900 + PHYD_BASE_ADDR, rddata);
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x904 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x908 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x90c + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x910 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x914 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x918 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x91c + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x920 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x924 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x928 + PHYD_BASE_ADDR, rddata );
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x92c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x930 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x934 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x938 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x940 + PHYD_BASE_ADDR, rddata);
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x944 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x948 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x94c + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x950 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x954 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x958 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x95c + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x960 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x964 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x968 + PHYD_BASE_ADDR, rddata );
|
||||
// rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
// sram_offset += 4;
|
||||
// mmio_wr32 ( 0x96c + PHYD_BASE_ADDR, rddata );
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x970 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x974 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x978 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x97c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0x980 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa00 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa04 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa08 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa0c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa10 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa14 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa18 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa1c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa20 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa24 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa28 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa2c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa30 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa34 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa38 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa3c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa40 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa44 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa48 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa4c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa50 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa54 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa58 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa5c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa60 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa64 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa68 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa6c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa70 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa74 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa78 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xa7c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb00 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb04 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb08 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb0c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb10 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb14 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb18 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb1c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb20 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb24 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb30 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb34 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb38 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb3c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb40 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb44 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb48 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb4c + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb50 + PHYD_BASE_ADDR, rddata);
|
||||
rddata = mmio_rd32(sram_base_addr + sram_offset);
|
||||
sram_offset += 4;
|
||||
mmio_wr32(0xb54 + PHYD_BASE_ADDR, rddata);
|
||||
uintptr_t temp = sram_base_addr;
|
||||
struct regconf *psave_phy_regs = (struct regconf *)temp;
|
||||
int i = 0;
|
||||
uint32_t addr;
|
||||
uint32_t val;
|
||||
|
||||
while (1) {
|
||||
addr = psave_phy_regs[i].addr;
|
||||
val = psave_phy_regs[i].val;
|
||||
i++;
|
||||
|
||||
if ((addr < (0x0 + PHYD_BASE_ADDR)) || (addr > (0xb54 + PHYD_BASE_ADDR)))
|
||||
break;
|
||||
|
||||
switch (addr) {
|
||||
case (0x118 + PHYD_BASE_ADDR):
|
||||
//reset param_phyd_clkctrl_init_complete
|
||||
val &= 0x00000000;
|
||||
break;
|
||||
case (0x130 + PHYD_BASE_ADDR):
|
||||
//ca oenz set by c-code
|
||||
continue;
|
||||
case (0x154 + PHYD_BASE_ADDR):
|
||||
val |= 0x00000001;
|
||||
break;
|
||||
case (0x204 + PHYD_BASE_ADDR):
|
||||
val &= 0xFFFBFFFF;
|
||||
break;
|
||||
case (0x224 + PHYD_BASE_ADDR):
|
||||
val &= 0xFFFBFFFF;
|
||||
break;
|
||||
}
|
||||
mmio_write_32(addr, val);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
24
fsbl/plat/cv181x/include/ddr/ddr_suspend.h
Normal file
24
fsbl/plat/cv181x/include/ddr/ddr_suspend.h
Normal file
@ -0,0 +1,24 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause */
|
||||
|
||||
#define SUSPEND_ENTRY __section(".suspend_entry")
|
||||
#define SUSPEND_FUNC __section(".suspend_func")
|
||||
#define SUSPEND_DATA __section(".suspend_data")
|
||||
|
||||
SUSPEND_ENTRY void ddr_suspend_entry(void);
|
||||
static SUSPEND_FUNC void ddr_sys_suspend_sus_res(void);
|
||||
static SUSPEND_FUNC void cvx16_ddr_phya_pd_sus_res(void);
|
||||
static SUSPEND_FUNC void cvx16_ddrc_suspend_sus_res(void);
|
||||
static SUSPEND_FUNC void cvx16_ddr_phyd_save_sus_res(uint32_t);
|
||||
static SUSPEND_FUNC void rtc_clr_ddr_pwrok(void);
|
||||
static SUSPEND_FUNC void rtc_clr_rmio_pwrok(void);
|
||||
//#define SUSPEND_USE_WDG_RST
|
||||
#ifndef SUSPEND_USE_WDG_RST
|
||||
static SUSPEND_FUNC void rtc_req_suspend(void);
|
||||
#else
|
||||
static SUSPEND_FUNC void rtc_req_wdg_rst(void);
|
||||
#endif
|
||||
|
||||
struct reg {
|
||||
uint32_t addr;
|
||||
uint32_t val;
|
||||
};
|
||||
@ -124,6 +124,7 @@ void sys_switch_all_to_pll(void);
|
||||
void lock_efuse_chipsn(void);
|
||||
int load_ddr(void);
|
||||
int load_rest(enum CHIP_CLK_MODE mode);
|
||||
void jump_to_warmboot_entry(enum CHIP_CLK_MODE mode);
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
|
||||
@ -39,6 +39,9 @@
|
||||
#define RTC_INFO2 (REG_RTC_BASE + 0x24)
|
||||
#define RTC_INFO3 (REG_RTC_BASE + 0x28)
|
||||
|
||||
#define CVI_SAPD_FLAG 0x53415044
|
||||
#define MCU_FLAG 0x8051
|
||||
|
||||
#define REG_RTC_ST_ON_REASON (REG_RTC_BASE + RTC_ST_ON_REASON)
|
||||
|
||||
#define RTCSYS_F32KLESS_BASE (RTC_SYS_BASE + 0x0002A000)
|
||||
@ -46,4 +49,12 @@
|
||||
#define RTC_INTERNAL_32K 0
|
||||
#define RTC_EXTERNAL_32K 1
|
||||
|
||||
#define PLAT_BM_TRUSTED_MAILBOX_BASE 0x0E000008
|
||||
#define PLAT_BM_TRUSTED_MAILBOX_SIZE 8
|
||||
|
||||
#define RTC_SRAM_FLAG_ADDR (RTC_CORE_SRAM_BASE + RTC_CORE_SRAM_SIZE - 8)
|
||||
#define RTC_SRAM_TRUSTED_MAILBOX_BASE (RTC_SRAM_FLAG_ADDR - PLAT_BM_TRUSTED_MAILBOX_SIZE)
|
||||
|
||||
#define BL31_WARMBOOT_ENTRY 0x80000040
|
||||
|
||||
#endif /* __RTC_H__ */
|
||||
|
||||
@ -430,6 +430,9 @@ void sys_pll_init(enum CHIP_CLK_MODE mode)
|
||||
|
||||
void switch_rtc_mode_1st_stage(void)
|
||||
{
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
return;
|
||||
#endif
|
||||
uint32_t read_data;
|
||||
uint32_t write_data;
|
||||
uint32_t rtc_mode;
|
||||
|
||||
Reference in New Issue
Block a user