diff --git a/Documentation/boards.dox b/Documentation/boards.dox index c04e06b43..8087f015c 100644 --- a/Documentation/boards.dox +++ b/Documentation/boards.dox @@ -14,6 +14,7 @@ ARM type: @li @subpage pcm043 @li @subpage imx21ads @li @subpage imx27ads +@li @subpage tx28 @li @subpage the3stack @li @subpage mx23_evk @li @subpage board_babage diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 7b68f98a0..c90960e56 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -89,6 +89,7 @@ board-$(CONFIG_MACH_SCB9328) := scb9328 board-$(CONFIG_MACH_NESO) := guf-neso board-$(CONFIG_MACH_MX23EVK) := freescale-mx23-evk board-$(CONFIG_MACH_CHUMBY) := chumby_falconwing +board-$(CONFIG_MACH_TX28) := karo-tx28 board-$(CONFIG_MACH_FREESCALE_MX51_PDK) := freescale-mx51-pdk board-$(CONFIG_MACH_GUF_CUPID) := guf-cupid board-$(CONFIG_MACH_MINI2440) := mini2440 diff --git a/arch/arm/boards/karo-tx28/Makefile b/arch/arm/boards/karo-tx28/Makefile new file mode 100644 index 000000000..6f7e865ee --- /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 000000000..8f18fda7c --- /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 000000000..d5edf5ded --- /dev/null +++ b/arch/arm/boards/karo-tx28/tx28.c @@ -0,0 +1,119 @@ +/* + * Copyright (C) 2010 Juergen Beisert, Pengutronix + * + * 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 +#include +#include +#include +#include +#include +#include +#include +#include + +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 + +*/ diff --git a/arch/arm/mach-stm/Kconfig b/arch/arm/mach-stm/Kconfig index 9a46138c1..824b2cffc 100644 --- a/arch/arm/mach-stm/Kconfig +++ b/arch/arm/mach-stm/Kconfig @@ -4,10 +4,12 @@ config ARCH_TEXT_BASE hex default 0x41000000 if MACH_MX23EVK default 0x42000000 if MACH_CHUMBY + default 0x47000000 if MACH_TX28 config BOARDINFO default "Freescale i.MX23-EVK" if MACH_MX23EVK default "Chumby Falconwing" if MACH_CHUMBY + default "Karo TX28" if MACH_TX28 comment "SigmaTel/Freescale i.MX System-on-Chip" @@ -46,6 +48,20 @@ endchoice endif +if ARCH_IMX28 + +choice + prompt "i.MX28 Board Type" + +config MACH_TX28 + bool "KARO tx28" + help + Say Y here if you are using the KARO TX28 CPU module. + +endchoice + +endif + menu "Board specific settings " endmenu