1879c0e5eSFabio Estevam // SPDX-License-Identifier: GPL-2.0-or-later 2879c0e5eSFabio Estevam /* 3879c0e5eSFabio Estevam * Copyright 2012 Sascha Hauer, Pengutronix 4879c0e5eSFabio Estevam */ 5879c0e5eSFabio Estevam 6*86fa0707SFabio Estevam #include <linux/init.h> 7879c0e5eSFabio Estevam #include <linux/irq.h> 8879c0e5eSFabio Estevam #include <linux/of_irq.h> 9879c0e5eSFabio Estevam #include <linux/of_platform.h> 10*86fa0707SFabio Estevam #include <linux/mm.h> 11879c0e5eSFabio Estevam #include <asm/mach/arch.h> 12*86fa0707SFabio Estevam #include <asm/mach/map.h> 13879c0e5eSFabio Estevam #include <asm/mach/time.h> 14879c0e5eSFabio Estevam 15879c0e5eSFabio Estevam #include "common.h" 16*86fa0707SFabio Estevam #include "devices/devices-common.h" 17*86fa0707SFabio Estevam #include "hardware.h" 18879c0e5eSFabio Estevam #include "mx27.h" 19879c0e5eSFabio Estevam 20*86fa0707SFabio Estevam /* MX27 memory map definition */ 21*86fa0707SFabio Estevam static struct map_desc imx27_io_desc[] __initdata = { 22*86fa0707SFabio Estevam /* 23*86fa0707SFabio Estevam * this fixed mapping covers: 24*86fa0707SFabio Estevam * - AIPI1 25*86fa0707SFabio Estevam * - AIPI2 26*86fa0707SFabio Estevam * - AITC 27*86fa0707SFabio Estevam * - ROM Patch 28*86fa0707SFabio Estevam * - and some reserved space 29*86fa0707SFabio Estevam */ 30*86fa0707SFabio Estevam imx_map_entry(MX27, AIPI, MT_DEVICE), 31*86fa0707SFabio Estevam /* 32*86fa0707SFabio Estevam * this fixed mapping covers: 33*86fa0707SFabio Estevam * - CSI 34*86fa0707SFabio Estevam * - ATA 35*86fa0707SFabio Estevam */ 36*86fa0707SFabio Estevam imx_map_entry(MX27, SAHB1, MT_DEVICE), 37*86fa0707SFabio Estevam /* 38*86fa0707SFabio Estevam * this fixed mapping covers: 39*86fa0707SFabio Estevam * - EMI 40*86fa0707SFabio Estevam */ 41*86fa0707SFabio Estevam imx_map_entry(MX27, X_MEMC, MT_DEVICE), 42*86fa0707SFabio Estevam }; 43*86fa0707SFabio Estevam 44*86fa0707SFabio Estevam /* 45*86fa0707SFabio Estevam * Initialize the memory map. It is called during the 46*86fa0707SFabio Estevam * system startup to create static physical to virtual 47*86fa0707SFabio Estevam * memory map for the IO modules. 48*86fa0707SFabio Estevam */ 49*86fa0707SFabio Estevam static void __init mx27_map_io(void) 50*86fa0707SFabio Estevam { 51*86fa0707SFabio Estevam iotable_init(imx27_io_desc, ARRAY_SIZE(imx27_io_desc)); 52*86fa0707SFabio Estevam } 53*86fa0707SFabio Estevam 54*86fa0707SFabio Estevam static void __init imx27_init_early(void) 55*86fa0707SFabio Estevam { 56*86fa0707SFabio Estevam mxc_set_cpu_type(MXC_CPU_MX27); 57*86fa0707SFabio Estevam } 58*86fa0707SFabio Estevam 59*86fa0707SFabio Estevam static void __init mx27_init_irq(void) 60*86fa0707SFabio Estevam { 61*86fa0707SFabio Estevam mxc_init_irq(MX27_IO_ADDRESS(MX27_AVIC_BASE_ADDR)); 62*86fa0707SFabio Estevam } 63*86fa0707SFabio Estevam 64879c0e5eSFabio Estevam static const char * const imx27_dt_board_compat[] __initconst = { 65879c0e5eSFabio Estevam "fsl,imx27", 66879c0e5eSFabio Estevam NULL 67879c0e5eSFabio Estevam }; 68879c0e5eSFabio Estevam 69879c0e5eSFabio Estevam DT_MACHINE_START(IMX27_DT, "Freescale i.MX27 (Device Tree Support)") 70879c0e5eSFabio Estevam .map_io = mx27_map_io, 71879c0e5eSFabio Estevam .init_early = imx27_init_early, 72879c0e5eSFabio Estevam .init_irq = mx27_init_irq, 73879c0e5eSFabio Estevam .init_late = imx27_pm_init, 74879c0e5eSFabio Estevam .dt_compat = imx27_dt_board_compat, 75879c0e5eSFabio Estevam MACHINE_END 76