diff --git a/src/mainboard/google/nyan/mainboard.c b/src/mainboard/google/nyan/mainboard.c index a9f3fcf2ba..3ee93f6e51 100644 --- a/src/mainboard/google/nyan/mainboard.c +++ b/src/mainboard/google/nyan/mainboard.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -211,6 +212,12 @@ static void setup_kernel_info(void) // value defined in BCT. struct tegra_pmc_regs *pmc = (void*)TEGRA_PMC_BASE; writel(0x80080000, &pmc->odmdata); + + // Not strictly info, but kernel graphics driver needs this region locked down + struct tegra_mc_regs *mc = (void *)TEGRA_MC_BASE; + writel(0, &mc->mc_vpr_bom); + writel(0, &mc->mc_vpr_size); + writel(1, &mc->mc_vpr_ctrl); } static void setup_ec_spi(void) diff --git a/src/soc/nvidia/tegra124/include/soc/addressmap.h b/src/soc/nvidia/tegra124/include/soc/addressmap.h index 29598a9765..b3c0b2961d 100644 --- a/src/soc/nvidia/tegra124/include/soc/addressmap.h +++ b/src/soc/nvidia/tegra124/include/soc/addressmap.h @@ -68,6 +68,7 @@ enum { TEGRA_PMC_BASE = TEGRA_APB_MISC_BASE + 0xE400, TEGRA_EMC_BASE = TEGRA_APB_MISC_BASE + 0xF400, TEGRA_FUSE_BASE = TEGRA_APB_MISC_BASE + 0xF800, + TEGRA_MC_BASE = 0x70019000, TEGRA_CSITE_BASE = 0x70040000, TEGRA_SYSCTR0_BASE = 0x700F0000, TEGRA_USBD_BASE = 0x7D000000, diff --git a/src/soc/nvidia/tegra124/mc.h b/src/soc/nvidia/tegra124/mc.h new file mode 100644 index 0000000000..92a38ed95f --- /dev/null +++ b/src/soc/nvidia/tegra124/mc.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2010 - 2013, NVIDIA CORPORATION. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef _TEGRA124_MC_H_ +#define _TEGRA124_MC_H_ + +#include + +// Memory Controller registers we need/care about + +struct tegra_mc_regs { + u32 reserved0[4]; + u32 mc_smmu_config; + u32 mc_smmu_tlb_config; + u32 mc_smmu_ptc_config; + u32 mc_smmu_ptb_asid; + u32 mc_smmu_ptb_data; + u32 reserved1[3]; + u32 mc_smmu_tlb_flush; + u32 mc_smmu_ptc_flush; + u32 reserved2[6]; + u32 mc_emem_cfg; + u32 mc_emem_adr_cfg; + u32 mc_emem_adr_cfg_dev0; + u32 mc_emem_adr_cfg_dev1; + u32 reserved3[12]; + u32 mc_emem_arb_reserved[28]; + u32 reserved4[338]; + u32 mc_vpr_bom; + u32 mc_vpr_size; + u32 mc_vpr_ctrl; +}; + +#endif /* _TEGRA124_MC_H_ */