2010-03-03 20:34:27 +03:00
/* linux/arch/arm/mach-msm/board-trout.c
2009-11-18 21:18:24 +03:00
*
* Copyright ( C ) 2009 Google , Inc .
* Author : Brian Swetland < swetland @ google . com >
*
* This software is licensed under the terms of the GNU General Public
* License version 2 , as published by the Free Software Foundation , and
* may be copied , distributed , and modified under those terms .
*
* 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 .
*
*/
2013-12-20 23:09:14 +04:00
# define pr_fmt(fmt) "%s: " fmt, __func__
2009-11-18 21:18:24 +03:00
# include <linux/kernel.h>
# include <linux/init.h>
# include <linux/platform_device.h>
2011-02-23 20:37:42 +03:00
# include <linux/clkdev.h>
2014-04-14 01:54:58 +04:00
# include <linux/memblock.h>
2009-11-18 21:18:24 +03:00
2012-04-12 19:45:37 +04:00
# include <asm/system_info.h>
2009-11-18 21:18:24 +03:00
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <asm/mach/map.h>
2009-11-02 13:55:12 +03:00
# include <asm/setup.h>
2009-11-18 21:18:24 +03:00
# include <mach/hardware.h>
# include <mach/msm_iomap.h>
# include "devices.h"
2010-03-03 20:34:27 +03:00
# include "board-trout.h"
2012-09-05 23:28:52 +04:00
# include "common.h"
2009-11-18 21:18:24 +03:00
2010-03-31 03:11:57 +04:00
extern int trout_init_mmc ( unsigned int ) ;
2009-11-18 21:18:24 +03:00
static struct platform_device * devices [ ] __initdata = {
2013-06-17 21:43:18 +04:00
& msm_clock_7x01a ,
2013-03-05 03:08:27 +04:00
& msm_device_gpio_7201 ,
2009-11-18 21:18:24 +03:00
& msm_device_uart3 ,
& msm_device_smd ,
& msm_device_nand ,
& msm_device_hsusb ,
& msm_device_i2c ,
} ;
2012-02-13 23:27:24 +04:00
static void __init trout_init_early ( void )
{
arch_ioremap_caller = __msm_ioremap_caller ;
}
2009-11-18 21:18:24 +03:00
static void __init trout_init_irq ( void )
{
msm_init_irq ( ) ;
}
2014-04-14 01:54:58 +04:00
static void __init trout_fixup ( struct tag * tags , char * * cmdline )
2009-11-02 13:55:12 +03:00
{
2014-04-14 01:54:58 +04:00
memblock_add ( PHYS_OFFSET , 101 * SZ_1M ) ;
2009-11-02 13:55:12 +03:00
}
2009-11-18 21:18:24 +03:00
static void __init trout_init ( void )
{
2010-03-31 03:11:57 +04:00
int rc ;
2009-11-18 21:18:24 +03:00
platform_add_devices ( devices , ARRAY_SIZE ( devices ) ) ;
2010-03-31 03:11:57 +04:00
2013-12-20 23:09:14 +04:00
if ( IS_ENABLED ( CONFIG_MMC ) ) {
rc = trout_init_mmc ( system_rev ) ;
if ( rc )
pr_crit ( " MMC init failure (%d) \n " , rc ) ;
}
2009-11-18 21:18:24 +03:00
}
static struct map_desc trout_io_desc [ ] __initdata = {
{
2014-02-27 06:16:33 +04:00
. virtual = ( unsigned long ) TROUT_CPLD_BASE ,
2009-11-18 21:18:24 +03:00
. pfn = __phys_to_pfn ( TROUT_CPLD_START ) ,
. length = TROUT_CPLD_SIZE ,
. type = MT_DEVICE_NONSHARED
}
} ;
static void __init trout_map_io ( void )
{
msm_map_common_io ( ) ;
iotable_init ( trout_io_desc , ARRAY_SIZE ( trout_io_desc ) ) ;
2014-05-26 20:37:40 +04:00
# if defined(CONFIG_DEBUG_MSM_UART) && (CONFIG_DEBUG_UART_PHYS == 0xa9c00000)
2009-11-18 21:18:24 +03:00
/* route UART3 to the "H2W" extended usb connector */
writeb ( 0x80 , TROUT_CPLD_BASE + 0x00 ) ;
# endif
}
2012-05-02 11:53:20 +04:00
static void __init trout_init_late ( void )
{
smd_debugfs_init ( ) ;
}
2009-11-18 21:18:24 +03:00
MACHINE_START ( TROUT , " HTC Dream " )
2011-07-06 06:38:14 +04:00
. atag_offset = 0x100 ,
2009-11-02 13:55:12 +03:00
. fixup = trout_fixup ,
2009-11-18 21:18:24 +03:00
. map_io = trout_map_io ,
2012-02-13 23:27:24 +04:00
. init_early = trout_init_early ,
2009-11-18 21:18:24 +03:00
. init_irq = trout_init_irq ,
. init_machine = trout_init ,
2012-05-02 11:53:20 +04:00
. init_late = trout_init_late ,
2012-11-08 23:40:59 +04:00
. init_time = msm7x01_timer_init ,
2009-11-18 21:18:24 +03:00
MACHINE_END