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>
2009-11-22 21:11:32 +03:00
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <plat/common.h>
# include <plat/board.h>
2010-02-18 01:09:23 +03:00
# include <plat/usb.h>
2009-11-22 21:11:32 +03:00
2010-11-08 09:56:14 +03:00
# include <mach/board-zoom.h>
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
static void __init omap_zoom_init_irq ( void )
{
if ( machine_is_omap_zoom2 ( ) )
omap2_init_common_hw ( mt46h32m32lf6_sdrc_params ,
mt46h32m32lf6_sdrc_params ) ;
else if ( machine_is_omap_zoom3 ( ) )
omap2_init_common_hw ( h8mbx00u0mer0em_sdrc_params ,
h8mbx00u0mer0em_sdrc_params ) ;
omap_init_irq ( ) ;
omap_gpio_init ( ) ;
}
# ifdef CONFIG_OMAP_MUX
static struct omap_board_mux board_mux [ ] __initdata = {
/* WLAN IRQ - GPIO 162 */
OMAP3_MUX ( MCBSP1_CLKX , OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP ) ,
/* 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
# else
# define board_mux NULL
# 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 */
} ,
} ;
2010-03-04 10:45:53 +03:00
static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
2010-02-18 01:09:23 +03:00
. port_mode [ 0 ] = EHCI_HCD_OMAP_MODE_UNKNOWN ,
. port_mode [ 1 ] = EHCI_HCD_OMAP_MODE_PHY ,
. port_mode [ 2 ] = EHCI_HCD_OMAP_MODE_UNKNOWN ,
. 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 ) ;
2010-11-08 09:56:14 +03:00
usb_ehci_init ( & ehci_pdata ) ;
}
2010-07-09 18:27:49 +04:00
board_nand_init ( zoom_nand_partitions ,
2010-11-08 09:56:14 +03:00
ARRAY_SIZE ( zoom_nand_partitions ) , ZOOM_NAND_CS ) ;
2009-11-22 21:11:32 +03:00
zoom_debugboard_init ( ) ;
2010-11-08 09:56:14 +03:00
zoom_peripherals_init ( ) ;
2009-11-22 21:11:32 +03:00
}
2010-11-08 09:56:14 +03:00
MACHINE_START ( OMAP_ZOOM2 , " OMAP Zoom2 board " )
. boot_params = 0x80000100 ,
. map_io = omap3_map_io ,
. reserve = omap_reserve ,
. init_irq = omap_zoom_init_irq ,
. init_machine = omap_zoom_init ,
. timer = & omap_timer ,
MACHINE_END
2009-11-22 21:11:32 +03:00
MACHINE_START ( OMAP_ZOOM3 , " OMAP Zoom3 board " )
. boot_params = 0x80000100 ,
2010-08-04 15:43:18 +04:00
. map_io = omap3_map_io ,
2010-05-23 13:18:16 +04:00
. reserve = omap_reserve ,
2009-11-22 21:11:32 +03:00
. init_irq = omap_zoom_init_irq ,
. init_machine = omap_zoom_init ,
. timer = & omap_timer ,
MACHINE_END