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 * 105d108ac8SSergei Poselenov * See file CREDITS for list of people who contributed to this 115d108ac8SSergei Poselenov * project. 125d108ac8SSergei Poselenov * 135d108ac8SSergei Poselenov * This program is free software; you can redistribute it and/or 145d108ac8SSergei Poselenov * modify it under the terms of the GNU General Public License as 155d108ac8SSergei Poselenov * published by the Free Software Foundation; either version 2 of 165d108ac8SSergei Poselenov * the License, or (at your option) any later version. 175d108ac8SSergei Poselenov * 185d108ac8SSergei Poselenov * This program is distributed in the hope that it will be useful, 195d108ac8SSergei Poselenov * but WITHOUT ANY WARRANTY; without even the implied warranty of 205d108ac8SSergei Poselenov * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 215d108ac8SSergei Poselenov * GNU General Public License for more details. 225d108ac8SSergei Poselenov * 235d108ac8SSergei Poselenov * You should have received a copy of the GNU General Public License 245d108ac8SSergei Poselenov * along with this program; if not, write to the Free Software 255d108ac8SSergei Poselenov * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 265d108ac8SSergei Poselenov * MA 02111-1307 USA 275d108ac8SSergei Poselenov */ 285d108ac8SSergei Poselenov 295d108ac8SSergei Poselenov #include <common.h> 305d108ac8SSergei Poselenov #include <asm/mmu.h> 315d108ac8SSergei Poselenov 325d108ac8SSergei Poselenov struct fsl_e_tlb_entry tlb_table[] = { 335d108ac8SSergei Poselenov /* TLB 0 - for temp stack in cache */ 346d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR, CONFIG_SYS_INIT_RAM_ADDR, 355d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, 0, 365d108ac8SSergei Poselenov 0, 0, BOOKE_PAGESZ_4K, 0), 376d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024, 385d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, 0, 395d108ac8SSergei Poselenov 0, 0, BOOKE_PAGESZ_4K, 0), 406d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024, 415d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, 0, 425d108ac8SSergei Poselenov 0, 0, BOOKE_PAGESZ_4K, 0), 436d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024, 445d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, 0, 455d108ac8SSergei Poselenov 0, 0, BOOKE_PAGESZ_4K, 0), 465d108ac8SSergei Poselenov 475d108ac8SSergei Poselenov 485d108ac8SSergei Poselenov /* 49e64987a8SAnatolij Gustschin * TLB 1: 64M Non-cacheable, guarded 5059abd15bSSergei Poselenov * 0xfc000000 64M FLASH 515d108ac8SSergei Poselenov * Out of reset this entry is only 4K. 525d108ac8SSergei Poselenov */ 536d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE, 545d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 555d108ac8SSergei Poselenov 0, 1, BOOKE_PAGESZ_64M, 1), 565d108ac8SSergei Poselenov 575d108ac8SSergei Poselenov /* 585d108ac8SSergei Poselenov * TLB 2: 256M Non-cacheable, guarded 595d108ac8SSergei Poselenov * 0x80000000 256M PCI1 MEM First half 605d108ac8SSergei Poselenov */ 616d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_PCI1_MEM_PHYS, CONFIG_SYS_PCI1_MEM_PHYS, 625d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 635d108ac8SSergei Poselenov 0, 2, BOOKE_PAGESZ_256M, 1), 645d108ac8SSergei Poselenov 655d108ac8SSergei Poselenov /* 665d108ac8SSergei Poselenov * TLB 3: 256M Non-cacheable, guarded 675d108ac8SSergei Poselenov * 0x90000000 256M PCI1 MEM Second half 685d108ac8SSergei Poselenov */ 696d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_PCI1_MEM_PHYS + 0x10000000, CONFIG_SYS_PCI1_MEM_PHYS + 0x10000000, 705d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 715d108ac8SSergei Poselenov 0, 3, BOOKE_PAGESZ_256M, 1), 725d108ac8SSergei Poselenov 736d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #if defined(CONFIG_SYS_FPGA_BASE) 745d108ac8SSergei Poselenov /* 7559abd15bSSergei Poselenov * TLB 4: 1M Non-cacheable, guarded 7659abd15bSSergei Poselenov * 0xc0000000 1M FPGA and NAND 775d108ac8SSergei Poselenov */ 786d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_FPGA_BASE, CONFIG_SYS_FPGA_BASE, 795d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 8059abd15bSSergei Poselenov 0, 4, BOOKE_PAGESZ_1M, 1), 8159abd15bSSergei Poselenov #endif 825d108ac8SSergei Poselenov 835d108ac8SSergei Poselenov /* 84e64987a8SAnatolij Gustschin * TLB 5: 64M Non-cacheable, guarded 85e64987a8SAnatolij Gustschin * 0xc8000000 16M LIME GDC framebuffer 86e64987a8SAnatolij Gustschin * 0xc9fc0000 256K LIME GDC MMIO 87e64987a8SAnatolij Gustschin * (0xcbfc0000 256K LIME GDC MMIO) 88e64987a8SAnatolij Gustschin * MMIO is relocatable and could be at 0xcbfc0000 89e64987a8SAnatolij Gustschin */ 906d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_LIME_BASE, CONFIG_SYS_LIME_BASE, 91e64987a8SAnatolij Gustschin MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 92e64987a8SAnatolij Gustschin 0, 5, BOOKE_PAGESZ_64M, 1), 93e64987a8SAnatolij Gustschin 94e64987a8SAnatolij Gustschin /* 955d108ac8SSergei Poselenov * TLB 6: 64M Non-cacheable, guarded 965d108ac8SSergei Poselenov * 0xe000_0000 1M CCSRBAR 975d108ac8SSergei Poselenov * 0xe200_0000 16M PCI1 IO 985d108ac8SSergei Poselenov */ 996d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS, 1005d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 1015d108ac8SSergei Poselenov 0, 6, BOOKE_PAGESZ_64M, 1), 1025d108ac8SSergei Poselenov 103*dd332e18SAnatolij Gustschin #if !defined(CONFIG_SPD_EEPROM) 1045d108ac8SSergei Poselenov /* 1055d108ac8SSergei Poselenov * TLB 7+8: 512M DDR, cache disabled (needed for memory test) 1065d108ac8SSergei Poselenov * 0x00000000 512M DDR System memory 1075d108ac8SSergei Poselenov * Without SPD EEPROM configured DDR, this must be setup manually. 1085d108ac8SSergei Poselenov * Make sure the TLB count at the top of this table is correct. 1095d108ac8SSergei Poselenov * Likely it needs to be increased by two for these entries. 1105d108ac8SSergei Poselenov */ 1116d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE, CONFIG_SYS_DDR_SDRAM_BASE, 1125d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 1135d108ac8SSergei Poselenov 0, 7, BOOKE_PAGESZ_256M, 1), 1145d108ac8SSergei Poselenov 1156d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000, CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000, 1165d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 1175d108ac8SSergei Poselenov 0, 8, BOOKE_PAGESZ_256M, 1), 118*dd332e18SAnatolij Gustschin #endif 1195d108ac8SSergei Poselenov }; 1205d108ac8SSergei Poselenov 1215d108ac8SSergei Poselenov int num_tlb_entries = ARRAY_SIZE(tlb_table); 122