2011-03-07 21:01:31 +01:00
/*
* arch / arm / mach - tegra / board - paz00 . c
*
* Copyright ( C ) 2011 Marc Dietrich < marvin24 @ gmx . de >
*
* Based on board - harmony . c
* Copyright ( C ) 2010 Google , Inc .
*
* This software is licensed under the terms of the GNU General Public
* License version 2 , as published by the Free Software Foundation , and
* may be copied , distributed , and modified under those terms .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
*/
# include <linux/kernel.h>
# include <linux/init.h>
# include <linux/platform_device.h>
# include <linux/serial_8250.h>
# include <linux/clk.h>
# include <linux/dma-mapping.h>
# include <linux/pda_power.h>
# include <linux/io.h>
2011-05-19 14:08:26 +02:00
# include <linux/i2c.h>
2011-03-07 21:01:31 +01:00
# include <asm/mach-types.h>
# include <asm/mach/arch.h>
# include <asm/mach/time.h>
# include <asm/setup.h>
# include <mach/iomap.h>
# include <mach/irqs.h>
# include <mach/sdhci.h>
2011-05-19 14:08:27 +02:00
# include <mach/gpio.h>
2011-03-07 21:01:31 +01:00
# include "board.h"
# include "board-paz00.h"
# include "clock.h"
# include "devices.h"
# include "gpio-names.h"
static struct plat_serial8250_port debug_uart_platform_data [ ] = {
{
. membase = IO_ADDRESS ( TEGRA_UARTD_BASE ) ,
. mapbase = TEGRA_UARTD_BASE ,
. irq = INT_UARTD ,
. flags = UPF_BOOT_AUTOCONF ,
. iotype = UPIO_MEM ,
. regshift = 2 ,
. uartclk = 216000000 ,
} , {
. flags = 0
}
} ;
static struct platform_device debug_uart = {
. name = " serial8250 " ,
. id = PLAT8250_DEV_PLATFORM ,
. dev = {
. platform_data = debug_uart_platform_data ,
} ,
} ;
static struct platform_device * paz00_devices [ ] __initdata = {
& debug_uart ,
& tegra_sdhci_device1 ,
& tegra_sdhci_device4 ,
} ;
2011-05-19 14:08:26 +02:00
static void paz00_i2c_init ( void )
{
platform_device_register ( & tegra_i2c_device1 ) ;
platform_device_register ( & tegra_i2c_device2 ) ;
platform_device_register ( & tegra_i2c_device4 ) ;
}
2011-05-19 14:08:27 +02:00
static void paz00_usb_init ( void )
{
platform_device_register ( & tegra_ehci2_device ) ;
platform_device_register ( & tegra_ehci3_device ) ;
}
2011-03-07 21:01:31 +01:00
static void __init tegra_paz00_fixup ( struct machine_desc * desc ,
struct tag * tags , char * * cmdline , struct meminfo * mi )
{
mi - > nr_banks = 1 ;
mi - > bank [ 0 ] . start = PHYS_OFFSET ;
mi - > bank [ 0 ] . size = 448 * SZ_1M ;
}
static __initdata struct tegra_clk_init_table paz00_clk_init_table [ ] = {
/* name parent rate enabled */
{ " uartd " , " pll_p " , 216000000 , true } ,
{ NULL , NULL , 0 , 0 } ,
} ;
static struct tegra_sdhci_platform_data sdhci_pdata1 = {
. cd_gpio = TEGRA_GPIO_SD1_CD ,
. wp_gpio = TEGRA_GPIO_SD1_WP ,
. power_gpio = TEGRA_GPIO_SD1_POWER ,
} ;
2011-05-19 14:08:28 +02:00
static struct tegra_sdhci_platform_data sdhci_pdata4 = {
2011-03-07 21:01:31 +01:00
. cd_gpio = - 1 ,
. wp_gpio = - 1 ,
. power_gpio = - 1 ,
. is_8bit = 1 ,
} ;
static void __init tegra_paz00_init ( void )
{
tegra_clk_init_from_table ( paz00_clk_init_table ) ;
paz00_pinmux_init ( ) ;
tegra_sdhci_device1 . dev . platform_data = & sdhci_pdata1 ;
tegra_sdhci_device4 . dev . platform_data = & sdhci_pdata4 ;
platform_add_devices ( paz00_devices , ARRAY_SIZE ( paz00_devices ) ) ;
2011-05-19 14:08:26 +02:00
paz00_i2c_init ( ) ;
2011-05-19 14:08:27 +02:00
paz00_usb_init ( ) ;
2011-03-07 21:01:31 +01:00
}
2011-05-19 14:08:29 +02:00
MACHINE_START ( PAZ00 , " Toshiba AC100 / Dynabook AZ " )
2011-03-07 21:01:31 +01:00
. boot_params = 0x00000100 ,
. fixup = tegra_paz00_fixup ,
. map_io = tegra_map_common_io ,
. init_early = tegra_init_early ,
. init_irq = tegra_init_irq ,
. timer = & tegra_timer ,
. init_machine = tegra_paz00_init ,
MACHINE_END