2010-02-25 11:38:39 -08:00
/* Copyright (c) 2008-2009, 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 <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <asm/io.h>
# include <asm/setup.h>
# include <mach/board.h>
2010-05-05 07:17:31 -07:00
# include <mach/irqs.h>
# include <mach/sirc.h>
# include <mach/gpio.h>
2010-02-25 11:38:39 -08:00
# include "devices.h"
2010-05-05 07:17:31 -07:00
extern struct sys_timer msm_timer ;
2010-02-25 11:38:39 -08:00
2010-05-05 07:17:31 -07:00
static struct msm_gpio uart3_config_data [ ] = {
{ GPIO_CFG ( 86 , 1 , GPIO_INPUT , GPIO_PULL_DOWN , GPIO_2MA ) , " UART2_Rx " } ,
{ GPIO_CFG ( 87 , 1 , GPIO_OUTPUT , GPIO_PULL_DOWN , GPIO_2MA ) , " UART2_Tx " } ,
2010-02-25 11:38:39 -08:00
} ;
static struct platform_device * devices [ ] __initdata = {
2010-05-05 07:17:31 -07:00
& msm_device_uart3 ,
2010-02-25 11:38:39 -08:00
} ;
2010-05-05 07:17:31 -07:00
static void msm8x50_init_uart3 ( void )
2010-02-25 11:38:39 -08:00
{
2010-05-05 07:17:31 -07:00
msm_gpios_request_enable ( uart3_config_data ,
ARRAY_SIZE ( uart3_config_data ) ) ;
2010-02-25 11:38:39 -08:00
}
2010-05-05 07:17:31 -07:00
static void __init qsd8x50_map_io ( void )
2010-02-25 11:38:39 -08:00
{
2010-05-05 07:17:31 -07:00
msm_map_qsd8x50_io ( ) ;
msm_clock_init ( msm_clocks_8x50 , msm_num_clocks_8x50 ) ;
2010-02-25 11:38:39 -08:00
}
2010-05-05 07:17:31 -07:00
static void __init qsd8x50_init_irq ( void )
2010-02-25 11:38:39 -08:00
{
2010-05-05 07:17:31 -07:00
msm_init_irq ( ) ;
msm_init_sirc ( ) ;
2010-02-25 11:38:39 -08:00
}
static void __init qsd8x50_init ( void )
{
2010-05-05 07:17:31 -07:00
msm8x50_init_uart3 ( ) ;
2010-02-25 11:38:39 -08:00
platform_add_devices ( devices , ARRAY_SIZE ( devices ) ) ;
}
MACHINE_START ( QSD8X50_SURF , " QCT QSD8X50 SURF " )
# ifdef CONFIG_MSM_DEBUG_UART
. phys_io = MSM_DEBUG_UART_PHYS ,
. io_pg_offst = ( ( MSM_DEBUG_UART_BASE ) > > 18 ) & 0xfffc ,
# endif
. boot_params = PHYS_OFFSET + 0x100 ,
. map_io = qsd8x50_map_io ,
. init_irq = qsd8x50_init_irq ,
. init_machine = qsd8x50_init ,
. timer = & msm_timer ,
MACHINE_END
2010-05-05 07:17:31 -07:00
MACHINE_START ( QSD8X50A_ST1_5 , " QCT QSD8X50A ST1.5 " )
2010-02-25 11:38:39 -08:00
# ifdef CONFIG_MSM_DEBUG_UART
. phys_io = MSM_DEBUG_UART_PHYS ,
. io_pg_offst = ( ( MSM_DEBUG_UART_BASE ) > > 18 ) & 0xfffc ,
# endif
. boot_params = PHYS_OFFSET + 0x100 ,
. map_io = qsd8x50_map_io ,
. init_irq = qsd8x50_init_irq ,
. init_machine = qsd8x50_init ,
. timer = & msm_timer ,
MACHINE_END