6 #include <soc/addressmap.h>
11 #include <soc/sdram.h>
455 die(
"Failed to program EMC pin.");
563 die(
"Unsupported memory type!\n");
613 static int total_size = 0;
static void write32(void *addr, uint32_t val)
static uint32_t read32(const void *addr)
size_t sdram_size_mb(void)
#define printk(level,...)
void __noreturn die(const char *fmt,...)
#define setbits32(addr, set)
#define clrsetbits32(addr, clear, set)
#define clrbits32(addr, clear)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
@ PMC_NO_IOPOWER_MEM_COMP_MASK
@ PMC_NO_IOPOWER_MEM_MASK
@ PMC_POR_DPD_CTRL_MEM0_HOLD_CKE_LOW_OVR_MASK
@ PMC_POR_DPD_CTRL_MEM0_ADDR1_CLK_SEL_DPD_MASK
@ PMC_POR_DPD_CTRL_MEM0_ADDR0_CLK_SEL_DPD_MASK
@ PMC_STRAPPING_OPT_A_RAM_CODE_SHIFT
@ PMC_STRAPPING_OPT_A_RAM_CODE_MASK
@ PMC_DDR_CFG_XM0_RESET_DPDIO_MASK
@ PMC_DDR_CFG_XM0_RESET_TRI_MASK
void sdram_lp0_save_params(const struct sdram_params *sdram)
static void sdram_set_swizzle(const struct sdram_params *param, struct tegra_emc_regs *regs)
static void sdram_set_refresh(const struct sdram_params *param, struct tegra_emc_regs *regs)
static void sdram_set_clock_enable_signal(const struct sdram_params *param, struct tegra_emc_regs *regs)
uint32_t sdram_get_ram_code(void)
static void sdram_trigger_emc_timing_update(struct tegra_emc_regs *regs)
static void sdram_init_mc(const struct sdram_params *param, struct tegra_mc_regs *regs)
static void sdram_configure_pmc(const struct sdram_params *param, struct tegra_pmc_regs *regs)
static void sdram_set_emc_timing(const struct sdram_params *param, struct tegra_emc_regs *regs)
static void sdram_patch(uintptr_t addr, uint32_t value)
static void sdram_init_emc(const struct sdram_params *param, struct tegra_emc_regs *regs)
uintptr_t sdram_max_addressable_mb(void)
static void sdram_lock_carveouts(const struct sdram_params *param, struct tegra_mc_regs *regs)
static void sdram_deassert_sel_dpd(const struct sdram_params *param, struct tegra_pmc_regs *regs)
static void sdram_set_dpd3(const struct sdram_params *param, struct tegra_pmc_regs *regs)
static void sdram_deassert_clock_enable_signal(const struct sdram_params *param, struct tegra_pmc_regs *regs)
void sdram_init(const struct sdram_params *param)
static void sdram_set_pad_controls(const struct sdram_params *param, struct tegra_emc_regs *regs)
static void writebits(uint32_t value, uint32_t *addr, uint32_t mask)
static void sdram_enable_arbiter(const struct sdram_params *param)
static void sdram_patch_bootrom(const struct sdram_params *param, struct tegra_mc_regs *regs)
static void sdram_set_dli_trims(const struct sdram_params *param, struct tegra_emc_regs *regs)
static void sdram_set_zq_calibration(const struct sdram_params *param, struct tegra_emc_regs *regs)
static void sdram_init_zq_calibration(const struct sdram_params *param, struct tegra_emc_regs *regs)
static void sdram_start_clocks(const struct sdram_params *param)
int clock_get_pll_input_khz(void)
void clock_sdram(u32 m, u32 n, u32 p, u32 setup, u32 ph45, u32 ph90, u32 ph135, u32 kvco, u32 kcp, u32 stable_time, u32 emc_source, u32 same_freq)
static struct tegra_pmc_regs * pmc
Defines the SDRAM parameter structure.
uint32_t McVideoProtectWriteAccess
uint32_t EmcDliTrimTxDqs13
uint32_t McDisExtraSnapLevels
uint32_t McSecCarveoutBom
uint32_t EmcDllXformDqs12
uint32_t EmcSwizzleRank1Byte3
uint32_t McVideoProtectBomAdrHi
uint32_t EmcXm2CompPadCtrl
uint32_t EmcCaTrainingTimingCntl1
uint32_t McSecCarveoutSizeMb
uint32_t EmcClkenOverride
uint32_t McEmemAdrCfgBankSwizzle3
uint32_t EmcDliTrimTxDqs11
uint32_t EmcDllXformQUse7
uint32_t PmcIoDpd3ReqWait
uint32_t EmcXm2DqsPadCtrl3
uint32_t AhbArbitrationXbarCtrlMemInitDone
uint32_t EmcXm2VttGenPadCtrl3
uint32_t EmcXm2DqsPadCtrl5
uint32_t EmcXm2DqsPadCtrl4
uint32_t EmcDllXformDqs10
uint32_t EmcDliTrimTxDqs14
uint32_t EmcDliTrimTxDqs0
uint32_t PllMInputDivider
uint32_t PllMPDLshiftPh45
uint32_t McEmemArbRing1Throttle
uint32_t EmcDllXformQUse5
uint32_t EmcTimingControlWait
uint32_t EmcDllXformAddr4
uint32_t EmcXm2ClkPadCtrl
uint32_t EmcAutoCalConfig2
uint32_t EmcXm2CmdPadCtrl2
uint32_t EmcSwizzleRank0Byte2
uint32_t EmcCaTrainingTimingCntl2
uint32_t EmcDliTrimTxDqs6
uint32_t EmcPinProgramWait
uint32_t McEmemArbTimingRrd
uint32_t McEmemAdrCfgBankMask2
uint32_t EmcDliTrimTxDqs8
uint32_t McEmemArbTimingRp
uint32_t McEmemArbTimingR2W
uint32_t BootRomPatchData
uint32_t McEmemArbTimingRas
uint32_t EmcPreRefreshReqCnt
uint32_t EmcSwizzleRank1Byte1
uint32_t EmcDllXformQUse11
uint32_t EmcDllXformAddr5
uint32_t EmcSwizzleRank0Byte0
uint32_t EmcSwizzleRank1Byte0
uint32_t EmcDllXformQUse10
uint32_t McEmemArbDaCovers
uint32_t McVideoProtectGpuOverride0
uint32_t PllMSetupControl
uint32_t EmcDllXformQUse0
uint32_t EmcDllXformQUse2
uint32_t EmcXm2VttGenPadCtrl
uint32_t EmcXm2DqPadCtrl2
uint32_t EmcDliTrimTxDqs5
uint32_t EmcDllXformQUse8
uint32_t McVideoProtectVprOverride
uint32_t EmcEInputDuration
uint32_t EmcAutoCalConfig
uint32_t EmcAutoCalInterval
uint32_t EmcDllXformAddr1
uint32_t EmcXm2DqsPadCtrl
uint32_t EmcXm2DqsPadCtrl6
uint32_t EmcExtraRefreshNum
uint32_t McMtsCarveoutSizeMb
uint32_t EmcDllXformQUse3
uint32_t EmcDllXformQUse9
uint32_t EmcDllXformQUse15
uint32_t EmcBurstRefreshNum
uint32_t McEmemArbTimingW2W
uint32_t McMtsCarveoutRegCtrl
uint32_t EmcXm2CmdPadCtrl4
uint32_t EmcCfgDigDllPeriod
uint32_t EmcDllXformAddr2
uint32_t McSecCarveoutAdrHi
uint32_t EmcDllXformDqs15
uint32_t McEmemAdrCfgDev0
uint32_t EmcDllXformDqs11
uint32_t EmcDllXformAddr3
uint32_t EmcXm2DqsPadCtrl2
uint32_t EmcDllXformAddr0
uint32_t McVideoProtectVprOverride1
uint32_t McEmemAdrCfgBankMask0
uint32_t EmcDllXformDqs13
uint32_t EmcSwizzleRank1ByteCfg
uint32_t EmcDllXformQUse6
uint32_t EmcDliTrimTxDqs4
uint32_t McEmemArbTimingRc
uint32_t McEmemAdrCfgDev1
uint32_t EmcDliTrimTxDqs2
uint32_t McEmemArbTimingRcd
uint32_t EmcDliTrimTxDqs10
uint32_t EmcDliTrimTxDqs15
uint32_t EmcXm2CmdPadCtrl
uint32_t EmcExtraModeRegWriteEnable
uint32_t BootRomPatchControl
uint32_t EmcDllXformQUse14
uint32_t EmcDliTrimTxDqs12
uint32_t EmcDliTrimTxDqs7
uint32_t McEmemArbTimingR2R
uint32_t PllMFeedbackDivider
uint32_t EmcSwizzleRank0ByteCfg
uint32_t EmcDllXformQUse12
uint32_t PmcPorDpdCtrlWait
uint32_t McVideoProtectBom
uint32_t McEmemArbOutstandingReq
uint32_t EmcDliTrimTxDqs1
uint32_t EmcDliTrimTxDqs3
uint32_t McEmemAdrCfgBankMask1
uint32_t McVideoProtectGpuOverride1
uint32_t McEmemArbTimingRap2Pre
uint32_t EmcXm2VttGenPadCtrl2
uint32_t McEmemArbDaTurns
uint32_t McDisplaySnapRing
uint32_t McMtsCarveoutAdrHi
uint32_t McVideoProtectSizeMb
uint32_t EmcSwizzleRank0Byte3
uint32_t EmcXm2ClkPadCtrl2
uint32_t EmcDllXformQUse13
uint32_t EmcDllXformDqs14
uint32_t PllMPDLshiftPh135
uint32_t EmcZcalWarmColdBootEnables
uint32_t EmcAutoCalConfig3
uint32_t EmcDllXformQUse1
uint32_t McEmemArbTimingFaw
uint32_t EmcDliTrimTxDqs9
uint32_t EmcXm2DqPadCtrl3
uint32_t PllMPDLshiftPh90
uint32_t McEmemArbOverride1
uint32_t McEmemArbTimingWap2Pre
uint32_t McEmemArbTimingW2R
uint32_t EmcDynSelfRefControl
uint32_t EmcSwizzleRank0Byte1
uint32_t EmcDllXformQUse4
uint32_t McMtsCarveoutBom
uint32_t EmcSwizzleRank1Byte2
uint32_t McSecCarveoutProtectWriteAccess
uint32_t McEmemArbOverride
uint32_t EmcXm2CmdPadCtrl3
uint32_t EmcXm2CmdPadCtrl5
@ EMC_REF_DEV_SELECTN_SHIFT
@ EMC_CFG_EMC2PMACRO_CFG_BYPASS_DATAPIPE1_MASK
@ EMC_NOP_NOP_DEV_SELECTN_MASK
@ EMC_REFCTRL_REF_VALID_ENABLED
@ EMC_CFG_EMC2PMACRO_CFG_BYPASS_ADDRPIPE_MASK
@ EMC_CFG_EMC2PMACRO_CFG_BYPASS_DATAPIPE2_MASK
@ EMC_TIMING_CONTROL_TIMING_UPDATE
@ EMC_REF_DEV_SELECTN_MASK
@ EMC_NOP_NOP_DEV_SELECTN_SHIFT
@ MC_EMEM_CFG_ACCESS_CTRL_WRITE_ACCESS_DISABLED
@ MC_EMEM_CFG_SIZE_MB_SHIFT
@ MC_EMEM_ARB_MISC0_MC_EMC_SAME_FREQ_MASK
@ MC_TIMING_CONTROL_TIMING_UPDATE
@ MC_EMEM_CFG_SIZE_MB_MASK
@ BOOT_ROM_PATCH_CONTROL_ENABLE_MASK
@ BOOT_ROM_PATCH_CONTROL_OFFSET_SHIFT
@ BOOT_ROM_PATCH_CONTROL_OFFSET_MASK
@ BOOT_ROM_PATCH_CONTROL_BASE_ADDRESS
@ EMC_ZCAL_WARM_COLD_BOOT_ENABLES_COLDBOOT_MASK