Linux Audio

Check our new training course

Loading...
Note: File does not exist in v5.4.
  1/*
  2 * Copyright (C) 2009-2010 Texas Instruments Inc.
  3 * Mikkel Christensen <mlc@ti.com>
  4 * Felipe Balbi <balbi@ti.com>
  5 *
  6 * Modified from mach-omap2/board-ldp.c
  7 *
  8 * This program is free software; you can redistribute it and/or modify
  9 * it under the terms of the GNU General Public License version 2 as
 10 * published by the Free Software Foundation.
 11 */
 12
 13#include <linux/kernel.h>
 14#include <linux/init.h>
 15#include <linux/platform_device.h>
 16#include <linux/input.h>
 17#include <linux/gpio.h>
 18#include <linux/i2c/twl.h>
 19#include <linux/mtd/nand.h>
 20
 21#include <asm/mach-types.h>
 22#include <asm/mach/arch.h>
 23
 24#include "common.h"
 25#include <plat/board.h>
 26#include <plat/usb.h>
 27
 28#include <mach/board-zoom.h>
 29
 30#include "board-flash.h"
 31#include "mux.h"
 32#include "sdram-micron-mt46h32m32lf-6.h"
 33#include "sdram-hynix-h8mbx00u0mer-0em.h"
 34
 35#define ZOOM3_EHCI_RESET_GPIO		64
 36
 37#ifdef CONFIG_OMAP_MUX
 38static struct omap_board_mux board_mux[] __initdata = {
 39	/* WLAN IRQ - GPIO 162 */
 40	OMAP3_MUX(MCBSP1_CLKX, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
 41	/* WLAN POWER ENABLE - GPIO 101 */
 42	OMAP3_MUX(CAM_D2, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
 43	/* WLAN SDIO: MMC3 CMD */
 44	OMAP3_MUX(MCSPI1_CS1, OMAP_MUX_MODE3 | OMAP_PIN_INPUT_PULLUP),
 45	/* WLAN SDIO: MMC3 CLK */
 46	OMAP3_MUX(ETK_CLK, OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP),
 47	/* WLAN SDIO: MMC3 DAT[0-3] */
 48	OMAP3_MUX(ETK_D3, OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP),
 49	OMAP3_MUX(ETK_D4, OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP),
 50	OMAP3_MUX(ETK_D5, OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP),
 51	OMAP3_MUX(ETK_D6, OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP),
 52	{ .reg_offset = OMAP_MUX_TERMINATOR },
 53};
 54#endif
 55
 56static struct mtd_partition zoom_nand_partitions[] = {
 57	/* All the partition sizes are listed in terms of NAND block size */
 58	{
 59		.name		= "X-Loader-NAND",
 60		.offset		= 0,
 61		.size		= 4 * (64 * 2048),	/* 512KB, 0x80000 */
 62		.mask_flags	= MTD_WRITEABLE,	/* force read-only */
 63	},
 64	{
 65		.name		= "U-Boot-NAND",
 66		.offset		= MTDPART_OFS_APPEND,	/* Offset = 0x80000 */
 67		.size		= 10 * (64 * 2048),	/* 1.25MB, 0x140000 */
 68		.mask_flags	= MTD_WRITEABLE,	/* force read-only */
 69	},
 70	{
 71		.name		= "Boot Env-NAND",
 72		.offset		= MTDPART_OFS_APPEND,   /* Offset = 0x1c0000 */
 73		.size		= 2 * (64 * 2048),	/* 256KB, 0x40000 */
 74	},
 75	{
 76		.name		= "Kernel-NAND",
 77		.offset		= MTDPART_OFS_APPEND,	/* Offset = 0x0200000*/
 78		.size		= 240 * (64 * 2048),	/* 30M, 0x1E00000 */
 79	},
 80	{
 81		.name		= "system",
 82		.offset		= MTDPART_OFS_APPEND,	/* Offset = 0x2000000 */
 83		.size		= 3328 * (64 * 2048),	/* 416M, 0x1A000000 */
 84	},
 85	{
 86		.name		= "userdata",
 87		.offset		= MTDPART_OFS_APPEND,	/* Offset = 0x1C000000*/
 88		.size		= 256 * (64 * 2048),	/* 32M, 0x2000000 */
 89	},
 90	{
 91		.name		= "cache",
 92		.offset		= MTDPART_OFS_APPEND,	/* Offset = 0x1E000000*/
 93		.size		= 256 * (64 * 2048),	/* 32M, 0x2000000 */
 94	},
 95};
 96
 97static const struct usbhs_omap_board_data usbhs_bdata __initconst = {
 98	.port_mode[0]		= OMAP_USBHS_PORT_MODE_UNUSED,
 99	.port_mode[1]		= OMAP_EHCI_PORT_MODE_PHY,
100	.port_mode[2]		= OMAP_USBHS_PORT_MODE_UNUSED,
101	.phy_reset		= true,
102	.reset_gpio_port[0]	= -EINVAL,
103	.reset_gpio_port[1]	= ZOOM3_EHCI_RESET_GPIO,
104	.reset_gpio_port[2]	= -EINVAL,
105};
106
107static void __init omap_zoom_init(void)
108{
109	if (machine_is_omap_zoom2()) {
110		omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
111	} else if (machine_is_omap_zoom3()) {
112		omap3_mux_init(board_mux, OMAP_PACKAGE_CBP);
113		omap_mux_init_gpio(ZOOM3_EHCI_RESET_GPIO, OMAP_PIN_OUTPUT);
114		usbhs_init(&usbhs_bdata);
115	}
116
117	board_nand_init(zoom_nand_partitions, ARRAY_SIZE(zoom_nand_partitions),
118						ZOOM_NAND_CS, NAND_BUSWIDTH_16);
119	zoom_debugboard_init();
120	zoom_peripherals_init();
121
122	if (machine_is_omap_zoom2())
123		omap_sdrc_init(mt46h32m32lf6_sdrc_params,
124					  mt46h32m32lf6_sdrc_params);
125	else if (machine_is_omap_zoom3())
126		omap_sdrc_init(h8mbx00u0mer0em_sdrc_params,
127					  h8mbx00u0mer0em_sdrc_params);
128
129	zoom_display_init();
130}
131
132MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
133	.atag_offset	= 0x100,
134	.reserve	= omap_reserve,
135	.map_io		= omap3_map_io,
136	.init_early	= omap3430_init_early,
137	.init_irq	= omap3_init_irq,
138	.handle_irq	= omap3_intc_handle_irq,
139	.init_machine	= omap_zoom_init,
140	.init_late	= omap3430_init_late,
141	.timer		= &omap3_timer,
142	.restart	= omap_prcm_restart,
143MACHINE_END
144
145MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")
146	.atag_offset	= 0x100,
147	.reserve	= omap_reserve,
148	.map_io		= omap3_map_io,
149	.init_early	= omap3630_init_early,
150	.init_irq	= omap3_init_irq,
151	.handle_irq	= omap3_intc_handle_irq,
152	.init_machine	= omap_zoom_init,
153	.init_late	= omap3630_init_late,
154	.timer		= &omap3_timer,
155	.restart	= omap_prcm_restart,
156MACHINE_END