Path: blob/master/arch/arm/mach-msm/board-msm7x30.c
10817 views
/* Copyright (c) 2009-2010, Code Aurora Forum. All rights reserved.1*2* This program is free software; you can redistribute it and/or modify3* it under the terms of the GNU General Public License version 2 and4* only version 2 as published by the Free Software Foundation.5*6* This program is distributed in the hope that it will be useful,7* but WITHOUT ANY WARRANTY; without even the implied warranty of8* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the9* GNU General Public License for more details.10*11* You should have received a copy of the GNU General Public License12* along with this program; if not, write to the Free Software13* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA14* 02110-1301, USA.15*/1617#include <linux/kernel.h>18#include <linux/irq.h>19#include <linux/gpio.h>20#include <linux/platform_device.h>21#include <linux/delay.h>22#include <linux/io.h>23#include <linux/smsc911x.h>24#include <linux/usb/msm_hsusb.h>25#include <linux/clkdev.h>2627#include <asm/mach-types.h>28#include <asm/mach/arch.h>29#include <asm/memory.h>30#include <asm/setup.h>3132#include <mach/gpio.h>33#include <mach/board.h>34#include <mach/msm_iomap.h>35#include <mach/dma.h>3637#include <mach/vreg.h>38#include "devices.h"39#include "gpiomux.h"40#include "proc_comm.h"4142extern struct sys_timer msm_timer;4344static int hsusb_phy_init_seq[] = {450x30, 0x32, /* Enable and set Pre-Emphasis Depth to 20% */460x02, 0x36, /* Disable CDR Auto Reset feature */47-148};4950static struct msm_otg_platform_data msm_otg_pdata = {51.phy_init_seq = hsusb_phy_init_seq,52.mode = USB_PERIPHERAL,53.otg_control = OTG_PHY_CONTROL,54};5556struct msm_gpiomux_config msm_gpiomux_configs[GPIOMUX_NGPIOS] = {57#ifdef CONFIG_SERIAL_MSM_CONSOLE58[49] = { /* UART2 RFR */59.suspended = GPIOMUX_DRV_2MA | GPIOMUX_PULL_DOWN |60GPIOMUX_FUNC_2 | GPIOMUX_VALID,61},62[50] = { /* UART2 CTS */63.suspended = GPIOMUX_DRV_2MA | GPIOMUX_PULL_DOWN |64GPIOMUX_FUNC_2 | GPIOMUX_VALID,65},66[51] = { /* UART2 RX */67.suspended = GPIOMUX_DRV_2MA | GPIOMUX_PULL_DOWN |68GPIOMUX_FUNC_2 | GPIOMUX_VALID,69},70[52] = { /* UART2 TX */71.suspended = GPIOMUX_DRV_2MA | GPIOMUX_PULL_DOWN |72GPIOMUX_FUNC_2 | GPIOMUX_VALID,73},74#endif75};7677static struct platform_device *devices[] __initdata = {78#if defined(CONFIG_SERIAL_MSM) || defined(CONFIG_MSM_SERIAL_DEBUGGER)79&msm_device_uart2,80#endif81&msm_device_smd,82&msm_device_otg,83&msm_device_hsusb,84&msm_device_hsusb_host,85};8687static void __init msm7x30_init_irq(void)88{89msm_init_irq();90}9192static void __init msm7x30_init(void)93{94msm_device_otg.dev.platform_data = &msm_otg_pdata;95msm_device_hsusb.dev.parent = &msm_device_otg.dev;96msm_device_hsusb_host.dev.parent = &msm_device_otg.dev;9798platform_add_devices(devices, ARRAY_SIZE(devices));99}100101static void __init msm7x30_map_io(void)102{103msm_map_msm7x30_io();104msm_clock_init(msm_clocks_7x30, msm_num_clocks_7x30);105}106107MACHINE_START(MSM7X30_SURF, "QCT MSM7X30 SURF")108.boot_params = PLAT_PHYS_OFFSET + 0x100,109.map_io = msm7x30_map_io,110.init_irq = msm7x30_init_irq,111.init_machine = msm7x30_init,112.timer = &msm_timer,113MACHINE_END114115MACHINE_START(MSM7X30_FFA, "QCT MSM7X30 FFA")116.boot_params = PLAT_PHYS_OFFSET + 0x100,117.map_io = msm7x30_map_io,118.init_irq = msm7x30_init_irq,119.init_machine = msm7x30_init,120.timer = &msm_timer,121MACHINE_END122123MACHINE_START(MSM7X30_FLUID, "QCT MSM7X30 FLUID")124.boot_params = PLAT_PHYS_OFFSET + 0x100,125.map_io = msm7x30_map_io,126.init_irq = msm7x30_init_irq,127.init_machine = msm7x30_init,128.timer = &msm_timer,129MACHINE_END130131132