diff options
Diffstat (limited to 'arch/arm/boards')
-rw-r--r-- | arch/arm/boards/karo-tx28/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/boards/karo-tx28/config.h | 16 | ||||
-rw-r--r-- | arch/arm/boards/karo-tx28/tx28.c | 119 |
3 files changed, 136 insertions, 0 deletions
diff --git a/arch/arm/boards/karo-tx28/Makefile b/arch/arm/boards/karo-tx28/Makefile new file mode 100644 index 00000000..6f7e865e --- /dev/null +++ b/arch/arm/boards/karo-tx28/Makefile @@ -0,0 +1 @@ +obj-y += tx28.o diff --git a/arch/arm/boards/karo-tx28/config.h b/arch/arm/boards/karo-tx28/config.h new file mode 100644 index 00000000..8f18fda7 --- /dev/null +++ b/arch/arm/boards/karo-tx28/config.h @@ -0,0 +1,16 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * 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. + */ + +#ifndef _CONFIG_H_ +# define _CONFIG_H_ + +#endif /* _CONFIG_H_ */ diff --git a/arch/arm/boards/karo-tx28/tx28.c b/arch/arm/boards/karo-tx28/tx28.c new file mode 100644 index 00000000..d5edf5de --- /dev/null +++ b/arch/arm/boards/karo-tx28/tx28.c @@ -0,0 +1,119 @@ +/* + * Copyright (C) 2010 Juergen Beisert, Pengutronix <kernel@pengutronix.de> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * 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 <common.h> +#include <init.h> +#include <gpio.h> +#include <environment.h> +#include <errno.h> +#include <asm/armlinux.h> +#include <asm/io.h> +#include <generated/mach-types.h> +#include <mach/imx-regs.h> + +static struct memory_platform_data ram_pdata = { + .name = "ram0", + .flags = DEVFS_RDWR, +}; + +static struct device_d sdram_dev = { + .id = -1, + .name = "mem", + .map_base = IMX_MEMORY_BASE, + .size = 128 * 1024 * 1024, + .platform_data = &ram_pdata, +}; + +/* setup the CPU card internal signals */ +static const uint32_t tx28_pad_setup[] = { + /* NAND interface */ + GPMI_D0 | VE_3_3V | PULLUP(1), + GPMI_D1 | VE_3_3V | PULLUP(1), + GPMI_D2 | VE_3_3V | PULLUP(1), + GPMI_D3 | VE_3_3V | PULLUP(1), + GPMI_D4 | VE_3_3V | PULLUP(1), + GPMI_D5 | VE_3_3V | PULLUP(1), + GPMI_D6 | VE_3_3V | PULLUP(1), + GPMI_D7 | VE_3_3V | PULLUP(1), + GPMI_READY0 | VE_3_3V | PULLUP(0), /* external PU */ + GPMI_RDN | VE_3_3V | PULLUP(1), + GPMI_WRN | VE_3_3V | BITKEEPER(1), + GPMI_ALE | VE_3_3V | PULLUP(1), + GPMI_CLE | VE_3_3V | PULLUP(1), + GPMI_RESETN_GPIO | VE_3_3V | GPIO_IN, /* act as WP, external PU */ + + /* Network interface */ + + /* + * Note: To setup the external phy in a manner the baseboard + * supports, its configuration is divided into a small part here in + * the CPU card setup and the remaining configuration in the baseboard + * file. + * Here: Switch on the power supply to the external phy, but keep its + * reset line low. + */ + + /* send a "good morning" to the ext. phy 0 = reset */ + ENET0_RX_CLK_GPIO | VE_3_3V | PULLUP(0) | GPIO_OUT | GPIO_VALUE(0), + + /* phy power control 1 = on */ + PWM4_GPIO | VE_3_3V | GPIO_OUT | PULLUP(0) | GPIO_VALUE(1), + + ENET_CLK | VE_3_3V | BITKEEPER(0), + ENET0_MDC | VE_3_3V | PULLUP(0), + ENET0_MDIO | VE_3_3V | PULLUP(0), + ENET0_TXD0 | VE_3_3V | PULLUP(0), + ENET0_TXD1 | VE_3_3V | PULLUP(0), + ENET0_TX_EN | VE_3_3V | PULLUP(0), + ENET0_TX_CLK | VE_3_3V | BITKEEPER(0), + +}; + +extern void base_board_init(void); + +static int tx28_devices_init(void) +{ + int i; + + /* initizalize gpios */ + for (i = 0; i < ARRAY_SIZE(tx28_pad_setup); i++) + imx_gpio_mode(tx28_pad_setup[i]); + + register_device(&sdram_dev); + + armlinux_add_dram(&sdram_dev); + armlinux_set_bootparams((void *)(sdram_dev.map_base + 0x100)); + armlinux_set_architecture(MACH_TYPE_TX28); + + base_board_init(); + + return 0; +} + +device_initcall(tx28_devices_init); + +/** +@page tx28 KARO's TX28 CPU module + +http://www.karo-electronics.de/ + +This CPU card is based on a Freescale i.MX28 CPU. The card is shipped with: + +- 128 MiB synchronous dynamic RAM (DDR2 type), 200 MHz support +- 128 MiB NAND K9F1G08U0A (3.3V type) +- PCA9554 GPIO expander +- DS1339 RTC +- LAN8710 Phy + +*/ |