15d108ac8SSergei Poselenov /* 25d108ac8SSergei Poselenov * (C) Copyright 2008 35d108ac8SSergei Poselenov * Sergei Poselenov, Emcraft Systems, sposelenov@emcraft.com. 45d108ac8SSergei Poselenov * 55d108ac8SSergei Poselenov * Copyright 2008 Freescale Semiconductor, Inc. 65d108ac8SSergei Poselenov * 75d108ac8SSergei Poselenov * (C) Copyright 2000 85d108ac8SSergei Poselenov * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 95d108ac8SSergei Poselenov * 10*1a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 115d108ac8SSergei Poselenov */ 125d108ac8SSergei Poselenov 135d108ac8SSergei Poselenov #include <common.h> 145d108ac8SSergei Poselenov #include <asm/mmu.h> 155d108ac8SSergei Poselenov 165d108ac8SSergei Poselenov struct fsl_e_tlb_entry tlb_table[] = { 175d108ac8SSergei Poselenov /* TLB 0 - for temp stack in cache */ 186d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR, CONFIG_SYS_INIT_RAM_ADDR, 195d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, 0, 205d108ac8SSergei Poselenov 0, 0, BOOKE_PAGESZ_4K, 0), 216d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024, 225d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, 0, 235d108ac8SSergei Poselenov 0, 0, BOOKE_PAGESZ_4K, 0), 246d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024, 255d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, 0, 265d108ac8SSergei Poselenov 0, 0, BOOKE_PAGESZ_4K, 0), 276d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024, 285d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, 0, 295d108ac8SSergei Poselenov 0, 0, BOOKE_PAGESZ_4K, 0), 305d108ac8SSergei Poselenov 315d108ac8SSergei Poselenov 325d108ac8SSergei Poselenov /* 33e64987a8SAnatolij Gustschin * TLB 1: 64M Non-cacheable, guarded 3459abd15bSSergei Poselenov * 0xfc000000 64M FLASH 355d108ac8SSergei Poselenov * Out of reset this entry is only 4K. 365d108ac8SSergei Poselenov */ 376d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE, 385d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 395d108ac8SSergei Poselenov 0, 1, BOOKE_PAGESZ_64M, 1), 405d108ac8SSergei Poselenov 415d108ac8SSergei Poselenov /* 425d108ac8SSergei Poselenov * TLB 2: 256M Non-cacheable, guarded 435d108ac8SSergei Poselenov * 0x80000000 256M PCI1 MEM First half 445d108ac8SSergei Poselenov */ 456d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_PCI1_MEM_PHYS, CONFIG_SYS_PCI1_MEM_PHYS, 465d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 475d108ac8SSergei Poselenov 0, 2, BOOKE_PAGESZ_256M, 1), 485d108ac8SSergei Poselenov 495d108ac8SSergei Poselenov /* 505d108ac8SSergei Poselenov * TLB 3: 256M Non-cacheable, guarded 515d108ac8SSergei Poselenov * 0x90000000 256M PCI1 MEM Second half 525d108ac8SSergei Poselenov */ 536d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_PCI1_MEM_PHYS + 0x10000000, CONFIG_SYS_PCI1_MEM_PHYS + 0x10000000, 545d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 555d108ac8SSergei Poselenov 0, 3, BOOKE_PAGESZ_256M, 1), 565d108ac8SSergei Poselenov 576d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #if defined(CONFIG_SYS_FPGA_BASE) 585d108ac8SSergei Poselenov /* 5959abd15bSSergei Poselenov * TLB 4: 1M Non-cacheable, guarded 6059abd15bSSergei Poselenov * 0xc0000000 1M FPGA and NAND 615d108ac8SSergei Poselenov */ 626d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_FPGA_BASE, CONFIG_SYS_FPGA_BASE, 635d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 6459abd15bSSergei Poselenov 0, 4, BOOKE_PAGESZ_1M, 1), 6559abd15bSSergei Poselenov #endif 665d108ac8SSergei Poselenov 675d108ac8SSergei Poselenov /* 68e64987a8SAnatolij Gustschin * TLB 5: 64M Non-cacheable, guarded 69e64987a8SAnatolij Gustschin * 0xc8000000 16M LIME GDC framebuffer 70e64987a8SAnatolij Gustschin * 0xc9fc0000 256K LIME GDC MMIO 71e64987a8SAnatolij Gustschin * (0xcbfc0000 256K LIME GDC MMIO) 72e64987a8SAnatolij Gustschin * MMIO is relocatable and could be at 0xcbfc0000 73e64987a8SAnatolij Gustschin */ 746d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_LIME_BASE, CONFIG_SYS_LIME_BASE, 75e64987a8SAnatolij Gustschin MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 76e64987a8SAnatolij Gustschin 0, 5, BOOKE_PAGESZ_64M, 1), 77e64987a8SAnatolij Gustschin 78e64987a8SAnatolij Gustschin /* 795d108ac8SSergei Poselenov * TLB 6: 64M Non-cacheable, guarded 805d108ac8SSergei Poselenov * 0xe000_0000 1M CCSRBAR 815d108ac8SSergei Poselenov * 0xe200_0000 16M PCI1 IO 825d108ac8SSergei Poselenov */ 836d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS, 845d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 855d108ac8SSergei Poselenov 0, 6, BOOKE_PAGESZ_64M, 1), 865d108ac8SSergei Poselenov 87dd332e18SAnatolij Gustschin #if !defined(CONFIG_SPD_EEPROM) 885d108ac8SSergei Poselenov /* 895d108ac8SSergei Poselenov * TLB 7+8: 512M DDR, cache disabled (needed for memory test) 905d108ac8SSergei Poselenov * 0x00000000 512M DDR System memory 915d108ac8SSergei Poselenov * Without SPD EEPROM configured DDR, this must be setup manually. 925d108ac8SSergei Poselenov * Make sure the TLB count at the top of this table is correct. 935d108ac8SSergei Poselenov * Likely it needs to be increased by two for these entries. 945d108ac8SSergei Poselenov */ 956d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE, CONFIG_SYS_DDR_SDRAM_BASE, 965d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 975d108ac8SSergei Poselenov 0, 7, BOOKE_PAGESZ_256M, 1), 985d108ac8SSergei Poselenov 996d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000, CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000, 1005d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 1015d108ac8SSergei Poselenov 0, 8, BOOKE_PAGESZ_256M, 1), 102dd332e18SAnatolij Gustschin #endif 1035d108ac8SSergei Poselenov }; 1045d108ac8SSergei Poselenov 1055d108ac8SSergei Poselenov int num_tlb_entries = ARRAY_SIZE(tlb_table); 106