2010-03-03 09:34:27 -08:00
/* linux/arch/arm/mach-msm/board-trout.c
2009-11-18 19:18:24 +01: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 11:09:14 -08:00
# define pr_fmt(fmt) "%s: " fmt, __func__
2009-11-18 19:18:24 +01:00
# include <linux/kernel.h>
# include <linux/init.h>
# include <linux/platform_device.h>
2011-02-23 09:37:42 -08:00
# include <linux/clkdev.h>
2014-04-13 22:54:58 +01:00
# include <linux/memblock.h>
2009-11-18 19:18:24 +01:00
2012-04-12 08:45:37 -07:00
# include <asm/system_info.h>
2009-11-18 19:18:24 +01:00
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <asm/mach/map.h>
2009-11-02 11:55:12 +01:00
# include <asm/setup.h>
2009-11-18 19:18:24 +01:00
# include <mach/hardware.h>
# include <mach/msm_iomap.h>
# include "devices.h"
2010-03-03 09:34:27 -08:00
# include "board-trout.h"
2012-09-05 12:28:52 -07:00
# include "common.h"
2009-11-18 19:18:24 +01:00
2010-03-30 16:11:57 -07:00
extern int trout_init_mmc ( unsigned int ) ;
2009-11-18 19:18:24 +01:00
static struct platform_device * devices [ ] __initdata = {
2013-06-17 10:43:18 -07:00
& msm_clock_7x01a ,
2013-03-04 15:08:27 -08:00
& msm_device_gpio_7201 ,
2009-11-18 19:18:24 +01:00
& msm_device_uart3 ,
& msm_device_smd ,
& msm_device_nand ,
& msm_device_hsusb ,
& msm_device_i2c ,
} ;
2012-02-13 13:27:24 -06:00
static void __init trout_init_early ( void )
{
arch_ioremap_caller = __msm_ioremap_caller ;
}
2009-11-18 19:18:24 +01:00
static void __init trout_init_irq ( void )
{
msm_init_irq ( ) ;
}
2014-04-13 22:54:58 +01:00
static void __init trout_fixup ( struct tag * tags , char * * cmdline )
2009-11-02 11:55:12 +01:00
{
2014-04-13 22:54:58 +01:00
memblock_add ( PHYS_OFFSET , 101 * SZ_1M ) ;
2009-11-02 11:55:12 +01:00
}
2009-11-18 19:18:24 +01:00
static void __init trout_init ( void )
{
2010-03-30 16:11:57 -07:00
int rc ;
2009-11-18 19:18:24 +01:00
platform_add_devices ( devices , ARRAY_SIZE ( devices ) ) ;
2010-03-30 16:11:57 -07:00
2013-12-20 11:09:14 -08: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 19:18:24 +01:00
}
static struct map_desc trout_io_desc [ ] __initdata = {
{
2014-02-26 18:16:33 -08:00
. virtual = ( unsigned long ) TROUT_CPLD_BASE ,
2009-11-18 19:18:24 +01: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 ) ) ;
# ifdef CONFIG_MSM_DEBUG_UART3
/* route UART3 to the "H2W" extended usb connector */
writeb ( 0x80 , TROUT_CPLD_BASE + 0x00 ) ;
# endif
}
2012-05-02 15:53:20 +08:00
static void __init trout_init_late ( void )
{
smd_debugfs_init ( ) ;
}
2009-11-18 19:18:24 +01:00
MACHINE_START ( TROUT , " HTC Dream " )
2011-07-05 22:38:14 -04:00
. atag_offset = 0x100 ,
2009-11-02 11:55:12 +01:00
. fixup = trout_fixup ,
2009-11-18 19:18:24 +01:00
. map_io = trout_map_io ,
2012-02-13 13:27:24 -06:00
. init_early = trout_init_early ,
2009-11-18 19:18:24 +01:00
. init_irq = trout_init_irq ,
. init_machine = trout_init ,
2012-05-02 15:53:20 +08:00
. init_late = trout_init_late ,
2012-11-08 12:40:59 -07:00
. init_time = msm7x01_timer_init ,
2009-11-18 19:18:24 +01:00
MACHINE_END