xref: /rk3399_rockchip-uboot/board/freescale/t1040qds/tlb.c (revision 7d436078fe48d020eaee9416b5d4cd342dd106ab)
1*7d436078SPrabhakar Kushwaha /*
2*7d436078SPrabhakar Kushwaha  * Copyright 2013 Freescale Semiconductor, Inc.
3*7d436078SPrabhakar Kushwaha  *
4*7d436078SPrabhakar Kushwaha  * SPDX-License-Identifier:	GPL-2.0+
5*7d436078SPrabhakar Kushwaha  */
6*7d436078SPrabhakar Kushwaha 
7*7d436078SPrabhakar Kushwaha #include <common.h>
8*7d436078SPrabhakar Kushwaha #include <asm/mmu.h>
9*7d436078SPrabhakar Kushwaha 
10*7d436078SPrabhakar Kushwaha struct fsl_e_tlb_entry tlb_table[] = {
11*7d436078SPrabhakar Kushwaha 	/* TLB 0 - for temp stack in cache */
12*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR,
13*7d436078SPrabhakar Kushwaha 		      CONFIG_SYS_INIT_RAM_ADDR_PHYS,
14*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, 0,
15*7d436078SPrabhakar Kushwaha 		      0, 0, BOOKE_PAGESZ_4K, 0),
16*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024,
17*7d436078SPrabhakar Kushwaha 		      CONFIG_SYS_INIT_RAM_ADDR_PHYS + 4 * 1024,
18*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, 0,
19*7d436078SPrabhakar Kushwaha 		      0, 0, BOOKE_PAGESZ_4K, 0),
20*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024,
21*7d436078SPrabhakar Kushwaha 		      CONFIG_SYS_INIT_RAM_ADDR_PHYS + 8 * 1024,
22*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, 0,
23*7d436078SPrabhakar Kushwaha 		      0, 0, BOOKE_PAGESZ_4K, 0),
24*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024,
25*7d436078SPrabhakar Kushwaha 		      CONFIG_SYS_INIT_RAM_ADDR_PHYS + 12 * 1024,
26*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, 0,
27*7d436078SPrabhakar Kushwaha 		      0, 0, BOOKE_PAGESZ_4K, 0),
28*7d436078SPrabhakar Kushwaha 
29*7d436078SPrabhakar Kushwaha 	/* TLB 1 */
30*7d436078SPrabhakar Kushwaha 	/* *I*** - Covers boot page */
31*7d436078SPrabhakar Kushwaha #if defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SYS_INIT_L3_ADDR)
32*7d436078SPrabhakar Kushwaha 	/*
33*7d436078SPrabhakar Kushwaha 	 * *I*G - L3SRAM. When L3 is used as 256K SRAM, the address of the
34*7d436078SPrabhakar Kushwaha 	 * SRAM is at 0xfffc0000, it covered the 0xfffff000.
35*7d436078SPrabhakar Kushwaha 	 */
36*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L3_ADDR, CONFIG_SYS_INIT_L3_ADDR,
37*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
38*7d436078SPrabhakar Kushwaha 		      0, 0, BOOKE_PAGESZ_256K, 1),
39*7d436078SPrabhakar Kushwaha #else
40*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(1, 0xfffff000, 0xfffff000,
41*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
42*7d436078SPrabhakar Kushwaha 		      0, 0, BOOKE_PAGESZ_4K, 1),
43*7d436078SPrabhakar Kushwaha #endif
44*7d436078SPrabhakar Kushwaha 
45*7d436078SPrabhakar Kushwaha 	/* *I*G* - CCSRBAR */
46*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS,
47*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
48*7d436078SPrabhakar Kushwaha 		      0, 1, BOOKE_PAGESZ_16M, 1),
49*7d436078SPrabhakar Kushwaha 
50*7d436078SPrabhakar Kushwaha 	/* *I*G* - Flash, localbus */
51*7d436078SPrabhakar Kushwaha 	/* This will be changed to *I*G* after relocation to RAM. */
52*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE_PHYS,
53*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SR, MAS2_W|MAS2_G,
54*7d436078SPrabhakar Kushwaha 		      0, 2, BOOKE_PAGESZ_256M, 1),
55*7d436078SPrabhakar Kushwaha 
56*7d436078SPrabhakar Kushwaha 	/* *I*G* - PCI */
57*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_MEM_VIRT, CONFIG_SYS_PCIE1_MEM_PHYS,
58*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
59*7d436078SPrabhakar Kushwaha 		      0, 3, BOOKE_PAGESZ_1G, 1),
60*7d436078SPrabhakar Kushwaha 
61*7d436078SPrabhakar Kushwaha 	/* *I*G* - PCI I/O */
62*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(1, CONFIG_SYS_PCIE1_IO_VIRT, CONFIG_SYS_PCIE1_IO_PHYS,
63*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
64*7d436078SPrabhakar Kushwaha 		      0, 4, BOOKE_PAGESZ_256K, 1),
65*7d436078SPrabhakar Kushwaha 
66*7d436078SPrabhakar Kushwaha 	/* Bman/Qman */
67*7d436078SPrabhakar Kushwaha #ifdef CONFIG_SYS_BMAN_MEM_PHYS
68*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE, CONFIG_SYS_BMAN_MEM_PHYS,
69*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, 0,
70*7d436078SPrabhakar Kushwaha 		      0, 5, BOOKE_PAGESZ_16M, 1),
71*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(1, CONFIG_SYS_BMAN_MEM_BASE + 0x01000000,
72*7d436078SPrabhakar Kushwaha 		      CONFIG_SYS_BMAN_MEM_PHYS + 0x01000000,
73*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
74*7d436078SPrabhakar Kushwaha 		      0, 6, BOOKE_PAGESZ_16M, 1),
75*7d436078SPrabhakar Kushwaha #endif
76*7d436078SPrabhakar Kushwaha #ifdef CONFIG_SYS_QMAN_MEM_PHYS
77*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE, CONFIG_SYS_QMAN_MEM_PHYS,
78*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, 0,
79*7d436078SPrabhakar Kushwaha 		      0, 7, BOOKE_PAGESZ_16M, 1),
80*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(1, CONFIG_SYS_QMAN_MEM_BASE + 0x01000000,
81*7d436078SPrabhakar Kushwaha 		      CONFIG_SYS_QMAN_MEM_PHYS + 0x01000000,
82*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
83*7d436078SPrabhakar Kushwaha 		      0, 8, BOOKE_PAGESZ_16M, 1),
84*7d436078SPrabhakar Kushwaha #endif
85*7d436078SPrabhakar Kushwaha #ifdef CONFIG_SYS_DCSRBAR_PHYS
86*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(1, CONFIG_SYS_DCSRBAR, CONFIG_SYS_DCSRBAR_PHYS,
87*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
88*7d436078SPrabhakar Kushwaha 		      0, 9, BOOKE_PAGESZ_4M, 1),
89*7d436078SPrabhakar Kushwaha #endif
90*7d436078SPrabhakar Kushwaha #ifdef CONFIG_SYS_NAND_BASE
91*7d436078SPrabhakar Kushwaha 	/*
92*7d436078SPrabhakar Kushwaha 	 * *I*G - NAND
93*7d436078SPrabhakar Kushwaha 	 * entry 14 and 15 has been used hard coded, they will be disabled
94*7d436078SPrabhakar Kushwaha 	 * in cpu_init_f, so we use entry 16 for nand.
95*7d436078SPrabhakar Kushwaha 	 */
96*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(1, CONFIG_SYS_NAND_BASE, CONFIG_SYS_NAND_BASE_PHYS,
97*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
98*7d436078SPrabhakar Kushwaha 		      0, 10, BOOKE_PAGESZ_64K, 1),
99*7d436078SPrabhakar Kushwaha #endif
100*7d436078SPrabhakar Kushwaha #ifdef QIXIS_BASE
101*7d436078SPrabhakar Kushwaha 	SET_TLB_ENTRY(1, QIXIS_BASE, QIXIS_BASE_PHYS,
102*7d436078SPrabhakar Kushwaha 		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
103*7d436078SPrabhakar Kushwaha 		      0, 11, BOOKE_PAGESZ_4K, 1),
104*7d436078SPrabhakar Kushwaha #endif
105*7d436078SPrabhakar Kushwaha 
106*7d436078SPrabhakar Kushwaha };
107*7d436078SPrabhakar Kushwaha 
108*7d436078SPrabhakar Kushwaha int num_tlb_entries = ARRAY_SIZE(tlb_table);
109