2009-11-19 05:41:08 +03:00
/*
* Copyright ( C ) 2009 Texas Instruments Inc .
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
# include <linux/kernel.h>
# include <linux/init.h>
# include <linux/platform_device.h>
# include <linux/input.h>
# include <linux/gpio.h>
2011-01-28 13:12:03 +03:00
# include <linux/mtd/nand.h>
2009-11-19 05:41:08 +03:00
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
2011-11-11 01:45:17 +04:00
# include "common.h"
2009-11-19 05:41:08 +03:00
# include <plat/board.h>
# include <plat/gpmc-smc91x.h>
# include <plat/usb.h>
# include <mach/board-zoom.h>
2010-10-08 20:58:35 +04:00
# include "board-flash.h"
2009-12-12 03:16:32 +03:00
# include "mux.h"
2009-11-19 05:41:08 +03:00
# include "sdram-hynix-h8mbx00u0mer-0em.h"
# if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
static struct omap_smc91x_platform_data board_smc91x_data = {
. cs = 3 ,
. flags = GPMC_MUX_ADD_DATA | IORESOURCE_IRQ_LOWLEVEL ,
} ;
static void __init board_smc91x_init ( void )
{
board_smc91x_data . gpio_irq = 158 ;
gpmc_smc91x_init ( & board_smc91x_data ) ;
}
# else
static inline void board_smc91x_init ( void )
{
}
# endif /* defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) */
static void enable_board_wakeup_source ( void )
{
2009-12-12 03:16:32 +03:00
/* T2 interrupt line (keypad) */
omap_mux_init_signal ( " sys_nirq " ,
OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP ) ;
2009-11-19 05:41:08 +03:00
}
2011-03-01 17:38:16 +03:00
static const struct usbhs_omap_board_data usbhs_bdata __initconst = {
2009-11-19 05:41:08 +03:00
2011-03-01 17:38:16 +03:00
. port_mode [ 0 ] = OMAP_EHCI_PORT_MODE_PHY ,
. port_mode [ 1 ] = OMAP_EHCI_PORT_MODE_PHY ,
. port_mode [ 2 ] = OMAP_USBHS_PORT_MODE_UNUSED ,
2009-11-19 05:41:08 +03:00
. phy_reset = true ,
. reset_gpio_port [ 0 ] = 126 ,
. reset_gpio_port [ 1 ] = 61 ,
. reset_gpio_port [ 2 ] = - EINVAL
} ;
static struct omap_board_config_kernel sdp_config [ ] __initdata = {
} ;
2009-12-12 03:16:33 +03:00
# ifdef CONFIG_OMAP_MUX
static struct omap_board_mux board_mux [ ] __initdata = {
{ . reg_offset = OMAP_MUX_TERMINATOR } ,
} ;
# endif
2010-07-09 18:27:50 +04:00
/*
* SDP3630 CS organization
* See also the Switch S8 settings in the comments .
*/
static char chip_sel_sdp [ ] [ GPMC_CS_NUM ] = {
{ PDC_NOR , PDC_NAND , PDC_ONENAND , DBG_MPDB , 0 , 0 , 0 , 0 } , /* S8:1111 */
{ PDC_ONENAND , PDC_NAND , PDC_NOR , DBG_MPDB , 0 , 0 , 0 , 0 } , /* S8:1110 */
{ PDC_NAND , PDC_ONENAND , PDC_NOR , DBG_MPDB , 0 , 0 , 0 , 0 } , /* S8:1101 */
} ;
static struct mtd_partition sdp_nor_partitions [ ] = {
/* bootloader (U-Boot, etc) in first sector */
{
. name = " Bootloader-NOR " ,
. offset = 0 ,
. size = SZ_256K ,
. mask_flags = MTD_WRITEABLE , /* force read-only */
} ,
/* bootloader params in the next sector */
{
. name = " Params-NOR " ,
. offset = MTDPART_OFS_APPEND ,
. size = SZ_256K ,
. mask_flags = 0 ,
} ,
/* kernel */
{
. name = " Kernel-NOR " ,
. offset = MTDPART_OFS_APPEND ,
. size = SZ_2M ,
. mask_flags = 0
} ,
/* file system */
{
. name = " Filesystem-NOR " ,
. offset = MTDPART_OFS_APPEND ,
. size = MTDPART_SIZ_FULL ,
. mask_flags = 0
}
} ;
static struct mtd_partition sdp_onenand_partitions [ ] = {
{
. name = " X-Loader-OneNAND " ,
. offset = 0 ,
. size = 4 * ( 64 * 2048 ) ,
. mask_flags = MTD_WRITEABLE /* force read-only */
} ,
{
. name = " U-Boot-OneNAND " ,
. offset = MTDPART_OFS_APPEND ,
. size = 2 * ( 64 * 2048 ) ,
. mask_flags = MTD_WRITEABLE /* force read-only */
} ,
{
. name = " U-Boot Environment-OneNAND " ,
. offset = MTDPART_OFS_APPEND ,
. size = 1 * ( 64 * 2048 ) ,
} ,
{
. name = " Kernel-OneNAND " ,
. offset = MTDPART_OFS_APPEND ,
. size = 16 * ( 64 * 2048 ) ,
} ,
{
. name = " File System-OneNAND " ,
. offset = MTDPART_OFS_APPEND ,
. size = MTDPART_SIZ_FULL ,
} ,
} ;
static struct mtd_partition sdp_nand_partitions [ ] = {
/* All the partition sizes are listed in terms of NAND block size */
{
. name = " X-Loader-NAND " ,
. offset = 0 ,
. size = 4 * ( 64 * 2048 ) ,
. mask_flags = MTD_WRITEABLE , /* force read-only */
} ,
{
. name = " U-Boot-NAND " ,
. offset = MTDPART_OFS_APPEND , /* Offset = 0x80000 */
. size = 10 * ( 64 * 2048 ) ,
. mask_flags = MTD_WRITEABLE , /* force read-only */
} ,
{
. name = " Boot Env-NAND " ,
. offset = MTDPART_OFS_APPEND , /* Offset = 0x1c0000 */
. size = 6 * ( 64 * 2048 ) ,
} ,
{
. name = " Kernel-NAND " ,
. offset = MTDPART_OFS_APPEND , /* Offset = 0x280000 */
. size = 40 * ( 64 * 2048 ) ,
} ,
{
. name = " File System - NAND " ,
. size = MTDPART_SIZ_FULL ,
. offset = MTDPART_OFS_APPEND , /* Offset = 0x780000 */
} ,
} ;
static struct flash_partitions sdp_flash_partitions [ ] = {
{
. parts = sdp_nor_partitions ,
. nr_parts = ARRAY_SIZE ( sdp_nor_partitions ) ,
} ,
{
. parts = sdp_onenand_partitions ,
. nr_parts = ARRAY_SIZE ( sdp_onenand_partitions ) ,
} ,
{
. parts = sdp_nand_partitions ,
. nr_parts = ARRAY_SIZE ( sdp_nand_partitions ) ,
} ,
} ;
2009-11-19 05:41:08 +03:00
static void __init omap_sdp_init ( void )
{
2009-12-12 03:16:33 +03:00
omap3_mux_init ( board_mux , OMAP_PACKAGE_CBP ) ;
2011-02-25 01:36:03 +03:00
omap_board_config = sdp_config ;
omap_board_config_size = ARRAY_SIZE ( sdp_config ) ;
2009-11-19 05:41:08 +03:00
zoom_peripherals_init ( ) ;
2011-08-23 10:57:23 +04:00
omap_sdrc_init ( h8mbx00u0mer0em_sdrc_params ,
h8mbx00u0mer0em_sdrc_params ) ;
2010-11-15 09:09:04 +03:00
zoom_display_init ( ) ;
2009-11-19 05:41:08 +03:00
board_smc91x_init ( ) ;
2011-01-28 13:12:03 +03:00
board_flash_init ( sdp_flash_partitions , chip_sel_sdp , NAND_BUSWIDTH_16 ) ;
2009-11-19 05:41:08 +03:00
enable_board_wakeup_source ( ) ;
2011-03-01 17:38:19 +03:00
usbhs_init ( & usbhs_bdata ) ;
2009-11-19 05:41:08 +03:00
}
MACHINE_START ( OMAP_3630SDP , " OMAP 3630SDP board " )
2011-07-06 06:38:15 +04:00
. atag_offset = 0x100 ,
2010-05-23 13:18:16 +04:00
. reserve = omap_reserve ,
2011-02-15 02:40:20 +03:00
. map_io = omap3_map_io ,
2011-08-23 10:57:24 +04:00
. init_early = omap3630_init_early ,
2011-05-17 14:51:26 +04:00
. init_irq = omap3_init_irq ,
2011-09-06 13:23:45 +04:00
. handle_irq = omap3_intc_handle_irq ,
2009-11-19 05:41:08 +03:00
. init_machine = omap_sdp_init ,
2011-03-30 02:54:48 +04:00
. timer = & omap3_timer ,
2011-11-05 21:06:28 +04:00
. restart = omap_prcm_restart ,
2009-11-19 05:41:08 +03:00
MACHINE_END