18c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer/* 28c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * Copyright (C) 1999,2000 Arm Limited 38c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * Copyright (C) 2000 Deep Blue Solutions Ltd 48c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * Copyright (C) 2002 Shane Nay (shane@minirl.com) 58c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * Copyright 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved. 68c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * - add MX31 specific definitions 78c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * 88c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * This program is free software; you can redistribute it and/or modify 98c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * it under the terms of the GNU General Public License as published by 108c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * the Free Software Foundation; either version 2 of the License, or 118c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * (at your option) any later version. 128c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * 138c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * This program is distributed in the hope that it will be useful, 148c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * but WITHOUT ANY WARRANTY; without even the implied warranty of 158c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 168c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * GNU General Public License for more details. 178c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer */ 188c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer 198c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer#include <linux/mm.h> 208c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer#include <linux/init.h> 218c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer#include <linux/err.h> 228c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer 238c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer#include <asm/pgtable.h> 248c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer#include <asm/mach/map.h> 258c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer 268c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer#include <mach/common.h> 273622360430e90d47a0d028dd5333a13771589331Shawn Guo#include <mach/devices-common.h> 288c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer#include <mach/hardware.h> 298c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer#include <mach/mx25.h> 308c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer#include <mach/iomux-v3.h> 315ae30b477e9fb7319e2976fbf3521c0fac2625f1Sascha Hauer#include <mach/irqs.h> 328c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer 338c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer/* 348c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * This table defines static virtual address mappings for I/O regions. 3508ff97b5214143c3bd47add6ec49097cb848120aUwe Kleine-König * These are the mappings common across all MX25 boards. 368c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer */ 3708ff97b5214143c3bd47add6ec49097cb848120aUwe Kleine-Königstatic struct map_desc mx25_io_desc[] __initdata = { 3808ff97b5214143c3bd47add6ec49097cb848120aUwe Kleine-König imx_map_entry(MX25, AVIC, MT_DEVICE_NONSHARED), 3908ff97b5214143c3bd47add6ec49097cb848120aUwe Kleine-König imx_map_entry(MX25, AIPS1, MT_DEVICE_NONSHARED), 4008ff97b5214143c3bd47add6ec49097cb848120aUwe Kleine-König imx_map_entry(MX25, AIPS2, MT_DEVICE_NONSHARED), 418c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer}; 428c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer 438c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer/* 448c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * This function initializes the memory map. It is called during the 458c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * system startup to create static physical to virtual memory mappings 468c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer * for the IO modules. 478c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer */ 488c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauervoid __init mx25_map_io(void) 498c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer{ 503dac219615b88010601ee52e7b5fd1c32ef789eaUwe Kleine-König iotable_init(mx25_io_desc, ARRAY_SIZE(mx25_io_desc)); 513dac219615b88010601ee52e7b5fd1c32ef789eaUwe Kleine-König} 523dac219615b88010601ee52e7b5fd1c32ef789eaUwe Kleine-König 533dac219615b88010601ee52e7b5fd1c32ef789eaUwe Kleine-Königvoid __init imx25_init_early(void) 543dac219615b88010601ee52e7b5fd1c32ef789eaUwe Kleine-König{ 558c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer mxc_set_cpu_type(MXC_CPU_MX25); 568c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer mxc_iomux_v3_init(MX25_IO_ADDRESS(MX25_IOMUXC_BASE_ADDR)); 578c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer mxc_arch_reset_init(MX25_IO_ADDRESS(MX25_WDOG_BASE_ADDR)); 588c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer} 598c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer 608c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauervoid __init mx25_init_irq(void) 618c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer{ 62cf3a6aba2f8402d4e45f7f263a0e69f779cd1bdcUwe Kleine-König mxc_init_irq(MX25_IO_ADDRESS(MX25_AVIC_BASE_ADDR)); 638c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer} 648c25c36f33157a2e2a1fcd60b6dc00feace80631Sascha Hauer 653622360430e90d47a0d028dd5333a13771589331Shawn Guostatic struct sdma_script_start_addrs imx25_sdma_script __initdata = { 663622360430e90d47a0d028dd5333a13771589331Shawn Guo .ap_2_ap_addr = 729, 673622360430e90d47a0d028dd5333a13771589331Shawn Guo .uart_2_mcu_addr = 904, 683622360430e90d47a0d028dd5333a13771589331Shawn Guo .per_2_app_addr = 1255, 693622360430e90d47a0d028dd5333a13771589331Shawn Guo .mcu_2_app_addr = 834, 703622360430e90d47a0d028dd5333a13771589331Shawn Guo .uartsh_2_mcu_addr = 1120, 713622360430e90d47a0d028dd5333a13771589331Shawn Guo .per_2_shp_addr = 1329, 723622360430e90d47a0d028dd5333a13771589331Shawn Guo .mcu_2_shp_addr = 1048, 733622360430e90d47a0d028dd5333a13771589331Shawn Guo .ata_2_mcu_addr = 1560, 743622360430e90d47a0d028dd5333a13771589331Shawn Guo .mcu_2_ata_addr = 1479, 753622360430e90d47a0d028dd5333a13771589331Shawn Guo .app_2_per_addr = 1189, 763622360430e90d47a0d028dd5333a13771589331Shawn Guo .app_2_mcu_addr = 770, 773622360430e90d47a0d028dd5333a13771589331Shawn Guo .shp_2_per_addr = 1407, 783622360430e90d47a0d028dd5333a13771589331Shawn Guo .shp_2_mcu_addr = 979, 793622360430e90d47a0d028dd5333a13771589331Shawn Guo}; 803622360430e90d47a0d028dd5333a13771589331Shawn Guo 813622360430e90d47a0d028dd5333a13771589331Shawn Guostatic struct sdma_platform_data imx25_sdma_pdata __initdata = { 822e534b21a51bad9d1fad125adac6ad49e64e1d7aShawn Guo .fw_name = "sdma-imx25.bin", 833622360430e90d47a0d028dd5333a13771589331Shawn Guo .script_addrs = &imx25_sdma_script, 843622360430e90d47a0d028dd5333a13771589331Shawn Guo}; 853622360430e90d47a0d028dd5333a13771589331Shawn Guo 863bc34a6143359d2bf19a5e79b9017aeffc6660adRichard Zhaostatic const struct resource imx25_audmux_res[] __initconst = { 873bc34a6143359d2bf19a5e79b9017aeffc6660adRichard Zhao DEFINE_RES_MEM(MX25_AUDMUX_BASE_ADDR, SZ_16K), 883bc34a6143359d2bf19a5e79b9017aeffc6660adRichard Zhao}; 893bc34a6143359d2bf19a5e79b9017aeffc6660adRichard Zhao 90b78d8e59a6f611e229fab8ec3014c58eba975000Shawn Guovoid __init imx25_soc_init(void) 91b78d8e59a6f611e229fab8ec3014c58eba975000Shawn Guo{ 92e7fc6ae7446710a487510d212137a43289bbe90eShawn Guo /* i.mx25 has the i.mx31 type gpio */ 93e7fc6ae7446710a487510d212137a43289bbe90eShawn Guo mxc_register_gpio("imx31-gpio", 0, MX25_GPIO1_BASE_ADDR, SZ_16K, MX25_INT_GPIO1, 0); 94e7fc6ae7446710a487510d212137a43289bbe90eShawn Guo mxc_register_gpio("imx31-gpio", 1, MX25_GPIO2_BASE_ADDR, SZ_16K, MX25_INT_GPIO2, 0); 95e7fc6ae7446710a487510d212137a43289bbe90eShawn Guo mxc_register_gpio("imx31-gpio", 2, MX25_GPIO3_BASE_ADDR, SZ_16K, MX25_INT_GPIO3, 0); 96e7fc6ae7446710a487510d212137a43289bbe90eShawn Guo mxc_register_gpio("imx31-gpio", 3, MX25_GPIO4_BASE_ADDR, SZ_16K, MX25_INT_GPIO4, 0); 973622360430e90d47a0d028dd5333a13771589331Shawn Guo 9862550cd7c08f1a38d0ade1de18baec10f83412bbShawn Guo /* i.mx25 has the i.mx35 type sdma */ 9962550cd7c08f1a38d0ade1de18baec10f83412bbShawn Guo imx_add_imx_sdma("imx35-sdma", MX25_SDMA_BASE_ADDR, MX25_INT_SDMA, &imx25_sdma_pdata); 1003bc34a6143359d2bf19a5e79b9017aeffc6660adRichard Zhao /* i.mx25 has the i.mx31 type audmux */ 1013bc34a6143359d2bf19a5e79b9017aeffc6660adRichard Zhao platform_device_register_simple("imx31-audmux", 0, imx25_audmux_res, 1023bc34a6143359d2bf19a5e79b9017aeffc6660adRichard Zhao ARRAY_SIZE(imx25_audmux_res)); 103b78d8e59a6f611e229fab8ec3014c58eba975000Shawn Guo} 104