1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 25d108ac8SSergei Poselenov /* 35d108ac8SSergei Poselenov * (C) Copyright 2008 45d108ac8SSergei Poselenov * Sergei Poselenov, Emcraft Systems, sposelenov@emcraft.com. 55d108ac8SSergei Poselenov * 65d108ac8SSergei Poselenov * Copyright 2008 Freescale Semiconductor, Inc. 75d108ac8SSergei Poselenov * 85d108ac8SSergei Poselenov * (C) Copyright 2000 95d108ac8SSergei Poselenov * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 105d108ac8SSergei Poselenov */ 115d108ac8SSergei Poselenov 125d108ac8SSergei Poselenov #include <common.h> 135d108ac8SSergei Poselenov #include <asm/mmu.h> 145d108ac8SSergei Poselenov 155d108ac8SSergei Poselenov struct fsl_e_tlb_entry tlb_table[] = { 165d108ac8SSergei Poselenov /* TLB 0 - for temp stack in cache */ 176d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR, CONFIG_SYS_INIT_RAM_ADDR, 185d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, 0, 195d108ac8SSergei Poselenov 0, 0, BOOKE_PAGESZ_4K, 0), 206d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024, 215d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, 0, 225d108ac8SSergei Poselenov 0, 0, BOOKE_PAGESZ_4K, 0), 236d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024, 245d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, 0, 255d108ac8SSergei Poselenov 0, 0, BOOKE_PAGESZ_4K, 0), 266d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024, 275d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, 0, 285d108ac8SSergei Poselenov 0, 0, BOOKE_PAGESZ_4K, 0), 295d108ac8SSergei Poselenov 305d108ac8SSergei Poselenov 315d108ac8SSergei Poselenov /* 32e64987a8SAnatolij Gustschin * TLB 1: 64M Non-cacheable, guarded 3359abd15bSSergei Poselenov * 0xfc000000 64M FLASH 345d108ac8SSergei Poselenov * Out of reset this entry is only 4K. 355d108ac8SSergei Poselenov */ 366d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE, 375d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 385d108ac8SSergei Poselenov 0, 1, BOOKE_PAGESZ_64M, 1), 395d108ac8SSergei Poselenov 405d108ac8SSergei Poselenov /* 415d108ac8SSergei Poselenov * TLB 2: 256M Non-cacheable, guarded 425d108ac8SSergei Poselenov * 0x80000000 256M PCI1 MEM First half 435d108ac8SSergei Poselenov */ 446d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_PCI1_MEM_PHYS, CONFIG_SYS_PCI1_MEM_PHYS, 455d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 465d108ac8SSergei Poselenov 0, 2, BOOKE_PAGESZ_256M, 1), 475d108ac8SSergei Poselenov 485d108ac8SSergei Poselenov /* 495d108ac8SSergei Poselenov * TLB 3: 256M Non-cacheable, guarded 505d108ac8SSergei Poselenov * 0x90000000 256M PCI1 MEM Second half 515d108ac8SSergei Poselenov */ 526d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_PCI1_MEM_PHYS + 0x10000000, CONFIG_SYS_PCI1_MEM_PHYS + 0x10000000, 535d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 545d108ac8SSergei Poselenov 0, 3, BOOKE_PAGESZ_256M, 1), 555d108ac8SSergei Poselenov 566d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #if defined(CONFIG_SYS_FPGA_BASE) 575d108ac8SSergei Poselenov /* 5859abd15bSSergei Poselenov * TLB 4: 1M Non-cacheable, guarded 5959abd15bSSergei Poselenov * 0xc0000000 1M FPGA and NAND 605d108ac8SSergei Poselenov */ 616d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_FPGA_BASE, CONFIG_SYS_FPGA_BASE, 625d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 6359abd15bSSergei Poselenov 0, 4, BOOKE_PAGESZ_1M, 1), 6459abd15bSSergei Poselenov #endif 655d108ac8SSergei Poselenov 665d108ac8SSergei Poselenov /* 67e64987a8SAnatolij Gustschin * TLB 5: 64M Non-cacheable, guarded 68e64987a8SAnatolij Gustschin * 0xc8000000 16M LIME GDC framebuffer 69e64987a8SAnatolij Gustschin * 0xc9fc0000 256K LIME GDC MMIO 70e64987a8SAnatolij Gustschin * (0xcbfc0000 256K LIME GDC MMIO) 71e64987a8SAnatolij Gustschin * MMIO is relocatable and could be at 0xcbfc0000 72e64987a8SAnatolij Gustschin */ 736d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_LIME_BASE, CONFIG_SYS_LIME_BASE, 74e64987a8SAnatolij Gustschin MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 75e64987a8SAnatolij Gustschin 0, 5, BOOKE_PAGESZ_64M, 1), 76e64987a8SAnatolij Gustschin 77e64987a8SAnatolij Gustschin /* 785d108ac8SSergei Poselenov * TLB 6: 64M Non-cacheable, guarded 795d108ac8SSergei Poselenov * 0xe000_0000 1M CCSRBAR 805d108ac8SSergei Poselenov * 0xe200_0000 16M PCI1 IO 815d108ac8SSergei Poselenov */ 826d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS, 835d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 845d108ac8SSergei Poselenov 0, 6, BOOKE_PAGESZ_64M, 1), 855d108ac8SSergei Poselenov 86dd332e18SAnatolij Gustschin #if !defined(CONFIG_SPD_EEPROM) 875d108ac8SSergei Poselenov /* 885d108ac8SSergei Poselenov * TLB 7+8: 512M DDR, cache disabled (needed for memory test) 895d108ac8SSergei Poselenov * 0x00000000 512M DDR System memory 905d108ac8SSergei Poselenov * Without SPD EEPROM configured DDR, this must be setup manually. 915d108ac8SSergei Poselenov * Make sure the TLB count at the top of this table is correct. 925d108ac8SSergei Poselenov * Likely it needs to be increased by two for these entries. 935d108ac8SSergei Poselenov */ 946d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE, CONFIG_SYS_DDR_SDRAM_BASE, 955d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 965d108ac8SSergei Poselenov 0, 7, BOOKE_PAGESZ_256M, 1), 975d108ac8SSergei Poselenov 986d0f6bcfSJean-Christophe PLAGNIOL-VILLARD SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000, CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000, 995d108ac8SSergei Poselenov MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 1005d108ac8SSergei Poselenov 0, 8, BOOKE_PAGESZ_256M, 1), 101dd332e18SAnatolij Gustschin #endif 1025d108ac8SSergei Poselenov }; 1035d108ac8SSergei Poselenov 1045d108ac8SSergei Poselenov int num_tlb_entries = ARRAY_SIZE(tlb_table); 105