3 #if defined(CONFIG_TRUSTONIC_TEE_SUPPORT) || defined(CONFIG_MTK_IN_HOUSE_TEE_SUPPORT)
4 #include <linux/memblock.h>
5 #include <linux/bootmem.h>
6 #include <mach/mtk_boot_share_page.h>
8 #include <asm/mach/arch.h>
9 #include <asm/mach/time.h>
10 #include <asm/mach/map.h>
11 #include <asm/mach-types.h>
12 #include <asm/hardware/cache-l2x0.h>
13 #include <asm/smp_scu.h>
15 #include <mach/mt_reg_base.h>
16 #include <mach/irqs.h>
17 #include <linux/version.h>
19 extern void arm_machine_restart(char mode
, const char *cmd
);
20 extern struct sys_timer mt6582_timer
;
21 extern void mt6582_timer_init(void);
22 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
23 extern struct smp_operations mt65xx_smp_ops
;
25 extern void mt_fixup(struct tag
*tags
, char **cmdline
, struct meminfo
*mi
);
26 extern void mt_reserve(void);
28 void __init
mt_init(void)
30 /* enable bus out of order command queue to enhance boot time */
32 volatile unsigned int opt
;
33 opt
= readl(IOMEM(MCU_BIU_BASE
));
35 writel(opt
, IOMEM(MCU_BIU_BASE
));
40 #if defined(CONFIG_TRUSTONIC_TEE_SUPPORT) || defined(CONFIG_MTK_IN_HOUSE_TEE_SUPPORT)
41 void __init
mt_init_early(void)
45 ret
= reserve_bootmem(__pa(BOOT_SHARE_BASE
), 0x1000, BOOTMEM_EXCLUSIVE
);
48 printk(KERN_WARNING
"reserve_bootmem BOOT_SHARE_BASE failed %d\n", ret
);
53 static struct map_desc mt_io_desc
[] __initdata
=
55 #if !defined(CONFIG_MT8127_FPGA)
57 .virtual = INFRA_BASE
,
58 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(INFRA_BASE
)),
59 .length
= (SZ_1M
- SZ_4K
),
62 /* Skip the mapping of 0xF0130000~0xF013FFFF to protect access from APMCU */
64 .virtual = (DEBUGTOP_BASE
- SZ_4K
),
65 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS((DEBUGTOP_BASE
- SZ_4K
))),
66 .length
= (0x30000 + SZ_4K
),
70 .virtual = (DEBUGTOP_BASE
+ 0x40000),
71 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(DEBUGTOP_BASE
+ 0x40000)),
76 .virtual = MCUSYS_CFGREG_BASE
,
77 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(MCUSYS_CFGREG_BASE
)),
83 .virtual = AP_DMA_BASE
,
84 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(AP_DMA_BASE
)),
85 .length
= SZ_2M
+ SZ_1M
,
89 /* virtual 0xF2000000, physical 0x00200000 */
90 .virtual = SYSRAM_BASE
,
91 .pfn
= __phys_to_pfn(0x00200000),
93 .type
= MT_MEMORY_NONCACHED
96 .virtual = G3D_CONFIG_BASE
,
97 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(G3D_CONFIG_BASE
)),
102 .virtual = DISPSYS_BASE
,
103 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(DISPSYS_BASE
)),
108 .virtual = IMGSYS_CONFG_BASE
,
109 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(IMGSYS_CONFG_BASE
)),
114 .virtual = VDEC_GCON_BASE
,
115 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(VDEC_GCON_BASE
)),
120 /* virtual 0xF7000000, physical 0x08000000 */
121 .virtual = DEVINFO_BASE
,
122 .pfn
= __phys_to_pfn(0x08000000),
127 .virtual = CONN_BTSYS_PKV_BASE
,
128 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(CONN_BTSYS_PKV_BASE
)),
133 /* virtual 0xF9000000, physical 0x00100000 */
134 .virtual = INTER_SRAM
,
135 .pfn
= __phys_to_pfn(0x00100000),
137 .type
= MT_MEMORY_NONCACHED
141 .virtual = INFRA_BASE
,
142 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(INFRA_BASE
)),
147 .virtual = AP_DMA_BASE
,
148 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(AP_DMA_BASE
)),
149 .length
= SZ_2M
+ SZ_1M
,
154 .virtual = MMSYS1_CONFIG_BASE
,
155 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(MMSYS1_CONFIG_BASE
)),
161 /* From: 0xF2000000 to 0xF2020000*/
162 .virtual = SYSRAM_BASE
,
163 .pfn
= __phys_to_pfn(0x00200000),
165 .type
= MT_MEMORY_NONCACHED
168 .virtual = DISPSYS_BASE
,
169 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(DISPSYS_BASE
)),
174 .virtual = IMGSYS_CONFG_BASE
,
175 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(IMGSYS_CONFG_BASE
)),
181 .virtual = G3D_CONFIG_BASE
,
182 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(G3D_CONFIG_BASE
)),
187 .virtual = DEVINFO_BASE
,
188 .pfn
= __phys_to_pfn(0x08000000),
193 .virtual = MALI_BASE
,
194 .pfn
= __phys_to_pfn(IO_VIRT_TO_PHYS(MALI_BASE
)),
199 .virtual = INTER_SRAM
,
200 .pfn
= __phys_to_pfn(0x00100000),
202 .type
= MT_MEMORY_NONCACHED
207 void __init
mt_map_io(void)
209 iotable_init(mt_io_desc
, ARRAY_SIZE(mt_io_desc
));
212 #ifdef CONFIG_MTK_TABLET_HARDWARE
213 MACHINE_START(MT8127
, "MT8117")
215 MACHINE_START(MT8127
, "MT8127")
217 .atag_offset
= 0x00000100,
219 .init_irq
= mt_init_irq
,
220 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
221 .timer
= &mt6582_timer
,
223 .smp
= smp_ops(mt65xx_smp_ops
),
224 .init_time
= mt6582_timer_init
,
226 #if defined(CONFIG_TRUSTONIC_TEE_SUPPORT) || defined(CONFIG_MTK_IN_HOUSE_TEE_SUPPORT)
227 .init_early
= mt_init_early
,
229 .init_machine
= mt_init
,
231 .restart
= arm_machine_restart
,
232 .reserve
= mt_reserve
,