2009-11-22 21:11:32 +03:00
/*
2010-11-08 09:56:14 +03:00
* Copyright ( C ) 2009 - 2010 Texas Instruments Inc .
* Mikkel Christensen < mlc @ ti . com >
* Felipe Balbi < balbi @ ti . com >
2009-11-22 21:11:32 +03:00
*
2010-11-08 09:56:14 +03:00
* Modified from mach - omap2 / board - ldp . c
2009-11-22 21:11:32 +03:00
*
* 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>
2010-11-08 09:56:14 +03:00
# include <linux/i2c/twl.h>
2011-01-28 13:12:03 +03:00
# include <linux/mtd/nand.h>
2009-11-22 21:11:32 +03:00
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
2011-11-11 01:45:17 +04:00
# include "common.h"
2010-02-18 01:09:23 +03:00
# include <plat/usb.h>
2009-11-22 21:11:32 +03:00
2012-10-08 20:11:22 +04:00
# include "board-zoom.h"
2010-11-08 09:56:14 +03:00
2010-10-08 20:58:35 +04:00
# include "board-flash.h"
2009-12-12 03:16:33 +03:00
# include "mux.h"
2010-11-08 09:56:14 +03:00
# include "sdram-micron-mt46h32m32lf-6.h"
2009-11-22 21:11:32 +03:00
# include "sdram-hynix-h8mbx00u0mer-0em.h"
2010-11-08 09:56:15 +03:00
# define ZOOM3_EHCI_RESET_GPIO 64
2010-11-08 09:56:14 +03:00
# ifdef CONFIG_OMAP_MUX
static struct omap_board_mux board_mux [ ] __initdata = {
/* WLAN IRQ - GPIO 162 */
2011-03-14 17:24:25 +03:00
OMAP3_MUX ( MCBSP1_CLKX , OMAP_MUX_MODE4 | OMAP_PIN_INPUT ) ,
2010-11-08 09:56:14 +03:00
/* WLAN POWER ENABLE - GPIO 101 */
OMAP3_MUX ( CAM_D2 , OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT ) ,
/* WLAN SDIO: MMC3 CMD */
OMAP3_MUX ( MCSPI1_CS1 , OMAP_MUX_MODE3 | OMAP_PIN_INPUT_PULLUP ) ,
/* WLAN SDIO: MMC3 CLK */
OMAP3_MUX ( ETK_CLK , OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP ) ,
/* WLAN SDIO: MMC3 DAT[0-3] */
OMAP3_MUX ( ETK_D3 , OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP ) ,
OMAP3_MUX ( ETK_D4 , OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP ) ,
OMAP3_MUX ( ETK_D5 , OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP ) ,
OMAP3_MUX ( ETK_D6 , OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP ) ,
{ . reg_offset = OMAP_MUX_TERMINATOR } ,
2009-11-22 21:11:32 +03:00
} ;
2010-11-08 09:56:14 +03:00
# endif
2009-11-22 21:11:32 +03:00
2010-07-09 18:27:49 +04:00
static struct mtd_partition zoom_nand_partitions [ ] = {
/* All the partition sizes are listed in terms of NAND block size */
{
. name = " X-Loader-NAND " ,
. offset = 0 ,
. size = 4 * ( 64 * 2048 ) , /* 512KB, 0x80000 */
. mask_flags = MTD_WRITEABLE , /* force read-only */
} ,
{
. name = " U-Boot-NAND " ,
. offset = MTDPART_OFS_APPEND , /* Offset = 0x80000 */
. size = 10 * ( 64 * 2048 ) , /* 1.25MB, 0x140000 */
. mask_flags = MTD_WRITEABLE , /* force read-only */
} ,
{
. name = " Boot Env-NAND " ,
. offset = MTDPART_OFS_APPEND , /* Offset = 0x1c0000 */
. size = 2 * ( 64 * 2048 ) , /* 256KB, 0x40000 */
} ,
{
. name = " Kernel-NAND " ,
. offset = MTDPART_OFS_APPEND , /* Offset = 0x0200000*/
. size = 240 * ( 64 * 2048 ) , /* 30M, 0x1E00000 */
} ,
{
. name = " system " ,
. offset = MTDPART_OFS_APPEND , /* Offset = 0x2000000 */
. size = 3328 * ( 64 * 2048 ) , /* 416M, 0x1A000000 */
} ,
{
. name = " userdata " ,
. offset = MTDPART_OFS_APPEND , /* Offset = 0x1C000000*/
. size = 256 * ( 64 * 2048 ) , /* 32M, 0x2000000 */
} ,
{
. name = " cache " ,
. offset = MTDPART_OFS_APPEND , /* Offset = 0x1E000000*/
. size = 256 * ( 64 * 2048 ) , /* 32M, 0x2000000 */
} ,
} ;
2011-03-01 17:38:16 +03:00
static const struct usbhs_omap_board_data usbhs_bdata __initconst = {
. port_mode [ 0 ] = OMAP_USBHS_PORT_MODE_UNUSED ,
. port_mode [ 1 ] = OMAP_EHCI_PORT_MODE_PHY ,
. port_mode [ 2 ] = OMAP_USBHS_PORT_MODE_UNUSED ,
2010-02-18 01:09:23 +03:00
. phy_reset = true ,
. reset_gpio_port [ 0 ] = - EINVAL ,
2010-11-08 09:56:15 +03:00
. reset_gpio_port [ 1 ] = ZOOM3_EHCI_RESET_GPIO ,
2010-02-18 01:09:23 +03:00
. reset_gpio_port [ 2 ] = - EINVAL ,
} ;
2009-11-22 21:11:32 +03:00
static void __init omap_zoom_init ( void )
{
2010-11-08 09:56:14 +03:00
if ( machine_is_omap_zoom2 ( ) ) {
omap3_mux_init ( board_mux , OMAP_PACKAGE_CBB ) ;
} else if ( machine_is_omap_zoom3 ( ) ) {
omap3_mux_init ( board_mux , OMAP_PACKAGE_CBP ) ;
2010-11-08 09:56:15 +03:00
omap_mux_init_gpio ( ZOOM3_EHCI_RESET_GPIO , OMAP_PIN_OUTPUT ) ;
2011-03-01 17:38:19 +03:00
usbhs_init ( & usbhs_bdata ) ;
2010-11-08 09:56:14 +03:00
}
2012-02-29 16:41:56 +04:00
board_nand_init ( zoom_nand_partitions ,
ARRAY_SIZE ( zoom_nand_partitions ) , ZOOM_NAND_CS ,
NAND_BUSWIDTH_16 , nand_default_timings ) ;
2009-11-22 21:11:32 +03:00
zoom_debugboard_init ( ) ;
2010-11-08 09:56:14 +03:00
zoom_peripherals_init ( ) ;
2011-08-23 10:57:23 +04:00
if ( machine_is_omap_zoom2 ( ) )
omap_sdrc_init ( mt46h32m32lf6_sdrc_params ,
mt46h32m32lf6_sdrc_params ) ;
else if ( machine_is_omap_zoom3 ( ) )
omap_sdrc_init ( h8mbx00u0mer0em_sdrc_params ,
h8mbx00u0mer0em_sdrc_params ) ;
2010-11-15 09:09:04 +03:00
zoom_display_init ( ) ;
2009-11-22 21:11:32 +03:00
}
2010-11-08 09:56:14 +03:00
MACHINE_START ( OMAP_ZOOM2 , " OMAP Zoom2 board " )
2011-07-06 06:38:15 +04:00
. atag_offset = 0x100 ,
2010-11-08 09:56:14 +03: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 = omap3430_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 ,
2010-11-08 09:56:14 +03:00
. init_machine = omap_zoom_init ,
2012-04-26 12:06:50 +04:00
. init_late = omap3430_init_late ,
2011-03-30 02:54:48 +04:00
. timer = & omap3_timer ,
2011-11-05 21:06:28 +04:00
. restart = omap_prcm_restart ,
2010-11-08 09:56:14 +03:00
MACHINE_END
2009-11-22 21:11:32 +03:00
MACHINE_START ( OMAP_ZOOM3 , " OMAP Zoom3 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-22 21:11:32 +03:00
. init_machine = omap_zoom_init ,
2012-04-26 12:06:50 +04:00
. init_late = omap3630_init_late ,
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-22 21:11:32 +03:00
MACHINE_END