xref: /rk3399_rockchip-uboot/board/freescale/mpc8568mds/tlb.c (revision 326ea986ac150acdc7656d57fca647db80b50158)
173aa9ac2SKumar Gala /*
273aa9ac2SKumar Gala  * Copyright 2008 Freescale Semiconductor, Inc.
373aa9ac2SKumar Gala  *
473aa9ac2SKumar Gala  * (C) Copyright 2000
573aa9ac2SKumar Gala  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
673aa9ac2SKumar Gala  *
7*1a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
873aa9ac2SKumar Gala  */
973aa9ac2SKumar Gala 
1073aa9ac2SKumar Gala #include <common.h>
1173aa9ac2SKumar Gala #include <asm/mmu.h>
1273aa9ac2SKumar Gala 
1373aa9ac2SKumar Gala struct fsl_e_tlb_entry tlb_table[] = {
1473aa9ac2SKumar Gala 	/* TLB 0 - for temp stack in cache */
156d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR, CONFIG_SYS_INIT_RAM_ADDR,
1673aa9ac2SKumar Gala 		      MAS3_SX|MAS3_SW|MAS3_SR, 0,
1773aa9ac2SKumar Gala 		      0, 0, BOOKE_PAGESZ_4K, 0),
186d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024,
1973aa9ac2SKumar Gala 		      MAS3_SX|MAS3_SW|MAS3_SR, 0,
2073aa9ac2SKumar Gala 		      0, 0, BOOKE_PAGESZ_4K, 0),
216d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024,
2273aa9ac2SKumar Gala 		      MAS3_SX|MAS3_SW|MAS3_SR, 0,
2373aa9ac2SKumar Gala 		      0, 0, BOOKE_PAGESZ_4K, 0),
246d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024,
2573aa9ac2SKumar Gala 		      MAS3_SX|MAS3_SW|MAS3_SR, 0,
2673aa9ac2SKumar Gala 		      0, 0, BOOKE_PAGESZ_4K, 0),
2773aa9ac2SKumar Gala 
2873aa9ac2SKumar Gala 	/* TLB 1 Initializations */
2973aa9ac2SKumar Gala 	/*
3073aa9ac2SKumar Gala 	 * TLBe 0:	16M	Non-cacheable, guarded
3173aa9ac2SKumar Gala 	 * 0xff000000	16M	FLASH (upper half)
3273aa9ac2SKumar Gala 	 * Out of reset this entry is only 4K.
3373aa9ac2SKumar Gala 	 */
346d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE + 0x1000000, CONFIG_SYS_FLASH_BASE + 0x1000000,
3573aa9ac2SKumar Gala 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
3673aa9ac2SKumar Gala 		      0, 0, BOOKE_PAGESZ_16M, 1),
3773aa9ac2SKumar Gala 
3873aa9ac2SKumar Gala 	/*
3973aa9ac2SKumar Gala 	 * TLBe 1:	16M	Non-cacheable, guarded
4073aa9ac2SKumar Gala 	 * 0xfe000000	16M	FLASH (lower half)
4173aa9ac2SKumar Gala 	 */
426d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE,
4373aa9ac2SKumar Gala 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
4473aa9ac2SKumar Gala 		      0, 1, BOOKE_PAGESZ_16M, 1),
4573aa9ac2SKumar Gala 
4673aa9ac2SKumar Gala 	/*
4773aa9ac2SKumar Gala 	 * TLBe 2:	1G	Non-cacheable, guarded
4873aa9ac2SKumar Gala 	 * 0x80000000	512M	PCI1 MEM
4973aa9ac2SKumar Gala 	 * 0xa0000000	512M	PCIe MEM
5073aa9ac2SKumar Gala 	 */
515af0fdd8SKumar Gala 	SET_TLB_ENTRY(1, CONFIG_SYS_PCI1_MEM_VIRT, CONFIG_SYS_PCI1_MEM_PHYS,
5273aa9ac2SKumar Gala 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
5373aa9ac2SKumar Gala 		      0, 2, BOOKE_PAGESZ_1G, 1),
5473aa9ac2SKumar Gala 
5573aa9ac2SKumar Gala 	/*
5673aa9ac2SKumar Gala 	 * TLBe 3:	64M	Non-cacheable, guarded
5773aa9ac2SKumar Gala 	 * 0xe000_0000	1M	CCSRBAR
5873aa9ac2SKumar Gala 	 * 0xe200_0000	8M	PCI1 IO
5973aa9ac2SKumar Gala 	 * 0xe280_0000	8M	PCIe IO
6073aa9ac2SKumar Gala 	 */
616d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS,
6273aa9ac2SKumar Gala 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
6373aa9ac2SKumar Gala 		      0, 3, BOOKE_PAGESZ_64M, 1),
6473aa9ac2SKumar Gala 
6573aa9ac2SKumar Gala 	/*
6673aa9ac2SKumar Gala 	 * TLBe 4:	64M	Cacheable, non-guarded
6773aa9ac2SKumar Gala 	 * 0xf000_0000	64M	LBC SDRAM
6873aa9ac2SKumar Gala 	 */
696d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	SET_TLB_ENTRY(1, CONFIG_SYS_LBC_SDRAM_BASE, CONFIG_SYS_LBC_SDRAM_BASE,
7073aa9ac2SKumar Gala 		      MAS3_SX|MAS3_SW|MAS3_SR, 0,
7173aa9ac2SKumar Gala 		      0, 4, BOOKE_PAGESZ_64M, 1),
7273aa9ac2SKumar Gala 
7373aa9ac2SKumar Gala 	/*
7473aa9ac2SKumar Gala 	 * TLBe 5:	256K	Non-cacheable, guarded
7573aa9ac2SKumar Gala 	 * 0xf8000000	32K BCSR
7673aa9ac2SKumar Gala 	 * 0xf8008000	32K PIB (CS4)
7773aa9ac2SKumar Gala 	 * 0xf8010000	32K PIB (CS5)
7873aa9ac2SKumar Gala 	 */
796d0f6bcfSJean-Christophe PLAGNIOL-VILLARD 	SET_TLB_ENTRY(1, CONFIG_SYS_BCSR_BASE, CONFIG_SYS_BCSR_BASE,
8073aa9ac2SKumar Gala 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
8173aa9ac2SKumar Gala 		      0, 5, BOOKE_PAGESZ_256K, 1),
8273aa9ac2SKumar Gala };
8373aa9ac2SKumar Gala 
8473aa9ac2SKumar Gala int num_tlb_entries = ARRAY_SIZE(tlb_table);
85