2010-02-25 11:37:43 -08:00
/* Copyright (c) 2009-2010, Code Aurora Forum. All rights reserved.
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA
* 02110 - 1301 , USA .
*/
# include <linux/kernel.h>
# include <linux/irq.h>
# include <linux/gpio.h>
# include <linux/platform_device.h>
# include <linux/delay.h>
# include <linux/io.h>
# include <linux/smsc911x.h>
2010-12-08 13:37:08 +05:30
# include <linux/usb/msm_hsusb.h>
2011-02-23 09:37:42 -08:00
# include <linux/clkdev.h>
2010-02-25 11:37:43 -08:00
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
2011-01-04 18:07:14 +00:00
# include <asm/memory.h>
2010-02-25 11:37:43 -08:00
# include <asm/setup.h>
# include <mach/gpio.h>
# include <mach/board.h>
# include <mach/msm_iomap.h>
# include <mach/dma.h>
# include <mach/vreg.h>
# include "devices.h"
2011-01-10 11:00:30 -08:00
# include "gpiomux.h"
2010-05-12 14:24:15 -07:00
# include "proc_comm.h"
2010-02-25 11:37:43 -08:00
2010-05-12 14:24:15 -07:00
extern struct sys_timer msm_timer ;
2010-02-25 11:37:43 -08:00
2010-12-08 13:37:08 +05:30
static int hsusb_phy_init_seq [ ] = {
0x30 , 0x32 , /* Enable and set Pre-Emphasis Depth to 20% */
0x02 , 0x36 , /* Disable CDR Auto Reset feature */
- 1
} ;
static struct msm_otg_platform_data msm_otg_pdata = {
. phy_init_seq = hsusb_phy_init_seq ,
. mode = USB_PERIPHERAL ,
. otg_control = OTG_PHY_CONTROL ,
} ;
2011-01-10 11:00:30 -08:00
struct msm_gpiomux_config msm_gpiomux_configs [ GPIOMUX_NGPIOS ] = {
# ifdef CONFIG_SERIAL_MSM_CONSOLE
[ 49 ] = { /* UART2 RFR */
. suspended = GPIOMUX_DRV_2MA | GPIOMUX_PULL_DOWN |
GPIOMUX_FUNC_2 | GPIOMUX_VALID ,
} ,
[ 50 ] = { /* UART2 CTS */
. suspended = GPIOMUX_DRV_2MA | GPIOMUX_PULL_DOWN |
GPIOMUX_FUNC_2 | GPIOMUX_VALID ,
} ,
[ 51 ] = { /* UART2 RX */
. suspended = GPIOMUX_DRV_2MA | GPIOMUX_PULL_DOWN |
GPIOMUX_FUNC_2 | GPIOMUX_VALID ,
} ,
[ 52 ] = { /* UART2 TX */
. suspended = GPIOMUX_DRV_2MA | GPIOMUX_PULL_DOWN |
GPIOMUX_FUNC_2 | GPIOMUX_VALID ,
} ,
# endif
} ;
2010-02-25 11:37:43 -08:00
static struct platform_device * devices [ ] __initdata = {
2010-05-12 14:24:15 -07:00
# if defined(CONFIG_SERIAL_MSM) || defined(CONFIG_MSM_SERIAL_DEBUGGER)
& msm_device_uart2 ,
# endif
2010-10-06 13:52:10 -07:00
& msm_device_smd ,
2010-12-08 13:37:08 +05:30
& msm_device_otg ,
& msm_device_hsusb ,
& msm_device_hsusb_host ,
2010-02-25 11:37:43 -08:00
} ;
static void __init msm7x30_init_irq ( void )
{
msm_init_irq ( ) ;
}
static void __init msm7x30_init ( void )
{
2010-12-08 13:37:08 +05:30
msm_device_otg . dev . platform_data = & msm_otg_pdata ;
msm_device_hsusb . dev . parent = & msm_device_otg . dev ;
msm_device_hsusb_host . dev . parent = & msm_device_otg . dev ;
2010-02-25 11:37:43 -08:00
platform_add_devices ( devices , ARRAY_SIZE ( devices ) ) ;
}
static void __init msm7x30_map_io ( void )
{
msm_map_msm7x30_io ( ) ;
msm_clock_init ( msm_clocks_7x30 , msm_num_clocks_7x30 ) ;
}
MACHINE_START ( MSM7X30_SURF , " QCT MSM7X30 SURF " )
2011-07-05 22:38:14 -04:00
. atag_offset = 0x100 ,
2010-02-25 11:37:43 -08:00
. map_io = msm7x30_map_io ,
. init_irq = msm7x30_init_irq ,
. init_machine = msm7x30_init ,
. timer = & msm_timer ,
MACHINE_END
MACHINE_START ( MSM7X30_FFA , " QCT MSM7X30 FFA " )
2011-07-05 22:38:14 -04:00
. atag_offset = 0x100 ,
2010-02-25 11:37:43 -08:00
. map_io = msm7x30_map_io ,
. init_irq = msm7x30_init_irq ,
. init_machine = msm7x30_init ,
. timer = & msm_timer ,
MACHINE_END
MACHINE_START ( MSM7X30_FLUID , " QCT MSM7X30 FLUID " )
2011-07-05 22:38:14 -04:00
. atag_offset = 0x100 ,
2010-02-25 11:37:43 -08:00
. map_io = msm7x30_map_io ,
. init_irq = msm7x30_init_irq ,
. init_machine = msm7x30_init ,
. timer = & msm_timer ,
MACHINE_END