165b935aaSMarc Dietrich /* 265b935aaSMarc Dietrich * arch/arm/mach-tegra/board-paz00.c 365b935aaSMarc Dietrich * 465b935aaSMarc Dietrich * Copyright (C) 2011 Marc Dietrich <marvin24@gmx.de> 565b935aaSMarc Dietrich * 665b935aaSMarc Dietrich * Based on board-harmony.c 765b935aaSMarc Dietrich * Copyright (C) 2010 Google, Inc. 865b935aaSMarc Dietrich * 965b935aaSMarc Dietrich * This software is licensed under the terms of the GNU General Public 1065b935aaSMarc Dietrich * License version 2, as published by the Free Software Foundation, and 1165b935aaSMarc Dietrich * may be copied, distributed, and modified under those terms. 1265b935aaSMarc Dietrich * 1365b935aaSMarc Dietrich * This program is distributed in the hope that it will be useful, 1465b935aaSMarc Dietrich * but WITHOUT ANY WARRANTY; without even the implied warranty of 1565b935aaSMarc Dietrich * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1665b935aaSMarc Dietrich * GNU General Public License for more details. 1765b935aaSMarc Dietrich * 1865b935aaSMarc Dietrich */ 1965b935aaSMarc Dietrich 2065b935aaSMarc Dietrich #include <linux/kernel.h> 2165b935aaSMarc Dietrich #include <linux/init.h> 2265b935aaSMarc Dietrich #include <linux/platform_device.h> 2365b935aaSMarc Dietrich #include <linux/serial_8250.h> 2465b935aaSMarc Dietrich #include <linux/clk.h> 2565b935aaSMarc Dietrich #include <linux/dma-mapping.h> 2665b935aaSMarc Dietrich #include <linux/pda_power.h> 2765b935aaSMarc Dietrich #include <linux/io.h> 2865b935aaSMarc Dietrich 2965b935aaSMarc Dietrich #include <asm/mach-types.h> 3065b935aaSMarc Dietrich #include <asm/mach/arch.h> 3165b935aaSMarc Dietrich #include <asm/mach/time.h> 3265b935aaSMarc Dietrich #include <asm/setup.h> 3365b935aaSMarc Dietrich 3465b935aaSMarc Dietrich #include <mach/iomap.h> 3565b935aaSMarc Dietrich #include <mach/irqs.h> 3665b935aaSMarc Dietrich #include <mach/sdhci.h> 3765b935aaSMarc Dietrich 3865b935aaSMarc Dietrich #include "board.h" 3965b935aaSMarc Dietrich #include "board-paz00.h" 4065b935aaSMarc Dietrich #include "clock.h" 4165b935aaSMarc Dietrich #include "devices.h" 4265b935aaSMarc Dietrich #include "gpio-names.h" 4365b935aaSMarc Dietrich 4465b935aaSMarc Dietrich static struct plat_serial8250_port debug_uart_platform_data[] = { 4565b935aaSMarc Dietrich { 4665b935aaSMarc Dietrich .membase = IO_ADDRESS(TEGRA_UARTD_BASE), 4765b935aaSMarc Dietrich .mapbase = TEGRA_UARTD_BASE, 4865b935aaSMarc Dietrich .irq = INT_UARTD, 4965b935aaSMarc Dietrich .flags = UPF_BOOT_AUTOCONF, 5065b935aaSMarc Dietrich .iotype = UPIO_MEM, 5165b935aaSMarc Dietrich .regshift = 2, 5265b935aaSMarc Dietrich .uartclk = 216000000, 5365b935aaSMarc Dietrich }, { 5465b935aaSMarc Dietrich .flags = 0 5565b935aaSMarc Dietrich } 5665b935aaSMarc Dietrich }; 5765b935aaSMarc Dietrich 5865b935aaSMarc Dietrich static struct platform_device debug_uart = { 5965b935aaSMarc Dietrich .name = "serial8250", 6065b935aaSMarc Dietrich .id = PLAT8250_DEV_PLATFORM, 6165b935aaSMarc Dietrich .dev = { 6265b935aaSMarc Dietrich .platform_data = debug_uart_platform_data, 6365b935aaSMarc Dietrich }, 6465b935aaSMarc Dietrich }; 6565b935aaSMarc Dietrich 6665b935aaSMarc Dietrich static struct platform_device *paz00_devices[] __initdata = { 6765b935aaSMarc Dietrich &debug_uart, 6865b935aaSMarc Dietrich &tegra_sdhci_device1, 6965b935aaSMarc Dietrich &tegra_sdhci_device2, 7065b935aaSMarc Dietrich &tegra_sdhci_device4, 7165b935aaSMarc Dietrich }; 7265b935aaSMarc Dietrich 7365b935aaSMarc Dietrich static void __init tegra_paz00_fixup(struct machine_desc *desc, 7465b935aaSMarc Dietrich struct tag *tags, char **cmdline, struct meminfo *mi) 7565b935aaSMarc Dietrich { 7665b935aaSMarc Dietrich mi->nr_banks = 1; 7765b935aaSMarc Dietrich mi->bank[0].start = PHYS_OFFSET; 7865b935aaSMarc Dietrich mi->bank[0].size = 448 * SZ_1M; 7965b935aaSMarc Dietrich } 8065b935aaSMarc Dietrich 8165b935aaSMarc Dietrich static __initdata struct tegra_clk_init_table paz00_clk_init_table[] = { 8265b935aaSMarc Dietrich /* name parent rate enabled */ 8365b935aaSMarc Dietrich { "uartd", "pll_p", 216000000, true }, 8465b935aaSMarc Dietrich { NULL, NULL, 0, 0}, 8565b935aaSMarc Dietrich }; 8665b935aaSMarc Dietrich 8765b935aaSMarc Dietrich 8865b935aaSMarc Dietrich static struct tegra_sdhci_platform_data sdhci_pdata1 = { 8965b935aaSMarc Dietrich .cd_gpio = TEGRA_GPIO_SD1_CD, 9065b935aaSMarc Dietrich .wp_gpio = TEGRA_GPIO_SD1_WP, 9165b935aaSMarc Dietrich .power_gpio = TEGRA_GPIO_SD1_POWER, 9265b935aaSMarc Dietrich }; 9365b935aaSMarc Dietrich 9465b935aaSMarc Dietrich static struct tegra_sdhci_platform_data sdhci_pdata2 = { 9565b935aaSMarc Dietrich .cd_gpio = -1, 9665b935aaSMarc Dietrich .wp_gpio = -1, 9765b935aaSMarc Dietrich .power_gpio = -1, 9865b935aaSMarc Dietrich }; 9965b935aaSMarc Dietrich 10065b935aaSMarc Dietrich static struct tegra_sdhci_platform_data sdhci_pdata4 = { 10165b935aaSMarc Dietrich .cd_gpio = TEGRA_GPIO_SD4_CD, 10265b935aaSMarc Dietrich .wp_gpio = TEGRA_GPIO_SD4_WP, 10365b935aaSMarc Dietrich .power_gpio = TEGRA_GPIO_SD4_POWER, 10465b935aaSMarc Dietrich .is_8bit = 1, 10565b935aaSMarc Dietrich }; 10665b935aaSMarc Dietrich 10765b935aaSMarc Dietrich static void __init tegra_paz00_init(void) 10865b935aaSMarc Dietrich { 10965b935aaSMarc Dietrich tegra_clk_init_from_table(paz00_clk_init_table); 11065b935aaSMarc Dietrich 11165b935aaSMarc Dietrich paz00_pinmux_init(); 11265b935aaSMarc Dietrich 11365b935aaSMarc Dietrich tegra_sdhci_device1.dev.platform_data = &sdhci_pdata1; 11465b935aaSMarc Dietrich tegra_sdhci_device2.dev.platform_data = &sdhci_pdata2; 11565b935aaSMarc Dietrich tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4; 11665b935aaSMarc Dietrich 11765b935aaSMarc Dietrich platform_add_devices(paz00_devices, ARRAY_SIZE(paz00_devices)); 11865b935aaSMarc Dietrich } 11965b935aaSMarc Dietrich 12065b935aaSMarc Dietrich MACHINE_START(PAZ00, "paz00") 12165b935aaSMarc Dietrich .boot_params = 0x00000100, 12265b935aaSMarc Dietrich .fixup = tegra_paz00_fixup, 12365b935aaSMarc Dietrich .map_io = tegra_map_common_io, 12465b935aaSMarc Dietrich .init_early = tegra_init_early, 12565b935aaSMarc Dietrich .init_irq = tegra_init_irq, 12665b935aaSMarc Dietrich .timer = &tegra_timer, 12765b935aaSMarc Dietrich .init_machine = tegra_paz00_init, 12865b935aaSMarc Dietrich MACHINE_END 129