1/* Copyright (c) 2009-2010, Code Aurora Forum. All rights reserved. 2 * 3 * This program is free software; you can redistribute it and/or modify 4 * it under the terms of the GNU General Public License version 2 and 5 * only version 2 as published by the Free Software Foundation. 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 * GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * along with this program; if not, write to the Free Software 14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 15 * 02110-1301, USA. 16 */ 17 18#include <linux/kernel.h> 19#include <linux/irq.h> 20#include <linux/gpio.h> 21#include <linux/platform_device.h> 22#include <linux/delay.h> 23#include <linux/io.h> 24#include <linux/smsc911x.h> 25 26#include <asm/mach-types.h> 27#include <asm/mach/arch.h> 28#include <asm/setup.h> 29 30#include <mach/gpio.h> 31#include <mach/board.h> 32#include <mach/memory.h> 33#include <mach/msm_iomap.h> 34#include <mach/dma.h> 35 36#include <mach/vreg.h> 37#include "devices.h" 38#include "proc_comm.h" 39 40extern struct sys_timer msm_timer; 41 42#ifdef CONFIG_SERIAL_MSM_CONSOLE 43static struct msm_gpio uart2_config_data[] = { 44 { GPIO_CFG(49, 2, GPIO_OUTPUT, GPIO_PULL_DOWN, GPIO_2MA), "UART2_RFR"}, 45 { GPIO_CFG(50, 2, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), "UART2_CTS"}, 46 { GPIO_CFG(51, 2, GPIO_INPUT, GPIO_PULL_DOWN, GPIO_2MA), "UART2_Rx"}, 47 { GPIO_CFG(52, 2, GPIO_OUTPUT, GPIO_PULL_DOWN, GPIO_2MA), "UART2_Tx"}, 48}; 49 50static void msm7x30_init_uart2(void) 51{ 52 msm_gpios_request_enable(uart2_config_data, 53 ARRAY_SIZE(uart2_config_data)); 54 55} 56#endif 57 58static struct platform_device *devices[] __initdata = { 59#if defined(CONFIG_SERIAL_MSM) || defined(CONFIG_MSM_SERIAL_DEBUGGER) 60 &msm_device_uart2, 61#endif 62 63}; 64 65static void __init msm7x30_init_irq(void) 66{ 67 msm_init_irq(); 68} 69 70static void __init msm7x30_init(void) 71{ 72 platform_add_devices(devices, ARRAY_SIZE(devices)); 73#ifdef CONFIG_SERIAL_MSM_CONSOLE 74 msm7x30_init_uart2(); 75#endif 76 77} 78 79static void __init msm7x30_map_io(void) 80{ 81 msm_map_msm7x30_io(); 82 msm_clock_init(msm_clocks_7x30, msm_num_clocks_7x30); 83} 84 85MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF") 86#ifdef CONFIG_MSM_DEBUG_UART 87 .phys_io = MSM_DEBUG_UART_PHYS, 88 .io_pg_offst = ((MSM_DEBUG_UART_BASE) >> 18) & 0xfffc, 89#endif 90 .boot_params = PHYS_OFFSET + 0x100, 91 .map_io = msm7x30_map_io, 92 .init_irq = msm7x30_init_irq, 93 .init_machine = msm7x30_init, 94 .timer = &msm_timer, 95MACHINE_END 96 97MACHINE_START(MSM7X30_FFA, "QCT MSM7X30 FFA") 98#ifdef CONFIG_MSM_DEBUG_UART 99 .phys_io = MSM_DEBUG_UART_PHYS, 100 .io_pg_offst = ((MSM_DEBUG_UART_BASE) >> 18) & 0xfffc, 101#endif 102 .boot_params = PHYS_OFFSET + 0x100, 103 .map_io = msm7x30_map_io, 104 .init_irq = msm7x30_init_irq, 105 .init_machine = msm7x30_init, 106 .timer = &msm_timer, 107MACHINE_END 108 109MACHINE_START(MSM7X30_FLUID, "QCT MSM7X30 FLUID") 110#ifdef CONFIG_MSM_DEBUG_UART 111 .phys_io = MSM_DEBUG_UART_PHYS, 112 .io_pg_offst = ((MSM_DEBUG_UART_BASE) >> 18) & 0xfffc, 113#endif 114 .boot_params = PHYS_OFFSET + 0x100, 115 .map_io = msm7x30_map_io, 116 .init_irq = msm7x30_init_irq, 117 .init_machine = msm7x30_init, 118 .timer = &msm_timer, 119MACHINE_END 120